DongDD's IT

Process - 정의, State, PCB, Process Scheduling, Scheduler, Context switch, IPC 본문

운영체제

Process - 정의, State, PCB, Process Scheduling, Scheduler, Context switch, IPC

DongDD 2017. 10. 19. 17:28

Process


Process Concept


Definition : 실행 중인 프로그램을 의미(메모리에 올라간 프로그램). job, task라고도 불림

-> Program과는 조금 다른 의미를 갖는다.

- Process는 stack,heap,code,data영역과 PCB(Process Control Block)을 가지고 있음

- Process(Active entity) <-> Program(Passive entity)


Process state


1) New : 프로세스가 생성된 상태

2) Running : 실행중인 상태

3) Waiting : 어떤 이벤트를 기다리는 상태

4) Ready : Scheduler에 의해 할당받기를 기다리는 상태

5) Terminated : 실행이 종료된 상태


State Diagram


1) Ready->Running : Scheduler가 선택했을 때

2) Running->Ready : 인터럽트나 Scheduler에 의해 우선순위가 밀려 다른 Process를 dispatch할 때

3) Running->Waiting : I/O요청이나 여러 event를 기다려야 할 때

4) Waiting->Ready : Event가 종료했을 때 Ready상태로 가서 dispatch를 기다림

5) Running->Terminated : Process의 실행이 끝났을 때


Process Control Block(PCB)


Definition : Process의 여러 정보를 가지고 있는 block

1) Process state : 상태정보를 저장

2) Program counter : 다음에 실행할 명령어의 주소

3) CPU Register

4) CPU scheduling information : 우선순위, CPU 점유시간 등

5) Memory-management information : 해당 프로세스의 주소 공간

6) Accounting information : 페이지 테이블, 소유자 등

7) I/O status information : File을 open했을 경우의 정보


Process Scheduling


Definition : Process에게 CPU 등의 자원 배정을 하는 동작


Process Scheduling queue

1) Job queue : system에 존재하는 모든 Process

2) Ready queue : main memory에 적재되어 실행되기를 기다리는 Process

3) Device queue : device를 사용하기 위해 기다리는 Process(I/O)


Process는 크게 I/O-bound process와 CPU-bound process로 나눌 수 있음

1) I/O-bound process

-> I/O 작업을 실행하는데 많은 시간을 소모하는 방식

2) CPU-bound process

-> 프로세스의 I/O 요청을 적게 받고, 대부분의 시간을 CPU를 사용해 작업하는 방식


-> 일반적으로 CPU 사용시간이 더 짧기 때문에 I/O-bound process의 우선순위가 더 높음


Process Scheduler


Definition : 실행가능한 Process에게 CPU를 할당해주는 루틴


1) Long-term scheduler(Job scheduler)

- Ready queue에 있는 Process를 선택해 Memory에 적재

- Process의 상태를 New->Ready로 바꿔줌

2) Short-term scheduler(CPU scheduler)

- Memory에 적재되어 있는 Process를 선택해 CPU를 할당

- Process의 상태를 Ready->Running로 바꿔줌

3) Medium-term scheduler

- CPU사용량이 많아질 경우 일부 프로세스를 주 기억 장치에서 보조 기억 장치로 이동시켜 다른 프로세스들이 제대로 동작할 수 있도록 해줌


Context Switch


Definition : CPU가 다른 프로세스를 가져올 때 현재의 프로세스를 저장하고 새로운 프로세스를 로드하는 동작

-> context switch 동작 과정에서 System이 제대로 된 일을 할 수 없기 때문에 overhead가 생김


Process Type in UNIX(Linux)


- UNIX에서는 프로세스들이 자식과 부모 관계를 가지는 트리 구조로 형성되어 있음

- fork() system call을 이용하여 한 프로세스에서 자식 프로세스를 생성함

-> fork()를 통해 생성된 프로세스는 자원을 공유하고 동시에 실행되고 주소 공간을 복사함


1) Zombie Process(좀비 프로세스)

-> fork()를 통해 생성한 자식 프로세스가 종료됐지만 부모 프로세스가 아직 거두지 않은 자식 프로세스를 의미

2) Orphan Process(고아 프로세스)

-> fork()를 통해 생성한 자식 프로세스를 부모 프로세스가 거두지 않고 종료된 경우 자식 프로세스를 거둘 프로세스가 사라진 프로세스를 의미

-> UNIX에서는 init이라는 상위의 프로세스가 있어 이러한 프로세스를 거둠


Inter-Process Communication(IPC)


Definition : 프로세스들 사이에 서로 데이터를 주고받는 동작


1) Shared Memory

- Memory의 일부를 공유 영역으로 설정하고 다른 프로세스가 해당 공유 영역에 붙어 communication을 하는 방식

2) Message Passing

- Shared Memory와 달리 공유 영역없이 link를 생성해 communication 하는 방식

1) Direct communication : 프로세스들이 서로 연결되어 직접적으로 통신(Send, Receive)

- 하나의 link를 생성해 양방향 통신 

2) Indirect communication : 프로세스 사이에 mailbox라 불리는 중개자를 두어 통신

- 공통으로 사용하는 mailbox에 link를 생성

- 위와 같이 mail box를 생성해 mail box를 통해 통신

- 하나의 link에는 여러 프로세스가 연결되어 있음


Mail Box Synchronization

1) Blocking(synchronous)

- Blocking send : message를 receiver가 받을 때까지 sender가 block

- Blocking receive : message를 sender가 보낼 때까지 receiver가 block

2) Non-Blocking(asynchronous)

- Non-Blocking send : message를 보내고 계속해서 수행

- Non-Blocking receive : message가 있건 없건 받은 후 계속 수행


Comments