일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Stack
- vector
- map
- 라인트레이서
- html
- directx
- 수광 소자
- 컴퓨터 그래픽스
- C언어
- 아두이노 소스
- 시스템프로그래밍
- 통계학
- Arduino
- 아두이노 컴파일러
- set
- Algorithm
- list
- arduino compiler
- Array
- Deque
- 아두이노
- LineTracer
- Visual Micro
- WinAPI
- stl
- queue
- c++
- 자료구조
- Today
- Total
목록전체 글 (545)
Kim's Programming
커널 오브젝트와 Usage Count 커널 오브젝트는 프로세스가 아닌 운영체제에 종속적이면 커널 오브젝트의 소멸시기는 운영체제에 의해서 결정됩니다. 일반적으로 CreateProcess함수를 통해서 커널 오브젝트를 생성한다고 생각되기도 하지만 CreateProcess함수는 커널오브젝트를 생성하는 함수가 아니라 운영체제에 프로세스 생성을 요청하는 함수이며 이 요청과정에서 운영체제가 관리를 편하게 하기위해 커널 오브젝트를 생성하게 됩니다. CloseHandle 함수 어떤 프로세스가 생성되면 그 프로세스를 위한 커널 오브젝트가 생성됩니다. 이때 커널 오브젝트는 완전히 프로세스를 대표하게 됩니다. 하지만 그 반대는 성립하지 않습니다. 프로세스가 소멸된다해서 커널 오브젝트가 소멸되지는 않습니다. 그 이유는 커널 오..
하드웨어 예외와 소프트웨어 예외 구조적 예외는 하드웨어 예외(Hardware Exception)와 소프트웨어 예외(Software Exception)이 있습니다. 이중에서 하드웨어 예외는 하드웨어에서 인식하고 알려주는 예외를 의미합니다. 예를 들어서 div/0으로 나누는 것은 하드웨어 예외입니다. 다들 잘 모르고 있지만 0으로 나누는 연산은 CPU에서 연산오류입니다. 0으로 나누라는 연산 요청이 들어오면 문제가 있다는 신호를 신호를 운영체제에 전달합니다. 소프트웨어 예외는 프로그래머가 직접 정의할 수 있는 예외입니다. 만약 10이상의 숫자가 입력되었을 때는 예외처리하도록 하겠다. 라고 했으면 숫자 10이상을 예외시키는 것이 소프트웨어 예외입니다. 종료 핸들러(Termination Handler) SEH에..
이진 탐색 트리(Binary Search Tree) - 정의 이진 탐색 트리는 탐색 작업을 효율적으로 하기 위한 자료구조입니다. 다음의 정의들을 가지고 있습니다. 모든 원소는 서로 다른 유일한 키를 가짐왼쪽 서브트리에 있는 원소들의 값은 그 루트의 값보다 작음오른쪽 서브트리에 있는 원소의 값들은 그 루트의 값보다 큼왼쪽 서브트리와 오른쪽 서브트리도 이진 탐색 트리임 왼쪽 서브트리 값 루트노드의 키 값 인 경우 : 루트 노드의 오른쪽 서브 트리에 대해서 탐색이런식으로 서브트리로 넘어가서 순환적으로 탐색을 반복하게 됩니다. 다음의 11이란 값을 찾는 연산을 그림으로 나타내면 다음과 같습니다.11을 루트 노드의 키 값 8과 비교 -> 오른쪽으로 이동11과 10을 비교 -> 오른쪽으로 이동11과 14를 비교 -..
앞에서 이용했던 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등의 상태정보와 우선순위등은 항상 프로세스 내부에 저장되어야하며 항상 갱신되어야 합니다. 그래야만 스케줄러가 그에 맞게 프로세스를 운용할 수 있습니다. 이러한 정보들을 저장하기 위해 프로세스당 프로세스를 관리하기 위한 구조체..
프로세스의 생성 물론 프로세스 생성은 아무 파일이나 마우스로 집어다가 더블클릭하면 프로세스를 생성할 수 있습니다. 하지만 또 다른 방법으로도 프로세스를 생성할 수 있습니다. 프로그램실행중에 또 하나의 프로세스를 생성하는 것입니다. 윈도우즈에서는 프로세스를 만들기 위해서 CreateProcess함수를 제공합니다. CreateProcess함수를 호출하는 하는 프로세스를 부모프로세스(Parents Process)라고 하고 CreateProcess로 만들어진 프로세스를 자식프로세스(Child Process)라고 합니다. 생성하는 프로세스와 생성되는 프로세스는 부모 자식관계를 가지게 됩니다. CreateProcess은 다음과 같은 파라메터 들을 가지고 있습니다.123456789101112BOOL CreatePro..
일반화 프로그래밍 프로그램은 자료구조 포스팅 제일 앞에서 처럼 자료 구조와 알고리즘으로 구성 됩니다. 자료 구조란 처리하고자 하는 데이터를 표현 하는 방법이고, 알고리즘은 이 자료들을 가공하여 유용한 정보를 생산하는 기법입니다. 좋은 프로그램에서는 두가지가 모두 필요하며 한쪽이라도 부족하면 전체적인 질이 떨어지게 됩니다. 어떤 자료구조를 사용할 것인가는 프로그램의 특수한 상황에 따라 달라집니다. 대용량의 자료를 빠른 속도로 읽어야 한다면 배열을 이용하는 것이 적합하며 삽입, 삭제가 빈번하다면 연결 리스트가 유리합니다. 또한 자료관리하는 방법이 일정하다면 스택이나 큐같이 입출력 순서가 미리 정해져 있는 자료구조를 사용해야합니다. 각 자료 구조마다 고유한 특징과 장단점이 있기 때문에 모든 형태의 데이터에 다..