(Cs with python)-프로세스

컴퓨터사이언스 부트캠프 with 파이썬 책을 공부하며 정리한 포스팅입니다.

개인 공부후 정리용으로 남기는 포스팅으로 내용상에 오류가 있을수 있습니다.

예제 코드는 Computer-Science 를 통해 실습하고 있습니다.


핵심개념

  • 프로세스
  • 스케줄링
  • 컨텍스트 스위칭

프로세스

  • 더블클릭으로 프로그램을 실행한 상태.
    • 즉, 하드디스크에서 메인 메모리로 코드와 데이터를 가져와 현재 실행되고 있는 상태
    • 동시에 여러개가 존재할수 있음.
  • 프로그램 - 하드디스크에 저장된 실행 파일. 같은 경로에 같은 이름으로 동시에 존재할수 없음

프로그램과 프로세스


프로세스 상태

프로세스 상태

  • 생성(Created)
    • 프로그램을 더블클릭했을 때 프로세스가 생성되면서 실행 가능 상태가 된다.
    • 곧바로 실행 상태가 되는게 아니라 실행 가능 상태에서 실행중인 프로세스와 우선순위를 비교한 다음
    • 우선순위가 높으면 실행하고 아니면 순서를 기다리는 식
  • 실행 가능(Waiting)
    • 운영체제는 인터럽트가 발생했을 때 실행 가능 상태의 프로세스 중 다음으로 CPU를 할당받아
    • 실행될 프로세스를 결정한 후 실행 중인 프로세스와 교체한다.
    • 디스패치(dispatch) - 실행될 프로세스에 CPU를 할당하는 것.
    • 프리엠션(preemption) - 실행 중이던 프로세스에서 CPU를 해제하는 것.
  • 실행(Running)
    • 프로세스가 운영체제로부터 CPU를 할당받아 실행되고 있는 상태
  • 보류(Blocked)
    • 프로세스가 I/O(입출력) 작업을 하면 CPU를 해제하고 보류 상태로 변경된다.
    • I/O 작업이 끝나면 실행 가능 상태로 변경됨(실행 상태로 변경되는게 아니다!!)
  • 소멸(Terminated)
    • 프로세스 실행이 완료되어 메인 메모리에서 사라진다.

스케줄링(Scheduling)

  • 운영체제가 여러 프로세스의 CPU 할당 순서를 결정하는 것.
    • 이러한 일을 하는 프로그램을 스케줄러 라고 한다.
  • 선점형 스케줄링(preemptive scheduling)비선점형 스케줄링(non-preemptive scheduling)으로 나뉨
  • 선점형 스케줄링에서는 어떤 프로세스가 실행중에 있어도 스케줄러가 강제로 실행을 중지하고 다른 프로세스에 CPU를 할당할수 있다.
  • 비선점형 스케줄링에서는 프로세스가 종료되거나 I/O작업에 들어가거나 명시적으로 CPU를 반환하기 전까지 계속해서 실행된다.
  • 최근의 운영체제는 멀티태스킹을 위해 선점형 스케줄링을 함.

스케줄링의 알고리즘

매우 다양하지만 대표적으로 4가지만 알아보자.

  • 우선순위(Priority) 알고리즘
    • 프로세스에 우선순위를 매겨 우선순위가 높은 프로세스를 먼저 실행.
    • 단점 - 기아 상태(starvation)발생
      • 우선순위가 낮은 프로세스는 계속 CPU를 할당받지 못하는 현상
    • 위와 같은 문제를 해결하기 위해 만든 방법 - 에이징(aging)
      • 우선순위가 낮은 프로세스가 일정 시간 CPU를 할당받지 못하면 우선순위를 높여 실행
  • 라운드 로빈(Round-Robin) 알고리즘
    • 실행 가능 상태에 있는 프로세스들을 순서대로 가져와 일정 시간동안 CPU를 할당하는 방식
    • 타임 슬라이스(time slice) 혹은 퀀텀(quantum) - 프로세스에 부여된 일정 시간
    • 대표적인 선점형 스케줄링
    • 단점
      • 너무 짧으면 컨텍스트 스위칭이 자주 일어나 시스템에 부담이 됨
      • 너무 길면 멀티태스킹을 구현하는데 문제가 발생
  • FCFS(First Come First Served)
    • 실행 가능 상태에 먼저 들어온 프로세스를 먼저 실행
    • 비선점형 스케줄링
  • SJF(Shortest Job First)
    • 평균 대기 시간을 최소화하기 위해 CPU 할당 시간이 가장 짧은 프로세스를 먼저 실행
    • 단점
      • 할당 시간이 긴 프로세스는 계속해서 실행이 되지 않는 기아 상태에 빠질수 있다.
      • CPU의 실제 할당 시간을 알 수 없으므로 예측에 의존해야 하는 단점도 있다.

컨텍스트 스위칭

컨텍스트스위칭

  • 실행 중인 프로세스의 CPU 상태 정보를 그 프로세스의 PCB에 저장하고 곧 실행될 프로세스의 PCB에서 이전 CPU 상태 정보를 CPU로 가져오는 것
    • CPU 상태를 컨텍스트 라고 부르는데 말 그대로 현재 CPU의 레지스터 값들을 ‘전환(switching)’하는 것.
  • PCB(Process Control Block, 프로세스 제어 블록)
    • 프로세스의 CPU 상태와 프로세스의 상태를 저장해 둔 메모리 블록

Reference

운영체제/Operation System

더북

Comments