[OS] 프로세스/ 프로세스의 상태변화

Manx·2022년 4월 28일
0

운영체제

목록 보기
2/12

프로세스(Process) 정의

  • 실행 중인 프로그램
  • 실행 중인 프로시저
  • 각종 자원을 요청하고 할당받을 수 있는 개체
  • PCB(프로세스 제어 블록)을 할당받은 개체 == 커널에 등록된 작업

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

  • OS가 프로세스 관리에 필요한 정보를 저장한다.
  • 프로세스 생성 시, 생성
  • 커널 내에 존재한다.

커널 : 운영 체제의 핵심이 되는 프로그램으로, 시스템의 모든 것을 완전히 통제

PCB가 관리하는 정보

  1. PID(Process Identification Number) : 프로세스 고유 식별 번호
  2. 스케줄링 정보
  3. 프로세스 상태 (자원 할당, 요청 정보 등)
  4. 메모리 관리 정보
  5. 입출력 상태 정보
  6. 문맥 저장 영역 (context save area) : 프로세스의 레지스터 상태를 저장하는 공간
  7. 계정 정보 : 자원 사용 시간 등을 관리

프로세스의 상태 변화

1. Created

  • 작업을 커널에 등록
  • PCB 할당 및 프로세스 생성

2. ready

  • 프로세서 외에 다른 모든 자원을 할당받은 상태
  • 프로세서 할당 대기 상태, 즉시 실행 가능 상태
  • Dispatch (or Schedule) : 준비 큐 맨 앞에 있던 프로세스가 프로세서를 점유하는 것

3. Running

  • 프로세서와 필요한 자원을 모두 할당받은 상태

Premmption : Running → ready

  • 프로세스가 프로세서를 독점하지 못하도록 인터럽트 클록을 두어 특정 시간 동안만 프로세서를 점유하게 한다. (e.g, tiem-out)

Block/sleep : Running → asleep

  • 할당된 시간 이전에 실행상태의 프로세스에 I/O 자원이 필요하거나 새로운 자원 요청의 문제로 프로세서를 스스로 양도하는 상태
  • 발생 이유 : 인터럽트

4. Blocked/Asleep State

프로세서 외에 다른 자원을 기다리는 상태 ( 자원 할당은 System call에 의해 이루어 짐)
Wake-up : Asleep → ready

5. Suspended

  • 메모리를 할당받지 못한(빼앗긴) 상태
    - Memory image를 swap device에 보관 ( sawp device : 프로그램 정보 저장을 위한 특별한 파일 시스템)
    - 커널 또는 사용자에 의해 발생
  • Swap-out(suspended), Swap-in(resume)

6. Terminated / Zombie State

  • 프로세스 수행이 끝난 상태
  • 모든 자원을 반납한 후
  • 커널 내에 일부 PCB 정보만 남아 있음

Running 상태 변화

  • Ready Queue
  • I/O Queue
  • Device Queue

인터럽트 처리 과정

실행 → 대기 상태가 발생하는 이유가 인터럽트가 발생했기 때문이다.

그리고 인터럽트 처리 과정 중 문맥 교환(Context switching)이 이루어진다.

문맥 교환( Context switcing)

  • 프로세서의 레지스터에 있던 내용을 잊어버리면 안 되므로 그 내용을 잠시 저장하는 것
  • 프로세서의 레지스터에 있던 내용을 저장한다.

이 과정에서 오버헤드가 발생할 수 있다.
오버헤드는 시간 비용이 소요되어 운영체제 설계 시 불필요한 문맥 교환 감소가 중요하다.
그렇다면 불필요한 문맥 교환을 줄이는 방법에는 무엇이 있을까?

  • 스케줄러
  • 스레드 활용

스케줄러와 스레드에 대해서는 다음 시간에 더 공부하도록 하겠다.


Reference

  • 운영체제:그림으로 배우는 구조와 원리 - 한빛 아카데미
profile
백엔드 개발자

0개의 댓글