운영체제 3-2 : 프로세스 종류와 스케줄링 큐

Jang990·2024년 1월 25일
0

운영체제

목록 보기
2/9

3-1에서 메모리에 올라온 프로세스의 구조를 살펴봤고,
운영체제가 PCB로 프로세스를 관리한다는 것을 확인했다.

이 글에서는 프로세스의 종류와 스케줄링 큐에 대해서 알아본다.
책에는 3장에서 스케줄러와 컨텍스트 스위치도 다루지만 이 내용은 5장에서 자세히 다루므로 넘긴다.

CPU-Bound I/O-Bound

프로세스의 종류는 다양하다.

예를 들어 수학적인 계산을 하는 프로세스가 있을 수 있다.
이 경우 I/O 처리보다 CPU를 활용하여 계산을 더 많이 할 것이다.
이러한 프로세스를 CPU 바운드 프로세스라 부른다.

또 다른 예로 어떤 파일을 불러오는 프로세스가 있을 수 있다.
이 경우는 CPU를 활용보다 I/O 처리에 집중을 할 것이다.
이러한 프로세스를 I/O 바운드 프로세스라 부른다.

프로세스가 끝날 때 까지 실행

CPU가 단 하나의 프로세스만 실행을 하고 실행이 끝나면 다른 프로세스를 실행시킨다고 가정해보자.
I/O 바운드 프로세스가 먼저 실행중이고 CPU 바운드 프로세스가 다음 실행을 기다리고 있다.

I/O 바운드 프로세스가 실행될 때 CPU는 사실상 실행시간의 절반도 사용하지 않는다.

멀티 프로그래밍

I/O 바운드 프로세스와 CPU 바운드 프로세스를 적절히 조합하면 CPU를 최대한 이용하면서 여러 프로세스를 동시에 처리할 수 있을 것 같다.

이렇게 나오는 아이디어가 멀티 프로그래밍이다.

어떤 프로세스가 I/O 처리를 기다려야 할 경우, 운영체제가 해당 프로세스로부터 CPU를 회수해서 다른 프로세스에게 할당해주는 방식이다.

그림과 같이 CPU 유휴시간을 멀티 프로그래밍을 통해서 없앨 수 있다.

하지만 메모리에는 여러 프로세스가 올라와있기 때문에 '어떤 프로세스를 선택해야 하는가?'라는 고민이 생긴다.

이렇게 프로세스를 선택하고 실행하는 과정은 5장에서 자세하게 다룬다.
지금은 CPU 스케줄러라는 것이 있는데 이게 적절한 프로세스를 선택해서 실행해준다고 생각하자.

스케줄링 큐

3-1에서 언급한 것 처럼 이렇게 여러 프로그램들이 메모리에 적재되고 프로세스라는 개념을 낳게 되었다.

프로세스가 시스템에 들어가면 준비 큐에 들어가서 실행을 CPU 코어에서 실행되기를 기다린다.

큐는 일반적으로 연결 리스트로 저장딘다.

시스템에는 준비 큐외에도 다른 큐들이 존재한다.
프로세스가 파일 읽기 등의 I/O 요청을 보내면 오랜 시간 대기한다.
이럴 때 해당 프로세스는 대기 큐에 삽입되어 I/O 완료와 같은 특정 이벤트의 발생을 기다린다.

큐 이동 예시

  1. 프로세스가 I/O 요청으로 대기 큐로 이동
  2. 프로세스가 자식 프로세스를 만들고 자식의 종료를 기다리는 동안 대기 큐로 이동
  3. 인터럽트 또는 타임 슬라이스 만료로 실행 상태의 프로세스가 준비 큐로 이동

참고 및 사진 출처

도서 - 운영체제
https://www.sciencedirect.com/science/article/abs/pii/S0045790616302270
https://melodist.github.io/docs/OS/Scheduling1

profile
공부한 내용을 적지 말고 이해한 내용을 설명하자

0개의 댓글