HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
👻
개발 기록
/
📑
강의 정리
/
🗝️
덕수의 운영체제
/
📼
Process Management
📼

Process Management

프로그램 vs 프로세스

  • 프로그램 : 컴퓨터 시스템에 실행 요청 전 프로그램 + 데이터
  • 프로세스 : 실행을 위해 시스템(커널)에 등록된 작업.
    • 커널에 등록하는 이유 : 운영체제가 담당해야 시스템 성능 향상 등 효율적인 관리가 가능함.
    • 다른 정의들
      • 커널에 등록된 job 또는 프로그램.
      • 각종 자원들을 요청, 할당 받을 수 있는 개체.
      • 프로세스 관리 블록(PCB)을 할당받은 개체.
      • 능동적인 개체. 실행 중 각종 자원 요구, 할당, 반납하며 진행
    • 한 마디로 요약하면 실행 중인 프로그램.
 

프로세스의 종류

notion image
 

자원의 개념

  • 커널의 관리하에 프로세스에게 할당, 반납되는 수동적인 개체.
  • H/W resource와 S/W resource로 구분됨.
  • 프로세스 ↔ 자원과정을 커널이 관리.
 

PCB(process control block)

  • 프로세스를 컨트롤하기 위한 정보들.
  • 메모리에서 커널이 가지고 있는 영역에 저장.
  • PCB가 관리하는 정보.
    • 포인터
      • 프로세스의 현재 위치를 저장하는 포인터 정보입니다.
    • 프로세스 상태
      • 프로세스의 각 상태 (생성(New), 준비(Ready), 실행(Running), 대기(Waiting), 종료(Terminated))를 저장합니다.
    • 프로세스 번호
      • 모든 프로세스에는 프로세스 식별자를 저장하는 프로세스 ID 또는 PID라는 고유 한 ID가 할당됩니다.
    • 프로그램 카운터
      • 프로세스를 위해 실행될 다음 명령어의 주소를 포함하는 카운터를 저장합니다.
    • 레지스터
      • 누산기, 베이스, 레지스터 및 범용 레지스터를 포함하는 CPU 레지스터에 있는 정보입니다.
    • 메모리 제한
      • 이 필드에는 운영 체제에서 사용하는 메모리 관리 시스템에 대한 정보가 포함됩니다. 여기에는 페이지 테이블, 세그먼트 테이블 등이 포함될 수 있습니다.
    • 열린 파일 목록
      • 이 정보에는 프로세스를 위해 열린 파일 목록 이 포함됩니다.
  • PCB는 OS 별로 다름. PCB의 참조, 갱신 속도는 OS의 성능을 결정짓는 중요한 요소 중 하나임.
 

프로세스 상태

notion image
  • new, created state
    • 프로세스 생성 중 커널 공간에 PCB가 만들어진 상태 (메모리 할당 받기 전).
    • 작업을 커널에 등록.
    • 메모리 공간에 의해 ready가 될지, suspended ready가 될지 결정됨.
  • ready
    • 프로세스가 CPU를 기다리는 상태, cpu만 있으면 즉시 실행 가능한 상태.
    • 프로세스가 메모리에 적재된 상태로 필요한 자원을 모두 얻은 상태.
    • cpu가 준비된 상태를 dispatch, schedule이라 함.
  • runnig
    • 프로세스가 CPU를 할당받아 명령어를 수행중인 상태.
    • CPU가 하나인 경우, 여러 프로세스가 동시에 실행되도 실제로 실행중인 프로세스는 매 시점 하나 뿐임.
    • 실행 중 cpu를 뻇기게 되면(preemption) ready 또는 asleep 상태로 이동함.
  • blocked, asleep
    • 프로세스가 CPU를 할당받아도 당장 실행할 수 없는 상태.
    • 현재 프로세스가 I/O작업 등을 처리 중인 상태.
    • cpu를 다시 할당받으면 ready 상태로 돌아가는데 running으로 가지 않는 이유는
    • 프로세스가 running상태에서 디스크 I/O작업을 하는 동안은 CPU를 점유하고 있어도 다음 명령어를 수행하지 못하기 때문에 CPU를 낭비하지 않기 위해서 I/O 작업을 하는 프로세스는 CPU를 반납하고 Device Queue에 들어가게 됨.
  • suspended
    • 프로세스의 중지 상태
    • 메모리를 강제로 뺏긴 상태로 특정한 이유로 프로세스의 수행이 정지된 상태.
    • 외부에서 다시 재개시키지 않는 이상 다시 활성화 될 수 없다.
    • blocked는 잠시 중지되어있다 끝나면 다시 ready상태로 돌아온다.
    • suspended ready : ready상태에 있던 프로세스가 디스크로 스왑아웃.
    • suspended blocekd : blocked상태에 있던 프로세스가 디스크로 스왑아웃.
    • 다시 들어오는 것을 swap in이라 함.
    • memory image를 하드 디스크에 보관함.
  • terminated, zombie state
    • 종료시스템 콜을 받고 PCB가 할당 해제되기 직전의 상태.
    • 프로세스의 실행이 완료되고 할당된 CPU를 반납한 상태.
    • 정보 수집 후 삭제됨.
    • 완전히 종료되면 더 이상 프로세스가 아님.
    •  
notion image
 
  • 각 상태에 따른 자료구조 존재함.
    • ready Queue
    • I/O Queue
    • Device Queue
 

인터럽트

  • 예상치 못한, 외부에서 발생한 이벤트
  • 인터럽트의 종류
    • I/O interrupt
    • 입출력장치가 데이터 전송을 요구하거나 전송이 끝나 다음 동작이 수행되어야 할 경우 ex) 키보드 이벤트 등 예상하지 못한 이벤트
    • Clock interrupt - CPU가 동작할 때 발생하는 클릭 이벤트
    • Console interrupt - 터미널 창에서 발생하는 인터럽트
    • Program check interrupt
    • Machine check interrupt
    • Inter-process interrupt
    • System call interrupt
 

인터럽트 처리 과정

 
💡
누군가 내가 하던 일을 멈추고 같이 무엇을 하자고 상상해보자
 
notion image
  • 프로그램 중단시 커널이 개입함. 그리고 context saving을 실시.
  • 인터럽트 처리시 이뤄지는 과정 a. 인터럽트 발생 장소, 원인 파악 (interrupt handling) b. 인터럽트 서비스 할 것인지 결정 (interrupt handling) c. 인터럽트 서비스 루틴 호출 (interrupt service)
 
시간의 흐름에 따라 다시 살펴보자.
시간의 흐름에 따라 다시 살펴보자.
  • Pi는 프로세스
 
  1. interrupt가 발생하면 커널이 Pi를 중단함.
  1. context saving 발생.
  1. 메모리 PCBi에 저장.
  1. 커널의 interrupt handling & interrupt sevice (프로그램). 이 프로그램은 프로세서에서 일을 함.
  1. 서비스가 끝나면 프로세서가 비어있기 때문에 ready 상태에 있던 하나를 넣어줌. Pi가 들어올 수도 있지만 Pj가 들어올 수도 있다는 의미. 그럼 Pj의 이전 내용을 복구해서 (context restoring) 일을 수행함.
 

Context switching

  • context
    • 프로세스와 관련된 정보들의 집합.
    • CPU가 작업을 수행할 땐 어떤 데이터를 register에 올린 후 작업함 - register context
    • 그 외 코드 등 다양한 데이터는 메인 메모리에 저장.
  • Context saving
    • 현재 프로세스의 register context를 메모리에 저장하는 작업.
  • Context restoring
    • register context를 프로세스로 복구하는 작업.
  • Context switching (process swiching)
    • 실행 중인 프로세스의 context를 저장하고, 앞으로 실행할 프로세스의 context를 복구하는 일.
    • 커널의 개입으로 이루어짐.
    • Context saving + Context restoring이라 할 수 있음.
 

Context switching overhead

  • 보통 컴퓨터에서 작동 중인 프로그램이 많기 때문에 이는 OS 성능에 큰 영향을 줌.
  • 불필요한 context switching을 줄이는 것이 중요함.
  • ex) 스레드를 이용하여 줄일 수 있음.