운영 체제에서는 다양한 프로세스가 동시에 실행될 수 있도록 스케줄링을 합니다. Scheduling에서 사용되는 큐는 정확하게는 Priority Queue입니다. 우선순위 큐는 이러한 작업 스케줄링에서 우선순위에 따라 프로세스를 관리하고 CPU에 할당하는 순서를 결정하는 데 사용됩니다.
여기서 P1, P2, P3은 프로세스들이며, P1이 현재 CPU에 할당된 상태입니다. P2는 다음에 실행될 프로세스입니다.
[ P1 ] -> [ P2 ] -> [ P3 ] (Queue)
CPU <--- (Front of the Queue)
여러 문서나 파일을 프린트할 때, 먼저 요청된 작업부터 순차적으로 프린트하기 위해 Queue가 사용됩니다.
너비 우선 탐색에서는 시작 노드부터 시작하여 그 노드의 모든 이웃을 먼저 탐색합니다. 큐는 이런 방식으로 노드를 순차적으로 저장하고 처리하는 데 사용됩니다.
이 그림에서 A부터 시작하여 B, C, D 순으로 큐에 추가하고, 순차적으로 탐색합니다.
A
/ | \
B C D
/ \
E F
Queue: [A] -> [B] -> [C] -> [D] -> [E] -> [F]
전자상거래 시스템에서 사용자의 주문은 순서대로 처리되어야 합니다. 주문이 들어올 때마다 큐에 추가되고, 백엔드 시스템은 큐에서 순차적으로 주문을 처리합니다.
첫 번째 주문(Order1)이 현재 처리 중이고, 그 다음에는 Order2, Order3 순서로 처리됩니다.
Order Queue: [ Order1 ] -> [ Order2 ] -> [ Order3 ]
(First In) (Last In)
실시간 데이터 스트리밍 시스템에서는 데이터 패킷을 순서대로 처리해야 합니다. 이 때, 큐를 사용하여 패킷들을 순차적으로 정리하고 처리할 수 있습니다.
Packet1이 먼저 처리되며, 그 후 Packet2, Packet3 순서로 처리됩니다.
Packet Queue: [ Packet1 ] -> [ Packet2 ] -> [ Packet3 ]
(First In) (Last In)
큐를 사용하여 들어온 요청을 여러 서버에 공평하게 분배합니다. 이를 통해 서버의 부하를 균등하게 분산시킬 수 있습니다. 각 요청(Req)이 큐에 들어가고, 서버들에 순차적으로 분배됩니다.
Request Queue: [ Req1 ] -> [ Req2 ] -> [ Req3 ] -> [ Req4 ]
Server1 Server2 Server1 Server2
메시징 기술은 시스템 간에 데이터를 교환할 때 사용하는 통신 방식입니다. 메시징 시스템에서, Producer(또는 Publisher)는 메시지를 생성하고, 이를 메시징 시스템에 전달합니다. 메시징 시스템은 이 메시지를 Queue에 저장합니다.
Consumer(또는 Subscriber)는 이 메시지를 메시징 시스템에서 가져와서 처리합니다. 예를 들어, RabbitMQ, Kafka, ActiveMQ 등이 있습니다.