* 프로세스 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
- 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 상태 정보
'CS > 오퍼레이팅 시스템' 카테고리의 다른 글
13. 프로세스 시스템콜 (0) | 2020.04.09 |
---|---|
12. 프로세스 스케줄링 (0) | 2020.04.08 |
10. 시스템 부팅, 부트스트랩 로더 (0) | 2020.04.08 |
9. 오퍼레이팅 시스템 구조 : 레이어, 마이크로커널, 모듈, 버츄어머신 (0) | 2020.04.08 |
8. 오퍼레이팅 시스템 설계와 구현 (0) | 2020.04.08 |