- process의 정의
- 프로그램의 실행
- instructions sequence의 실행
- 누가 process를 생성하는가
- 사람 : GUI or CLI 를 통해 OS 에게 요청
- process : 부모 process 가 자식 process 생성
- process 생성 이유 ( 3가지 모두 방법은 다르지만 OS 가 생성 )
- 부팅 시 OS 가 생성
- 이미 있는 precess 가 생성
- 사람의 명령으로 OS 가 생성
- process의 종료 이유 ( termination )
- 정상종료
1) normal completion : 마지막 instruction 까지 실행 완료
2) parent request : 부모가 자식 제거해달라고 요청- 비정상종료
1) protection error : 규칙위반이 발생했을 때 종료
( ex) read-only file에 적으려 했을 때 )
2) error 발생 시
( ex) division by zero )
- process 의 3가지 components
- 실행 프로그램 ( code , text )
- 프로그램에서 사용하는 data
- 프로그램의 execution context
- two-state process model
- two-state model 에서의 state
- Running : 프로세스가 실행되고 있는 상태
- Not-Running : 프로세스가 실행되고 있지 않은 상태
- five-state process model
- five-state model 에서의 state
1) new : process list 에 저장되어있는 상태
2) ready : 실행 가능 상태 ( 실행이 되고 있지는 않음 )
3) running : 실행 중 상태
4) blocked ( = wait, sleep ) : 어떠한 event를 기다리고 있는 상태
-> 이 상태에서는 dispatch 가 되지 않음.
5) terminated ( Zombie ) : release 된 상태
-> 아직 프로세스는 남아있음. ( 완전 사라진 것이 아님. )
-> system call 중 wait 와 같은 call 이 불려야 완전히 종료
- five-state model 에서의 상태변환
1) enter : system call 을 통해 process 생성
2) admit : os 에게 받아드려짐.
3) dispatch : os 에 의해 cpu를 할당받음
4) timeout : 주어진 시간 종료
5) event wait : 어떠한 event를 기다림 ( I/O input... )
6) event occurs : 어떠한 event 발생
7) release : 자원을 놓음. ( terminated 상태로 이동 )
- blocked state 는 queue 로 저장
- single queue : 하나의 queue 만 사용해 block process 관리
- multiple queue : block이 된 원인에 따라 queue 를 나눠 관리
-> 원인 : I/O wait, sleep, file read ...
- blocked state를 저장하는 queue 에는 PCB 가 저장.
- two-suspend state model
- suspended processes
- main memory 의 ready 상태로 있다가 보조기억장치로 밀려나간 process
- 왜 밀려나갈까?
-> 현재 있는 process들이 모두 blocked 상태라면 비효율적
-> blocked process 들을 다른 곳으로 옮긴 후 다른 process 처리- two new state : 각각 main memory 에 있을 때의 상태로 이동
1) Blocked / Suspend ( suspended block )
2) Ready / Suspend ( suspended ready )
- process suspention 되는 이유
1) main memory 공간을 확보하기 위해
2) 일정기간에만 실행되는 경우 실행될 때만 main memory 로 들어옴
-> 소프트웨어 업데이트같은 경우
3) user, parent 요청에 바로 반응하기 위해서
4) 다른 OS 이유들에 의해