5. 프로세스(Process)

썹스·2022년 8월 16일
0

운영체제

목록 보기
5/20

프로그램(Program): 컴퓨터에서 어떠한 작업을 할 수 있도록 만들어진 집합체로 H/W에 잠들고 있다. (동작 X)
프로세스(Process): H/W에 있는 프로그램이 운영체제에 의해 메모리에 적재되어 실행 중이거나 대기 중인 상태의 프로그램을 프로세스라고 한다.
프로세서(Processor): 프로세서는 중장 처리 장치를 의미하며, 프로세스가 실행될 수 있도록 한다. 흔히 CPU라고도 불린다.

1. 프로세스(Process)

프로그램(Program): 컴퓨터에서 어떠한 작업을 할 수 있도록 만들어진 집합체로 H/W에 잠들고 있다. (동작 X)

프로세스(Process): H/W에 있는 프로그램이 운영체제에 의해 메모리에 적재되어 실행 중이거나 대기 중인 상태의 프로그램을 프로세스라고 한다.

프로세서(Processor): 프로세서는 중장 처리 장치를 의미하며, 프로세스가 실행될 수 있도록 한다. 흔히 CPU라고도 불린다.


1-1. 프로세스 상태

  • new: H/W에 있는 프로그램이 main memory에 적재된 상태 (아직 작동 X)
  • ready: 적재된 프로그램이 실행할 수 있도록 준비 완료한 상태 (아직 작동 X)
  • running: CPU를 할당받아 실제로 실행되고 있는 상태 (작동 O)
  • waiting: CPU를 할당받고 있는 프로세스가 I/O 장치로 인하여 잠시 CPU 할당을 받지 않고 다른 작업이 끝나길 기다리는 상태 (작업이 끝날 때까지 CPU는 다른 프로세스 작업을 실행)
  • terminated: 프로세스가 종료된 상태

프로세스의 상태 변화의 흐름은 아래와 같다.

MultiProgramming System 방식

Time Sharing System 방식

Time Sharing System 방식 같은 경우는 running 작업 중인 프로세스가 일정 시간을 초과하면 강제로 ready 상태로 변경하고 다른 프로세스가 작업할 수 있도록 하는 방식이다.


1-2. PCB(Process Control Block)

PCB는 프로세스에 대한 모든 정보가 담겨있는 블록으로 운영체제 안의 프로세스 관리파트에 존재하며, 1개의 프로세스에 1개의 PCB를 할당받는다.
PCB 안에는 프로세스의 상태 정보, registers 정보, MMU 정보, CPU 사용 시간 정보, process id 정보 등이 담겨 있다.


1-3. 큐(Queues)

프로세스에서 큐(Queues)는 줄을 서서 다음 작업을 기다리는 것을 의미한다.
메모리에 적재된 다양한 프로세스는 작업이 진행되는 동안 상태가 여러 번 변하게 된다. 상태가 변동될 때는 즉각적으로 변하는 경우도 있지만, 다른 프로세스가 먼저 와서 기다리는 경우에는 대기를 해야 한다. 이러한 대기를 큐(Queues)라고 한다.

대기 중인 작업을 선입선출 방식으로 하는 것이 제일 간단하고 편하지만, 효율적인 작업을 진행하기 위해서는 작업의 순서를 결정해야 한다. 이러한 작업의 순서를 정해주는 것을 스케줄링(Scheduling)이라 한다.


큐는 크게 3가지로 나누어 진다.

  • Job Queue: main memory에 Program이 적재되는 것을 기다리는 큐
    • Job Scheduler(Long-term scheduler)
  • Ready Queue: CPU 서비스를 기다리는 큐
    • CPU Scheduler(Short-term scheduler)
  • Device Queue: I/O 장치를 사용하기 위해 기다리는 큐
    • Device Scheduler


1-4. 멀티프로그래밍(Multiprogramming)

메인 메모리에 2개 이상의 프로세스가 적재되어 작업하는 것을 멀티프로그래밍(Multiprogramming)이라 한다.

Degree of multiprogramming

현재 main memory에 적재된 프로세스의 수

I/O burst

I/O를 요청한 뒤 기다리는 시간

CPU burst

CPU 명령을 실행하는 시간

I/O bound process

I/O 요청이 자주 일어나고 CPU burst가 짧게 나타나는 프로세스
(워드, 한글, 엑셀 등...)

CPU bound process

I/O 작업이 거의 없고 CPU burst가 길게 나타나는 프로세스(엄청난 양의 계산이 요구되는 프로그램)를 말한다.
(슈퍼 컴퓨터, 기상청 날씨 계산 등...)

Medium-term scheduler

Medium-term scheduler는 Job Scheduler(Long-term scheduler)보단 자주 발생하고, CPU Scheduler(Short-term scheduler)보단 적게 일어나는 scheduler로 메인 메모리에서 작업 활동을 하지 않는 프로세스를 잠시 H/W(HDD)로 옮기는 것을 한다.

이러한 과정을 Swapping이라 하며, 프로세스를 잠시 H/W(HDD)로 옮기는 것을 swap out, H/W(HDD)에 있는 프로세스를 다시 main memory로 옮기는 것을 swap in 이라 한다. 프로세스를 저장하는 H/W(HDD)를 swap device라 부른다.
(swap out 후 다시 swap in 할 때 기존 사용했던 메모리 공간으로 배정받는 것은 보장되지 않고 다른 공간에 배정될 수 있다.)


Context Switching(문맥 전환)

main memory에서 운영체제가 CPU가 프로세스의 작업을 중단하고 다른 프로세스로 전환하는 것을 Context Switching(문맥 전환)이라 부른다.

  • Scheduler: 효율적인 작업을 진행하기 위해서는 작업의 순서를 결정해야 한다. 이러한 작업의 순서를 정해주는 것을 스케줄링(Scheduling)이라 한다.
  • Dispatcher: main memory에서 Context Switching이 발생하면 기존에 사용했던 프로세스의 데이터를 저장하고 다음에 사용할 프로세스의 데이터를 불러와야 한다. 프로세스의 저장과 복원을 하는 프로그램이 Dispatcher이다. (데이터 정보는 PCB에 존재한다)
  • Context switching overhead: Context Switching이 발생할 때마다 Dispatcher 작업이 이루어진다. Dispatcher를 진행할 때마다 발생하는 데이터의 저장 및 복원의 부담을 Context switching overhead이라 부른다.


Reference

경성대학교 양희재 교수님의 운영체제

profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글