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?) 안전한가 

+ Recent posts