CH3. Process (1)

유지언·2023년 8월 22일
0

운영체제

목록 보기
2/8

Process

정의: program in execution. 즉 실행 중인 프로그램.

프로세스의 문맥 (context)

  • CPU 수행 상태를 나타내는 하드웨어 문맥: Program Counter, 각종 register
  • 프로세스의 주소 공간: code, data, stack
  • 프로세스 관련 커널 자료 구조: PCB(Process Control Block), Kernal stack

프로세스의 상태 (Process State)

프로세스는 상태(state)가 변경되며 수행된다. state의 종류는 다음과 같다.

  • Running: CPU를 잡고 instruction을 수행 중인 상태
  • Ready: (메모리 등 다른 조건을 모두 만족하고) CPU를 기다리는 상태
  • Blocked(wait, sleep): CPU를 주어도 당장 instruction을 수행할 수 없는 상태. Process 자신이 요청한 event (예: I/O처럼 메모리 외 접근이 필요한 작업)가 즉시 만족되지 않아 이를 기다리는 상황.
    예시) 디스크에서 file을 읽어와야 하는 경우
  • Suspended (stopped): 외부적인 이유로 프로세스의 수행이 정지된 상태로, 프로세스는 통째로 디스크에 swap out 되어있다.
    예시) 사용자가 프로그램을 일시 정지시킨 경우
    시스템이 여러 이유로 프로세스를 잠시 중단시킴 (메모리에 너무 많은 프로세스가 올라와 있을 때 - 중기 스케줄러가 관여)

+) New: 프로세스가 생성 중인 상태
+) Terminated: 프로세스의 수행(execution)이 끝나 정리 중인 상태

  • blocked: 자신이 요청한 event가 만족되면 ready
  • suspended: 외부에서 resume을 해주어야 active

PCB (Process Control Block)

운영체제가 각 프로세스를 관리하기 위해 프로세스 당 유지(할당)하는 정보로, 다음의 구성요소를 가진다 (구조체로 유지)

(1) OS가 관리상 사용하는 정보

  • Process state, Process ID
  • scheduling information, priority

(2) CPU 수행 관련 하드웨어 값

  • Program counter, register

(3) 메모리 관련

  • Code, data, stack의 위치 정보

(4) 파일 관련

  • Open file descriptors

문맥 교환 (Contect Switch)

  • CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정.

이때 이전까지 진행되었던 부분부터 프로세스가 실행되어야 하기 때문에 CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음 과정을 수행한다.

(1) CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장
(2) CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴

프로세스를 스케줄링 하기 위한 큐

1) Job queue: 현재 시스템 내에 있는 모든 프로세스의 집합
2) Ready queue: 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스 집합
3) Device queues: I/O device의 처리를 기다리는 프로세스의 집합

프로세스들은 각 큐를 오가며 수행된다.

스케줄러 (Scheduler)

스케줄러 종류

1) Long-term scheduler (장기 스케줄러, Job scheduler)

  • 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정
  • 프로세스에 memory(및 각종 자원)을 주는 문제
    -> new에서 ready로 넘어가는 것을 admit하는 것에 관여
  • degree of Multiprogramming을 제어
    = 메모리에 올라가있는 프로그램 수를 제어
  • time sharing system에는 보통 장기 스케줄러가 없음 (무조건 ready)

2) Short-term scheduler (단기 스케줄러, CPU scheduler)

  • 어떤 프로세스를 다음 번에 running 할 지 결정
  • 프로세스에 CPU를 주는 문제
  • 충분히 빨라야 함 (millisecond 단위)

3) Medium-term scheduler (중기 스케줄러, Swapper)

  • 모든 프로그램을 다 admit하여 ready queue에 올려놓고, 이후에 메모리가 부족해지면 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아낸다. - 즉, 프로세스에게서 memory를 빼앗는 방식을 통해 degree of Multiprogramming을 제어한다.
profile
신입 데이터 엔지니어

0개의 댓글