Windows 프로그래밍

기본적으로 알아야 할 용어와 개념에 대하여

최문경 블로그 2020. 5. 7. 18:37
 

김성엽의 Windows 프로그래밍 이야기

기본적으로 Windows 프로그래밍을 배운다는 뜻은 Win32 API를 사용한 응용 프로그램을 만드는 방법에 ...

blog.naver.com

김성엽님의 Windows 프로그래밍 이야기를 보고 정리한 글입니다.

 

응용소프트웨어설계(MFC) 과제하다가 어려워서 MFC강의 찾아보다가 김성엽님을 알게되었는 데, MFC를 배우기전에 먼저 Windows 데스크톱 응용프로그래밍에 대해 배워야한다고 한다.. 그래서 배우기 시작!

 

 

운영체제와 API 그리고 SDK에 대하여

 

운영체제와 API 그리고 SDK에 대하여...

: Win32 프로그래밍 관련 전체 목차 http://blog.naver.com/tipsware/221059977193강좌에서 사용할 용어들...

blog.naver.com

운영체제는 컴퓨터 사용자가 하드웨어를 공부하거나 이해할 필요 없이 사용할 수 있도록 도와준다고 한다. (동일한 기능을 하는 장치라도 회사마다 사용방법에 차이가 있기 때문에 꼭 필요한 것임)

 

운영체제에서 제공하는 프로그램과는 별도로 개발자들이 해당 운영체제에서 동작하는 프로그램을 개발 할 수 있는데 이렇게 개발된 프로그램을 응용 프로그램이라고 한다.

그리고 응용 프로그램을 쉽게 만들 수 있게 운영체제가 제공하는 함수의 집합체를 API(Application Programming Interface)라고 한다.

 

이처럼 응용 프로그램을 개발하기 위해서 필요한 프로그램 집합체(개발 환경)를 SDK(Software Development Kit)라고 부른다.

 

 

 

핸들(Handle)에 대하여

 

핸들(Handle)에 대하여

: Win32 프로그래밍 관련 전체 목차http://blog.naver.com/tipsware/221059977193​1. 운영체제와 리소스...

blog.naver.com

운영체제에 의해서 관리되는 장치나 해당 장치를 사용하기 위해 필요한 정보들을 운영체제의 리소스(Resource)라고 부른다. 그래서 응용 프로그램이 컴퓨터의 어떤 장치를 사용하고 싶다면 해당 장치와 관련된 운영체제 리소스에 접근해야 한다.

 

하지만 응용 프로그램이 리소스에 직접 접근하게 되면 나쁜 목적을 가진 프로그램에 의해 상황이 안좋아질 수 있으니까 리소스를 안전하게 관리하기 위해서 주소를 사용하는 포인터 대신에 핸들이라는 개념을 사용한다.

 

 

 

HINSTANCE

 

HINSTANCE

: Win32 프로그래밍 관련 전체 목차 http://blog.naver.com/tipsware/2210599771931. HINSTANCE ...

blog.naver.com

HINSTANCE 자료형은 'H(Handle) + Instance'로 구성된 이름리고 'Instance Handle'을 저장할 때 사용한다.

Instance Handle은 윈도우즈 운영체제에서 실행되는 프로그램들을 구별하기 위한 ID 값이다.

 

Process ID와는 다른 값이다.

메모리에 실행 가능한 상태로 재배열된 실행 코드를 '프로세스(Process)'라고 하며 프로세스를 구별하기 위한 값이 Process ID이다.

 

 

 

Event 객체

 

Event 객체

: Windows 데스크톱 응용 프로그래밍 관련 전체 목차 http://blog.naver.com/tipsware/221059977193 이 글...

blog.naver.com

두 개(A, B)의 값을 구해서 두 값을 더하는 작업을 해야 한다고 가정해보자. 여기서 A값을 구한 사람이 다음 작업을 위해 B값을 구하는 작업이 완료되기를 기다려주는 행위가 동기화이다.

 

프로그램에서는 실행의 주체가 스레드(Thread)이기 때문에 스레드가 사람에 해당한다. 두 개 이상의 스레드가 협력해서 작업을 하는 경우 상황에 따라 동기화가 필요하기 때문에 동기화를 처리하는 기술을 사용해야 한다.

 

Windows 운영체제에서 동기화 작업을 위해 가장 간단하게 사용할 수 있는 기술이 Event 객체를 사용하는 것이다.