Lec 03. Process Management

jj·2021년 1월 3일
0

HPC 운영체제 강의

목록 보기
3/4

출처:
https://www.youtube.com/watch?v=jZuTw2tRT7w&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=5

Lec 03. Process Management
프로세스의 개념
프로세스의 상태 변화
PCB(프로세스 관리 블록)
인터럽트
context switching

프로세스의 개념

Job vs Process

(1) Job/Program

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

**(2) Process

  • 실행을 위해 시스템(커널)에 등록된 작업
  • 시스템 성능 향상을 위해 커널에 의해 관리해야함(운영체제의 역할 달성)


(1) 우리의 job은 프로그램과 데이터를 묶어놓고 디스크에 저장되어있는 상태
(2) 이 job이 실행되기 위해, 시스템에게 처리해달라고 요청을 보냄 -> 시스템에 등록되어 메모리에 할당된 상태; process된 상태

프로세스란?

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

자원의 개념

  • 커널의 관리하에 프로세스에게 할당/반납되는 수동적 개체(passive entity)
  • 자원의 분류
    • H/W resourses: processor, disk, monitor, keyboard...
    • S/W resources: messages, signal, files, installed SWs...

PCB(Process Control Block)

  • 커널 공간내에 존재
  • os가 프로세스 관리(control)에 필요한 정보를 저장하는 공간
  • 프로세스 생성시 생성됨
  • PCB가 관리하는 정보
    • PCB 정보는 os별로 서로다름
    • PCB 참조 및 갱신속도는 os의 성능을 결정짓는 중요한 요소 중 하나

프로세스의 상태

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

created state

  • 작업(job)을 커널에 등록된/생성된 상태
  • PCB할당 및 프로세스 생성
  • 커널
    • ready로 갈 것인가, suspended ready로 갈 것인가?
    • 기준: 가용 메모리 공간 체크를 하고 프로세스 상태를 전이시킴

Ready State

  • 프로세서 외에 다른 모든 자원을 할당받은 상태
    • 프로세서 할당 대기 상태
    • 즉시 실행 가능한 상태
    • 최초의 프로세스가 실행되고, 메모리를 할당 받았다면 cpu만 있으면 실행 가능하다 -> cpu를 기다리고 있는 상태
  • cpu를 할당받으면, dispatch (or Schedule)되었다고 말함
    • ready state -> running state

Running state

  • 프로세서와 필요한 자원을 모두 할당받은 상태
  • 프로세서를 할당받아서 running상태가 되면 열심히 작업을 실행하는 상태
  • running state를 벗어나는 두가지 경우
    • preemption
      • running state -> ready state
        • ready: processor가 없는 상태이므로, running에서 processor를 뺏기면 ready state가 됨
      • 발생원인:
        • processor scheduling (예. time-out, priority changes)
        • time sharing system에서 자기에게 할당된 타임슬롯이 끝날때가 되면 나와서 다음시간을 기다리는 경우
    • Block/sleep
      • I/O가 필요할 때
      • 예. 은행에서 일처리를 하려고 갔는데, 필요한 서류를 놓고 나왔을 때 다시 돌아가야하는 경우 은행을 잠글수 없으니까, 다른 사람이 쓸 수 있게, 그 자리를 비워놓고 나감(작업이 block됨) -> 서류가 다시 올때까지는 잠자면서 기다릴 수 있게 함(asleep)
      • running state -> asleep state(I/O가 끝나기를 기다리는 상태)
      • I/O등의 자원 할당 요청

Blocked/Asleep State

  • 프로세서외에 다른 자원을 기다리는 상태
    예. 서류가 오기(I/O)를 계속 기다리다가 서류(데이터)가 왔을 때, 그 데이터가 도착을 했다면 그 프로세스는 바로 running state으로 가면 안됨! 현재 다른 프로세스가 running하고 있으므로
    -> wake up 후 ready 상태로 가서 다시 줄을 섬
  • 자원할당은 system call에 의해 이루어짐
  • wake-up
    • asleep state -> ready state


(1) 처음에 job이 들어와서 프로세스가 생성이 되고
(2) 메모리를 할당 받으면 ready 상태가 되고
(3) cpu를 할당받으면 running 상태가 됨(dispatched)
(4) 내 시간이 끝나면 ready에서 기다리다고 내 차례가 되면 다시 running에서 돌아가다가
(5) data, I/O가 필요하면 block이 되서 asleep 상태에서 대기함
(6) data, I/O가 끝나면, ready 상태로 와서 차례를 기다리다가 다시 일하고....

Suspended state

  • 메모리를 할당받지 못한(빼앗긴) 상태
    • created status에서 메모리가 없으면 ready/suspended ready 중에서 suspended ready로 가게됨
    • I/O를 하려고 blocked status에 있는데 메모리를 뺏겨서 suspended blocked 상태로 가게됨
    • memory image를 swap device에 보관
      • 프로세스가 메모리에 자기가 할 일을 적어놨는데, 이 메모리를 내놓으라고 함 -> 이 메모리가 지워지고 있다가 다시 프로세스가 메모리를 할당 받아서 일을 하려고 봤더니, 어디까지 했는지 보이지가 않음!
      • 예. 바둑을 놓을 때, 중간에서 멈추고 그 다음은 내일 하려고 한다면, 그 바둑판을 찍어놓고 다음날 다시 할 것이다. 즉, 어떤 작업까지 했는지를 저장하기위해 메모리의 상태를 이미지로 저장함 -> memory image
      • swap device: 프로그램 정보 저장을 위한 특별한 파일 시스템(일종의 하드디스크)
      • 다시 메모리가 할당되면 (suspended blocked -> asleep 상태로 올라오면) swap device에 저장한 정보를 메모리에 다시 복구함
    • 커널 또는 사용자에 의해 발생
  • swap-out(suspended): 메모리를 뺏기면서 swap device에 저장되는 것
  • swap-in(resume): 메모리를 다시 할당받아서 swap device에 저장된 메모리 이미지를 메모리에 복구하는 것

Terminated/Zombie state

  • 프로세스 수행이 모두 끝난 상태
    • 프로세스가 종료되면, terminated state에 잠시 들렀다가 족적을 남기고 감
    • 왜 terminated state에 들리나요?
      • 이후 프로세스 관리를 위해 정보 수집
      • 커널이 이 프로세스가 어떻게 살았는지, 어떤 자원들을 요청했고, 일은 얼마나 했는지를 기록하면 다음에 비슷한 작업이 들어왔을 때 관리하기 더 쉬울 것이다
  • 모든 자원을 반납한 후 커널 내에 일부 PCB 정보만 남아있는 상태
  • terminated state에 들린 이후에는 해당 프로세스를 삭제함

프로세스 상태표를 보면서 다시 복습해보자

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

  • ready queue
  • I/O queue
    • asleep 상태(프로세서 말고 다른 자원들을 요청하는 경우)에서는 자원 별로 큐를 따로 관리함
  • device queue

인터럽트

  • 예상치 못한, 외부에서 발생한 이벤트. 쿡 찌르기...
  • 종류
    • I/O, clock, console, program check, machine check, inter-process, system call
      예. I/O interrupt: 게임을 할 때 어떤 아이템을 클릭하는 경우

인터럽트 처리과정


1. interrupt handling
2. interrupt service: 이 interrupt를 무시할지/ 서비스 할지

(1) 프로세서 안에 하나의 프로세스(Pi)가 있다고 하자
(2) Interrput 발생
(3) 커널이 개입해서 프로세스를 중단시킴 -> 이때 context saving 발생 (책갈피 꽂아서 PCB에 저장)
(4-1) Interrput handling: 이 개입이 어디서, 왜 일어났는지를 파악
(4-2) Interrupt service: 이를 처리하기 위해 어떤 서비스 루틴을 호출할지 결정
(4-2) 프로세서에 interrupt service를 넣어줌 (interrupt service도 결국은 하나의 프로그램이므로, 이를 처리하기 위해서! -> Q. Ih는 안넣어주나...?)
(5) interrupt service가 끝나면, 아까 중단된 애를 다시 실행시키는 게 아니라, ready상태에 있던 녀석들 중 하나를 넣어줌 -> Pi가 아니라 Pj가 프로세서에 들어올 수 있음
(6) Pj가 들어왔다면, 아까 멈출때 자기가 꽂아놓은 책갈피를 복구함(context restoring)

9:00~

profile
재밌는게 재밌는거다

0개의 댓글