프로세스 개요

프로세스

프로세스

  • 프로세스(process): 실행 중인 프로그램

    • 프로그램: 동작을 하지 않는 정적, 수동적 개체
    • 프로세스 : 동작을 하는 능동적 개체
  • 운영체제로부터 자원을 할당 받아 동작

    • 자원: cpu, 메모리, 입출력장치, 파일등
    • 동작: cpu가 프로세스의 명령을 실행
  • 사용자 및 시스템 프로세스 존재

프로세스와 운영체제

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

프로세스의 상태

  • 5-상태 모델

    • 생성: 처음 작업이 시스템에 주어진 상태
    • 준비: 실행 준비가 되어 cpu 할당을 기다리는 상태
    • 실행: 프로세스가 처리되는 상태
    • 대기: 프로세스가 특정 자원을 할당받을 때까지 또는 I/O 작업이 끝날 때까지 작업이 보류되는 상태
    • 종료: 모든 처리가 완료되어 사용자에게 반환되는 상태
  • 생성 ------> 준비

  • 준비 ---디스패치---> 실행

  • 실행 ---할당시간 만료---> 준비

  • 실행 ---이벤트 대기---> 대기

  • 대기 ---재개 조건 만족---> 준비

  • 실행 ------> 종료

프로세스 제어 블록(PCB)

  • 프로세스 제어 블록(Process Control Block, PCB)
    • 프로세스의 관리를 위한 목적
    • 프로세스의 정보를 보관
    • 각 프로세스마다 존재
    • 프로세스가 진행함에 따라 내용 변경

프로세스의 생성과 종료

  • 프로세스 생성 작업

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

  • 프로세스 생성 시스템 호출

    • 하나의 프로세스가 프로세스 생성 시스템 호출을 통해 새로운 프로세스를 생성
    • 예: fork()
    • 호출하는 프로세스: 부모 프로세스
    • 생성되는 프로세스: 자식 프로세스
  • 시스템 프로세스와 사용자 프로세스 모두 부모 프로세스 가능

  • 생성되는 프로세스의 자원

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

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

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

    • 부모에 의해서만 호출
    • 자식 프로세스가 할당된 자원의 사용을 초과할 때 혹은 더 이상 필요치 않을 때

프로세스 간의 관계

독립적 프로세스유기적 프로세스
의미다른 프로세스의 영향을 받지도 않고 주지도 않음다른 프로세스와 영향을 주고 받음
프로세스 상태다른 프로세스와 공유하지 않음다른 프로세스와 공유함
실행결정적, 재생 가능,비결정적, 재생 불가능
다른 프로세스와 무관하게 중단 및 재시작 가능
데이터다른 프로세스와 공유하지 않음다른 프로세스와 공유함

쓰레드

프로세스와 쓰레드

  • 전통적인 프로세스

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

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

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

스케줄링

스케줄링 단계

  • 상위단계 스케줄링

    • 시스템에 들어오는 작업들을 선택하여 프로세를 생성한 후 프로세스 준비 큐에 전달
    • 선택 기준: 시스템의 자원을 효율적으로 이용할 수 있도록 하는 것
    • 입출력(I/O) 중심 작업과 연산 중심 작업을 균형있게 선택
  • 하위단계 스케줄링

    • 사용 가능한 CPU를 준비상태의 어느 프로세스에게 배당할지를 결정
    • CPU를 배당받은 프로세스는 결국 실행상태가 되어 프로세스가 처리됨
    • 수행 주체: 디스패처(dispatcher)
  • 중간단계 스케줄링

    • 프로세스를 일시적으로 메모리에서 제거하여 중지시키거나 다시 활성화시킴
    • 시스템에 대한 단기적인 부하를 조절

스케줄링 정책

  • 스케줄링 기본 목표

    • 공정성: 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함
    • 균형: 시스템의 자원들이 충분히 활용될 수 있게 함
  • 일괄처리 운영체제: 처리량의 극대화, 반환시간의 최소화, CPU 활용의 극대화

  • 대화형 운영체제: 빠른 응답시간, 과다 대기시간 방지

  • 실시간 운영체제: 처리 기한을 맞춤

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

    • 진행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 cpu를 할당하는 스케줄링 전략
    • 높은 우선순위의 프로세스를 긴급하게 처리하는 경우에 유용
    • 대화식 시분할 시스템에서 빠른 응답시간을 유지하는데 유용
    • 문맥 교환에 따른 오버헤드 발생
  • 문맥: CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태

  • 문맥 교환: CPU의 현재 실행하고 있는 프로세스의 문맥을 PCB에 저장하고 다음 프로세스의 PCB로부터 문맥을 복원하는 작업

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

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