일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 수광 소자
- 운영체제
- Stack
- directx
- Deque
- 아두이노 컴파일러
- 라인트레이서
- queue
- 컴퓨터 그래픽스
- 아두이노
- Array
- 시스템프로그래밍
- Algorithm
- Arduino
- stl
- Visual Micro
- 아두이노 소스
- C언어
- vector
- arduino compiler
- LineTracer
- WinAPI
- 통계학
- priority_queue
- map
- html
- list
- set
- 자료구조
- c++
- Today
- Total
목록시스템프로그래밍 (9)
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바이트로 처리하는 문자셋이다..
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 : 읽기/쓰기 모드를 지정하..
커널 오브젝트(Kernel Object) 이전에 CreateProcess함수를 통해서 프로세스를 생성하였는데, 이를 정확히하면 함수를 이용하여 윈도우즈라는 운영체제에게 프로세스 를 만들어 달라고 요청한 것이고 윈도우즈는 그에 맞게 프로세스를 만들어 준것입니다. 또한 생성된 프로세스의 관리와 소멸, 생성 그리고 상태변화 까지도 모두 하게 됩니다. 이런식으로 여러개의 프로세스를 관리하자면 운영체제 입장에서 항상 기억하거나 갱신해야 할 정보가 생깁니다. 예를 들어 locked , Ready등의 상태정보와 우선순위등은 항상 프로세스 내부에 저장되어야하며 항상 갱신되어야 합니다. 그래야만 스케줄러가 그에 맞게 프로세스를 운용할 수 있습니다. 이러한 정보들을 저장하기 위해 프로세스당 프로세스를 관리하기 위한 구조체..