← Back to Blog

[Operating System] Process State and Switching

computer science > operating system

2026-07-043 min read

#computer-science #operating-system #process

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

Process

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


Process Control Block(PCB)

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

항목의미
Process ID(PID)process identifier이다.
Parent Process ID(PPID)해당 process를 만든 부모 process의 ID이다.
Process State현재 process 상태를 저장한다. 예: READY, RUNNING, BLOCKED
Memory Pointerprocess가 저장되어 있는 메모리 주소를 저장한다.
Execution Contextprocess switch를 위해 모든 process register 값을 저장한다.

Execution Context

Multi-process를 수행하기 위해 필요하다.

하드웨어에서의 실행 상태를 저장하며, Process Switch를 대비해 PC, SP, PSW 등 register 정보를 저장한다.

Process List

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


Process Image

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

구성 요소의미
User Dataprocess가 사용하는 데이터 영역이다.
User Program실행할 프로그램 코드 영역이다.
Stack함수 호출, 지역 변수, return address 등을 저장한다.
Process Control Blockprocess 제어 정보를 저장한다.

상태 변화

Mode Switch

Process Switch

작동하는 대표 경우는 다음과 같다.

  1. 현재 프로세스가 종료된다.
  2. 현재 프로세스가 대기 상태로 이동한다.
  3. time slice를 모두 사용한다.
  4. 더 높은 우선순위의 프로세스가 등장한다.

작동 과정은 다음과 같다.

  1. execution context를 저장한다. (Save all)
  2. 다른 process를 실행한다.
  3. 저장된 context를 복구한다. (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

상태 의미:

상태의미
New프로세스가 생성되었지만 아직 메모리에 완전히 올라오지 않은 상태이다.
ReadyCPU만 받으면 바로 실행 가능한 상태이다.
Running현재 CPU를 사용 중인 상태이다.
BlockedI/O, 입력, sleep 같은 이벤트가 끝나길 기다리는 상태이다.
Exit 또는 Terminated실행이 종료된 상태이다.

주요 전이:

전이의미
New -> ReadyOS가 프로세스를 메모리에 올린다.
Ready -> Runningdispatcher가 CPU를 할당한다.
Running -> Readytime quantum이 끝나거나 더 높은 우선순위 프로세스가 등장한다.
Running -> BlockedI/O 요청 등으로 기다려야 한다.
Blocked -> Ready기다리던 이벤트가 완료된다.
Running -> Exit프로세스가 종료된다.

Seven-State Process Model

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

추가 상태는 Ready Suspended, Blocked Suspended이다.

                         +------------------+
                         |      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을 설명하려고 만든 더 현실적인 모델이다.