CS/OS

3. 프로세스 관리(1)

🥭맹2 2021. 3. 14. 21:40

마의 3일차를 지나 .. 4일차 입니다요

하지만 운영체제.. 하면 할 수록 넘나리 어려운 것

심지어 한 번 들었던 내용인데도 왤케 새롭쥬 ????????????? ㅠ

그리고 용어들은 너무 생소하고 ..

하루 빨리 용어와 친해지고 싶슴다 ~!

고럼 오늘은 프로세스 관리에 대해 정리해보겠심다

1. 프로세스란 무엇인가

어떤 것을 실행하는 실행의 주체

프로세스라는 용어를 자주 맞이하는 곳^_^

1) Job VS Process

  • 작업(Job) == 프로그램 (Program)

    • 실행할 프로그램 + 데이터
    • 컴퓨터 시스템에 실행 요청 전의 상태
  • 프로세스(Process)

    • 실행을 위해 시스템(커널)에 등록된 작업
    • 시스템 성능 향상을 위해 커널에 의해 관리됨

Job이 Process가 되려면 메모리에서 커널에 등록되어야 합니당

  • 아직 디스크에 있는 것은 Job(=program)이고, 이를 적재하여 메모리에서 할당되었을 때 Process라고 부름

디스크에 있을 때는 Job(=program), 메모리에 할당되면 Process

2) 프로세스의 정의

커널에 등록된 Job(=Program)

  • 실행중인 프로그램

    • 커널에 등록되고 커널의 관리하에 있는 작업
    • 각종 자원들을 요청하고 할당 받을 수 있는 개체
    • 프로세스 관리 블록(PCB)을 할당 받은 개체
    • 능동적인 개체 (active entity)
      • 실행 중에 각종 자원을 요구, 할당, 반납하며 진행
  • Process Control Block(PCB)

    • 커널 공간(kernel space)내에 존대
    • 각 프로세스들에 대한 정보를 관리

프로세스의 종류는 이렇게 있슴다 ~! 직관적인 용어 좋슴다

  • 시스템 프로세스 ; 시스템이 쓰는 것
  • 사용자 프로세스 : 사용자가 쓰는 것
  • 독립 프로세스 : 독립적인 것
  • 협력 프로세스 : 다른 프로세스와 영향을 주고받음

2. 자원의 개념

커널의 관리 하에 프로세스에게 할당/반납 되는 수동적 개체(passive entity)

1) 자원의 분류

  • H/W resources
    • Processor, memory, disk, monitor, keyboard, Etc...
  • S/W resources
    • Message, signal, files, installed SWs, Etc ...

3. Process Control Block(PCB)

OS가 프로세스 관리에 필요한 정보를 저장하는 공간

  • 프로세스가 생성되었다는 것 == Kernel에 PCB가 생성되었다는 것

메모리 영역은 이렇게 두 영역으로 나뉘고, 그 중 Kernel영역에 PCB가 저장됩니다

  • Memory영역에는 Kernel이 쓰는 영역과, 프로세스들이 쓰는 영역이 있음
    • 그 중 PCB는 Kernel이 쓰는 영역에 저장됨

1) PCB가 관리하는 정보

  • PID : Process Identification Number
    • 프로세스 고유 식별 번호 (프로세스마다 부여된 고유 번호)
  • 스케줄링 정보
    • 프로세스 우선 순위 등과 같은 스케줄링 관련 정보들
  • 프로세스 상태
    • 자원 할당, 요청 정보 등 (어떤 자원을 가지고 있는지, 어떤 자원을 요청했는지와 같은 상태 정보)
  • 메모리 관리 정보
    • Page table, segment table 등 (어떤 메모리에 할당 받았는지에 대한 정보)
  • 입출력 상태 정보
    • 할당 받은 입출력 장치, 파일 등에 대한 정보 등
  • 문맥 저장 영역(context save area)
    • 프로세스의 레지스터 상태를 저장하는 공간 등
  • 계정 정보 (다중 사용자 시스템의 경우 이 프로세스가 누구의 프로세스인지 알아야하기 때문에 계정 정보를 지니고 있는 것)
    • 자원 사용 시간 등을 관리

(1) 특징

  • PCB 정보는 OS 별로 서로 다름
  • PCB 참조 및 갱신 속도는 OS의 성능을 결정 짓는 중요한 요소 중 하나

4. 프로세스의 상태(Process States)

프로세스 : 자원 간의 상호작용에 의해 결정
프로세스 상태 및 특성

프로세스의 상태 표

Process State Transition Diagram

Process state transition diagram

1) Created State

생성된 상태

  • 작업(Job)이 커널에 등록되어 PCB할당 및 프로세스 생성된 상태

  • 커널

    • 가용 메모리 공간 체크 및 프로세스 상태 전이

      • Ready or Suspended ready

       

     

  • ready와 Suspended ready로 나눠지는 기준은 가용 메모리 공간의 유무

    • 가용 메모리 공간이 존재하는 경우 -> ready로 감
    • 가용 메모리 공간이 존재하지 않는 경우 -> suspended ready로 감

created state는 ready state 혹은 suspended ready state로 갈 수 있습니다. 기준은 가용 메모리의 유무 !

 

2) Ready State

프로세서 외에 다른 모든 자원을 할당 받은 상태

  • 프로세서 할당 대기 상태
  • 즉시 실행 가능 상태
  • Dispatch (or Schedule)
    • Ready state -> running state

  • 프로세서는 CPU라고 생각하면 됨
  • 현재 프로세스가 메모리 할당 된 상태이기 때문에 CPU만 할당 받으면 즉시 실행이 가능함
  • 프로세서를 할당 받는 것은 dispatch라고 함

process가 processor(CPU)외에 다른 모든 자원을 할당 받은 상태 == ready state

3) Running State

프로세서와 필요한 자원을 모두 할당 받은 상태
즉 dispatch이후 running이 된 상태
작업을 열심히 하고 있는 상태

Running State에서는 두 가지 상태로 넘어갈 수 있음

  1. ready state
  2. asleep state

(1) Preemptino

프로세서를 뺏겨서 쫓겨나는 것

  • Running state -> ready states
  • 프로세서 스케줄링 (e.g, time-out, priority changes)에 의해 ready state가 되는 상태

(2) Blcok/sleep

자원이 부족한 경우

  • Running state -> asleep state
  • I/O등 자원 할당 요청

running statE는 ready state와 asleep state로 넘어갈 수 있습니다.

3) Block/Asleep State

프로세서 외에 다른 자원을 기다리는 상태

  • 자원 할당은 System call에 의해 이루어짐
  • Wake-up
    • I/O가 되었다면 -> running state로 가기 위해 ready state로 감
    • Asleep state -> ready state

asleep status에서 running state로 바로 못가고 ready state로 가게 됩니다

4) Suspended State

메모리를 할당 받지 못한(빼앗긴 상태)

  • Memory image(메모리의 상태를 사진으로 찍은 것을 memory image라고 함)를 swap device에 보관

    • Swap device : 프로그램 정보 저장을 위한 특별한 파일 시스템(일종의 하드디스크라고 생각하면 됨)
  • 커널 또는 사용자에 의해 발생

  • Swap-out(suspended: 메모리를 뺏겼을 때 memory image를 swap device에 보관), Swap-in(resume: Swap device에 있던 memory image를 다시 넣는 것)

suspended state는 suspended ready와 suspended blocked가 있습니다.

  • suspended ready : 메모리가 없어서 ready state가 된 상태
  • suspended blocked : I/O하려고 blocked되었는데 메모리 공간도 뺏긴 상태

5) Terminated/Zombie State

프로세스 수행이 끝난 상태

모든 자원 반납후, 커널 내에 일부 PCB 정보만 남아 있는 상태

  • 이후 프로세스 관리를 위해 정보 수집

terminated

 

리마인드를 해볼까욧~!

리마인드용~!

 

5. 프로세스 관리를 위한 자료구조

 

요런 자료 구조를 갖는다고 합니다 ^-^ 후 ~!

  • 프로세서들이 줄 서 있는 공간 : ready list
  • asleep 상태 : sleep된 상태의 다른 자원들 -> 자원에 따라 각각 큐가 존재