[운영체제] 프로세스

Junseo Kim·2020년 9월 21일
0

운영체제 공부

목록 보기
2/10

프로세스

실행중인 프로그램을 말한다.

프로세스의 현재 시점의 상태를 나타내는 context들을 아래와 같다.

  1. CPU와 관련된 하드웨어 context
    프로세스는 CPU를 잡고 명령을 수행하므로, 현재 시점에 명령을 어디까지 수행하였는지 알기 위해서 register에 어떤 값을 넣고 있고 PC가 어디를 가리키고 있는지 등의 요소

  2. 메모리와 관련된 프로세스의 주소 공간
    현재 시점의 해당 프로세스의 주소 공간. 프로세스의 code | data | stack 에 어떤 내용이 들어있는지 알아야한다.

  3. 운영체제가 프로세스에 관해 어떤 값을 가지고 있는가
    운영체제는 프로세스가 하나씩 생길 때 마다 PCB(Process Control Block)을 하나씩 둬서 해당 프로세스에 CPU를 얼마나 줘야할지, 메모리를 얼마나 줘야할지 등을 관리

State

프로세스는 상태가 변경되며 수행된다.

  • Running: CPU를 잡고 명령을 수행중인 상태

  • Ready: CPU만 얻으면 바로 실행할 수 있게 다른 조건을 모두 만족한 상태에서 CPU를 기다리는 상태

  • Blocked(wait, sleep): CPU를 줘도 실행할 수 없는 상태(ex. 오래걸리는 I/O 작업, 디스크에서 무엇인가를 읽어온 내용을 보고 나서 다음 명령을 수행할 수 있는 경우)

  • Suspended(stopped): 외부에서 프로세스를 강제로 정지시켜놓은 상태 또는 Medium-Term scheduler에 의해 메모리를 빼앗긴 상태. 프로세스는 통째로 디스크에 swap out된다.

  • New: 프로세스가 생성 중인 상태

  • Terminated: 명령을 끝내고 프로세스가 종료 중인 상태

Blocked vs Suspended

  • Blocked: 자신이 요청한 일을 하면서 기다리고 있는 상태
  • Suspended: 외부에서 정지시켜 놓은 상태. 외부에서 재개시켜 줘야함.

PCB(Process Control Block)

운영체제가 각 프로세스를 관리하기 위해 해당 프로세스에 유지하는 정보

PCB는 아래의 구성 요소로 이루어져있다.
(1) OS가 관리상 사용하는 정보: process state(프로세스의 상태를 나타냄), process Id(고유 값), priority, scheduling information

(2) CPU 수행 관련 하드웨어 값(프로세스의 하드웨어 context를 나타내기 위함): PC, register

(3) 메모리 관련(프로세스의 메모리 관련 context를 나타내기 위함): code, data, stack의 위치 정보

(4) 파일 관련

Context Switch

CPU가 사용자 프로세스 하나로부터 또 다른 사용자 프로세스로 넘어가는 것

프로세스는 CPU를 짧은 시간 간격으로 번갈아 사용하게 된다. 이 때 CPU를 다시 얻게 되면 처음부터 시작하는 것이 아니라 CPU를 잃은 시점을 기억해놨다가 그 시점부터 실행해줘야한다.

context swtich가 일어날 때 운영체제는 CPU를 빼앗기는 프로세스의 상태를 해당 프로세스의 PCB에 저장해주고, CPU를 얻는 프로세스의 상태를 해당 프로세스의 PCB에서 읽어온다.

system call(프로세스가 운영체제한테 요청하는 것)이나 interrupt가 발생하여 CPU가 프로세스(A) -> OS -> 프로세스(A)로 가면 context switch가 아니다. 프로세스(A) -> OS -> 프로세스(B)로 가야지 context switch이다.

Scheduler

자원 별로 하는 일의 시간을 잡는다.

  • Long-term scheduler(장기 스케줄러, job scheduler):
    new 상태의 프로세스를 ready queue로 보낼지 결정(메모리를 줄지 안줄지)
    메모리를 주는 문제를 다룬다.(메모리에 올라가있는 프로세스의 수 관리)
    time sharing system에는 장기 스케줄러가 없이 무조건 ready로 가게 되어있다. 따라서 메모리에 올라가있는 프로세스의 수를 관리하기 위해 Medium-Term Scheduler를 사용한다.

  • Short-term scheduler(단기 스케줄러, CPU scheduler):
    짧은 시간 단위로 schedule이 일어난다.(ms 단위)
    다음에 어떤 프로세스한테 CPU를 줄지를 결정한다.

  • Medium-Term Scheduler(중기 스케줄러, Swapper):
    메모리에 너무 많은 프로그램이 동시에 올라가 있으면 일부 프로그램을 메모리에서 쫓아낸다.
    프로세스에게서 메모리를 뺏는 문제를 다룬다.

0개의 댓글