티스토리 뷰

Process : Job, Task, Process는 보통 비슷하게 사용됨

Policy and Mechanism : 

Process Management : CPU 가상화(Virtualization of CPU)

 

Program vs Process

Program : 실행되기 전 상태의 수동적인 상태, 실행중이 아님! 이진파일

Process : 실행되고 있는 능동적인 상태. 실행 흐름, 실행 중인 정보 + 상태 + 자원이 포함된 "실행 단위"

 

 

프로세스상태를 추적하기 위한 정보 = PCB에 들어가는 정보

 

  • Program counter: 다음에 실행할 명령어 위치
  • Registers: CPU 레지스터 값
  • Process state: 실행 중 / 대기 / 준비 상태 등
  • Memory management info: 메모리 배치 정보
  • I/O 상태 정보: 사용하는 장치 등
  • Scheduling 정보: 우선순위 등

 

Process Management

메모리 구조(= 프로세스 메모리 구조) 중에서 Stack과 Heap 이 어떤 역할을 하는지

 

[ 높은 주소 ]
──────────────
| argc, argv  |  ← main 함수의 인자
|    stack    |  ← 함수 호출 시 생기는 지역 변수, return 주소 등,선입후 LIFO ( Last In First Out )
|    heap     |  ← malloc 등으로 할당되는 동적 메모리 공간, 프로그램 실행 중에 크기를 정할 수 있는 유연한 경로
|  BSS (초기화 안 된 전역 변수) | int x;
|  Initialized data (초기화된 전역 변수) | int y =10;
|     text     |  ← 코드(명령어)가 저장된 영역
──────────────
[ 낮은 주소 ]

 

Execution Sequence

Stack

: LIFO(Last-In-First-Out) 구조 → 나중에 들어온 게 먼저 나감. 함수 호출 시마다 리턴 주소(return address)가 스택에 저장됨.

Call Stack (호출 스택)

: 프로그램에서 함수를 호출할 때마다 스택에 현재 위치(리턴 주소)를 저장하고, 함수가 끝나면 그 리턴 주소로 복귀

Stack Pointer (SP) : 현재 스택의 가장 꼭대기(top)의 주소를 저장하는 레지스터 , 새로운 데이터(push)는 낮은 주소에 쌓이고, 제거(pop)는 높은 주소로 간다.

프로세서가 call(호출)하면 스택에 return address를 저장(다시 돌아와야해서), parameters(인자) 저장, Return parameters(리턴 값) 저장

 

 

Process Description

1. Execution Context Data : 운영체제가 여러 프로세스를 번갈아 실행할 때 필요한 개념

Execution Context란? Register Context , 실행 중인 프로세스의 CPU 상태(레지스터 값 등)을 통틀어 일컫는 말

필요한 이유 : 멈출 때는 Execution Context를 저장하고, 다시 실행할 때는 저장해 둔 Context를 복구해야 한다.

 

2. Process Control Block (PCB)

각 프로세스의 context를 저장하는 데이터 구조, 하나의 프로세스에 대한 모든 정보를 저장하는 구조체

PCB안에 들어있는 것들

프로세스를 전환할 때 OS는 Execution Context를 PCB에 저장해 두어야 한다.

 

3.Process Image : 운영체제가 프로세스를 어떻게 구성하고 관리하는지

 Process Image의 구성요소,: PCB, 코드, 데이터, 스택

프로세스 생성 : 생성할 때 필요한 메모리, PCB, 코드, 데이터 등을 세팅해서 Process Image를 형성하는 과정

프로세스 종료: PCB, 코드, 데이터, 스택 등 할당된 모든 리소스를 해제, Process Image 제거

4.Process List : Process Switch 단계 요약

  1. 현재 프로세스의 레지스터 정보 저장
    • 현재 실행 중인 프로세스의 PC, SP, PSW 등 레지스터 값들을 저장함.
    • 저장된 정보는 PCB에 들어감.
    그림 왼쪽: "Save context"
  2. 현재 프로세스의 PCB 업데이트
    • 상태를 예: Ready, Blocked, Exit 등으로 바꿈.
  3. 현재 프로세스 PCB를 적절한 큐로 이동
    • 예: Ready Queue, Blocked Queue 등
  4. 다른 프로세스 선택 (스케줄링 호출)
    • schedule() 함수가 호출되어 다음에 실행할 프로세스를 정함.
  5. 선택된 프로세스의 PCB 상태 업데이트
    • Running으로 상태 변경.
  6. 선택된 프로세스의 레지스터 정보 복원
    • PCB에 저장되어 있던 레지스터 정보를 CPU에 로드함.
    그림 오른쪽: "Restore context"

 

Trace of Process

운영체제가 CPU를 어떻게 여러 프로세스에 번갈아 배정하는지를 보여주는 예시

- Process states

two state process model

Not Running : 실행중이 아님, Ready(실행 준비 완료), Blocked (또는 Waiting)( I/O 작업이 끝나기를 기다리는 중) >> 너무 포괄적임 적어도 5개의 기준이 필요함 (new, ready, running, blocked, exit)

running : 실행중임

 

 

five state process model

new : 프로세스가 막 생성됨. OS가 PCB(Process Control Block)를 만들고 이 상태로 들어온다.

ready : 실행 준비 완료된 상태 (CPU 할당만 기다림)

running : CPU를 할당받아 실제로 실행 중인 상태

blocked : 어떤 이벤트(I/O 등)를 기다리느라 실행 불가능한 상태

exit : 실행이 끝났거나, 중간에 에러로 중단된 상태

 

(a) 단일 Blocked Queue 구조

 

  • Ready queue : CPU를 기다리는 프로세스들
  • Blocked queue : I/O 등 이벤트를 기다리는 모든 프로세스가 한 큐에 같이 모여 있음
  • >> 모든 종류의 이벤트 대기 프로세스가 섞여 있음

(b) 다중 Blocked Queue 구조

 

이벤트 발생 시 → 해당 이벤트 큐에 있는 프로세스들만 바로 Ready로 이동

 

 

 

 

 

 

 

seven state process model

OS는 메모리를 아끼기 위해 어떤 프로세스를 일시적으로 중지(Suspend) 한다, 메모리에 있지 않아서 바로 실행할 수 없음

 

 

  • New: 막 생성된 상태. 아직 메모리에 올라가지 않음.
  • Ready: 실행 대기 중. CPU만 배정되면 바로 실행 가능.
  • Running: 현재 CPU에서 실행 중.
  • Blocked: 어떤 이벤트(예: I/O 결과)를 기다리며 멈춘 상태.
  • Exit: 실행 완료되거나 종료된 상태.
  • Ready/Suspend: 메모리에는 없지만 실행 대기 중. 메모리에 올라오면 바로 Ready 상태 됨.
  • Blocked/Suspend: 메모리에는 없고, 이벤트도 기다리는 상태.

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/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
글 보관함