[운영체제] - Lecture 3. Process Management

Junyeong Fred Kim·2021년 12월 25일
0

운영체제

목록 보기
3/27
post-thumbnail

프로세스 관리

👉 Job vs Process

작업(Job)과 프로그램(Program)

  • 실행 할 프로그램 + 데이터
  • 컴퓨터 시스템에 실행 요청 전의 상태

프로세스 (Process)

  • 실행을 위해 시스템(커널)에 등록된 작업
  • 시스템 성능 향상을 위해 커널에 의해 관리 됌.

디스크 안에 있는 상태Job, 커널에서 실행되고 있으면 Process가 된다.

프로세스의 정의

👉 실행중인 프로그램

  • 커널에 등록되고 커널의 관리하에 있는 작업
  • 각종 자원들을 요청하고 할당 받을 수 있는 개체
  • 프로세스 관리 블록(PCB)을 할당 받은 개체
  • 능동적인 개체(active entity)
    (실행 중에 각종 자원을 요구, 할당, 반납하며 진행)

👉 Process Control Block (PCB)

  • 커널 공간 (kernel space)내에 존재
  • 각 프로세스들에 대한 정보를 관리


👉 자원(Resource)의 개념

  • 커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체(passive entity)
  • 자원의 분류
    - H/W resources
    (Processor, memory, disk, monitor, keyboard, Etc)
    - S/W resources
    (Message, signal, files, installed SWs, Etc.)

👉 Process Control Block(PCB)

  • OS가 프로세스 관리에 필요한 정보 저장
  • 프로세스 생성 시, 생성 됨 (PCB가 생성)


👉 PCB가 관리하는 정보

  • PID: Process Identification Number
    프로세스 고유 식별 번호

  • 스케줄링 정보
    프로세스 우선순위 등과 같은 스케줄링 관련 정보

  • 프로세스 상태
    자원 할당, 요청 정보

  • 메모리 관리 정보
    Page table, segment table 등

  • 입출력 상태 정보
    할당 받은 입출력 장치, 파일 등에 대한 정보 등

  • 문맥 저장 영역 (Context save area)
    프로세스의 레지스터 상태를 저장하는 공간 등

  • 계정 정보
    자원 사용 시간 등을 관리

  • PCB 정보는 OS 별로 서로 다름
  • PCB 참조 및 갱신 속도는 OS의 성능을 결정 짓는 중요한 요소 중 하나

프로세스의 상태 (Process States)

프로세스 - 자원 간의 상호작용에 의해 결정

👉 프로세스 상태 및 특성


👉 Process State Transition Diagram


👉 Create State

  • 작업(Job)을 커널에 등록
  • PCB 할당 및 프로세스 생성
  • 커널
    가용 메모리 공간 체크 및 프로세스 상태 전이
    (Ready or Suspended ready)

if memory 👉 ready,
if not 👉 suspended ready


👉 Ready State

  • 프로세서 외에 다른 모든 자원을 할당 받은 상태
    프로세서 할당 대기 상태
    즉시 실행 가능 상태

  • Dispatch (or Schedule)
    Ready state -> Running state

프로세서를 할당 받아 Ready state에서 Running state로 되는 것을 dispatch(schedule)라고 한다.


👉 Running State

프로세서와 필요한 자원을 모두 할당 받은 상태

  • *Preemption
    Running state -> ready state
    프로세서 스케줄링 (e.g, time-out, priority changes)
  • Block/Sleep
    Running state -> asleep state
    I/O 등 자원 할당 요청

선점 스케줄링(preemptive scheduling)이란?
시분할 시스템에서 타임 슬라이스가 소진되었거나, 인터럽트시스템 호출 종료 시더 높은 우선 순위 프로세스가 발생 되었음을 알았을 때, 현 실행 프로세스로부터 강제로 CPU를 회수하는 것을 말한다.


👉 Blocked/Asleep State

프로세서 외에 다른 자원을 기다리는 상태

  • 자원 할당은 System call에 의해 이루어 진다.
  • Wake-up
    Asleep state -> ready state

Asleep state에서 자원을 할당 받더라도 바로 running state로 갈 수 없다. block 되어 asleep state로 변경되면서, 할당 받았던 프로세서가 반환되었기 때문에, 프로세서가 이미 다른 프로세스에 할당되었을 수 있다. 따라서 wake-up을 해도 running이 아닌, ready로 돌아가 차례를 기다려야 한다.


👉 Suspended State

메모리 공간 효율을 높이기 위해 suspended readysuspended block상태로 swap-out되고 나중에 다시 메모리로 swap-in된다.

  • 메모리를 할당 받지 못한(빼앗긴) 상태
    Memory imageswap device에 보관한다.

Memory image: 메모리 할당을 반환하기 전에, 작업 진척(메모리 내용)을 저장해 놓은 것.
Swap device: 프로그램 정보 저장을 위한 특별한 파일 시스템

  • 커널 혹은 사용자에 의해 발생한다.

Swap-out(suspended): Memory image를 swap device에 저장하고 메모리 할당을 반환하는 것.
Swap-in(resume): swap device에 저장했던 Memory image를 통해 메모리를 다시 할당하는 것.


👉 Terminated/Zombie State

  • 프로세스 수행이 끝난 상태
  • 모든 자원 반납 후, 커널 내에 일부 PCB 정보만 남아 있는 상태
    (이후 프로세스 관리를 위해 정보 수집)


인터럽트 (Interrupt)

예상치 못한, 외부에서 발생한 이벤트
Unexpected, external events

👉 인터럽트의 종류

  • I/O interrupt
  • Clock interrupt
  • Console interrupt
  • Program check interrupt
  • Machine check interrupt
  • Inter-process interrupt
  • System call interrupt

👉 인터럽트 처리 과정

처리과정 설명

  1. Pi(현재 프로세스) 수행 중
  2. Interrupt 발생
  3. 현재 상태 보존을 위해 Context Saving 실행
  4. Interrupt handiling 실행 (커널이 인터럽트 발생 원인을 파악함)
  5. Interrupt Service 실행 (인터럽트를 해결하기 위해 움직임)
  6. Interrupt Service도 하나의 별도 프로세스이기 때문에 Ps(Interrupt Service 의 프로세스) 가 Pi 프로세서를 가져와서 실행
  7. Ps가 인터럽트 해결
  8. 다음 대기열에 있던 Pj가 Ps 프로세서를 가져와서 실행한다. (Pj도 실행되다가 멈췄던 프로세스라면 멈추기 전에 Context Saving 을 했을 것이기 때문에, Context Saving이 있었다면 Context Restoring으로 작업 현황 저장사항을 불러온다.)

👉 Context Switching (문맥 교환)

멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업Context Switch(Context Switching)라고 한다.

Context

  • 프로세스와 관련된 정보들의 집합
    CPU register context -> in CPU
    Code & data, Stack, PCB -> in memory

Context saving

  • 현재 프로세스의 Register context를 저장하는 작업
    (CPU register context도 memory의 PCB에 저장한다.)

Context restoring

  • Register context를 프로세스로 복구하는 작업

Context Switching (≒ Process Switching)

  • 실행 중인 프로세스의 context를 저장하고, 앞으로 실행할 프로세스의 context를 복구하는 일
    (커널의 개입으로 이루어진다.)

Context Switch Overhead

  • Context switching에 소요되는 비용
    OS마다 다르며, OS의 성능에 큰 영향을 준다.
    따라서, 불필요한 Context switching을 줄이는 것이 중요한데, 이는 스레드(thread) 사용 등으로 줄일 수 있다.

Context Switching 때 해당 CPU는 아무런 일을 하지 못한다. 따라서 컨텍스트 스위칭이 잦아지면 오히려 오버헤드가 발생해 효율(성능)이 떨어진다.

profile
기억보다 기록

0개의 댓글