티스토리 뷰

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 State

 

[ 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 : 대부분의 시간을 연산 작업을 수행하는 데 사용하며, 적은 빈도의 대기시간을 가짐.

CPU-Bound, I/O-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는 동기화 이슈가 있을 수 있는데, 보통 SendNon-blocking, ReceiveBlocking으로 수행.

Indirect Communication

 

  · Producer-Consumer Problem

    : IPC에서 주로 발생하는 문제로, 환형 Queue에 대한 문제이다.

    : Product의 경우 Buffer가 가득 찼을 때 무한 대기, Consumer의 경우 Buffer가 비었을 때 무한 대기.

      → 이러한 것을 Spin-Lock이라고 하며, Process State를 Wait으로 변경하지 않는 이상 Busy Waiting 이슈가 생김.

Circular Buffer

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함