운영체제에서의 Queue
오늘은 운영체제에서 큐가 어떻게 쓰이는지 정말 간단하게 알아보려고 합니다.
우선 컴퓨터는 여러분야에서 발생한 순서대로 문제를 해결해야 되는 경우에는 선입선출의 구조인 큐를 사용하게 됩니다.
컴퓨터 운영체제에서 실행을 요청한 작업들을 순서대로 처리하기 위해서 버퍼 큐와 프로세스 스케줄링 큐를 사용하고, 대기 행렬 큐도 사용합니다.
버퍼 큐
일단 버퍼 큐는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 큐 영역입니다.
버퍼는 컴퓨터 안의 프로세스 사이에서 데이터를 이동시킬 때 사용됩니다.
프로세스 스케줄링 큐
프로세스가 쌓이는 큐입니다.
일반적으로 링크드 리스트로 이루어져 있으며, 이 자료구조의 헤더는 리스트의 첫번째 원소,마지막 프로세스를 가리킵니다.
cpu에게 할당 받기전까지 기다린다고 합니다.
대기 행렬 큐
산업공학 분야에서 최적의 시스템을 설계하기 위한 시뮬레이션에서 쓰입니다.
본론
큐는 재각각 다른 속도로 실행되는 작업들의 처리 시간을 맞추기 위해 사용할 수 있습니다.
어떤 출력 장치가 있다고 예를 들어보면, cpu에서 데이터를 처리하는 속도와 출력 장치의 속도는 당연히 cpu의 속도가 더 빠를 것입니다.
그럴 때마다 cpu에서는 출력 장치가 천천히 처리하는 걸 바라만 봐야 할 수도 있습니다.
만약 버퍼 큐가 있다면 cpu는 연산을 재빨리 끝내면서 버퍼 큐에 쌓습니다.
그때 출력 장치는 버퍼 큐에 있는 프로세스들을 천천히 처리하면서 완료된 작업 목록은 삭제합니다.
이와 같이 처리 속도를 맞추기 위해 작업하는 큐가 버퍼 큐입니다.
그리고 운영체제에서 cpu를 사용하고 싶은 프로세스를 관리하기 위해서도 큐가 사용되는데, 이를 스케줄링 큐라고 합니다.