프로세스의 개념

infoqoch·2021년 2월 21일
0

운영체제

목록 보기
4/15

1. 프로세스란?

  • Process is a program in execution.
  • 프로세스는 실행 중인 프로그램을 의미한다.

2. 프로세스의 문맥(context)과 교환(context switch)


1) 문맥

  • cpu는 Program Counter의 주소를 통해 불러온 code를 register에 저장하고 register에 instruction에 따라 작업을 수행.
  • 한편, interrupt/trap 등 다양한 이유로 프로세스는 cpu의 점유를 포기하거나 빼앗김.
  • 작업하던 것을 정지하고 나중에 다시 작업하기 위해서는, 작업하던 내용과 경과과정을 저장하고(cache memory flush), 이전에 작업했었던 내용을 cache memory에 불러와야 함. 이러한 데이타를 문맥(context)이라고 함.
  • 문맥은 PCB(Process Control Blcok)로서 저장되고, code가 수행한 값들은 Kernel stack에 저장된다.

2) 문맥의 교환

  • 문맥의 교환은 기존의 context를 저장하고, 다른 context를 불러오는 것을 의미함. 문맥의 교환을 하면 메모리의 Cache에 오버헤드를 발생.
  • 어떤 프로세스가 작업을 하는 도중에 I/O 디바에스에 접근이 필요해서 커널 모드로 변경하고 다시 유저모드로 돌아 왔을 때 cpu의 권한을 유지할 수 있다. 이를 트랩이라 하며, 문맥 교환이 아니다. 문맥 교환으로 인한 오버헤드가 발생하지 않는다.

3. 프로세스의 상태 Process state와 큐queue

1) 프로세스의 상태

  • New : 프로세스가 생성됨.
  • Running : CPU를 잡고 instruction을 수행 중.
  • Ready : CPU를 기다림.
  • Blocked (wait, sleep) : CPU를 사용할 수 없는 상태. I/O 이벤트를 수행하기 위하여 기다리는 것(I/O queue에 대기중)처럼, 프로세스의 입장에서는 작업 중이지만, ready와 running을 할 수 없음.
    -Terminated : 수행(Execution)이 끝난 상태. cpu의 반납.

2) 프로세스의 상태의 변경

  • Device queue: Running - > Blocked : 프로세스가 I/O 등의 이벤트를 수행해야 할 경우. 해당 프로세스는 해당 I/O 디바이스의 큐에 대기한다. 해당 디바이스의 컨트롤러의 지시에 따라 순서를 기다린다.
  • Ready queue:
    -> Blocked - > Ready : 프로세스가 I/O 이벤트가 종료되어 CPU의 Instruction을 기다릴 경우. CPU의 queue에 해당 프로세스가 대기한다.
    -> New - > Ready : 새롭게 생성된 프로세스는 Ready 상태가 된다.
  • Job queue : 현재 프로세스에 있는 모든 프로세스의 집합.
  • 커널는 커널 주소 공간 중 Data에, 각 각의 자원에 대한 queue를 자료구조형태로 가지고 있음. 이러한 프로세스의 상태를 변경하는 것은 커널의 역할임.
  1. 스케쥴러 Scheduler
    1) Shor-term scheduler(단기 스케쥴러, Cpu scheduler)
  • 어떤 프로세스를 running 할지 결정

2) Long-term scheduler (장기 스케쥴러, job scheduler)

  • 시작 프로세서(New) 중 어떤 것을 ready queue로 보낼지 결정.
  • degree of Multiprogramming 제어
  • time sharing system(현대의 시스템)에서는 사용하지 않음.
  • 모든 new의 프로세스는 ready 상태가 됨.

3) Medium-term scheduler(중기 스케쥴러 or Swapper)

  • 장기 스케쥴러를 대체.
  • 프로세스의 생성에 초점을 맞추기 보다, 프로세스의 제거를 목표로 함.
  • degree of Multiprogramming 제어

4. Suspended(Stopped) 프로세스 상태의 추가

  • 중기 스케쥴러의 대두에 따라, 메모리를 정리하는 과정을 필요로 함.
  • 프로세스의 suspended 상태는, 스케쥴러에 의하여 작동이 정지되고 메모리로부터 제거(swap out)된 상태. (blocked와 다름. blocked 경우 divice queue에 대기하는 등, 프로세스의 입장에서는 작업을 하는 중)
  • 스케쥴러로 인해 다시 호출되는 경우 프로세스가 작동 가능. 메모리에 해당 데이타를 다시 불러와야 함(swap in).

사진 등 자료의 출처, 참고 자료 : http://www.kocw.net/home/search/kemView.do?kemId=1046323
이화여대 반효경 교수의 영상강의를 주요자료로 하여 운영체제를 학습하고 정리하고 있습니다.

profile
JAVA web developer

0개의 댓글