본문 바로가기
  • hazard_dev@__
  • hazard_dev@__
C

큐에 대한 가벼운 생각

by Hazard3_o00sung 2020. 3. 2.
728x90

본 포스트는 c언어와 뇌내 생각으로 작성되었습니다.

 

큐에 대한 가벼운 생각

 

스택도 있고 아직 포스트를 하지못한 데크도 있는데 큐를 써야하는 이유는 뭘까 생각해보았습니다. 이는 결국 컴퓨터 운영체제 와 맞물려 있던 것 같습니다. 자세한 건 물론 구글링이나 msdn을 참고해 생각을 보충하면 되지만, 그전에 생각을 정리하기 위해 앞서 포스팅을 하고 가볍게 생각해보려합니다.

 

컴퓨터 운영체제는 우리도 모두 알다시피 요청한 작업을 차례대로 처리합니다. 쉽게 생각하자면, 프로그램 a,b가 있을때 a를 먼저 실행시키고 b를 그 후 실행시키면 a뒤에 b가 프로세스작업에 따라 붙는 이런 상황들 때문인거죠. 이 말은 즉슨 "최적화가 용이하다" 라고 생각해볼 수 있었습니다. 

 

운영체제에서의 큐는 그럼 어떻게 동작되는지 가볍게 검색을 통해 알아보았습니다.

 

큐는 다른 속도로 실행되는 작업의 처리에 소요되는 시간을 조절할 때 유용하게 사용할 수 있다고 합니다. 

 

cpu ---> 처리중 ---> 프린터

 

의 경우를 보게되면, 시피유에서 데이터를 내보내는 속도는 당연하게 프린터보다 월등하게 빠릅니다. 하지만 그렇다고 해서 우리가 출력할 때 시피유가 내는 속도로 출력물을 받을 수 있던가요 ..?^^ 아니였죠? 그렇다면 데이터 구조중 하나인 스택의 측면에서 바라볼 때, 이러한 작업들은 비 효율적이라고 생각이 듭니다. 이유야 당연합니다. 먼저들어온 데이터가 가장 나중에 나가게 되니, 이러한 병렬구조에서 취약점을 드러낼 수 밖에 없을 거라 생각했기 때문입니다.

 

그렇다면 시피유는 프린터에 처리 데이터를 보내놓고는 놀까요? 그건 아닙니다. 논다면 최적화 문제도 있고, 메모리낭비도 상당할거라 생각이 듭니다. 

 

제가 생각하는 큐의 최적화된 시스템의 효율적인 활용용도는 맛집에 비유할 수 있을것 같습니다.

 

출처 : 아시안타임즈

와우^^ 골목식당에 출연하여, 엄청난 맛을 자랑하며 유명해진 연돈 돈까스 집입니다. 줄이 아주... 강식당2시즌때 경주에서의 아주 긴 길을 연상케 하네요.

 

자 그렇다면 왜 여기서 활용될 수 있을 것이라 보았냐면, 우선 많이 언급했지만, 선입선출 방식입니다. 또한 돈까스집에서의 대기시간, 식사하는데 소요되는 시간, 음식이 완성되기까지의 소요시간 등을 고려해보았기 때문입니다. 

 

컴퓨터적인 비유를 들자면, 이 모든것은 2차원 행렬로 변환하여 생각할 수 있겠습니다.

 

줄 서 있는 대기자는 큐로 만든 대기자 행렬에 들어가게 되고, 홀에 있는 매니저는 대기자들을 줄 서 있는 순서대로 들여보내게 됩니다.(선입선출방식을 따름)  그렇다면, 음식을 만들고, 식사하고 모든 과정이 끝마치고 장사를 종료하게 되면 가게는 비어있는 상태가 됩니다. (큐가 공백이 됨) 그렇다면 앞서 만든 큐 시스템을 활용하여 사용자의 니즈를 충족시킬 수 있는 방법을 찾게되고, 음식점에서의 어느정도 신박한(?) 모델링이 되지 않을까 생각합니다. 

 

 

필자 또한, 이러한 부분에 치중하여 공부를 하지 않았습니다. 흔히 말하는 깡코딩, 그냥 돌격앞으로 모드 였습니다. 하지만 이 글을 읽으시는 분들은 그러시지 않으셨음 좋겠습니다. ^^

 

읽어주셔서 감사합니다 . 그렇다면 이상 뻘글이였습니다.

728x90

'C' 카테고리의 다른 글

트리자료구조_on c[2]  (0) 2020.03.09
트리자료구조_on c[1]  (0) 2020.03.04
큐가 뭔가요!( C,Queue)[2]  (0) 2020.03.02
큐가 뭔가요!!(c_queue)  (0) 2020.03.02
STACK(스택)이 뭔가요?[2]  (0) 2020.02.21

댓글