[운영체제] Process

·2021년 12월 15일
1

OS

목록 보기
3/5
post-thumbnail

"Process is a program in execution"

프로세스의 문맥(context)

  1. CPU 수행 상태를 나타내는 하드웨어 문맥
    1. Program Counter
    2. 각종 Register
  2. 프로세스의 주소 공간
    1. code, data, stack
  3. 프로세스 관련 커널 자료 구조 : 여러 프로그램들이 공유함
    1. PCB (Process Control Block)
    2. Kernel stack

프로세스의 상태 Process State

프로세스는 상태가 변경되며 수행됨

  1. Running
    1. CPU를 잡고 instruction 수행 중인 상태
  2. Ready
    1. CPU를 기다리는 상태
    2. 메모리 등 다른 조건 모두 만족
  3. Blocked (wait, sleep)
    1. CPU를 주어도 당장 instruction을 수행할 수 없는 상태
    2. Process 자신이 요청한 event(예:I/O)가 즉시 만족되지 않아 기다리는 상태
    3. 예 : 디스크에서 file을 읽어와야 하는 경우
  4. Suspended (stopped)
    1. 외부적인 이유로 프로세스의 수행이 정지된 상태

    2. 프로세스는 통째로 디스크에 swap out 됨

    3. 예 ) 사용자가 프로그램을 일시 정지 시킨 경우 (break key)
      시스템이 여러 이유로 프로세스를 잠시 중단시킨 경우
      (메모리에 너무 많은 프로세스가 올라와 있을 때)

      💥 Blocked : 자신이 요청한 event가 만족되면 Ready

      Suspended : 외부에서 resume해주어야 Active

  5. New
    1. 프로세스가 생성중인 상태
  6. Terminated
    1. 수행(execution)이 끝난 상태

Process Control Block (PCB)

운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보

  • 구성 요소 (구조체로 유지)
    1. OS가 관리상 사용하는 정보
      1. Process state, Process ID
      2. scheduling infomation (스케줄 정보), priority (우선순위)
    2. CPU 수행 관련 하드웨어 값
      1. Program counter, registers
    3. 메모리 관련
      1. code, data, stack의 위치 정보
    4. 파일 관련
      1. Open file descriptors...

문맥 교환 Context Switch

  • CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정

    • CPU가 다른 프로세스에게 넘어갈 때 과정
      1. CPU를 내어주는 프로세스 상태를 해당 프로세스 PCB에 저장
      2. CPU를 새롭게 얻는 프로세스 상태를 PCB에서 읽어옴
  • User mode → kernel mode → user mode

    프로세스 A ISR or 시스템콜 프로세스 A

    context switch 아님

  • 프로세스 A → kernel model → 프로세스 B

    (프로세스 A에서 timer interrupt or I/O요청 system call)

    context switch. 다른 프로세스로 넘겨줌

프로세스를 스케줄링하는 큐

  • Job queue

    • 현재 시스템 내에 있는 모든 프로세스의 집합
  • Ready queue

    • 현재 메모리 내 존재하며 CPU 실행되기를 기다리는 프로세스 집합
  • Device queue

    • I/O device 처리를 기다리는 프로세스의 집합

    ‼ 프로세스들은 각 큐들을 오가며 수행됨

스케줄러 (Scheduler)

  1. Long-term scheduler (장기 스케줄러 or Job scheduler)
    1. 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정
    2. 프로세스에 memory(및 각종 자원)을 주는 문제
    3. degree of Multiprogramming을 제어
    4. time sharing system 에는 보통 장기 스케줄러는 없음 (무조건 ready)
  2. Short-term scheduler (단기 스케줄러 or CPU scheduler)
    1. 어떤 프로세스를 다음번에 running 시킬지 결정
    2. 프로세스에 CPU를 주는 문제
    3. 충분히 빨라야 함 (millisecond 단위)
  3. Medium-term scheduler (중기 스케줄러 or Swapper)
    1. 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
    2. 프로세스에게서 memory를 뺏는 문제
    3. degree of Multiprogramming을 제어\

출처

http://www.kocw.net/home/search/kemView.do?kemId=1046323

0개의 댓글