기어가더라도 제대로

[운영체제 - 김덕수 교수님] 프로세스 관리 본문

CS/운영체제

[운영체제 - 김덕수 교수님] 프로세스 관리

Damagucci-juice 2022. 7. 24. 17:15

Job vs Process

  • 작업 / 프로그램
    • 실행 할 프로그램 + 데이터
    • 컴퓨터 시스템에 실행 요청 전의 상태
  • 프로세스
    • 실행을 위해 시스템(커널)에 등록된 작업
    • 시스템 성능 향상을 위해 커널에 의해 관리됨

프로세스 관리 image

‏‏‎ ‎

프로세스의 정의

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

‏‏‎ ‎

자원(Resource)의 개념

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

‏‏‎ ‎

프로세스 관리 image

‏‏‎ ‎

‏‏‎ ‎

프로세스의 상태

‏‏‎ ‎

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

‏‏‎ ‎

프로세스 관리 image

‏‏‎ ‎

Created State

  • 작업(Job)을 커널에 등록
  • PCB 할당 및 프로세스 생성
  • 커널
    • 가용 메모리 공간 체크 및 프로세스 상태 전이
      • ready or suspended ready

프로세스 관리 image

Ready State

  • 프로세서 외에 다른 모든 자원을 할당 받은 상태
    • 프로세서 할당 대기 상태
    • 즉시 실행 가능 상태
  • Dispatch(or Schedule)
    • Ready state -> running state

프로세스 관리 image

‏‏‎ ‎

Running State

‏‏‎ ‎

  • 프로세서와 필요한 자원을 모두 할당 받은 상태
  • Preemption
    • Running state -> ready state
    • 프로세서 스케줄링(time-out, priority changes)
  • Block/sleep
    • running state -> asleep state
    • I/O 등 자원 할당 요청
    • 인터럽트에 의해 작업이 중단된 상태

프로세스 관리 image

‏‏‎ ‎

Blocked/Asleep State

  • 프로세서 외에 다른 자원을 기다리는 상태
    • 자원 할당은 system call 에 의해 이루어짐
  • wake-up
    • Asleep state -> ready state
    • asleep상태에서 완료가 되도 바로 러닝으로 가는 것이 아니라 레디로 간다.

프로세스 관리 image

프로세스 관리 image

전체 조망도, 프로세스의 상태에 관한 이야기

밑에는.?

Suspended State

  • 메모리를 할당 받지 못한(빼앗긴) 상태
    • Memory image를 swap device에 보관
      • swap device: 프로그램 정보 저장을 위한 특별한 파일 시스템
    • 커널 또는 사용자에 의해 발생
  • Swap-out(suspended), Swap-in(resume)

프로세스 관리 image

Terminated/ Zombie State

  • 프로세스 수행이 끝난 상태
  • 모든 자원 반납 후,
  • 커널 내에 일부 PCB 정보만 남아 있는 상태
    • 이후 프로세스 관리를 위해 정보 수집

프로세스 관리 image

‏‏‎ ‎

인터럽트(Interrupt)

  • 예상치 못한, 외부에서 발생한 이벤트
    • unexpected, external events
    • 공부하고 있을 때 옆에서 푹 찌른다..?
  • 인터럽트의 종류
    • I/O Interrupt
    • Clock Interrupt
    • Console Interrupt
    • Program check Interrupt
    • Machine check Interrupt
    • Inter-process Interrupt
    • System Call Interrupt

인터럽트 처리 과정

프로세스 관리 image

프로세스 관리 image

  • Context saving: 현재 시점까지 상태를 저장
  1. 프로그램이 실행하던 일을 Pi 라고 했을 때,
  2. 인터럽트가 발생하면, 지금까지 하던 일을 PCBi 에 저장
  3. 커널로 제어권이 넘어감
  4. Interrupt Handling 후, 어떤 서비스를 제공할 지 결정함
  5. 해당하는 서비스 Interrupt Service Routine 실행
  6. 서비스 루틴이 완료 되고, 이번 경우엔 PCBj로 돌아갔음(i로 갈수도 있고, j로 갈 수도 있다.)
  7. PCB를 바탕으로 Context Restore 라는 것을 실행(다시 캐시에 작업중이던 메모리를 올림)
  8. 프로세서의 실행권이 Pj로 넘어감

‏‏‎ ‎

Context Switching(문맥 교환)

  • Context
    • 프로세스와 관련된 정보들의 집합
      • CPU register context => in CPU
      • code & data, stack, pcb => in memory
  • Context saving
    • 현재의 프로세스의 Register context 를 저장하는 작업
  • Context restoring
    • Register context 를 프로세스로 복구하는 작업
  • Context switching ~= Process switching
    • 실행 중인 프로세스의 context를 저장하고, 앞으로 실행할 프로세스의 context를 복구하는 일
      • 커널의 개입으로 이루어짐

Context switch overhead

  • Context switch에 소요되는 비용
    • OS마다 다름
    • OS의 성능에 큰 영향을 줌
  • 불필요한 Context switching 을 줄이는 것이 중요
    • 예) 스레드(Thread) 사용 등

‏‏‎ ‎

Comments