김성엽님의 Windows 프로그래밍 이야기를 보고 정리한 글입니다.
응용소프트웨어설계(MFC) 과제하다가 어려워서 MFC강의 찾아보다가 김성엽님을 알게되었는 데, MFC를 배우기전에 먼저 Windows 데스크톱 응용프로그래밍에 대해 배워야한다고 한다.. 그래서 배우기 시작!
운영체제와 API 그리고 SDK에 대하여
운영체제는 컴퓨터 사용자가 하드웨어를 공부하거나 이해할 필요 없이 사용할 수 있도록 도와준다고 한다. (동일한 기능을 하는 장치라도 회사마다 사용방법에 차이가 있기 때문에 꼭 필요한 것임)
운영체제에서 제공하는 프로그램과는 별도로 개발자들이 해당 운영체제에서 동작하는 프로그램을 개발 할 수 있는데 이렇게 개발된 프로그램을 응용 프로그램이라고 한다.
그리고 응용 프로그램을 쉽게 만들 수 있게 운영체제가 제공하는 함수의 집합체를 API(Application Programming Interface)라고 한다.
이처럼 응용 프로그램을 개발하기 위해서 필요한 프로그램 집합체(개발 환경)를 SDK(Software Development Kit)라고 부른다.
핸들(Handle)에 대하여
운영체제에 의해서 관리되는 장치나 해당 장치를 사용하기 위해 필요한 정보들을 운영체제의 리소스(Resource)라고 부른다. 그래서 응용 프로그램이 컴퓨터의 어떤 장치를 사용하고 싶다면 해당 장치와 관련된 운영체제 리소스에 접근해야 한다.
하지만 응용 프로그램이 리소스에 직접 접근하게 되면 나쁜 목적을 가진 프로그램에 의해 상황이 안좋아질 수 있으니까 리소스를 안전하게 관리하기 위해서 주소를 사용하는 포인터 대신에 핸들이라는 개념을 사용한다.
HINSTANCE
HINSTANCE 자료형은 'H(Handle) + Instance'로 구성된 이름리고 'Instance Handle'을 저장할 때 사용한다.
Instance Handle은 윈도우즈 운영체제에서 실행되는 프로그램들을 구별하기 위한 ID 값이다.
Process ID와는 다른 값이다.
메모리에 실행 가능한 상태로 재배열된 실행 코드를 '프로세스(Process)'라고 하며 프로세스를 구별하기 위한 값이 Process ID이다.
Event 객체
두 개(A, B)의 값을 구해서 두 값을 더하는 작업을 해야 한다고 가정해보자. 여기서 A값을 구한 사람이 다음 작업을 위해 B값을 구하는 작업이 완료되기를 기다려주는 행위가 동기화이다.
프로그램에서는 실행의 주체가 스레드(Thread)이기 때문에 스레드가 사람에 해당한다. 두 개 이상의 스레드가 협력해서 작업을 하는 경우 상황에 따라 동기화가 필요하기 때문에 동기화를 처리하는 기술을 사용해야 한다.
Windows 운영체제에서 동기화 작업을 위해 가장 간단하게 사용할 수 있는 기술이 Event 객체를 사용하는 것이다.
'Windows 프로그래밍' 카테고리의 다른 글
GDI 시스템의 이해 (0) | 2020.05.10 |
---|---|
Windows 운영체제는 화면에 그림을 어떻게 출력하는가? (0) | 2020.05.09 |
Windows 프로그래밍 맛보기와 프로그램 구성 파악하기 (0) | 2020.05.09 |
자신만의 Window를 사용하려면 자신만의 'Window Class'를 만들자 (0) | 2020.05.07 |