본문 바로가기

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

Chapter 13. 쓰레드 동기화 기법1 - 임계 영역 접근 동기화 13.1 쓰레드 동기화란 무엇인가 Prologue) 13장 outline 1. 둘 이상의 쓰레드가 같은 메모리를 접근하는 코드 블럭을 임계 영역이라 함. 그래서 한 순간에 하나의 쓰레드만 임계 영역에 진입할 수 있도록 동기화가 필요함. 2. 이때의 동기화를 정확하게는 메모리 접근 동기화라 함. 또한 메모리 접근 동기화에는 유저 모드 메모리 접근 동기화와 커널 모드 메모리 접근 동기화가 있음. 3. 유저모드를 통한 메모리 접근 동기화: 커널 모드의 도움을 받지 않고 유저가 만든 라이브러리를 통해 메모리 접근 동기화->속도가빠름. 기능은 적음 커널 모드를 통한 메모리 접근 동기화: 커널 레벨에서 직접 제공해주는 기능으로 메모리 접근 동기화하는 기법->속도는느림. 기능은많음. 기능이 많다? 하나의 프로세스 내.. 2022. 2. 9.
Chapter 12. 쓰레드의 생성과 소멸 12.1 Windows에서의 쓰레드 생성과 소멸 12.1-1 쓰레드의 생성 Note) CreateThread() 함수 - lpThreadAttributes: 부모 쓰레드에서 자식 쓰레드에게 핸들 테이블을 상속할지 여부. 즉, 쓰레드도 별도의 자식 쓰레드를 생성할 수 있음. - dwStackSize: 독립적인 스택의 크기를 결정 - lpStartAddress: 함수 포인터. 흔히 쓰레드 메인함수라 부름. - lpParameter: OS가 쓰레드 메인 함수 호출 시 우리 대신 전달해줄 인자값. - dwCreationFlags: 쓰레드 생성 직후, suspend 상태로 둘지 Blocked 상태로 둘지 결정. 메모리 매니지먼트와 관련해서 아주 중요한 매개변수가 됨. 지금은 안씀. - lpThreadId: 이 매.. 2022. 2. 8.
Chapter 11. 쓰레드의 이해 11.1 쓰레드란 무엇인가 Prologue) 11장에서는 쓰레드를 배워 볼 예정. 다만, 프로세스의 내용을 되짚어보면서 쓰레드가 무엇인지 비교해보고 왜 쓰레드가 필요한지를 생각해 보아야 함. 11.1-1 프로세스 Vs. 쓰레드 Note) 멀티 프로세스가 필요한 경우 OS 관점에서는 멀티 프로세스가 필요함. 둘 이상의 프로그램을 실행하기 위해서임. 근데, 지금까지는 대부분 하나의 프로그램 == 하나의 프로세스 즉, 하나의 프로그램은 하나의 코드 실행 흐름을 가짐. 앞으로 개발하다 보면 하나의 프로그램 안에서 둘 이상의 실행 흐름이 필요한 경우가 생기게 됨. ex. 2인 전투 테트리스. 하나의 프로그램에 두 개의 실행 흐름이 생김. 게임을 켰을때 대기방에선 혼자하다가 공방에선 프로세스를 하나 더 생성해서 멀.. 2022. 2. 6.
Chapter 10. 컴퓨터 구조에 대한 세 번째 이야기 10.1 절차적 함수 호출(Procedure Call) 지원 CPU 모델 Prologue) 10장은 결국 CPU가 어떻게 함수호출을 처리해 주는가를 배움. 함수 호출 시 필요한 작업으로는 1. 인자 전달 2. 지역 변수 처리 3. 실행의 이동 10.1-1 스택 프레임(Stack Frame)이란? Def) 스택 프레임 임의의 함수 내에서 선언된 메모리 공간. 근데 우리가 궁금한건, 어떻게 스택 프레임이 겹쳐지지도 않고 붕 뜨지도 않고 차곡차곡 예쁘게 쌓아올라갈 수 있을까? Note) 스택 프레임이 어떻게 다음 위치를 잘 지정할까? 누군가가 어디까지 메모리 공간을 할당했는지 기억하고 있어야 함. 이게 바로 SP 레지스터임. 10.1-2 SP 레지스터 Note) SP 레지스터는 스택 프레임의 바닥을 가리킴 그.. 2022. 2. 5.