[OS] 프로세스

Borahm·2021년 4월 19일
0
post-thumbnail

프로세스

"Process is a program in execution"

실행 중인 프로그램

프로세스의 문맥(context)

  • CPU 수행 상태를 나타내는 하드웨어 문맥

    • Program Counter: 다음에 실행될 명령어의 주소를 가지고 있어 실행할 기계어 코드의 위치를 지정한다. 명령어 포인터 라고도 한다.
    • 각종 Register
  • 프로세스의 주소 공간

    • code, data, stack
  • 프로세스 관련 커널 자료 구조

    • PCB (Process Control Block)
    • Kernel stack
  • 작업 순서: PC가 프로그램 코드 하나를 가리킴, 매순간 기계어(instruction)를 하나씩 읽어서 CPU 안으로 불러들임. 레지스터에 어떤 값을 넣고, ALU(산술논리연산장치)에서 연산 수행, 그리고 그 결과를 레지스터에 저장하거나, 바깥의 메모리에 저장함

  • 프로그램을 실행하는 내내 위의 작업이 진행되는데, 어느 시점에 과연 프로세스는 어디까지 와있는가? 이걸 규명하는 데 필요한 요소가 문맥!

  • 현재 시점의 문맥을 나타내기 위해서는 PC가 어디를 가리키고 있는가? 코드를 어느 부분까지 실행했는가, 또 이 프로세스의 메모리에 어떤 내용을 담고 있는가? 함수는 스택에 어디까지 쌓여있고, 데이터 공간 안에 있는 변수들의 값은 얼마인가? 지금 레지스터 안에는 어떤 값들이 있고, 어떤 instruction까지 실행했는가? 등의 정보가 필요하다.

    Ref. KOCW 운영체제 강의 (이화여자대학교, 반효경, 2014년 1학기)

프로세스의 상태

  • 프로세스는 상태(state)가 변경되며 수행된다

    • Running

      • CPU를 잡고 instruction을 수행 중인 상태
    • Ready

      • CPU를 기다리는 상태 (메모리 등 다른 조건을 모두 만족하고)
    • Blocked(wait, sleep)

      • CPU를 주어도 당장 instruction을 수행할 수 없는 상태
      • Process 자신이 요청한 event(예: I/O)가 즉시 만족되지 않아 이를 기다리는 상태
      • (예) 디스크에서 file을 읽어와야 하는 경우
    • Suspended (stopped)

      • 외부적인 이유로 프로세스의 수행이 정지된 상태
      • 프로세스는 통째로 디스크에 swap out 된다
      • (예) 사용자가 프로그램을 일시 정지시킨 경우 (break key), 시스템이 여러 이유로 프로세스를 잠시 중단시킴 (메모리에 너무 많은 프로세스가 올라와 있을 때)
    • New: 프로세스가 생성 중인 상태

    • Terminated: 수행(execution)이 끝난 상태

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

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

Ref. KOCW 운영체제 강의 (이화여자대학교, 반효경, 2014년 1학기)

PCB

Process Control Block

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

  • 다음의 구성 요소를 가진다 (구조체로 유지)

    1. OS가 관리상 사용하는 정보
      • Process state, Process ID
      • scheduling information, priority
    2. CPU 수행 관련 하드웨어 값
      • Program counter, registers
    3. 메모리 관련
      • Code, data, stack의 위치 정보
    4. 파일 관련
      • Open file descriptors...

KOCW 운영체제 강의 (이화여자대학교, 반효경, 2014년 1학기)

문맥 교환 (Context Switch)

  • CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
  • CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행
    • CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장
    • CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴
  • System call이나 Interrupt 발생시 반드시 context switch가 일어나는 것은 아님

프로세스를 스케줄링하기 위한 큐

  • Job queue
    • 현재 시스템 내에 있는 모든 프로세스의 집합
  • Ready queue
    • 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
  • Device queues
    • I/O device의 처리를 기다리는 프로세스의 집합
  • 프로세스들은 각 큐들을 오가며 수행된다.

Ref. KOCW 운영체제 강의 (이화여자대학교, 반효경, 2014년 1학기)

스케줄러 Scheduler

  • Long-term Scheduler (장기 스케줄러 or job scheduler)

    • 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정
    • 프로세스에 memory(및 각종 자원)을 주는 문제
    • degree of Multiprogramming을 제어
    • time sharing system에는 보통 장기 스케줄러가 없음 (무조건 ready)
  • Short-term Scheduler(단기 스케줄러 or CPU scheduler)

    • 어떤 프로세스를 다음 번에 running 시킬지 결정
    • 프로세스에 CPU를 주는 문제
    • 충분히 빨라야 함 (millisecond 단위)
  • Medium-Term Scheduler (중기 스케줄러 or Swapper)

    • 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
    • 프로세스에게서 memory를 뺏는 문제
    • degree of Multiprogramming을 제어

Ref. KOCW 운영체제 강의 (이화여자대학교, 반효경, 2014년 1학기)

Ref

KOCW 운영체제 강의 (이화여자대학교, 반효경, 2014년 1학기)

0개의 댓글