[스터디] 시스템 프로그래밍 - Chapter 12. 쓰레드의 생성과 소멸
·
독서/뇌를 자극하는 윈도우즈 시스템 프로그래밍
뇌를 자극하는 윈도우즈 시스템 프로그래밍(저자, 윤성우) 01. Windows에서의 쓰레드 생성과 소멸 01. A. 쓰레드의 생성 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); 매개변수 명 설명 lpThreadAttributes CreateProcess 함수의 매개변수에도 동일하게 등장한다. 해당 함수에서도 CreateProcess 함수에서의 역할과 동일하게 핸들의 상속 여부를 결정한다. NULL일 경우, 생성되는 핸들은..
[스터디] 시스템 프로그래밍 - Chapter 11. 쓰레드의 이해
·
독서/뇌를 자극하는 윈도우즈 시스템 프로그래밍
뇌를 자극하는 윈도우즈 시스템 프로그래밍(저자, 윤성우) 01. 쓰레드란 무엇인가? 두 개 이상의 일을 동시에 처리하기 위해서 추가적으로 프로세스를 생성하는 것은 막대한 컨텍스트 스위칭Context Switching으로 이어져 성능에 영향을 미치기 때문에 부담스러운 일이다. ▶ 다시, 컨텍스트 스위칭 : 컨텍스트 스위칭Context Switching은 프로세스의 상태 정보를 복원하고 저장하는 과정이다. 호출 횟수는 상황과 시스템에 따라서 변동이 있으나, 초당 수십 회 이상 발생하므로 성능 저하의 원인이 된다. 그렇다면, 컨텍스트 정보의 개수를 줄이는 방법으로 성능 저하를 어느 정도 해결할 수 있다. 컨텍스트 정보는 프로세스의 상태 정보와 관련이 있으므로, 결국 프로세스 상태 정보를 줄여야 한다는 것이다...
[스터디] 시스템 프로그래밍 - Chapter 10. 컴퓨터 구조에 대한 세 번째 이야기
·
독서/뇌를 자극하는 윈도우즈 시스템 프로그래밍
뇌를 자극하는 윈도우즈 시스템 프로그래밍(저자, 윤성우) 01. 절차적 함수 호출Procedure Call 지원 CPU 모델 함수 호출은 소프트웨어에서 제공되는 기능으로 이해하는 경향이 강하나, 하드웨어 종속적인 부분이 상당수 존재한다. 함수가 호출되는 방식은 CPU에 따라서 차이를 보인다. 01. A. 스택 프레임Stack Frame 구조 함수 호출 과정에서 할당되는 메모리 블록을 스택 프레임이라고 한다. 함수 호출의 완료 시에는 주소를 알고 있다고 하더라도 기존에 선언된 지역변수에 접근이 불가능하다. 할당되었던 메모리가 반환되었기 때문이다. 01. B. sp 레지스터 스택은 지역변수를 위한 메모리 공간이다. 이름의 유래는 메모리의 구조적 특성(Last In, First Out)에서 비롯됐다. 스택 프..
[스터디] 시스템 프로그래밍 - Chapter 9. 스케줄링 알고리즘과 우선순위
·
독서/뇌를 자극하는 윈도우즈 시스템 프로그래밍
뇌를 자극하는 윈도우즈 시스템 프로그래밍(저자, 윤성우) 01. 프로세스의 스케줄링 운영체제를 학습하기 위해서 먼저 RTOS(Real Time OS)와 여태 말한 운영체제(OS)의 차이에 대해서 살펴보자. RTOS와 OS의 차이는 응답성(응답속도)에 있다. 하지만 이 부분에서 간과하면 안되는 점이 있다. 일반 OS는 범용적인 사용을 위해서 디자인이 되어있다. 워드 작업을 하면서 영화를 볼 수 있고, 인터넷을 할 수 있다. 반면에 RTOS는 사용 영역이 제한적이다. 핸드폰에 들어가는 RTOS는 키 입, 출력이 없으면 하는 일이 거의 없다. 전력 소모를 줄이기 위해서 내부 프로세스의 전력 소모량을 최소화 시키기도 한다. 정리하면, RTOS는 무조건적으로 일반 OS에 비해서 속도가 빠른 것이 아니다. 사용되는..
[스터디] 시스템 프로그래밍 - Chapter 8. 프로세스간 통신(IPC) 2
·
독서/뇌를 자극하는 윈도우즈 시스템 프로그래밍
뇌를 자극하는 윈도우즈 시스템 프로그래밍(저자, 윤성우) 01. 핸들 테이블과 오브젝트 핸들의 상속 I believe that a competent Windows Programmer must understand how a process's handle table is managed 제프리 리처Jeffrey Richter는 본인의 저서 『Programming Application for Microsoft Windows』에 위와 같은 문구를 작성했다. 유능한 프로그래머는 핸들 테이블이 어떻게 관리되는지 이해하고 있어야만 한다는 뜻으로 해석할 수 있다. 이 대목에서 핸들 테이블의 중요성에 대해서 파악할 수 있다. 01. A. 프로세스의 커널 오브젝트 핸들 테이블 앞서 MailReceiver.cpp의 예제에서는..
[스터디] 시스템 프로그래밍 - Chapter 7. 프로세스간 통신(IPC) 1
·
독서/뇌를 자극하는 윈도우즈 시스템 프로그래밍
뇌를 자극하는 윈도우즈 시스템 프로그래밍(저자, 윤성우) 01. 프로세스간 통신(IPC)의 의미 Inter-Process Communication(IPC)는 프로세스 사이의 통신이라는 뜻을 가진다. 현실에서 우리가 소통을 위해서 사용하는 전화나 메신저, 소포와 같이 통신을 위한 수단들을 컴퓨터 속에서는 IPC라는 개념으로 생각하면 된다. 프로세스들은 서로 직접 만나서 데이터를 주고 받을 수 없다. 자기 자신에게 할당된 메모리 공간 이외에는 접근이 불가능하기 때문이다. 이는 프로세스끼리 서로의 영역에 침범하는 것을 방지하기 위해서인데, 서로 접근이 가능하다면 다른 프로세스에 원치 않은 일이 생겨날 수 있기 때문이다. 기본적으로 오늘 날의 운영체제는 프로세스가 본인에게 할당된 메모리 공간 영역에서만 활동할 ..