티스토리 뷰
Process
[ Process Elements ]
· Process Address Space : 프로세스는 실행되고 있는 프로그램이므로, Stack과 Heap 등의 공간이 필요.
· PCB (Process Control Block) : 프로세스의 Context를 저장하기 위한 자료 구조.
· Process State : 프로세스의 상태. Scheduler에 의해 관리됨.
- new : 프로세스 초기 생성 상태.
- running : 실행 중인 Process. 각 코어에 최대 하나일 수 밖에 없음.
- waiting : running state로 갈 수 없는, 모종의 이유로 인해 중단된 상태.
ex) I/O, Sleep System Call, Event Wait (Signal) 등
- ready : 실행 후보군에 있는 Process.
- terminated : 프로세스 종료 상태.
[ Process Scheduling ]
· Process Scheduling Queue
: Scheduler가 Process를 관리하는 자료구조.
- Job Queue : 시스템 내 모든 Process들을 포함하는 Queue. Job Scheduler를 통해 관리.
- Ready Queue : CPU를 할당받기 위해 대기 중인 Process들을 포함하는 Queue. CPU Scheduler를 통해 관리.
- Device Queue : I/O 장치나 기타 장치들에 대한 요청을 대기하는 Queue. Device Driver를 통해 관리.
· Process Bound
: Process의 특성에 따라 어느 쪽에 더 가까운지를 의미.
: 보통 Scheduler는 I/O-Bound Process에 더 높은 우선순위를 준다.
- I/O-Bound Process : 대부분의 시간을 I/O 작업을 수행하는 데 사용하며, 많은 빈도의 대기 시간을 가짐.
- CPU-Bound Process : 대부분의 시간을 연산 작업을 수행하는 데 사용하며, 적은 빈도의 대기시간을 가짐.
· Scheduler
- Long-term Scheduler (Job Scheduler)
: Job Queue에서 Ready Queue로 가져올 Process를 선택. → Memory Allocation에 중점.
: 자주 호출되지 않으며, 멀티 프로그래밍의 양을 조절. → 몇 개의 Process를 Memory에 올릴지.
: 시스템의 안정성을 결정.
: 구현을 최소화하거나 없는 경우도 존재.
: 최근에는 메모리 관리 기술이 향상되며 프로세스 생성 빈도를 생성할 필요가 없어져 잘 사용하지 않음.
- Short-term Scheduler (CPU Scheduler)
: 다음에 실행할 Process를 결정하고, CPU를 할당. → CPU Allocation에 중점.
: Process 생성과 Scheduling이 동시에 수행됨.
: 매우 빈번하게 호출됨.
: 대부분의 현대 OS에서 사용되는 Scheduler.
- Medium-term Scheduler
: Memory 관리를 위한 Scheduler로, Process의 Memory 상태를 관리하고 적절한 Memory Allocation을 수행.
: Process가 너무 많거나 Memory 부족으로 인해 Thrashing이 발생하는 경우에 성능 향상을 위해 보조적으로 사용.
→ Swapping을 이용해 할당된 Process 중 실행이 필요하지 않은 것을 Memory에서 Disk로 옮기는 작업을 함.
[ Process Creation & Termination ]
https://sfer7.tistory.com/24 참조
[ IPC (Inter-Process Communication) ]
· Shared Memory
: 서로 다른 Process 간에 Memory를 공유하는 방식.
: 두 개 이상의 Process가 같은 물리적 메모리 공간을 공유.
: 처리 속도가 매우 빠름.
: Critical Section에 접근하기 때문에 동기화 이슈가 생길 수 있음.
: 공유할 Process에서 shmget을, 가져올 Process에서 shmat Systeml call을 이용해 공유한다.
· Message Passing
: Memory 공유 방식이 아닌, 정보를 전달하는 방식의 Communication.
- Direct Communication
: Process와 Process 간 정보 전달을 직접 하는 경우.
: Hard Coding.
: 대표적인 예로 Pipe가 있다.
- Indirect Communication
: 직접 전달하지 않고, 중간에 매개체를 두어 전송하는 방식. → 유연성 향상
: Kernel의 Mailbox에 보내고, Process에서 이를 Receive하는 방식으로 이루어짐.
: Mailbox는 연결 된 Receiver가 여럿일 때 문제가 발생할 수 있는데, 아래와 같이 해결할 수 있다.
1) Mailbox가 1:1 대응만 가능하도록 구성.
2) Broadcasting
3) Priority 설정으로 하나에만 보내도록.
4) Sender에 Receiver 명세
: Mailbox는 동기화 이슈가 있을 수 있는데, 보통 Send는 Non-blocking, Receive는 Blocking으로 수행.
· Producer-Consumer Problem
: IPC에서 주로 발생하는 문제로, 환형 Queue에 대한 문제이다.
: Product의 경우 Buffer가 가득 찼을 때 무한 대기, Consumer의 경우 Buffer가 비었을 때 무한 대기.
→ 이러한 것을 Spin-Lock이라고 하며, Process State를 Wait으로 변경하지 않는 이상 Busy Waiting 이슈가 생김.
'컴퓨터 공학 이론 > 오퍼레이팅 시스템' 카테고리의 다른 글
[오퍼레이팅 시스템] Memory Management Strategies (0) | 2023.06.06 |
---|---|
[오퍼레이팅 시스템] Deadlock (0) | 2023.06.05 |
[오퍼레이팅 시스템] Scheduling (0) | 2023.04.18 |
[오퍼레이팅 시스템] Thread (0) | 2023.04.18 |
[오퍼레이팅 시스템] System Structure (0) | 2023.04.18 |