[스터디] 시스템 프로그래밍 - 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 동적 할당..
[스터디] 시스템 프로그래밍 - Chapter 4. 컴퓨터 구조에 대한 두 번째 이야기
·
독서/뇌를 자극하는 윈도우즈 시스템 프로그래밍
뇌를 자극하는 윈도우즈 시스템 프로그래밍(저자, 윤성우) 01. 컴퓨터 구조의 접근방법 컴퓨터 구조의 근본적인 이해는 쓰레드와 프로세스를 이해하는 것에 큰 도움이 된다. 컴퓨터를 구성하는 요소를 가지고 가상의 컴퓨터 모델을 디자인해보자. - 컴퓨터 디자인 CPU를 구성하는 기본적인 요소는 ALU, 컨트롤 유닛 그리고 레지스터다. ALU와 컨트롤 유닛은 이미 존재한다고 가정하고 레지스터만을 가지고 디자인해보자. - 레지스터 디자인 1. 레지스터를 몇 비트로 구성할 것인가? 2. 몇 개 정도로 레지스터를 구성할 것인가? 3. 레지스터 각각을 무슨 용도로 사용할 것인가? 위에 있는 3개의 요소는 레지스터 디자인의 핵심이다. 64비트 컴퓨터라면, 64비트 레지스터로 디자인을 해야겠지만 이는 초심자의 입장에서 부..