OS 프로세스

  • 학습 개요

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

    1. 프로세스의 개념을 설명할 수 있다.
    2. 프로세스와 쓰레드의 관계를 설명할 수 있다.
    3. 스케줄링의 필요성과 정책을 설명할 수 있다.
  • 요약

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

프로세스 개요

프로세스

  1. 프로세스는 실행 중인 프로그램을 의미
    • 프로그램 : 동작을 하지 않는 정적이며 수정적인 개체.
    • 프로세스 : 동작을 하는 능동적인 개체.
  2. 프로세스에는 실행을 위해 필요한 컴퓨터의 자원이 할당됨.
    • CPU, 주기억장치, 파일, 입출력 장치 등.
  3. 프로세스의 동작은 CPU가 그 프로세스의 명령들을 실행하는 것.
  4. 운영체제는 프로세스들을 생성시키고 종료시키기 위한 다양한 작업과 프로세스들을 실행시키기 위한 스케쥴링 작업을 처리.

프로세스의 상태 변화

  1. 프로세스의 5-상태
    • 생성 : 처름 프로세스 생성 상태
    • 준비 : CPU 할당을 기자리는 상태
    • 실행 : 프로세스가 처리되는 상태
    • 대기 : 특정 자원의 할당이나 입출력 작업의 종료 때까지 보류되는 상태
    • 종료 : 모든 처리가 완료된 상태
  2. 프로세스의 상태 전이
    • 생성 -> 준비 : 프로세스 생성이 완료된 경우.
    • 준비 -> 실행 : 스케쥴러에 의해 선택된 경우, (Dispatch)
    • 실행 -> 준비 : 할당시간 만료 또는 보다 높은 우선순위의 프로세스가 오는 경우.
    • 실행 -> 대기 : 페이지 교환, 입출력 등의 작업이 필요한 경우.
    • 대기 -> 준비 : 페이지 교환, 입풀력 등의 작업이 완료된 경우.
    • 실행 -> 종료 : 프로세스를 성공적으로 긑마친 경우.

프로세스 제어 블록

  1. 프로세스 제어 플록 (PCB)
    • 프로세스 관리를 위해 해당 프로세스의 정보를 보관.
    • 프로세스 진행에 따라 정보의 변경도 발생.
  2. 프로세스 제어 블록 내 주요 정보
    • 프로세스 상태 : 프로세스의 현재 상태.
    • 프로세스 번호 (PID) : 프로세스의 구분 기준.
    • 프로그램 카운터 : 프로세스 수행을 위한 다음 명령의 주소.
    • 레지스터 : 실행상태에서 다른 상태로 전이되는 경우 CPU의 레지스터 정보를 이곳에 저장.
    • 메모리 : 프로세스 저장 주소, 가상주소와 실주소의 사상 정보, 메모리 경계 정보 등.

프로세스 생성과 종료

  1. 부모 프로세스와 자식 프로세스
    • 부모 프로세스 : 프로세스 생성 시스템 호출을 이용하여 다른 프로세스를 생성한 프로세스.
    • 자식 프로세스 : 부모 프로세스가 생성한 새로운 프로세스.
  2. 프로세스 생성
    • 프로세스의 이름(PID)이 지정되고 프로세스 제어블록이 만들어지며, 준비 큐에 삽입.
    • 부모 프로세스와 자식 프로세스 사이의 상호작용을 위해 자원을 공유할 수 있음.
  3. 프로세스의 종료
    • 처리할 작업을 마치면 실행 결과를 부모 프로세스에 되돌려 주며 종료.
    • 연속적 종료 : 부모 프로세스가 종료되면 그 자식 프로세스들도 모두 종료.

프로세스 간의 관계

  1. 독립적 프로세스
    • 실행 중인 다른 프로세스의 영향을 받지도 않고 주지도 않는 프로세스.
    • 프로세스의 상태는 다른 프로세스와 공유되지 않음.
    • 프로세스의 실행은 결정적 : 실행 결과는 입력에 의해서만 결정됨.
    • 프로세스의 실행은 재생 가능 : 실행 결과는 같은 입력에 대해 항상 동일함.
    • 타 프로세스와 무관하게 중단되거나 재시작될 수 있음
  2. 유기적 프로세스
    • 실행 중인 다른 프로세스와 영향을 주고 받으며 동작하는 프로세스
    • 프로세스의 상태는 다른 프로세스와 공유됨.
    • 프로세스의 실행은 비결정적 : 실행 결과는 실행 순서에 좌우됨.
    • 프로세스의 실행은 재생 불가능 : 실행결과는 같은 입력에 대해 항상 동일하지는 않음.

쓰레드

  1. 전통적인 프로세스
    • 처리의 기본 단위.
    • 자원 소유의 단위 + 디스패칭의 단위.
    • 단일 프로세스 내에서는 동시 처리 불가능.
  2. 스레드
    • 프로세스 내에서의 다중처리를 위해 제안된 개념.
    • 프로세스는 자원 소유의 단위로, 쓰레드는 디스패칭의 단위로 구분.
    • 하나의 프로세스 내에는 하나 이상의 쓰레드가 존재.
    • 하나의 쓰레드 내에서는 하나의 실행점만 존재
    • 쓰레드는 실행에 필요한 최소한의 정보만을 가지며, 자신이 속해 있는 프로세스의 실행환경을 공유함.
    • 다중 쓰레드
      • 멀티 CPU 혹은 멀티 코어 시스템에서는 병렬 처리 가능.
      • 처리 속도 별로 쓰레드가 나워진 경우 효율적인 처리 가능.

스케쥴링

스케쥴링의 단계

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

스케쥴링 정책

  1. 스케쥴링의 기본 목표
    • 공정성 : 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함.
    • 균형 : 시스템의 자원들이 충분히 활용될 수 있게 함.
  2. 일괄처리 운영체제의 스케쥴링 목표
    • 처리량의 극대화.
    • 반환시간의 최소화.
    • CPU 활용의 극대화.
  3. 대화형 운영체제의 스케쥴링 목표
    • 빠른 응답 시간.
    • 과대한 대기 방지.
  4. 실시간 운영체제의 스케쥴링 목표
    • 처리 기한을 맞춤.
  5. 선점 스케쥴링(Preemptive) 정책
    • 진행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 스케쥴링 전략.
    • 높은 우선순위의 프로세스를 긴급하게 처리하는 경우 유용.
    • 대화식 시분할 시스템에서 빠른 응답시간을 유지하는데 유용.
    • 문맥 교환에 따른 오버헤드 발생.
      • 문맥(Context) :
        CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태.
      • 문맥 교환 (Context Switching)
        • CPU가 현재 샐행하고 있는 프로세스의 문맥을 PCB에 저장하고, 다음 프로세스의 PCB로부터 문맥을 복원하는 작업.
        • 운영체제는 문맥 교환이 매우 빠르게 실행되도록 만들어져야 함.
  6. 비선점 스케쥴링(Nonpreemptive) 정책
    • 프로세스가 CPU를 할당받아 실행이 시작되면 작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 때까지 실행상태에 있게 됨.
    • 모든 프로세스가 공정하게 순서에 따라 실행되도록 관리됨(응답 시간 예측 가능)
    • 짧은 프로세스가 긴 프로세스를 기다리게 되는 경우가 발생할 수 있음.
728x90
반응형

'OS' 카테고리의 다른 글

[OS] 운영체제  (0) 2020.04.24

+ Recent posts