시스템 프로그래밍
-
64bits-based Programming, GetLastError시스템 프로그래밍 2019. 3. 17. 17:30
#6. 윈도우즈 시스템 프로그래밍 6-1. 64bits-based Programming 포인터가 8 byte 로 처리가 된다는 점을 챙기면 될 것 같다. 만약 arr (8byte) 를 int (4byte) 로 형변환될 경우 문제가 생긴다. 다음과 같은 형식으로 다형성을 지원할 수 있다._WIN64 가 정의되어 있을 경우 UINT_PTR 은 __int64 로 동작하고, 정의되어 있지 않을 경우 unsigned int 로 동작한다.이것이 다형적 특징이다. PTR 이라고해서 포인터 연산에서 활용하기 위한 자료형이지, 그 자체가 포인터는 아니다. 6-2. GetLastError Function 윈도우즈 시스템에서 오류가 발생되면, 전역적으로 설정된 공간에 오류가 발생한 이유를 저장한다. 이 전역공간에 접근하기 ..
-
X bit System시스템 프로그래밍 2019. 3. 17. 16:49
#5. 윈도우즈 시스템 프로그래밍 5. X bit System 우선 시스템의 비트를 구분하는 두 가지 기준에 대해 알아보자.한번에 송수신 가능한 데이터의 크기와 데이터를 처리하는 능력으로 시스템의 비트수를 말한다. 한번에 송수신 가능한 데이터의 크기는 'I/O BUS system' 에 의존적이고, 데이터 처리능력은 'CPU 가 한번에 읽어들일 수 있는 명령어의 크기' 를 의미한다. 만약, 데이터 이동은 64 bit System 인데 CPU 는 32 bit System 이라면 완전한 64 bit System 이라고 할 수 없다. 이럴경우 어디선가 bottleneck 이 발생한다. 결국, 데이터 이동(but)과 처리(cpu)가 동일한 사이즈로 동작이 되야 이상적이다. 이상 하드웨어적인 관점에서의 x bit ..
-
MBCS, WBCS 동시지원시스템 프로그래밍 2019. 2. 20. 15:01
#4. 윈도우즈 시스템 프로그래밍 4. MBCS, WBCS 동시지원 유니코드의 장점이 있음에도 불구하고, 멀티코드를 동시지원해야하는 이유는 사용자들의 호환성 및 유니코드를 지원하지 않는 OS 의 경우에는 동시지원을 해주는 방식을 사용해야한다. 이를 위해 Windows 에서는 다양한 매크로들을 지원한다. 각각의 조직에 맞도록 typedef 를 수정하여 사용하는 경우가 있다. 기업이나 조직에 들어갔을 때 그에 맞는 자료형을 파악하는 것도 중요하다 !! 그렇다면 어떠한 방식으로 동시지원을 할까? TCHAR 라는 자료형을 선언했을 때 unicode 를 지원하면 WCHAR 로 지원하지 않는다면 CHAR 로 동작하도록 한다!!! TCHAR 예시와 마찬가지로 _T(x) 또한 L ## x ( Unicode 지원 ), ..
-
CharSet, MBCS's Problem, WBCS Programming시스템 프로그래밍 2019. 2. 20. 14:31
#3. 윈도우즈 시스템 프로그래밍 3-1. CharacterSet MBCS 는 문자열의 길이에 따라가 아니라 구성하는 요소마다마다의 바이트를 파악한다. 메모리 면에서는 WBCS 보다는 효율적일 수 있지만, 안정성의 문제에 있어서 취약한 부분이 있다. WBCS 는 MBCS 와 다르게 모든 문자를 2바이트로 간주한다. 메모리 면에서 비효율적일 수 있으나, 프로그램의 효율성을 운운하기에 그 1바이트의 비중이 작다는 점, 무엇보다 안정성 면에서 우수하다는 것이 중요한 특징이다. 3-2. MBCS's Problem MBCS 는 다음과 같이 바이트를 계산하는 법과 일반적으로 사람이 생각하는 개념이 달라 혼동되는 경우가 있다. 'ABC한글' 은 바이트로 계산했을 때 그 길이값은 7이지만, 사람들은 5로 인식하기를 바..
-
프로그램 실행과정, Stored Program Concept, Bus System시스템 프로그래밍 2019. 2. 11. 16:24
#2. 윈도우즈 시스템 프로그래밍 2-1. 프로그램 실행과정 명령어는 CPU를 디자인하는데 있어 상당히 중요한 의미를 지닌다. 하단의 표는 덧셈, 뺄셈, 곱셈, 나눗셈에 대한 명령어를 디자인한 예를 나타내는 표이다. 이러한 표를 보고 바이너리 신호 ( 0과 1의 조합)가 들어오면 이를 Control Unit 에서 해석하며 그에 맞는 역할을 수행한다. ADD 와 같은 0011 로 바로 해석될 수 있는 언어를 Low level 언어 ( 어셈블리언어 )라고 하며, ADD 를 0011 로 바꿔주는 것이 어셈블러의 역할이다. C나 C++과 같은 언어들은 어셈블리어의 조합을 토대로 만들어진 고급언어이다. 고급언어는 컴파일러에 의해 Low level 언어로 처리가 된다. 링커는 라이브러리와 결합되어 실행파일을 만드는..
-
시스템 프로그래밍, 하드웨어 구성, 클럭신호시스템 프로그래밍 2019. 2. 6. 17:00
#1. 윈도우즈 시스템 프로그래밍 주변 지인들의 추천을 받아 먼저 한빛 미디어의 '뇌를 자극하는 윈도우즈 시스템 프로그래밍' 으로 시스템 프로그래밍을 공부해보기로 했다!! 유튜브에는 저자님께서 직접 강의하신 자료가 있기에 공부하기 수월할 것 같았다. 1-1. 윈도우즈 시스템 프로그래밍의 개념 윈도우즈 시스템 프로그래밍은 쉽게 말해서 윈도우 운영체제의 특성을 활용하여 프로그래밍을 하는 것을 의미한다. 그렇기 때문에 운영체제의 종속적인 개념이 강하다고 하셨다. 시스템 프로그래밍을 배우기 앞서 컴퓨터 구조와 운영체제의 개념이 수반되어야한다는 것을 강조하셨다. 시스템이란 하드웨어 뿐 아니라 운영체제를 포함한 개념이라는 것은 강조하셨다. 각각의 분야에서 중점으로 다루게될 내용들을 정리해놓은 자료이고, 자세한 부분..