Process
실행 중인 프로그램.
Stak, heap, data, code를 포함
프로그램 != 프로세스 (실행 파일이 메모리에 적재될 때 프로그램은 프로세스가 됨)
Process state
New : 새로운 프로세스 생성 중 (생성 된 것이 아님)
Ready : 프로세서에 할당되기를 기다리는 중
Running : 명령이 실행되고 있는 중
Waiting : event 발생 대기 중
Terminated : 실행 종료
PCB (Process Control Block)
Process는 OS에 의해 PCB로 관리됨
Process state
Program counter : next instruction의 메모리 주소 위치
CPU registers : 아키텍처에 따라 저장되어야 할 register 상이
CPU-scheduling information
Memory-management information : limit register, pagle table, segment table...
Accounting information : real time used, time limits, account numbers, job or process numbers...
I/O status information : list of I/O devices
Process scheduling queues
1. 프로세스가 실행되면 ready queue에 삽입됨
2. CPU를 할당 받은 후 job 수행
Process scheduler
Long-term scheduler
Short-term scheduler
mid-term scheduler
I/O-bound process vs. CPU-bound process
Context swtich
PCB 형태로 관리되며, interrupt 처리 후 context 복구가 필요함
Context switch 동안 다른 처리를 할 수 없기 때문에 빈번하게 발생할 경우 overhead 증가
Process creation
parent/child process - tree 구조로 유지
PID (Process ID)를 통해 구분
Create: 시스템 콜의 fork(). parent process는 자신과 똑같은 자식 프로세스를 생성
child process는 exec()를 통해 내용을 모두 바꿀 수 있음.
fork() 함수는 parent process에겐 child process의 pid, child process에겐 0을 반환
Linux 기준 pid 0 는 ide process라고 함 (참고: m.blog.naver.com/cksdud1113/222076376311)
root@khy-H81M-DS2V:~# ps -aef
UID PID PPID C STIME TTY TIME CMD
root 1 0 2 03:08 ? 00:00:00 /sbin/init splash
root 2 0 0 03:08 ? 00:00:00 [kthreadd]
root 3 2 0 03:08 ? 00:00:00 [kworker/0:0]
root 4 2 0 03:08 ? 00:00:00 [kworker/0:0H]
root 5 2 0 03:08 ? 00:00:00 [kworker/u8:0]
root 6 2 0 03:08 ? 00:00:00 [mm_percpu_wq]
root 7 2 0 03:08 ? 00:00:00 [ksoftirqd/0]
root 8 2 0 03:08 ? 00:00:00 [rcu_sched]
root 9 2 0 03:08 ? 00:00:00 [rcu_bh]
Process termination
exit()를 통해 child process 종료
Interprocess communication
process가 cooperation을 하는 이유
1. information sharing
2. computation speedup
3. modularity
Cooperation을 하기 위해 IPC (Inter-Process Commuication)이 필요함
1. Shared memory
2. Message passing
Shared memory
shared memory 영역은 shared memory segment를 생성하는 process 공간에 존재
두개 이상의 프로세스가 동시에 동작할 수 있어 해당 메모리 영역의 접근 및 프로세싱에 대해 추가 처리가 필요 함
Message-passing systems
메모리 영역 공유 필요 없이 send/receive를 통해 명시적으로 통신을 수행
질문
1. I/O-bound process vs. CPU-bound process 별 차이점은 무엇이고 주로 어떤 application에 의해 발생하는지. 각각에 더 적합한 scheduling은?
2. long, short, mid - term scheduler라는 표현을 사용하는지? 무엇을 기준으로 기간을 구분하는지
3. context swtich 수행시 PCB는 어디에 저장되는 것인가 (메모리로 알고 있는데 메모리의 stack?) 안전한가
'Operating System' 카테고리의 다른 글
[리눅스] 파일 디스크립터 (0) | 2020.12.04 |
---|---|
[커널] Block I/O Layer (0) | 2020.05.27 |
[파일시스템] EXT파일시스템 (0) | 2020.05.26 |
[파일시스템] EXT3 파일시스템 (0) | 2020.05.26 |
[파일시스템] EXT2 파일시스템 (2/2) (0) | 2020.05.26 |