[운영체제] 프로세스 관리

ideal dev·2022년 12월 23일
0

운영체제

목록 보기
5/9

프로그램 vs 프로세스

  • 프로그램 : 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태
  • 프로세스 : 메인 메모리에 할당되어 실행중인 상태인 컴퓨터 프로그램
  • 프로세스 , job, task 라고도 부름.
    : stack popinter, data ,text, register 등이 끊임없이 변함.

👉프로세스 상태

  • New : 프로그램이 메인 메모리에 할당
  • Ready : 할당된 프로그램이 초기화와 같은 작업을 통해 실행되기 위한 준비를 마침
  • Running : CPU가 해당 프로세스를 실행
  • Waiting : 실행중인 프로세스가 I/O로 인해 CPU를 사용하지 않고 다른 작업을 할 때
    ( 해당 작업이 끝나면 ready상태로 돌아감)
  • Terminated : 프로세스가 완전 종료

👉PCB(Process Control Block)(Task Control Block)

  • 프로세스에 대한 정보를 지닌 블록
    정보 : 프로세스의 상태,해당 프로세스의 Program Counter, registers, MMU정보(base, limit), CPU시간,프로세스 번호(PID) 등
  • CPU는 여러 프로세스를 바꿔가며 수행하는데, 수행중인 프로세스를 나갈 때 이 프로세스의 정보를 어딘가에 저장하고 있어야 다음에 이 프로세스를 수행할 때 이전에 수행하던 작업을 이어서 할 수 있음. 이러한 정보를 저장하는 곳

👉프로세스 큐

  • 프로세스는 수행하면서 상태가 여러번 변하는데, 이에 따라 서비스를 받는 곳도 다름!
  • 프로세스는 일반적으로 여러개가 한 번에 수행되기 때문에 순서가 필요!
    -> 이러한 순서를 대기하는 곳 : 큐
    -> 큐 내부에 저장된 실제 데이터 : 각 프로세스의 PCB 저장

Job Queue

  • 하드디스크에 있는 프로그램이 실행되기 위해 메인 메모리의 할당 순서를 기다리는 큐
  • job Scheduler
  • 몇 분에 한 번 일어남, 이전 작업이 끝나야 들어갈 수 있기 때문에 Long-term scheduler

Ready Queue

  • CPU 점유 순서를 기다리는 큐
  • CPU Scheduler
  • I/O 보내고, Main에서 프로세스 가져오고 등.. 빠른 시간 안에 이루어져야 하기 때문에 Short-term scheduler

Device Queue

  • I/O를 하기 위한 여러 장치가 있는데, 각 장치를 기다리는 큐가 각각 존재
  • Device Scheduler

👉다중 프로그래밍 (Multiprogramming)

: 단일 프로세서 환경에서 Main Memory에 여러개의 프로세스가 있는 상태 (동시에 실행되지는 않음)

Degree of multiprogramming

  • 현재 메모리에 할당되어 있는 프로세스 개수

I/O-bound vs CPU-bound process

  • I/O-bound process : 해당 프로세스에서 입출력 작업이 차지하는 비중이 높은 프로세스
  • CPU-bound process : CPU작업 비중이 높은 프로세스

Medium-term scheduler

  • 작업안하는 프로세스 H/D로 아웃
  • 운영체제가 실행하는 동안 메인 메모리에 있는 전체 프로세스를 검사하여 보조기억장치로 옮길 프로세스를 찾아 옮김
  • swapping : 메인메모리에서 장시간 사용하지 않는 프로세스를 하드디스크로 옮겨주고(Swap out), 다시 사용되려고 하면 하드디스크에서 해당 프로세스를 다시 메인 메모리에 할당(Swap in)

Context Switching(문맥전환)

: 한 프로세스에서 다른 프로세스로 옮겨가는 것

  • Scheduler : Ready Q 중 어떤 프로세스 실행할까
  • Dispatcher :현재 CPU 데이터는 이전 프로세스의 PCB에 갱신하고, 새로 시작되는 프로세스의 PCB 데이터를 CPU로 복원(restore)
  • Context switching overhead : 계속 바뀌면 부담이 많아요, 문맥 전환은 매우 자주 발생하는 작업이므로 overhead를 줄이기 위해서는 dispatcher를 구현하는 코드에 대한 효율을 최대한 높야 함.

정리

프로세스란?

  • 프로그램이 메인 메모리에 할당되어 실행중인 상태 (job, task라고도 부름)
  • 프로세스 상태 : New, Ready, Running, Waiting, Terminated
  • 프로세스 상태에 대한 정보 저장 : PCB
  • 프로세스 상태가 바뀔 때, 각 프로세스들의 순서: job, ready, device queue/Scheduler

다중 프로그래밍

  • 단일 프로세스에 여러개의 프로세스가 있는 상태
  • 다중 프로그래밍 상태에서 작업 안하는 프로세스 있을 때 : Medium-term scheduler 로 swap - in/swap out
    다중 프로그래밍 상태에서 프로세스1에서 프로세스2로 넘어갈 때 : Context Switching

참고

정리 - https://velog.io/@codemcd/운영체제OS-5.-프로세스-관리
강의 - 참고 강의 - 운영체제 양희재 교수님 강의

0개의 댓글