windows 주요 개념

c/c++을 배우면서 주로 console이나, dos기반의 프로그램들을 짜왔다.
같은 c/c++을 기반으로 하지만, 윈도우즈 프로그래밍의 코드들을 보면,
수없이 많은 낯선 함수, 열거체, 구조체,매크로 등으로 혼란스럽기만하다.

windows 에 대한 기본적인 배경이야기를 알아 놓으면, 한결 수월해진다.

windows의 기본적인 특징들을 주요 세가지만 꼽아보자.
  • GUI(Graphic User Interface) 이다. 
    • 시커먼 화면에 글자 몇개만 뜨는 도스와는 달리, 그래픽기반의 OS이다. 픽셀단위의 섬세한 처리가 가능하여 다양한 그래픽을 표현할 수 있다. 
  • 멀티태스킹(Multitasking)멀티스레딩(Mutithreading)
    • 여러가지 프로그램을 동시에 실행시킬 수 있다. 윈도우 95부터 주로 선점형(preemptive) 멀티 태스킹을 지원한다.
    • 선점형 멀티 태스킹이란?
      • 코드들은 코드가 수행되기 위해 cpu가 자신을 위해 시간을 쏟길 바란다. 선점형 멀티태스킹의 반대인 비 선점형 멀티태스킹의 경우, cpu의 시간을 관리하는 주체가 OS가 아니라 응용프로그램이다. 따라서 응용프로그램은 마음껏 cpu를 사용한다. 누구에게도 선점당할 염려가 없다. 
      • 선점형 멀티태스킹의 경우는 그 반대이다. OS가 cpu사용시간을 관리한다. 골고루 cpu를 사용할 수 있도록 한다. 만약 어떤 프로그램이 오류가 발생해 다음 프로그램으로 넘겨주지 못하는 상황이 온다면, OS가 관여해서, cpu자원등을 회수해 가서 다른 프로그램들에게 넘겨준다.누구든지 선점할 수 있는 방식으로 운영한다.
      • 비선형멀티태스킹의 경우, 버그나 오류에 있어서 치명적이고, 여러가지 프로그램을 동시에 실행시키지 못한다. 하지만 선점형 멀티태스킹의 경우, 자원을 골고루 나누어쓰기때문에 거의동시에 여러프로그램이 실행되는것 같은 효과를 가진다. 
    • 멀티스레딩이란? 멀티태스킹이 동시에 여러가지 프로그램이 수행되는 것을 말했다면, 멀티스레딩은 한 프로그램 내에서 두개 이상의 기능이 병렬적으로 수행되도록 프로그램을 작성하는 것을 말한다. 
      • 멀티스레딩의 이점:  빠른처리,단순화된 설계,병렬화의 극대화,cpu사용율 증가,사용자에 대한 응답성 향상 등등
  • 장치 독립적인 인터페이스
    • 하드웨어장치에 무관하게 프로그래밍일 할 수 있는 것을 말한다. 
      • 하드웨어 제조사는 마이크로소프트에서 미리 정해 놓은 규칙에 따라 해당 하드웨어를 구동할 수 있는 구동프로그램(Device Driver 소프트웨어)을 작성하여 배포하기때문에 프로그래머는 현재 어떤 하드웨어가 설치되어 있는지 등에 대한 신경을 쓰지 않고 프로그램을 짤 수 있다. 

reference:
http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=34848
송호근 외2명,c/c++에 기반한 Win32 API기초 윈도우 프로그래밍,2007,Grobal,ch9

댓글

이 블로그의 인기 게시물

[Win32 API] WINAPI - 함수호출규약

JAVA Frame Icon setting

JAVA Spinner