Home Operating System.4 Process Description and Control1
Post
Cancel

Operating System.4 Process Description and Control1

Program VS Process

  • Program : disk에 있는 binary sequence
  • Process : code와 data가 메모리에 올라와 실행 중인 데이터(실행된 프로그램)

The Memory layout of a program

Memory-of-Layout-img

  • Stack : 지역변수, 매개변수, 함수의 주소가 저장되는 공간 위에서 아래로 증가함
  • Heap : 프로세스 내에서 동적으로 할당되는 메모리 공간
  • data
    • bss : 초기화 되지않은 전역 변수들이 저장되는 공간
    • initialized data : 전역 변수
  • text : code가 저장되는 공간

Execution Sequence

Execution-Sequence-img call-stack-img

  • 위의 그림처럼 특정 함수가 호출될 때 반환될 때 돌아올 주소를 stack에 저장한다.

Implementation of Stack

stack-img

  • (사진에서는 편의를 위해 뒤집어 놓음)
  • stack pointer : 스택의 맨위를 가리키는 레지스터. 프로세스가 스택에 데이터를 push하면 스택 포인터가 감소하고, 데이터가 스택에서 제거되면 스택 포인터가 증가한다.
  • stack base : 메모리의 스택 영역에서 가장 낮은 주소. 스택 크기를 계산하고 할당된 메모리 영역을 넘는 스택을 방지하는데 사용
    • 프로세스가 생성될 때 설정되며 PCB(Process Control Block)에 저장
  • stack limit : 메모리의 스택 영역에서 가장 높은 주소. overflow 방지
    • 프로세스가 생성될 때 설정되어 PCB(Process Control Block)에 저장

Process Control Block(PCB)

  • 여러 프로세스들이 여러 자원을 공유하기 때문에 이를 관리하기 위한 정보
    • running process가 Interrupt에 의해 제어권이 넘어갈 때 context data를 저장할 필요가 발생함. 이를 위해 존재하는 것이 PCB
  • PCB의 구성요소
    • Process Identification(식별자)
    • Processor State Information(CPU의 상태)
    • Process Control Information(Process의 상태)

Process Image

Process-img

  • OS가 Process를 관리하기 위해 반드시 알아야 하는 것
    • process context
      • user program, data, stack
      • PCB

Trace of Process

Memory-ex-img

  • 위의 이미지와 같은 메모리 상태가 존재할 때 실제로 프로세서는 아래와 같은 순서로 여러 프로세스들을 번갈아 실행한다. Trace-of-Process-img
  • process switch는 mode switch가 선행적으로 필요하다.
  • process switch가 일어나는 경우
    • Timer Interrupt
    • System Call(I/O Request)
    • Exception

Two-State Process Model

State-transition-Diagram-img Queueing-diagram-img

  • 운영체제에서 프로세스의 실행 상태를 설명하는 기본적인 모델이다.
  • 프로세스는 두 가지 상태, 즉 Running 상태와 Not Running 상태 중에 하나일 수 있다.
  • 두 상태를 전환 하게되는 이벤트
    • 프로세스가 CPU를 양보하거나(자발적 양보)
    • 타이머 인터럽트에 의해 선점되거나(비자발적 양보)
    • 입출력 작업이나 이벤트를 기다리는 경우(블로킹)
  • 단점 : Queue에 있는 것 중에 I/O Request로 Block 상태인 Process를 구분하지 못하고 다시 Block된 Process를 실행할 수 있다.

Five-State Process Model

Five-State-Process-Model-img

  1. New (새로운 상태):

    • 프로세스가 막 생성된 상태이다.
    • 프로세스가 아직 준비 큐에 추가되지 않은 상태이다.
  2. Ready (준비 상태):

    • 프로세스가 CPU를 할당받을 준비가 된 상태이다.
    • 프로세스가 필요한 자원을 모두 가지고 있으며, CPU 스케줄러에 의해 선택되기를 기다리고 있다.
    • Ready 상태의 프로세스들은 준비 큐(Ready Queue)에 저장된다.
  3. Running (실행 상태):

    • 프로세스가 현재 CPU를 점유하고 실행 중인 상태다.
    • 프로세스의 명령어들이 CPU에 의해 실행되고 있다.
  4. Waiting/Blocked (대기/블로킹 상태):

    • 프로세스가 특정 이벤트나 자원을 기다리는 상태이다.
    • 예를 들어, 입출력 작업이 완료되기를 기다리거나, 다른 프로세스로부터 메시지를 받기 위해 대기하는 상태일 수 있다.
    • 프로세스는 대기 상태에서 이벤트가 발생하거나 자원을 획득하면 Ready 상태로 전환된다.
  5. Terminated/Exit (종료 상태):

    • 프로세스가 실행을 완료하고 종료된 상태이다.
    • 프로세스가 모든 작업을 마치고 운영 체제에 의해 제거되는 상태이다.
  • Five-State Process Model의 실제 구현 방식은 운영 체제마다 조금씩 다를 수 있지만, 일반적으로 다음과 같은 원리로 동작한다.
  1. 프로세스 제어 블록 (PCB: Process Control Block):

    • 각 프로세스마다 PCB라는 자료구조를 유지한다.
    • PCB에는 프로세스의 상태, 프로세스 식별자(PID), CPU 레지스터 값, 메모리 할당 정보 등 프로세스 관련 정보가 저장된다.
  2. 준비 큐 (Ready Queue):

    • Ready 상태의 프로세스들은 준비 큐에 저장된다.
    • 준비 큐는 일반적으로 링크드 리스트나 배열과 같은 자료구조로 구현된다.
  3. 대기 큐 (Wait Queue):

    • Waiting/Blocked 상태의 프로세스들은 대기 큐에 저장된다.
    • 각 이벤트나 자원마다 별도의 대기 큐를 유지할 수 있다.
  4. 스케줄러 (Scheduler):

    • 운영 체제의 스케줄러는 준비 큐에서 프로세스를 선택하여 CPU를 할당한다.
    • 스케줄링 알고리즘(예: FCFS, SJF, Priority, Round-Robin 등)을 사용하여 프로세스를 선택한다.
  5. 컨텍스트 스위칭 (Context Switching):

    • 프로세스 간의 전환 시, 현재 실행 중인 프로세스의 상태를 저장하고 다음 실행할 프로세스의 상태를 복원하는 과정이다.
    • 컨텍스트 스위칭은 PCB를 사용하여 프로세스의 상태를 저장하고 복원한다.
  • Five-State Process Model은 프로세스의 상태 변화를 추적하고 관리하는 데 사용되며, 운영 체제는 이를 기반으로 프로세스 스케줄링, 자원 할당, 동기화 등의 기능을 수행한다.
  • 실제 구현에서는 큐, 리스트, PCB 등의 자료구조와 알고리즘을 사용하여 프로세스 상태를 관리하고 전환한다.

Multi-Blocked-Queue-img

Seven-State Process Model

Seven-State-Process-Model-img

  • Swapping : 메모리가 부족하여 일부를 disk에 전달하는 동작
  • Swap될 대상 Process 선정 기준 : blocked process, lower-priority ready process

  • Suspended Ready (일시 중단된 준비 상태):

    • 프로세스가 메모리에서 스왑 아웃(Swap-out)되어 디스크에 저장된 상태이다.
    • 프로세스는 필요한 자원을 가지고 있지만, 현재 메모리에 로드되어 있지 않다.
      • 즉, 프로세스가 필요로 하는 자원(예 : 입력 데이터, 파일 등)을 모두 가지고 있는 상태
    • 메모리에 공간이 확보되면 스왑 인(Swap-in)되어 Ready 상태로 전환된다.
  • Suspended Blocked (일시 중단된 블로킹 상태):

    • 프로세스가 특정 이벤트나 자원을 기다리는 동시에 메모리에서 스왑 아웃된 상태이다.
    • 프로세스는 필요한 이벤트가 발생하거나 자원을 획득한 후에도 메모리에 로드되어야 Ready 상태로 전환될 수 있다.
  • Seven-State Process Model의 실제 구현 방식

    1. 프로세스 제어 블록 (PCB: Process Control Block):

      • 각 프로세스마다 PCB라는 자료구조를 유지한다.
      • PCB에는 프로세스의 상태, 프로세스 식별자(PID), CPU 레지스터 값, 메모리 할당 정보 등 프로세스 관련 정보가 저장된다.
    2. 준비 큐 (Ready Queue)와 대기 큐 (Wait Queue):

      • Ready 상태의 프로세스들은 준비 큐에 저장되고, Waiting 상태의 프로세스들은 대기 큐에 저장된다.
      • 큐는 일반적으로 링크드 리스트나 배열과 같은 자료구조로 구현된다.
    3. 스케줄러 (Scheduler):

      • 운영 체제의 스케줄러는 준비 큐에서 프로세스를 선택하여 CPU를 할당한다.
      • 스케줄링 알고리즘(예: FCFS, SJF, Priority, Round-Robin 등)을 사용하여 프로세스를 선택한다.
    4. 컨텍스트 스위칭 (Context Switching):

      • 프로세스 간의 전환 시, 현재 실행 중인 프로세스의 상태를 저장하고 다음 실행할 프로세스의 상태를 복원하는 과정이다.
      • 컨텍스트 스위칭은 PCB를 사용하여 프로세스의 상태를 저장하고 복원합니다.
    5. 스와핑 (Swapping):

      • 메모리 부족 시, 프로세스를 디스크로 스왑 아웃하고 필요 시 다시 메모리로 스왑 인하는 기술입니다.
      • 스와핑은 프로세스의 상태를 Suspended Ready나 Suspended Blocked로 변경합니다.
      • 스왑 인/아웃은 디스크와 메모리 간의 데이터 전송을 통해 이루어집니다.
This post is licensed under CC BY 4.0 by the author.

Operating System.3 Computer System의 성장 역사와 멀티프로세싱 원리

Operating System.5 Process Description and Control2