← Back to Blog

[운영체제] 프로세스 상태 (모드, 프로세스 스위치)

computer science > operating system

2026-04-132 min read

#development #programming #cs #OS #process

본 자료는 인하대학교 정진만 교수님의 Operating System 강의 자료를 참고하여 제작되었습니다.

Process

Process는 코드 실행 단위이다.
디스크에서는 Data, Code가 저장되고, 메모리에서는 Stack, Data, Code가 저장된다.


Process Control Block (PCB)

Process를 설명하는 자료구조이다.

Execution Context

필요한 이유

저장하는 것

Process List

PCB의 집합
보통 상태별로 나눠서 저장한다.
red-black tree로 저장하고 linked list로 관리한다.


Process Image

Process Image는 process가 실행할 때 메모리에 올라와 있는 전체 모습이다.
비슷하게 docker image라 생각하면 될 듯하다.

보통 저장하는 것


Status Changes

Mode Switch

Process Switch

작동하는 대표 경우

  1. 현재 프로세스가 종료
  2. 현재 프로세스를 대기
  3. 타임 슬라이드 다 씀
  4. 더 우선순위가 높은 프로세스 등장

작동 과정

  1. Save all the execution context
  2. Run another process
  3. Restore all

Two-State Process Model

Not running, Running 두 상태만 존재

            +--- Dispatch ---+
            |                |
        +--------------+-----v---+
Enter-->| Not running  | Running |--> Exit
        +---^----------+---------+
            |                |
            +---- Pause -----+

Five-State Process Model

New, Ready, Running, Blocked, Exit 상태가 존재

                    Admit
             +------------------+
             |                  v
          +------+         +---------+
 Enter -->| New  | ------> |  Ready  |
          +------+         +----+----+
                                 |
                                 | Dispatch
                                 v
                           +-----+-----+
                           |  Running  |
                           +--+-----+--+
                              |     |
             Time slice over  |     | I/O, wait, sleep
             or preemption    |     v
                              |  +--+------+
                              +--| Blocked |
                                 +--+------+
                                    |
                                    | Event complete
                                    v
                                  Ready

Running -------------------------------> Exit
                terminate

상태 의미:

주요 전이:

Seven-State Process Model

메모리가 부족할 때 프로세스를 디스크로 내보내는(swap out) 상황까지 고려한 모델이다.

추가 상태:

                         +------------------+
                         |      Admit       |
                         v
                      +------+
                      | New  |
                      +--+---+
                         |
                         v
                    +----+----+
                    |  Ready  |<-------------------+
                    +----+----+                    |
                         | Dispatch                |
                         v                         |
                    +----+----+                    |
                    | Running |                    |
                    +--+---+--+                    |
                       |   |                       |
     time slice over   |   | I/O request          |
       or preempt      |   v                      |
                       | +----+-----+             |
                       +>| Blocked  |-------------+
                         +----+-----+   Event done
                              |
                              | swap out
                              v
                    +---------+----------+
                    | Blocked Suspended  |
                    +---------+----------+
                              |
                 Event done   | swap in before ready
                              v
                    +---------+----------+
                    | Ready Suspended    |
                    +---------+----------+
                              |
                              | swap in
                              v
                            Ready

Running -------------------------------> Exit

좀 더 보기 쉽게 swap 경로만 따로 쓰면:

Ready   <--> Ready Suspended
Blocked <--> Blocked Suspended

의미:

예를 들어:

A: Blocked (디스크 읽기 기다림)
메모리 부족
→ A를 디스크로 swap out
→ Blocked Suspended

나중에 디스크 읽기 완료
→ Ready Suspended

메모리에 다시 올라오면
→ Ready
→ Running

five-state와 seven-state의 핵심 차이는:

Five-state:
프로세스는 항상 메모리에 있다고 가정

Seven-state:
메모리 부족하면 프로세스를 디스크로 내릴 수 있음

즉 seven-state는 virtual memory나 swapping을 설명하려고 만든 더 현실적인 모델이다.