[운영체제] 프로세스 큐, Swap

Profile-exe·2021년 9월 21일
0

Operating-System

목록 보기
5/5
post-thumbnail

운영체제는 프로세스 제어 블록(PCB)을 이용해서 프로세스들을 관리한다.

PCB는 메모리에 존재하며 상태에 따라 Ready 큐 또는 Event 큐(대기큐)에서 관리된다.

이번 포스트에서는 프로세스 큐Swap에 대해 알아본다.


📖 Multiple Blocked Queues

Multiple Blocked Queues

큐(Queue)에는 PCB가 들어가 있으며, 큐는 Linked List로 구현
즉, PCBLinked List를 구현하기 위한 포인터 멤버(Next, Prev)가 존재

📌 Ready Queue

Ready 상태에 있는 프로세스만 모아둔 큐

  • SchedulerReady 큐에서 최우선순위 프로세스를 선택
  • 선택된 프로세스를 Dispatch해서 processor(CPU)가 실행

📌 Blocked(Wating or Event) Queue - 대기큐

Blocked상태에 있는 프로세스만 모아둔 큐

  • 각각의 Device driver에 존재하는 큐
  • 키보드, 디스크, 네트워크, 타이머, 세마포어 등에 대기큐가 존재
  • I/O 함수 등을 호출하면 Blocked 상태가 되며 PCB를 해당 장치의 대기큐로 이동시킴
  • 데이터가 들어오면 Device driver내의 함수는 대기큐에서 해당 PCB 찾고 대기큐에서 제거Ready Queue에 넘겨줌 -> 이때 해당 프로세스의 상태를 Ready 상태로 변경

💡 데이터를 기다리는 프로세스 판별 방법

  • 포트 번호로 구별한다.
  • 즉. PCB포트 번호로 구별한다.

📖 임시 중단된 프로세스들

Suspend 프로세스 상태 추가

💡 Swap out

  • 장시간 대기하는 프로세스의 경우
  • 프로세스메모리에서 디스크swap 영역으로 이동
  • Blocked -> Suspend로 상태 변경

💡 Swap in

  • 대기상태에서 Interrupt가 발생한 경우
  • 프로세스디스크swap 영역에서 메모리로 이동
  • Suspend -> Ready로 상태 변경

✍️ 프로세서(CPU)는 입출력보다 빠르다.

  • 메모리에 있는 모든 process가 I/O를 대기하며 CPUidle 상태가 될 수 있음

✍️ 더 많은 메모리 확보를 위해 Swap이 필요하다.

  • 장시간 대기상태의 프로세스디스크의 별도의 swap 영역으로 빼냄
  • 메모리에는 다른 프로세스를 넣어 실행함
  • swap out된 프로세스는 Blocked -> Suspend 상태로 변경
  • swap in된 프로세스는 Suspend -> Ready 상태로 변경

profile
컴퓨터공학과 학부생

0개의 댓글