Process Description and Control 1
1. 프로세스란 무엇인가?
프로세스의 정의
- 실행 중인 프로그램
- 프로세서에 할당되고 실행되는 것
- 명령어의 실행 흐름과 현재 상태, 관련된 시스템 자원으로 특징되는 활동의 단위
2. 프로세스와 프로그램의 차이
- “프로그램”은 디스크에 바이너리 형태로 저장된 상태이다.
- “프로세스”는 활동하는 상태로 이는 실행 흐름이 있다는 뜻이다.
- 실행 파일이 메모리에 올라왔을 때 프로그램에서 프로세스가 된다.
- 프로세스는 두가지 중요한 요소가 있다.
- 코드
- 코드에 관련된 데이터
Stack
- 실행 흐름을 만들기 위해 스택이라는 저장 공간이 필요하다.
- call stack ( stack in OS )
- procedure calls를 tracking하거나 parameter를 전달하는데 stack을 사용
- call stack ( stack in OS )
- 프로세서가 call을 하면
- return address를 스택에 저장한다.
- parameters를 스택에 저장해 called procedure에 전달 가능하다.
- call stack은 stack frames로 구성되어 있다.
3. PCB
- OS에서 가장 중요한 자료구조이다.
- struct로 구현됨
main purpose
- interrupt가 발생시 프로세스를 교환하여 실행 가능하게 만든다.
- 즉 interrupt 이후에도 interrupt가 발생 안한 것 같이 실행된다.
- 이를 위해 interrupt시 pc나 registers 같은 context data를 PCB에 저장한다.
- multiple processes와 multiprocessing을 지우너하기 위함이다.
Elements of a Process control block
- Identifiers
- PID, PPID …
- Processor State Information
- 각종 레지스터들
- PC, condition codes
- status information : interrupt enabled flag, execution mode
- Stack pointer
- 각종 레지스터들
- Process Control Information
- 프로세스 상태
- running, ready, blocked …
- 우선순위, 각종 스케줄 관련 정보
- Event
- 프로세스가 기다리는 이벤트
- Memory Management
- 페이지 테이블 관련한 포인터들
- 자료구조
- 다른 프로세스간 연결 리스트 같은 것들
- 프로세스 상태
PCB는 모든 OS 모듈에서 읽고 수정할 수 있다. OS는 PCB의 링크드 리스트로 구현된 큐를 이용해 프로세스 관리한다.
4. Process Image
os가 프로세스를 컨트롤하고 관리하기 위한 정보들
- user level context
- user program, data, stack
- 프로그램 요소들 ( text, data …)과 실행시 사용하는 stack
- system level context
- PCB
- os가 프로세스를 관리하기 위해 필요한 정보
- PCB
프로세스를 실행하기 위해서 프로세스 이미지가 메인 메모리에 반드시 올라와야한다.
- 프로세스 이미지
- user data
- user program
- stack
- PCB
5. 프로세스의 실행 흐름
- process switch를 통해 번갈아 실행됨
- mode switch가 선행되고 이후 process switch
- 언제 process switch 발생하는가?
- timer interrupt
- system call ( I/O )
- Exception
인터럽트가 반드시 process switch를 발생 시키지 않는다.
5-1. Two-State Process Model
- time out된 process와 I/O 연산을 기다리는 process가 같은 큐에 저장된다.
- 대기 큐에 바로 실행 가능한 프로세스와 그렇지 않은 프로세스가 섞여있어 오버헤드가 발생한다.
- I/O 기다리는 프로세스는 dispatch되고 바로 pause될 것이다.
5-2 Five-State Process Model
- Not running state를 Ready와 Blocked로 나눔
- Blocked에 있는 프로세스들은 event를 받으면 Ready 상태로 이동함
- Ready: 바로 실행 가능한 프로세스들을 모아둠
- New : 아직 실행 풀에 들어가지 못함 ( admit 받으면 입장함)
- Blocked: 이벤트가 발생할 때까지 기다리는 프로세스
- Exit : 종료된 프로세스들
큰 OS에서는 Blocked를 이벤트 종류 별로 여러 큐를 만들어 사용하는 것이 효율적이다. ( 이벤트 서칭에서 이득 )
5-3 Seven-State Process Model
Swapping
- 메인메모리의 프로세스를 디스크로 욺겨야 할 상황이 있다.
- blocked, ready 상태에서 디스크로 옮겨지면 suspend 상태가 된다.