[스터디] 시스템 프로그래밍 - 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라는 개념으로 생각하면 된다. 프로세스들은 서로 직접 만나서 데이터를 주고 받을 수 없다. 자기 자신에게 할당된 메모리 공간 이외에는 접근이 불가능하기 때문이다. 이는 프로세스끼리 서로의 영역에 침범하는 것을 방지하기 위해서인데, 서로 접근이 가능하다면 다른 프로세스에 원치 않은 일이 생겨날 수 있기 때문이다. 기본적으로 오늘 날의 운영체제는 프로세스가 본인에게 할당된 메모리 공간 영역에서만 활동할 ..
[스터디] 시스템 프로그래밍 - Chapter 6. 커널 오브젝트와 오브젝트 핸들
·
독서/뇌를 자극하는 윈도우즈 시스템 프로그래밍
뇌를 자극하는 윈도우즈 시스템 프로그래밍(저자, 윤성우) 01. 커널 오브젝트에 대한 이해 커널은 컴퓨터를 운영하는 데 있어서 중심이 되는 운영체제 핵심 부분을 뜻한다. 일반적으로 커널과 운영체제라는 용어들은 같은 의미로 사용되기 때문에 운영체제에서 커널이 차지하는 영역을 굳이 구분할 필요는 없다. 그러나 커널 오브젝트는 이와 달리, 고유 명사격으로 사용되기 때문에 운영체제 오브젝트라는 명칭은 나타날 수 없다. 커널 오브젝트는 커널에서 관리하는 중요한 정보들을 담아둔 데이터 블록을 가리킨다. 앞서 생성한 프로세스의 생성 주체는 Windows 운영체제다. 또, 생성된 프로세스를 관리하는 것도 운영체제의 몫이다. 관리의 범위는 프로세스 생성, 소멸, 그리고 사이에 일어나는 모든 일들이 포함된다. 이렇게 동시..
[스터디] 시스템 프로그래밍 - Chapter 5. 프로세스의 생성과 소멸
·
독서/뇌를 자극하는 윈도우즈 시스템 프로그래밍
뇌를 자극하는 윈도우즈 시스템 프로그래밍(저자, 윤성우) 01. 프로세스의 이해 오늘날의 운영체제를 가리켜서 '멀티 프로세스Multi-Process' 운영체제라고 한다. 이는 프로세스가 여러 개 존재하는 운영체제라는 뜻이다. 프로세스란 무엇일까. 프로세스는 실행 중에 있는 프로그램을 의미한다. 정확히는 메모리 공간으로 바이너리 코드가 올라간 순간부터를 프로세스라고 명한다. 01. A. 프로세스의 구성 요소 메모리 구조는 Data 영역, Stack 영역, Heap 영역, Code 영역으로 나뉘는데, 각자의 역할은 다음과 같다. 영역 명 설명 Data 전역 변수나 static 변수의 할당을 담당하는 영역이다. Stack 지역변수 할당과 함수 호출 시 전달되는 인자값들을 저장하는 영역이다. Heap 동적 할당..