일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- priority_queue
- 통계학
- 시스템프로그래밍
- 아두이노
- LineTracer
- map
- 라인트레이서
- set
- 아두이노 소스
- arduino compiler
- 수광 소자
- C언어
- list
- queue
- Algorithm
- stl
- WinAPI
- Array
- 아두이노 컴파일러
- vector
- 컴퓨터 그래픽스
- html
- c++
- Arduino
- 자료구조
- directx
- 운영체제
- Deque
- Visual Micro
- Stack
- Today
- Total
목록Programming/System Programming (10)
Kim's Programming
프로세스의 생성 CreateProcess 함수 123456789101112BOOL CreateProcess( LPCSTR lpApplicationName, //1 LPSTR lpCommandLine, //2 LPSECURITY_ATTRIBUTES lpProcessAttributes, //3 LPSECURITY_ATTRIBUTES lpThreadAttributes, //4 BOOL bInheritHandles, //5 DWORD dwCreationFlags, //6 LPVOID lpEnvironment, //7 LPCSTR lpCurrentDirectory, //8 LPSTARTUPINFOA lpStartupInfo, //9 LPPROCESS_INFORMATION lpProcessInformation //..
1. Windows에서의 유니코드(UNICODE) 문자셋(Character Sets)의 종류와 특성 SBCS(Single Byte Character Set) -> Single Byte라는 이름이 의미하듯이 문자를 표현하는 데 있어서 1바이트만을 사용하는 방식이다. 아스키 코드가 이에 해당한다. MBCS(Multi Byte Character Set) -> Multi Byte라는 이름이 의미하듯이 문자를 표현하는 데 있어서 동일한 바이트 수를 적용하는 것이 아니라, 다양한 바이트 수를 사용해서 문자를 표현하는 방식이다. 어떤 문자는 1바티으로 표현하고 어떤 문자는 2바이트로 표현한다. WBCS(Wide Byte Character Set) ->유니코드가 이에 해당하고 모든 문자를 2바이트로 처리하는 문자셋이다..
IPC? IPC(Inter-Process Communication)은 프로세스간의 통신을 의미합니다. 이는 프포세스간에서 데이터를 주고 받는 것이라 할 수 있습니다. 하지만 프로세스는 일반적으로는 통신을 할 수 없습니다. 프로세스간에 메모리를 공유한다거나 한다면 데이터를 주고 받거나 할 수 있겠지만 각각의 프로세스는 그럴 수 없습니다. 왜냐하면 프로세스 각각은 자신에게 할당된 메모리 공간 이외에는 접근이 불가능하기 때문입니다. 다른 통신수단을 이용해야 합니다. 만약 두 프로세스가 자유롭게 만난다면 어떨까요? 두 프로세스 A,B가 돌아가고 있을때 A의 프로세스가 차지하고 있는 메모리를 B가 건들이게 되면 프로세스A의 저장되지 않은 메모리 위의 데이터는 B에 의해서 손상이 되게 되며 결과적으로는 데이터에 문..
12345678910111213141516171819202122232425262728293031#include#include#include#include int _tmain(int argv, TCHAR agrc[]){ DWORD Return = 0; STARTUPINFO si = { 0, }; PROCESS_INFORMATION pi; TCHAR CommandLine[30] = _T("notepad.exe"); si.cb = sizeof(si); si.dwFlags = STARTF_USEPOSITION | STARTF_USESIZE; si.dwX = 100; si.dwY = 200; si.dwXSize = 300; si.dwXSize = 200; si.lpTitle = _T("Process"); BOOL..
커널 오브젝트와 Usage Count 커널 오브젝트는 프로세스가 아닌 운영체제에 종속적이면 커널 오브젝트의 소멸시기는 운영체제에 의해서 결정됩니다. 일반적으로 CreateProcess함수를 통해서 커널 오브젝트를 생성한다고 생각되기도 하지만 CreateProcess함수는 커널오브젝트를 생성하는 함수가 아니라 운영체제에 프로세스 생성을 요청하는 함수이며 이 요청과정에서 운영체제가 관리를 편하게 하기위해 커널 오브젝트를 생성하게 됩니다. CloseHandle 함수 어떤 프로세스가 생성되면 그 프로세스를 위한 커널 오브젝트가 생성됩니다. 이때 커널 오브젝트는 완전히 프로세스를 대표하게 됩니다. 하지만 그 반대는 성립하지 않습니다. 프로세스가 소멸된다해서 커널 오브젝트가 소멸되지는 않습니다. 그 이유는 커널 오..
하드웨어 예외와 소프트웨어 예외 구조적 예외는 하드웨어 예외(Hardware Exception)와 소프트웨어 예외(Software Exception)이 있습니다. 이중에서 하드웨어 예외는 하드웨어에서 인식하고 알려주는 예외를 의미합니다. 예를 들어서 div/0으로 나누는 것은 하드웨어 예외입니다. 다들 잘 모르고 있지만 0으로 나누는 연산은 CPU에서 연산오류입니다. 0으로 나누라는 연산 요청이 들어오면 문제가 있다는 신호를 신호를 운영체제에 전달합니다. 소프트웨어 예외는 프로그래머가 직접 정의할 수 있는 예외입니다. 만약 10이상의 숫자가 입력되었을 때는 예외처리하도록 하겠다. 라고 했으면 숫자 10이상을 예외시키는 것이 소프트웨어 예외입니다. 종료 핸들러(Termination Handler) SEH에..
앞에서 이용했던 FILETIME 구조체 부터 알아보겠습니다 FILETIME 구조체의 구조는 다음과 같습니다. 1234typedef struct _FILETIME { DWORD dwLowDateTime; DWORD dwHighDateTime;} FILETIME, *PFILETIME, *LPFILETIME;cs위 구조체는 시간 정보를 나타내는 8바이트 자료형으로 UTC 기반의 시간을 표현하는 구조체입니다. UTC란 Coordinated Universal Time의 약자로 세계시간의 기준을 의해 정의된 시간입니다. 간단히 설명하면 현재 시간과 1601년 1월 1일 사이의 시간을 100나노초 단위로 환산한 값이 UTC입니다. 아무튼 이번엔 GetFileTime 함수를 이용한 파일 시간을 UTC값을 얻은 다음 보..
파일의 열기 그리고 닫기 파일을 열떄는 다음의 CreateFile 함수를 이용하게 됩니다. CreateFile 함수는 다음과 같습니다.123456789CreateFile( LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile );Colored by Color Scriptercs 각 파라메터와 그에 들어갈 값 몇개만 알아보겠습니다. lpFileName : 오픈할 파일의 이름을 지정 dwDesiredAccess : 읽기/쓰기 모드를 지정하..