01. 프로세스(Process)


프로그램을 실행시키면 운영체제로부터 프로그램이 동작하는데 필요한 자원을 할당받아 동작을 시작한다.
이처럼 실행 상태에 들어간 프로그램을 프로세스라고 한다. 프로세스의 동작 CPU가 그 프로세스의 명령들을 실행하는 것이다.
이때 CPU도 기억장치나 입출력장치와 마찬가지로 프로세스가 동작하는데 필요한 자원이다 운영체제는
실행할 준비가 된 프로세스들이 적절한 CPU를 배정받아 효율적으로 작업을 처리할 수 있도록 관리해야한다.
이번 강의에서는 운영체제의 핵심적인 구성 요소 중 하나인 프로세스에 대한 기본적인 이해와 함께
쓰레드의 개념을 학습하고, 스케줄링의 정책에 대하여 살펴본다.

01) 프로세스(Process) 실행 중인 프로그램

  • 프로그램 : 동작을 하지 않는 정적 , 수동적 개체
  • 프로세스 : 동작을 하는 능동적 개체

02) 운영체제로부터 자원을 할당 받아 동작

  • 자원 : CPU, 메모리, 입출력장치, 파일 등
  • 동작 : CPU가 프로세스의 명령을 실행

03) 사용자 및 시스템 프로세스 존재

04) 프로세스(Process) 와 운영체제


05) 프로세스 관리자의 역할

  • 프로세스를 생성 및 삭제
  • 프로세스 실행(CPU 할당) 을 위한 스케줄링 결정
  • 프로세스의 상태를 관리하며 상태 전이를 처리

06) 프로세스의 상태

❖ 생성 -> 준비 <-> 대기 <-> 실행 -> 종료

07) 프로세스 제어 블록(PCB)

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

  • 프로세스의 관리를 위한 목적
  • 프로세스의 정보를 보관
  • 각 프로세스마다 존재
  • 프로세스가 진행함에 따라 내용 변경

08) 프로세스의 생성과 종료

(01) 프로세스 생성 작업

  • 프로세스의 이름(번호, PID) 결정
  • 준비 큐에 삽입
  • 초기 우선순위 부여
  • 프로세스 제어 블록(PCB) 생성 등

(02) 프로세스 생성 방법 : 시스템 호출

(03) 프로세스 생성 시스템 호출

  • 하나의 프로세스가 프로세스 생성 시스템 호출을 통해 새로운 프로세스를 생성
  • 호출하는 프로세스 : 부모 프로세스
  • 생성되는 프로세스 : 자식 프로세스

(02) 시스템 프로세스와 사용자 프로세스 모두 부모 프로세스 가능

(03) 생성되는 프로세스의 자원

  • 운영체제로부터 직접 얻는 경우
  • 부모 프로세스 자원의 일부를 얻는 경우

(04)자식 프로세스의 자원은 부모 프로세스의 자원으로 제한

  • 과도한 자식 프로세스 생성에 따른 시스템 과부하 방지

(05) 프로세스 종료

  • 프로세스의 마지막 명령이 실행을 마치는 경우
  • 프로세스 종료 시스템 호출을 통하는 경우
  • 프로세스 종료 후 부모 프로세스에게 실행결과를 되돌려 줌

(06) 프로세스 종료 시스템 호출

  • 부모에 의해서만 호출
  • 자식 프로세스가 할당된 자원의 사용을 초과할 때 혹은 더이상 필요치 않을때
: : :독립적 프로세스: :유기적 프로세스:
:의미: :다른 프로세스의 영향을 받지도 않고 주지도 않음: :다른 프로세스와 영향을 주고 받음:
:프로세스 상태: :다른 프로세스와 공유하지 않음: :다른 프로세스와 공유함:
:실행 : :결정적, 재생 가능: : 비결정적, 재생 불가능 :
: :다른 프로세스와 무관하게 중단 및 재시작 가능: :
:데이터: :다른 프로세스와 공유하지 않음: :다른 프로세스와 공유함:

02. 쓰레드


01) 프로세스와 쓰레드

(1) 전통적인 프로세스

  • 처리의 기본 단위
  • 자원 소유의 단위(하나의 주소공간) 및 디스패치의 단위(하나의 제어흐름)
  • 단일 프로세스 내에서 동시처리 불가능 -> 쓰레드 등장

(2) 쓰레드(Thread)

  • 프로세스 내에서 다중처리를 위해 제안된 개념
  • 하나의 프로세스 내에서 하나 이상의 쓰레드가 존재
  • 하나의 쓰레드 내에서 하나의 실행점만 존재
  • 실행에 필요한 최소한의 정보를 가지며, 자신이 속해 있는 프로세스의 실행환견을 공유

(3) 다중 쓰레드의 장점

  • 멀티CPU 혹은 멀티코어 시스템에서 병렬처리 가능
  • 처리 속도 별로 쓰레드가 나눠진 경우 효율적인 처리 가능

03. 스케줄링


01) 스케줄링 단계

(1) 상위단계 스케줄링

  • 시스템에 들어오는 작업들을 선택하여 프로세스를 생성한 후 프로세스 준비 큐에 전달
  • 선택 기준: 시스템의 자원을 효율적으로 이용할 수 있도록 하는 것
  • 입출력(I/O) 중심 작업고 ㅏ연산 중심 작업을 균형있게 선택 (2) 하위단계 스케줄링
  • 사용 가능한 CPU를 준비상태의 어느 프로세스에게 배당할지를 결정
  • CPU를 배당받은 프로세스는 결국 실행상태가 되어 프로세스가 처리됨
  • 수행 주체 : 디스패처(dispatcher) (3) 중간단계 스케줄링
  • 프로세스를 일시적으로 메모리에서 제거하여 중지시키거나 다시 활성화시킴
  • 시스템에 대한 단기적인 부하를 조절

02) 스케줄링 정책

(1) 스케줄링 기본 목표

  • 공정성 : 모든 프로세스가 적정 수준에서 CPU작업을 할 수 있게 함
  • 균형 : 시스템의 자원들이 충분히 활용될 수 있게 함

❖ 일괄처리 운영체제 :

  • 처리량의 극대화
  • 반환시간의 최소화
  • CPU 활용의 극대화

❖ 대화형 운영체제

  • 빠른 응답시간
  • 과다 대기시간 방지

❖ 실시간 운영체제

  • 처리 기한을 맞춤

(2) 선점(Preemptive) 스케줄링 정책

  • 진행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 스케줄링 전략
  • 높은 우선수위 프로세스를 긴급하게 처리하는 경우에 유용
  • 대화식 시분할 시스템에서 빠른 응답시간을 유지하는데 유용
  • 문맥 교환에 따른 오버헤드 발생

❖ 문맥 : CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태

(3) 비선점(Nonpreemptive) 스케줄링 정책

  • 프로세스가 CPU를 할당받아 실행이 시작되면 작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 때까지 실행상태에 있게 됨
  • 모든 프로세스가 공정하게 순서에 따라 실행됨 -> 응답시간 예측 가능
  • 짧은 프로세스가 긴 프로세스를 기다리게 될 수 있음

정리

  • 프로세스는 실행 중인 프로그램을 의미하며 , CPU, 메모리, 입출력장치, 파일 등 실행에 필요한 자원이 할당된다.
  • 프로세스는 생성, 준비, 실행, 대기, 종료의 다섯 상태 중 하나로 존재하며, CPU의 스케줄링, I/O 대기 등에 따라 준비, 실행, 대기 등으로 상태가 변화되며 동작한다.
  • 프로세스 제어 블록은 프로세스를 명시해 주는 다양한 내용을 포함하고 있다.
  • 쓰레드 제어 블록(PCB)은 프로세스를 명시해 주는 다양한 내용을 포함하고 있다.
  • 행점만이 존재하며, 각 쓰레드는 수행에 필요한 최소한의 정보만으로 구성된다.
  • 하나의 프로세스 내에는 하나 이상의 쓰레드가 있을 수 있어 쓰레드를 생성하여 프로세스 내에서 다중처리를 할 수 있다.
  • 프로세스의 스케줄링을 위해 상위단계, 하위단계 및 중간단계 스케줄러가 사용된다.
  • 스케줄링 기법 중 어떤 프로세스도 CPU를 빼앗길 수없는 경우를 비선점이라 하며 , 그렇지 않으면 선점이라고 한다.