본문 바로가기

CS/오퍼레이팅 시스템

11. 프로세스 개념

* 프로세스 vs 프로그램

- 프로세스는 실행중인 프로그램

- 프로세스는 job, task 와 다 같은 말로 사용될 예정

e.g. 프로그램 파워포인트를 더블클릭해서 실행시키면 프로세스가 됨

 

- 프로세스는 현재 수행 중이라서 주소공간이 필요함 - 더많은 정보를 필요로함

- 프로그램은 디스크에 저장된 프로그램

 

프로세스 메모리

- stack : 프로세스 수행 시 필요한 로컬변수나 함수에 전달될 인자를 저장

- heap : malloc함수를 통해 동적할당된 메모리 저장, 동적할당될 때마다 사이즈 증가, 삭제 시 사이즈 감소

- PCB (프로세스 관리를 위한 블록) : 프로그램 카운터, 프로세스 레지스터

- 프로세스가 line by line으로 계속 수행되고, 현재 프로세스에 맞게 레지스터 값을 계속 변경

e.g. 다음에 수행할 instruction 주소

 

- 스택과 힙 사이즈가 계속 바뀔 수 있음, 실행 중인 프로그램의 위치를 가리키는 레지스터 pc값이 계속 바뀜

 -> process == actvie, dynamic / program == passive, static

 

 

* 프로세스 상태

- 프로세스는 상태를 계속 바꾸면서 실행됨

- new, running, waiting, ready, terminated

state diagram

- new로 생성

- 인터럽트가 발생하거나 다른 프로세스에 밀린 경우 ready (timer가 인터럽트 가장 많잉 발생시킴)

 -> cpu 스케줄링을 매 인터럽트마다 해줌

- dispatch : cpu가 해당 프로세스를 수행하는 상태를 의미함, dispatch되면 running 상태가 됨

- 인터럽트 발생까지 waiting & 인터럽트 발생하면 ready

- 먼저 실행된 프로세스도 다른 프로세스에 밀려서 ready가 될 수 있음

- 다른 프로세스가 dispatch되면 진행 중이던 프로세스는 running에서 ready로 바뀜

 

=> 계속 state를 전환하면서 실행

 

* PCB process control block : 프로세스 수행 시 필요한 정보를 가짐

- process state

- program counter 

- cpu register : 멀티프로그래밍 시 ready로 전환되면 레지스터 값을 pcb에 저장

- cpu 스케줄링 정보

- 메모리 관련 정보

- accounting

- io 상태 정보