목차
개요
CPU 내에는 여러개의 코어와 스레드로 이루어져있는데 일반적으로 1개의 코어에 1개의 프로세스만 동시에 처리가 가능하다. 하지만 CPU의 처리 속도는 이용자가 자원을 이용하는 속도보다 느린 속도이다. 예로 키보드를 아무리 빨리 입력해도 CPU입장에서는 기다리기에 느리다.
따라서 CPU가 더 효율적으로 사용될 수 있도록 여러개의 작업을 번갈아가면서 실행하는 방식을 도입하게 되고 이러한 여러가지 작업중에서 우선순위를 정해서 실행할 작업을 결정하는 과정을 CPU스케줄링이라고 부르고 그 중 CPU의 작업과 입출력 작업을 병행하는 방식을 다중 프로그래밍이라고 부른다.
그리고 CPU 스케줄링과 다중프로그래밍을 이용해 사용자들에게 컴퓨터 자원을 시간적으로 분할 해주는 시스템을 시분할 시스템, 이러한 시스템을 탑재한 운영체제를 시분할 운영체제 라고 한다.
프로세스 상태
위에서의 CPU의 코어가 할당되는 과정을 거치기 위해서는 각 작업이 어떤 상태에 놓여져 있는지를 알고 있어야 적절하게 분배를 해주기 때문에 총 5가지의 상태로 나누어서 분류를 한다.
-
생성(create) : 프로세스가 생성되는 중이다.
-
실행(running) : 프로세스가 프로세서를 차지하여 명령어들이 실행되고 있다.
-
준비(ready) : 프로세스가 프로세서를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다.
-
대기(waiting) : 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다.
-
종료(terminated) : 프로세스의 실행이 종료되었다.
코어에는 하나의 프로세스가 실행되고 그 뒤에는 수많은 준비완료와 대기 상태의 프로세스가 존재한다.
프로세스 상태로 이해하는 선점과 비선점⬇⬇⬇
스케줄링 큐
운영체제에는 여러가지 종류의 큐가 존재하는데 그 중에 이번에 살펴볼 큐는 준비 큐와 대기 큐 이다.
준비큐(Ready queue)의 경우에는 프로세스가 시스템으로 들어가서 준비 상태가 되며 CPU코어에서 실행되기를 기다리는 프로세스가 쌓여있는 큐이다.
또한 연결리스트 형태로 이 큐의 헤더(가장 처음)은 리스트의 첫번째 PCB를 가르키는 포인터가 저장되고 각각의 PCB에는 다음으로 들어올 PCB의 포인터가 저장되어있다.
모든 프로세스는 실행되면 종료가 되게 되는데 종료가 되는 이유 중 인터럽트나 I/O 요청(마우스의 클릭 등)이 필요한 경우도 있다. 이러한 경우에는 특정한 이벤트가 발생하기를 기다려야 하는데 이러한 이벤트를 기다리는 프로세서 들은 대기큐(Wait queue)에 삽입된다.
따라서 프로세스는 대기와 준비 상태 사이의 전환을 반복하면서 프로세스가 종료가 될 때까지 이를 반복한다. 종료 시점에는 모든 큐에서 제거되고 PCB 및 자원도 반환된다.
위 사진에 대한 더 자세한 설명과 스와핑에 대해 알고 싶으면 ⬇⬇⬇
2022.08.14 - [OS :: 운영체제] - 프로세스 :: 다중 프로그래밍과 스케줄링
'CS > Operating System' 카테고리의 다른 글
프로세스 :: 문맥 교환과 오버헤드 (0) | 2022.08.17 |
---|---|
프로세스 :: 스케줄링 큐와 스와핑 (0) | 2022.08.16 |
프로세스 :: 메모리 배치 및 프로세스 제어 블록(PCB) (0) | 2022.08.05 |
운영체제 구조 :: 성능관찰(카운터, 추적) (0) | 2022.08.04 |
운영체제 구조 :: 운영체제의 생성과 부팅 (0) | 2022.08.03 |