본문 바로가기

C/[서적] 뇌를 자극하는 윈도우즈 시프21

Chapter 21. Dynamic Linking Library 21.1-1 C Runtime Library 설정 Note) 이 장에서는 DLL이 메모리 상에서 어떤 의미를 지니는지만 알아 볼 예정. C언어 개발시에 printf() 함수와 같은 것들도 결국 Library에 의해 제공 받음. 테스트 할때는 (debug)가 달린 걸로 테스트하면 되고, 개발 완료 후 배포할 때는 안 달린 걸로 빌드하면 됨. Note) VS 6.0 버전 이후부터 Multi-threaded debug library로 설정됨. 21.1-2 Static Library Vs. Dynamic Linking Library Note) 정적 라이브러리의 경우에는, 실행 파일안에 정적 라이브러리가 그대로 무겁게 통째로 들어감. 즉, 똑같은 정적 라이브러리임에도 불구하고 세 개의 실행 파일안에 각각 들어가 .. 2022. 2. 14.
Chapter 20. 메모리 관리(Virtual Memory, Heap, MMF) 20.1 가상 메모리 컨트롤(Virtual Memory Control) Prologue) 코드 상으로 구현하는 능력보다는, 세 가지(Virtual Memory, Heap, MMF)가 갖는 의미, 왜 하는가, 장점이 뭔가를 이해 해야함. 그래서 적재적소에 쓸 수 있어야 함. 16장의 내용이 기본적으로 필요함. 20.1-1 가상 메모리의 Commit, Free와 물리 메모리의 관계 Note) CPU나 프로그래머나 메모리를 바라보는 관점은 4G가 모두 있다고 믿음. 즉, "가상 메모리"를 바라보고 있는것. 실제 메모리는 이보다 적게 별도로 존재함. 이 가상 메모리를 컨트롤 한다는게 어떤 의미를 지니는지 살펴보자 Note) 가상 메모리의 세 가지 페이지 상태 - 가상 메모리는 페이지 단위로 나뉘어짐. 페이지의 .. 2022. 2. 14.
Chapter 19. 비동기 I/O와 APC 19.1 비동기 IO(Asynchronous IO) Prologue) 비동기 IO지만, 크게보면 파일 IO도 포함하는 내용. 19.1-1 IO와 CPU 클럭의 관계 Note) CPU 클럭이 높아지면 성능도 따라서 올라간다는 걸 전제로 함. IO도 CPU 클럭이 높아지면 성능이 높아지긴 하나, 긴밀한 관계를 갖고 있진않음. 대신 버스 클럭에는 의존도가 높음. Note) 두 개의 시스템이 있다고 가정해 보자. A 시스템과 B 시스템. 두 시스템은 생성한 데이터를 가공해서, 목적지로 보냄. A 시스템은 100 클럭[?], B 시스템은 200 클럭임. 그럼 B 시스템이 IO처리가 더 빠를까? 아님. IO라는 것(File, network, console, ...)은 결국 Buffering이 필요함. 즉 Buffe.. 2022. 2. 14.
Chapter 18. 파일 I/O와 디렉터리 컨트롤 Note) ANSI에서는 파일 I/O에 대해 규격을 정해놓음. 그럼 그렇게 정의된 ANSI 표준 파일 I/O 함수를 쓰면 Windows, Linux, Unix, ...와 같은 플랫폼과 독립적으로 똑같은 과정으로 똑같은 결과물을 얻을 수 있음. 그럼 이걸 어떻게 구성했는지에 대해 알아보자. Note) 하드웨어에 Window를 설치할수도, Linux나 Unix를 설치할 수도 있음. 그리고 그 OS위에 APP이 실행됨. 파일을 하나 생성하고 저장했다고 해보자. 그럼 파일이 저장되는 방식은 File System에 의존적임. 파일을 어떻게 정의하고 어떻게 구성할 것이냐에 대한 것이 File System. 이는 OS의 중요한 일부. 어찌되었든, ANSI 이전에는 각 OS의 File System 함수들이 완성되어 있.. 2022. 2. 14.