목차
개요
스케줄링 큐, CPU와의 큐잉다이어그램에 대한 자세한 이해를 돕기 위한 글이다. 상위글은 여기서 ⬇⬇⬇⬇
2022.08.14 - [OS :: 운영체제] - 프로세스 :: 다중 프로그래밍과 스케줄링
스케줄링 큐
Ready queue는 상위 포스팅에서 기술했다 싶이 준비 상태의 프로세스들이 모여있는 큐이다.
나머지 큐를 보게 되면 각각 Ready : R, Suspend : S, Blocked B 세가지가 존재하게 되는데 표를 자세히 들여다 보면 B큐만 Event wait 상태를 받고 있고 RS, BS 큐는 B 큐에서 보내준 큐를 차례대로 받아서 다시 CPU에 들어가는 메인 R 큐에 이동 시켜주는 것을 확인 할 수 있다.
Suspend (잠시 중지되었다가 트리거로 인하여 준비 상태로 돌아가는 상태)
Blocked (잠시 중지되었다가 I/O 작업 등을 기다리지 않고 할당 해지 되었다가 작업이 끝나면 다시 돌아오는 상태)
Suspend 상태에는 프로세스와 메모리의 할당을 전부 해지하게 된다.
Suspend Blocked 상태에는 기타 나머지 자원 할당도 해지된다.
이러한 메모리와 자원의 할당과 해지는 처리 능력의 효율을 높여주고 메모리의 초과사용을 방지하고 가용공간을 확보하기 위해서 사용한다.
이제 다시 큐잉 다이어그램을 보자면 프로세스 수행에 걸리는 시간에 따라서 어떤 큐에 들어가는지가 나뉘어 지는데
B큐에 들어갔다가 바로 R큐로 가는 경우에는 이벤트 발생의 시간이 짧게되는 경우고 그 이상이 되게되면
B큐에서 BS큐로 스와핑 되어 자원 할당이 전부 해지되고 특정 이벤트를 통하여 RS 큐로 이동하게 되고(wake up 이라고 표현함) 특정 이벤트(I/O 입력이 완료됨) 등이 발생해야지 그때에서야 R큐로 들어가 CPU에서 일을 수행하게 된다.
처리 능력의 효율을 위한 자원 관리 큐 구조
결론적으로 프로세스는 CPU의 스케줄링을 통해 Ready queue (준비큐)와 여러가지 상태로 이루어진 대기큐를 왔다갔다 하면서 메모리에 적재, 해지를 반복하면서 CPU에 의해 실행되고 있는것이다
스와핑 (swapping)
스왑이란 큰 개념은 CPU는 메모리에 저장되어있는 프로세스를 읽어와서 작업을 수행하게 되는데 CPU의 속도에 맞는 캐시 등의 메모리는 크기가 작기 때문에 자주 사용하지 않거나 현재 작업에 필요하지 않는 메모리를 선별하여 속도가 느린 메모리에서 빠른 메모리로 올려놓는 기능을 스왑이라고 한다. CPU의 스케줄링과 관련되어 스왑 즉 스와핑을 이해하자면 이는 스케줄링의 중간단계에 있다고 보면 좋다.
상위 포스팅에서 다중프로그래밍에 대해서 배웠는데 현재 메모리에 적재되어있는 프로세스의 수를 다중프로그래밍 정도라고 하게된다. 다중프로그래밍의 본질은 자주 사용할 법한 프로세스를 메모리에 적재를 해놓은 것인데
이때 다중프로그래밍을 이용한 메모리에 적재된 프로세스가 메모리 내에 유지되는데 필요한 자원과 지금 자원 할당을 해지해놓았다가 필요할때 재할당을 하는데 필요한 자원 중에 후자가 더 효율적인 경우에는 자원 할당을 해지하고 다중프로
그래밍 정도를 줄이는 것이 더 유리하게 된다. 이러한 과정을 스와핑이라고 한다.
스와핑의 과정은 현재 중단된 위치를 기억하면서 적재된 프로세스를 메모리 내에서 스왑아웃(swap out)을 시켜주고 이후 하위수준의 메모리인 디스크 등에서 다시 메모리로 스왑인(swap in)을 통해 기존의 상태를 복원하여 다시 프로세스를 실행 시켜줄 수 있다.
'CS > Operating System' 카테고리의 다른 글
프로세스 :: CPU 스케줄링 종류 (0) | 2022.08.18 |
---|---|
프로세스 :: 문맥 교환과 오버헤드 (0) | 2022.08.17 |
프로세스 :: 다중 프로그래밍과 스케줄링 (1) | 2022.08.14 |
프로세스 :: 메모리 배치 및 프로세스 제어 블록(PCB) (0) | 2022.08.05 |
운영체제 구조 :: 성능관찰(카운터, 추적) (0) | 2022.08.04 |