일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- API
- Call-by-reference
- c++
- function
- 투자
- Sort
- CLASS
- query
- request
- System
- C
- WebProgramming
- JavaScript
- windows
- beans
- java
- Kafka
- OOP
- HTML
- jsp
- UTF-8
- 윈도우즈
- array
- 포인터
- CSS
- 자료구조
- 노드
- algorithm
- 악성코드
- meta
- Today
- Total
목록Windows Programming/Windows::System (12)
hahahia
/* thread.c made by hahahia */ #include #include #include DWORD WINAPI print2(LPVOID lpParams){ while(1) { printf("Thread2"); Sleep(800); } } DWORD WINAPI print1(LPVOID lpParam) { while(1) { printf("Thread1"); Sleep(500); } } int main() { int a; CreateThread(NULL, 0, print1, NULL, 0 , NULL); CreateThread(NULL, 0, print2, NULL, 0, NULL); while(1) { scanf("%d", &a); printf("%d\n", a); } }
GetCurrentProcess 함수를 잠깐 봅시다 HANDLE GetCurrentProcess(VOID); - 현재 실행되고 있는 프로세스의 핸들을 얻을 때 사용하는 함수입니다. 커널 오브젝트와 핸들의 종속 관계 - 커널 오브젝트는 Windows 운영체제에 종속적입니다 여기서 잠깐 비유(?)를 통해 종속 관계를 표현해보겠습니다 책 - 커널 오브젝트, 고객 - 프로세스, 도서 대여점 - 운영체제 - 커널 오브젝트는 프로세스에 종속적인 것이 아니라, 운영체제에 종속적인 관계로 커널 오브젝트의 소멸지점은 운영체제에 의해 결정된다. -> 풀이를 해보자면 책은 고객이 마음대로 할 수 없는 것이고, 도서 대여점에서 관리를 합니다. 그리고 책을 폐기처분은 도서 대여점에서 합니다. - 커널 오브젝트는 프로세스에 종속..
커널(Kernel) - 컴퓨터를 운영하는 데 있어서 중심이 되는 운영체제 핵심부분 커널 오브젝트(Kernel Object) - 커널에서 관리하는 중요한 정보를 담아둔 데이터 블록 프로세스를 예를 들자면 프로세스를 생성하는 실질적인 주체는 프로그래머가 아니라 운영체제라고 해야 정확한 것이다. 이렇게 운영체제가 프로세스를 관리하기 위해서는 프로세스에 관련된 정보들을 저장해야 한다. 그 과정에서 구조체를 하나 정의를 하는데 이 구조체가 바로 커널 오브젝트입니다. - 커널 오브젝트에 대한 도식화(프로세스) - Windows 운영체제는 프로세스, 쓰레드 혹은 파일과 같은 리소스(Resource)들을 원활히 관리하기 위해 필요한 정보를 저장해야 한다. 이 때 데이터를 저장한는 메모리 블록을 가리켜 커널 오브젝트라 ..
- 부모 프로세스에서 받은 두개의 인자를 자식 프로세스에서 받아 두 개의 합을 출력하는 프로그램입니다.... /* Process.cpp */ // 자식 프로세스 #include #include #include int _tmain(int argc, TCHAR* argv[]) { DWORD val1, val2; val1 = _ttoi(argv[1]); val2 = _ttoi(argv[2]); _tprintf(_T("%d + %d = %d\n"), val1, val2, val1+val2); _gettchar(); // 프로그램의 실행을 잠시 멈추기 위해 return 0; } /* CreateProcess.cpp */ // 부모 프로세스(자식 프로세스를 생성) #include #include #include #..
/* WinSysDir.cpp */ #include #include #include #define DIR_LEN MAX_PATH+1 int _tmain(int argc, TCHAR** argv) { TCHAR sysDir[DIR_LEN]; TCHAR winDir[DIR_LEN]; GetSystemDirectory(sysDir, DIR_LEN); // 시스템 디렉터리 정보 추출 GetWindowsDirectory(winDir, DIR_LEN); // 윈도우즈 디렉터리 정보 추출 _tprintf(_T("System Dir : %s\n"), sysDir); _tprintf(_T("Windows Dir : %s\n"), winDir); return 0; }
Process A ---------------> Process B (부모 프로세스) CreateProcess에 의한 생성 (자식 프로세스) CreateProcess의 구조 Reference : http://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx BOOL CreateProcess ( LPCTSTR lpApplicationName, // 생성될 프로세스의 이름 LPTSTR lpCommandLine, // 생성될 프로세스에 인자 전달(변수만 가능) LPSECURITY_ATTRIBUTES lpProcessAttributes, // 프로세스의 보안 속성 지정 LPSECURITY_ATTRIBUTES lpThreadAttributes, // 쓰레드의 보안 속성..
프로세스란? - 실행 중에 있는 프로그램을 의미함.(메인 메모리로 이동하여) 프로세스를 구성하는 요소 - 메모리 구조 + Register Set 프로세스의 스케줄링(Scheduling) - 프로세스의 CPU 할당 순서 및 방법을 결정짓는 일 - 이 때 사용되는 알고리즘을 스케줄링 알고리즘(Scheduling Algorithms)이라 한다. 스케쥴러 - 스케줄링 알고리즘을 적용해 실제로 프로세스를 관리하는 운영체제 요소(모듈) 프로세스의 상태 변화 - 멀티 프로세스 운영체제에서는 프로세스 하나가 계속해서 실행되는 것이 아니고, 여러 개의 프로세스들이 돌아가면서 실행되기 때문에, 프로세스 각각의 상태는 시간 흐름에 따라 변화한다. 1. S(Start) -> Ready 상태로의 전이 - 프로세스가 생성이 되면..
/* CommandPrmpt_One.cpp */ #include #include #include #include #include #include #define STR_LEN 256 #define CMD_TOKEN_NUM 10 TCHAR ERROR_CMD[] = _T("'%s'은(는) 실행할 수 있는 프로그램이 아닙니다. \n"); int CmdProcessing(); TCHAR * StrLower(TCHAR *); int _tmain(int agrc, TCHAR * argv[]) { // 한글 입력 가능하게끔 _tsetlocale(LC_ALL, _T("Korean")); DWORD isExit; while(1) { isExit = CmdProcessing(); if(isExit == TRUE) { _fp..