[Windows System Programming] 뇌를 자극하는 윈도우즈 시스템 프로그래밍 목차
·
내가 공부한 것들/Windows 시스템 프로그래밍
[공부할 때 사용한 책과 강의] 개인 공부용으로 정리했던 내용들을 따로 찾아보기 쉽게 목차용 글로 정리를 했습니다. 그리고 위에 있는 책 표지 그림이 제가 공부하면서 사용한 책입니다. 몽키로 머리를 찍어서 통째로 넣어준다는 것인가 책은 여러분들이 자주 쓰시는 인터넷 서점에서 구매하시면 됩니다. 저는 알라딘을 주로 이용하다보니 알라딘 링크를 올렸습니다. 책 링크 뇌를 자극하는 윈도우즈 시스템 프로그래밍 거의 모든 개발자가 궁금해 하면서도 또한 상당히 어려워하는 컴퓨터 구조, 운영체제, 시스템 프로그래밍의 내용 중 꼭 필요한 부분만 간추려서 담았다. 컴퓨터 구조와 운영체제에 대한 이야기 www.aladin.co.kr 강의는 인프런에서 무료로 제공하고 있으며 유튜브에서도 볼 수 있습니다. 둘 다 무료니까 부담..
[Windows System Programming] Dynamic Linking Library
·
내가 공부한 것들/Windows 시스템 프로그래밍
'뇌를 자극하는 윈도우즈 시스템 프로그래밍'의 마지막 장입니다. DLL은 아마 게임을 하면서도, 프로그래밍을 하면서도 종종 보셨을 놈입니다. '~~.dll이 없습니다'라는 오류문구를 보면 짜증도 나고 그랬던 기억이 있으실겁니다. 오늘 이 DLL이라는 놈을 다뤄볼까 합니다. [라이브러리와 printf] DLL에 대한 내용을 다루기에 앞서서 질문을 하나 하고 가려고 합니다. 책에서도 똑같이 질문을 했었는데, 저도 못맞췄습니다. 크게 걱정하실건 없습니다. 이번 글에서 다 정리를 하고 넘어갈 부분입니다. [질문] 우선 예제 코드를 보면서 이야기를 해보겠습니다. // Hello.c #include int main(int argc, char* argv[]) { printf("Hello, World!\n"); ret..
[Windows System Programming] 메모리 관리(Virtual Memory, Heap, MMF)
·
내가 공부한 것들/Windows 시스템 프로그래밍
이제 여기까지 왔다면 사실상 책의 최종장에 들어섰다 해도 과언이 아닙니다. 이번 글에서는 가상 메모리를 관리하는 방법에 대해서 다루게 됩니다. [공부했던 것을 되짚어보며] 이전 글에서는 꽤 어려운 개념인 비동기 I/O에 대해서 공부를 했었죠. 아마 한 번에 이해가 되기에는 어려운 개념인지라 여러 번 보면서 천천히 내용을 정리하시는 것이 좋습니다. 앞에서도 말했지만 이번에는 가상 메모리를 관리하는 방법에 대해 다루게 됩니다. https://sevenshards.tistory.com/68 [Windows System Programming] 컴퓨터 구조 - (4) 이제 책의 마지막 챕터까지 오게 되었습니다. 이번 글에서는 컴퓨터 구조에 대한 마지막 이야기를 다루게 됩니다. 그리고 앞으로 작성하게 되는 글은 메..
[Windows System Programming] 비동기 I/O와 APC
·
내가 공부한 것들/Windows 시스템 프로그래밍
[공부했던 것을 되짚어보며] https://sevenshards.tistory.com/71 [Windows System Programming] 구조적 예외처리(SEH) 기법 [공부했던 것을 되짚어보며] 이전 내용에서는 컴퓨터 구조에 대한 마지막 내용을 다뤘었습니다. 가상 메모리와 관련된 내용이 주를 이뤘었는데, 이번 글에서는 다루지 않습니다. 이번 글에서는 sevenshards.tistory.com https://sevenshards.tistory.com/73 [Windows System Programming] 파일 I/O와 디렉터리 컨트롤 [공부했던 것을 되짚어보며] 이전 글에서도 언급을 했었지만 이번 내용 역시 참고의 성격이 강합니다. 달리 말하면 부담갖지 말고 편하게 보면 될 내용들입니다. 책을 통..
[Windows System Programming] 파일 I/O와 디렉터리 컨트롤
·
내가 공부한 것들/Windows 시스템 프로그래밍
[공부했던 것을 되짚어보며] 이전 글에서도 언급을 했었지만 이번 내용 역시 참고의 성격이 강합니다. 달리 말하면 부담갖지 말고 편하게 보면 될 내용들입니다. 책을 통해서 가볍게 보고 넘어가도 되고, 이 글에서 예시로 보여드리는 코드를 통해서 간단하게 이해만 하면 됩니다. 책의 저자분도 그랬듯이 저도 '이런 사용법이 있다' 정도로 설명하고 넘어갈 겁니다. 그리고 IPC에서 메일슬롯과 파이프를 다루면서 간략하게나마 파일 입출력에 대한 내용을 다뤘습니다. 그래서 함수에 대한 설명도 일일이 하지 않고, MS의 공식 문서를 링크로 대체하려고 합니다. [ANSI 표준 파일 입출력 함수] 본 주제로 들어가기에 앞서서 이 주제는 C언어를 배우면서 파일 입출력에 대해 알고 있다는 전제하에 작성됩니다. ANSI 표준 파일..
[Windows System Programming] 구조적 예외처리(SEH) 기법
·
내가 공부한 것들/Windows 시스템 프로그래밍
[공부했던 것을 되짚어보며] 이전 내용에서는 컴퓨터 구조에 대한 마지막 내용을 다뤘었습니다. 가상 메모리와 관련된 내용이 주를 이뤘었는데, 이번 글에서는 다루지 않습니다. 이번 글에서는 예외 상황과 그에 대한 처리를 다루게 됩니다. 그리고 다음 글은 파일의 I/O와 디렉터리를 제어하는 내용을 다룰 것입니다. 이 두 내용은 참고 사항 정도의 내용이므로 완벽하게 기억하실 필요는 없다고 생각합니다. 사용해야 한다면 필요할 때 찾아보시는 정도로 참고를 하면 됩니다. "Windows에서는 이런 기능을 제공하고 있다"로 이해하고 넘어가시길 바랍니다. [SEH(Structured Exception Handling)] 아마 C++이나 JAVA를 배우면서 try-catch, throw에 대한 문법을 배우신 적이 있을 겁..
[Windows System Programming] 컴퓨터 구조 - (4)
·
내가 공부한 것들/Windows 시스템 프로그래밍
이제 책의 마지막 챕터까지 오게 되었습니다. 이번 글에서는 컴퓨터 구조에 대한 마지막 이야기를 다루게 됩니다. 그리고 앞으로 작성하게 되는 글은 메모리 관리와 I/O(입출력) 등에 대해 다룰 예정입니다. [공부했던 것을 되짚어보며] 어느덧 책의 마지막 챕터까지 오면서 다뤘던 내용들에 대해서 되짚어볼까 합니다. 항상 매 챕터마다 처음에는 컴퓨터 구조와 운영체제에 관련된 이야기로 시작을 했었습니다. 그리고 챕터 별로 항상 굵직하게 다루는 주제들이 따로 있었고요. 첫 번째 챕터에서는 컴퓨터 구조 중에서도 컴퓨터의 주요 구성 요소는 무엇인가에 대해서 다뤘었습니다. 그리고 아스키 코드와 유니코드의 차이, 32bit와 64bit 환경에서의 프로그래밍 방법에 대한 공부를 했습니다. 두 번째 챕터에서부터 좀 어렵지만 ..
[Windows System Programming] 쓰레드 풀링(Pooling)
·
내가 공부한 것들/Windows 시스템 프로그래밍
[공부했던 것을 되짚어보며] 지금까지 쓰레드에 대한 것과 동기화에 대한 개념들을 쭉 공부해왔습니다. 쓰레드가 무엇인지, 쓰레드를 만들고 소멸시키는 것부터 동기화가 왜 필요한지에 대해서 알게 되었고요. 이제 이 쓰레드를 어떻게 활용할 수 있을까를 고민하게 되었습니다. 멀티 쓰레드 프로그래밍을 써먹을 수 있는 것은 알겠는데, 이걸 어디에 쓸까. 책에서는 "쓰레드 풀"이라는 것을 통해 지금까지 배웠던 내용을 한 번 정리할 기회를 갖게 되었습니다. 저도 이걸 따라 구현하면서 아직도 이해가 잘 안되는 부분들이 많습니다. 이번 글에서는 많이 미숙한 부분이 보일 것입니다. 그 부분에 있어서 양해 부탁드립니다. [쓰레드 풀에 대한 이해] 우선 "쓰레드 풀"이라는 개념에 대해서 좀 이해를 하고 넘어갈까 합니다. 이게 도..
[Windows System Programming] 쓰레드 동기화 기법 - (2)
·
내가 공부한 것들/Windows 시스템 프로그래밍
[공부했던 것을 되짚어보며] https://sevenshards.tistory.com/62 [Windows System Programming] 쓰레드 동기화 기법 - (1) [공부했던 것을 되짚어보며] 이전에 공부했던 내용은 쓰레드의 생성과 소멸과 관련해서 공부를 했었습니다. 그리고 여기서 동시접근에 대한 문제점도 다뤘었습니다. 실제로 strtok과 같은 ANSI C sevenshards.tistory.com 이전 글에서 다뤘던 내용은 임계 영역에 대한 개념을 이해하고 이에 대한 동기화 방법에 대한 것이었습니다. '메모리 접근에 대한 동기화'를 다뤘었고, 이번 글에서는 '쓰레드의 실행순서'를 위주로 다루고자 합니다. [실행순서에 있어서의 동기화] "쓰레드의 실행순서를 동기화한다"는 말은 정확하게 표현하면..
[Windows System Programming] 쓰레드 동기화 기법 - (1)
·
내가 공부한 것들/Windows 시스템 프로그래밍
[공부했던 것을 되짚어보며] 이전에 공부했던 내용은 쓰레드의 생성과 소멸과 관련해서 공부를 했었습니다. 그리고 여기서 동시접근에 대한 문제점도 다뤘었습니다. 실제로 strtok과 같은 ANSI C 라이브러리 함수를 사용할 때에는 동시 참조의 위험성이 있다고 했습니다. 멀티 쓰레드 기반 프로그램에서 쓰레드에서 strtok을 사용하면 다른 쓰레드에서도 내부 정적 변수에 접근이 가능해집니다. 다른 쓰레드에서 이 함수를 호출할 때에는 정적 변수를 덮어쓰는 문제가 생기죠. 그래서 앞으로는 CreateThread가 아닌 ANSI 표준 라이브러리를 이용한 _beginthreadex 함수를 사용하기로 했습니다. 이 함수는 CretateThread와 같이 단순하게 쓰레드만 생성하지 않습니다. 쓰레드를 생성하기 앞서서 쓰..
sevenshards
'Windows시스템프로그래밍' 태그의 글 목록