[자료구조] 메시지 큐(Message Queue)

[자료구조] 메시지 큐(Message Queue)


스택, 큐, 덱 관련 자료구조를 정리하다가 메시지 큐도 궁금해서 정리하게 됨

메시지 큐 : 윈도우를 생성하거나 키보드를 누르거나 마우스를 움직일 때 생성되는 메시지가 쌓이는 메모리 공간

  • 시스템 메시지 큐 : 사용자 입력 값들이 차곡차곡 쌓이게 되고 OS가 판단해서 활성화된 원도우에 사용자 입력 값들을 전달하게 됨
  • 쓰레드 메시지 큐 : 사용자가 직접 접근하는 공간으로서 GetMessage, DispatchMessage함수 등에 의해서 접근 가능

  1. 먼저 키보드를 누르면 WM_KEYDOWN이라는 메시지가 생기고 OS 내부에 어떤 곳(메시지 큐)에 이 메시지가 쌓임
  2. GetMessage함수가 이 메시지를 가져옴
  3. 만약에 문자 키라면 TranslateMessage 함수가 WM_CHAR 메시지를 발생시키고
  4. DispatchMessage함수에 의해서 윈도우 프로시저로 전달

  • 하지만 모든 메시지가 큐에 저장되는건 아님
    • 메시지가 발생되자마자 메시지 큐에 쌓이지 않고 바로 윈도우 프로시저로 가는 메시지가 있는데, 이 메시지를 비큐(Non Queued) 메시지라고함
  • 프로세스에 적어도 한 개 이상의 스레드가 생성이 되는데, 이때 쓰레드에서 윈도우를 만들지 않으면 메시지 큐 또한 생기지 않게 되어서 메시지를 받을 수 없음
출처

댓글

이 블로그의 인기 게시물

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[운영체제] 파일의 구조(순차 파일, 직접 파일, 색인 순차 파일)

[운영체제] MLQ & MFQ