본문 바로가기

Study/운영체제

[운영체제] 프로세스 개요

프로세스(process)
  • 실행중인 프로그램
  • PID : Process ID
  • 프로그램 : 동작을 하지 않는 정적수동적 개체
  • 운영체제로부터 자원을 할당 받아 동작

1. 프로세스 관리자의 역할

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

2. 상태모델

  • 생성 : 처음 작업이 시스템에 주어진 상태
  • 준비 : 실행 준비가 되어 CPU 할당을 기다리는 상태
  • 실행: 프로세스가 처리되는 상태
  • 대기 : 프로세스가 특정 자원을 할당받을 때까지 또는 I/O 작업이 끝날 때까지 작업이 보류되는 상태
  • 종료 : 모든 처리가 완료되어 사용자에게 반환되는 상태
  • 준비 > 실행 : 디스패치 : 준비상태에 있는 프로세스를 실행상태로 바꾸는 것
  • 실행 > 대기 : 이벤트 대기 상태
  • 대기 > 준비 : 재개 조건이 만족했을 때
  • 실행 > 종료 : 모든 작업이 끝났을 때 OR 작업을 더 해야하는데 강제로 작업을 종료시키는 것

3. 프로세스 제어 블록(Prorcess Control Blck, PCB)

  • 프로세스의 관리를 위한 목적
  • 프로세스의 정보를 보관
  • 각 프로세스마다 존재
  • 프로세스가 진행함에 따라 내용 변경
    • 프로세스 상태, 프로세스 번호(PIC), *프로그램 카운터(PC), 레지스터들, 메모리 관리 정보, 프로세스 우선순위, 회계 정보...
    • *프로그램 카운터(Program Counter) : 현재 프로세스 중에서 처리되고 있는 명령어는 무엇이고, 다음 번에 실행할 명령어는 무엇인지에 대한 위치

4. 프로세스의 생성과 종료

  • 프로세스의 생성 작업
    • 프로세스의 이름(번호, PID) 결정
    • 준비 큐에 삽입
    • 초기 우선순위 부여
    • 프로세스 제어 블록(PCB) 생성 등
  • 프로세스 생성 방법
    • 시스템 호출
    • fork()
    • 호출하는 프로세스 : 부모 프로세스 / 생성되는 프로세스 : 자식 프로세스
    • 트리형태로 프로세스 구조
  • 생성되는 프로세스의 자원
    • 운영체제로부터 직접 얻는 경우
    • 부모 프로세스 자원의 일부를 얻는 경우
  • 자식 프로세스의 자원은 부모 프로세스의 자원으로 제한
    • 과도한 자식 프로세스 생성에 따른 시스테 과부하 방지
  • 프로세스 종료
    • 프로세스의 마지막 명령이 실행을 마치는 경우
    • 프로세스 종료 시스템 호출(예 : exit())
    • 프로세스 종료 후 부모 프로세스에게 실행결과를 되돌려 줌
  • 프로세스 종료 시스템 호출
    • 부모에 의해서만 호출
      • 그렇지 않으면 제삼자 프로세스가 나를 종료시킬 수 있다
      • 강제 종료는 부모에 의해서만 제한
  • 프로세스 간의 관계
    • 독립적 프로세스 <> 유기적 프로세스

 

쓰레드

1. 프로세스와 쓰레드

  • 전통적인 프로세스
    • 처리의 기본 단위
    • 자원 소유의 단위(하나의 주소공간) 및 디스패칭의 단위
    • 단일 프로세스 내에서 동시처리 불가능 > 쓰레드 등장
  • 쓰레드(Thread)
    • 프로세스 내에서 다중처리를 위해 제안된 개념
    • 하나의 프로세스 내에서 하나 이상의 쓰레드가 존재
    • 하나의 쓰레드 내에서는 하나의 실행점만 존재(디스패칭의 단위)
  • 다중 쓰레드의 장점
    • 멀티 CPU 혹은 멀티코어 시스템에서는 병렬처리 가능
    • 하나의 프로세스를 동작시키지만 각각의 CPU가 알아서 쓰레드를 동시에 실행 가능하다
    • 처리 속도 별로 쓰레드가 나눠진 경우 효율적인 처리 가능
    • 계산용 / 입력용 / 백업용 > 구분을 시켜서 동시 사용 가능

2. 스케줄링

  • 스케줄링 단계 
    • 상위단계 스케줄링
      • 시스템에 들어오는 작업들을 선택하여 프로세스를 생성 > 프로세스 준비 큐에 전달
      • 선택기준  : 시스템의 자원을 효율적으로 이용할 수 있도록 하는 것
      • 입출력(I/O) 중심 작업과 연산 중심 작업을 균형있게 선택
    • 하위단계 스케줄링
      • 사용가능한 CPU를 준비상탵의 어느 프로세스에게 배당할지를 결정
      • CPU를 배당받은 프로세스는 결국 실행상태가 되어 프로세스가 처리됨
      • 수행 주제 : 디스패처
    • 중간단계 스케줄링
      • 시스테에 대한 단기적인 부하를 조절
  • 스케줄링 기본 목표
    • 공정성 : 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있도록
    • 균형 : 시스템 자원을 충분히 활용될 수 있도록
  • 스케줄링 정책
    • 선점(Preemptive) 스케줄링 정책
      • 진행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 전략
      • 높은 우선순위 프로세스를 긴급하게 처리해야 하는 경우
      • 대화식 시분할 시스템
      • 문제점 > *문맥 교환에 따른 오버헤드 발생
        • 문맥 : CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태
    • 비선점(Nonpreemptive) 스케줄링 정책
      • 프로세스가 CPU를 할당받아 실행이 시작되면 작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 때까지 실행상태에 있게 됨
      • 모든 프로세스가 공정하게 순서에 따라 실행됨 > 응답시간 예측 가능
      • 짧은 프로세스가 긴 프로세스를 기다리게 될 수 있음
반응형

'Study > 운영체제' 카테고리의 다른 글

[운영체제] 기억장치 인터리빙(Storage Interleaving)  (0) 2021.06.07