Process (프로세스)

이유석·2022년 2월 2일
0

CS - Operating System

목록 보기
4/20

Process

정의

  • 실행중인 프로그램 (Program in execution)
  • 동작을 하는 능동적 개체 (Active)
    • 프로그램 : 동작을 하지 않는 정적, 수동적 개체 (Passive)
  • 프로세서 : 하드웨어적인 측면에서 "컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛" 이다.

구성

  • Text Section : 프로그램 코드
  • Data Section : 전역 변수를 저장하는 곳
  • Heap : 런타임에 동적으로 메모리에 할당되는 데이터
  • Stack : 함수가 실행됭 때 일시적으로 생기는 데이터
  • PCB(Process Control Block) : 프로세스의 정보
    • Program Counter : 프로세스가 다음에 수행해야 할 명령어의 주소

상태

  • 프로세스 관리를 위해, 상태를 변화시킨다.
  • 생성 (New)
    • 프로세스가 생성되는 중
  • 준비 (Ready)
    • 프로세스가 설정되어 대기 중. CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있는 상태. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당 받는다.
  • 실행 (Running)
    • 프로세서가 CPU를 차지하여 명령어들이 실행되는 중
  • 대기 (Waiting)
    • 보류(block)라고도 부른다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건(Event)의 발생을 기다리고 있는 상태를 말한다.
  • 종료 (Terminated)
    • 프로세스가 실행을 종료


Process Scheduling

  • CPU 의 사용 효율을 최대화 하기 위해, 빠르게 프로세스들을 CPU core 위로 빠르게 전환한다.

  • Queue

    • 프로세스의 스케줄링을 위해 OS가 지원하는 것
    • Linked List 방식으로 관리된다.
    • 종류
      • Job queue : 메인 메모리에 올라가기 위한 프로그램들이 대기하는 곳
      • Ready queue : Main memory에 적재되어, CPU로부터 Resource를 받기 위해 기다리는 곳
      • Device queue : 장치를 사용하기 위해 기다리는 곳
      • Waiting queue : 특정한 event 마다 대기하는 프로세스를 유지시켜주는 곳
  • Scheduler

    • 각 큐마다 다음 차례의 프로세스를 결정하여 줍니다.

Context Switching

  • Dispatch : CPU가 이전의 프로세스 상태를 PCB에 저장하고, 또 다른 프로세스의 정보를 PCB에 읽어 레지스터에 적재(CPU의 할당을 받음)하는 과정
  • CPU resource의 획득과 잃음을 의미한다.

    즉, 프로세스가 Ready → Running, Running → Ready, Running → Waiting처럼 상태 변경 시 발생!

  • Context Switching Overhead : PCB의 정보를 저장하고 로드하는데 드는 비용

Process Control Block (PCB)

  • 프로세스 메타데이터들을 저장해 놓은 곳, 한 PCB 안에는 한 프로세스의 정보가 담김

  • 구성

    • Pointer : 부모 프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리 주소에 대한 포인터, 할당된 자원에 대한 포인터 정보
    • Process State : 프로세스의 상태 5가지 중 현재의 상태 정보
    • Process Number(ID) : 프로세스가 생성될 때, 부여받는 프로세스의 고유 식별자
    • Program Counter : 프로세스가 다음에 수행해야 할 명령어의 주소
    • Registers : CPU 내의 누산기, 인덱스 레지스터, 프로그램 카운터 등의 정보
    • 그 외 여러 정보가 있다.
  • 필요한 이유

    • CPU에서는 프로세스의 상태에 따라 교체작업이 이루어진다. (interrupt가 발생해서 할당받은 프로세스가 wating 상태가 되고 다른 프로세스를 running으로 바꿔 올릴 때)

    • 이때, 앞으로 다시 수행할 대기 중인 프로세스에 관한 저장 값을 PCB에 저장해두는 것이다.

  • PCB의 관리 방법

    • Linked List 방식으로 관리된다.

    • PCB List Head에 PCB들이 생성될 때마다 붙게 된다. 주소값으로 연결이 이루어져 있는 연결리스트이기 때문에 삽입 삭제가 용이하다.


Multi Process

  • 하나의 컴퓨터에 여러 CPU 장착 → 하나 이상의 프로세스들을 동시에 처리(병렬)

  • 장점 : 안전성 (메모리 침범 문제를 OS 차원에서 해결)

  • 단점 : 각각 독립된 메모리 영역을 갖고 있어, 작업량이 많을 수록 오버헤드 발생. Context Switching 으로 성능 저하

profile
https://github.com/yuseogi0218

0개의 댓글