Thief of Wealth


1. 윈도우 운영체제의 특징.



윈도우의 경우 특정 이벤트가 발생하게 되면 "시스템 메시지 큐"에 이벤트가 발생했다고 알려준다.


그리고 그 "시스템 메세지 큐"는 순서대로 들어온 신호들을 차례에 맞게 처리하는 과정에서,

응용 프로그램이 처리해야 하는 부분의 메세지라면 그것들을 각 "응용 프로그램 메세지 큐"에 보내어 그 응용 프로그램이 처리하도록 하는 구조를 가지고 있다.





맞다. 위 그림처럼 동작하는데, 운영체제는 저렇게 큐가 몇개 밖에 없더라도 마치 사용자에게 "동시에 처리하고 있다" 라고 느낌을 줄 수 있는 처리방식을 사용한다.


- 멀티 태스킹


운영체제가 여러 개의 응용 프로그램을 동시에 실행시키는 것이다. (창을 여러개 띄어 놓고 작업하는 것을 연상)

원래 엄밀히 말해 1개의 CPU는 한번에 1개의 태스크를 처리할 수 있는데, 멀티 태스킹은 CPU사용시간을 일정한 기준에 따라 나누어 각 태스크가 사용할 수 있도록 분배하는 스케쥴링 기법을 사용하여, 사용자에게 마치 병렬 연산이 이루어진 것처럼 느끼게한다.


- 멀티 스레딩


응용 프로그램 내부에서 여러 개의 실행 흐름(스레드)를 동시에 진행하는 것으로 하나의 프로그램 내에서 다중 작업을 하는 것이다.

하나의 프로그램안에서 병렬 처리를 하여 응답성 및 자원 공유, 경제성을 높이는 장점이 있다.

즉, 1개의 작업을 위해서 1개의 프로세스에서 여러개의 스레드를 생성하여 여러 CPU코어를 사용하기 위해 코드를 작성하는 작업이다.

(스레드는 하나의 프로세스의 힙,텍스트 메모리 공간을 공유하고 있기 때문에 서로 변수나 객체 교환이 가능함.)


(멀티 스레딩은 멀티 프로세싱에 비해서 stack을 제외한 모든 메모리를 공유하고, 프로세스간의 문맥교환시 발생하는 비용이 비교적 적기 때문에 효율적이나, 1개의 스레드가 공유하는 데이터 공간을 망가뜨리면 손실이 크기때문에 Critical section이 필요하다.

그리고 스레드는 프로세스 내에서 생성되는 하나의 실행주체이다. 범위가 다름)


- [추가] 멀티 프로세싱 ( 용어로 헷갈리지 말것 )


1개 이상의 프로세서들이 협력하여 프로그램들을 처리하는 것이다. 

멀티프로세싱은 서로 다른 프로세서들이 서로 협력하여 일을 처리하는 것이다. 즉, 여러개의 프로세서가 하나의 작업을 병렬처리한다.

여러개의 프로세스가 1대의 컴퓨터에 있을 수도, 여러대의 컴퓨터에 있을 수도 있다. 

그래서 개념을 이해할 떄 컴퓨터 단위로 분리해서 생각하지 않아도 된다.




2. 윈도우 응용 프로그램의 특징



- API 호출문 집합

윈도우 API ( application programming interface )


윈도우 운영체제가 응용 프로그램을 위해 제공하는 각종 함수의 집합이다.

16비트 윈도우에서는 Win 16 API, 32비트 윈도우는 Win 32 API, 64비트는 Win 64 API.


- 메시지 핸들러 집합

메시지 핸들러


메세지를 받았을 때 동작을 결정하는 코드이다.

메세지 핸들러의 집합을 "윈도우 프로시저 (Window procedure)"라고 한다.


- 실행 파일과 DLL 집합

DLL (Dynamic-Link Library)


프로그램이 실행 중 결합하여 사용할 수 있는 코드와 리소스의 집합이다.

API들은 대부분 DLL형태로 제공되며 따로 제작도 가능하다.


- 장치의 독립성


주변장치가 바뀌어도 장치 드라이버만 바꾸면 프로그램을 딱히 수정할 필요 없이 실행이 가능하다.



3. 윈도우 응용프로그램 개발 방식


- SDK (Sofware Development Kit)

윈도우 API + 응용 프로그램 코드 (C/C++) 를 활용한 개발 방식이다.


장점: API를 다루기 때문에 세부 제어가 가능하고, 윈도우에서 제공하는 거의 모든 기능을 사용가능하며,

코드의 길이가 짧고 속도도 빠르다.


단점: 개발 기간이 상당히 길어 생산성이 떨어진다.


- RAD (Rapid Application Development)

고속 응용 프로그램. 이라는 뜻으로 시각적 화면과 C/C++를 활용한 개발이다.


장점: 간편하고 직관적이라서 빠른 개발이 가능.


단점: 코드가 비교적 크고, 실행속도도 낮으며 , 세부적인 제어가 까다롭다. 쓸데없는 코드 때문에 크고 무거워진다.


- Class Library

클래스 라이브러리는 C/C++코드를 이용한 방식으로 MFC가 여기에 속한다.


장점: SDK보다 생산성이 높다. 게다가 API로 세부제어가 가능하다. RAD방식보다 실행속도 및 코드 크기에 비해 유리하다.


단점: 배우는 데 시간이 꽤 걸린다. Class들의 세부 내용 및 구조, 관계를 배워야한다.


- .NET 프레임 워크

윈도우 운영체제에 설치할 수 있는 소프트웨어 개발 및 실행 환경.


CLR 공용 언어 런타임 이라는 가상환경을 제공하여 장치 독립성을 제공한다.

윈도우 API에 버금가는 라이브러리가 있고 언어에 상관없이 동작한다.



그래서 MFC는 무엇인가...


MFC ( Microsoft Foundation Class ) [출처] MFC 3_MFC 기초|작성자 bitnang

윈도우 응용 프로그램을 작성하는데 조금  쉽다.

    - 라이브러리 재사용, AppWizard, ClassWizard  마법사등을 이용해 쉽게 사용할  있다.

API 기반으로  SDK 프로그램과 대등한 속도를 가진다. (인라인 함수 사용)

코드 크기 증가를 최소화 한다.

API 직접 호출   있다.

C언어로 작성된 윈도우 응용 프로그램을 쉽게 C++ 언어로 바꿀  있다.

SDK 프로그래밍에 대한 기반 지식을 그대로 이용하기 때문에 재활용이 가능하다.

C++언어를 이용하여 기존에 C언어에 비해 API 좀더 편히 사용할  있다.

API 직접 사용해서 구현할 경우 복잡도가 높은 부분을 MFC 이용하면 쉽게 구현이 가능하다.

인쇄기능툴바나 상태바 처리데이터베이스 지원, OLE, 액티브 X등등..



위와 같고 앞으로는 https://www.tutorialspoint.com/mfc/mfc_overview.htm

위 사이트에서 참고하여 글을 쓸 것이다.


'개발 > MFC programming' 카테고리의 다른 글

간단한 Socket 통신 구현하기  (7) 2019.05.01
대화상자 기반 계산기  (0) 2019.04.09
표준 컨트롤을 통한 텍스트 입력  (0) 2019.04.02
temp  (0) 2019.03.20
profile on loading

Loading...