시작은 미미하나 끝은 쥬쥬하리라.

Study 56

[Window System Programming] Chapter 09. 스케쥴링 알고리즘과 우선순위

2-9 스케쥴링 알고리즘과 우선순위 프로세스 스케쥴러 스케쥴링 알고리즘 프로세스 스케쥴러의 동작 시점 프로세스 스케쥴러 스케쥴러 일반 OS와 리얼타임 OS를 결정짓는 역할 -> 스케줄러의 동작 방식에 따라 일반 OS가 되기도, 리얼타임 OS가 되기도 함 리얼타임 OS : 실시간으로 동작을 처리하며 응답성이 좋은 OS -> A라는 프로그램을 리얼타임 OS와 일반 OS가 동시에 실행한 경우, 리얼타임 OS가 더 빠르게 처리 -> 최종적으로 동작 처리를 마무리하고 실행하는 것은 CPU 성능에 의존적(리얼타임 OS가 무조건적으로 빠르진 않음) 타임 슬라이스 프로세스는 클럭을 기준으로 동작하고, 이 클럭이 모여서 타임 슬라이스를 형성 -> 프로세스에게 할당된 러닝 시간의 기준을 의미 ex) 타임 슬라이스가 3클럭..

[Window System Programming] Chapter 08. 프로세스 환경변수 / 핸들 테이블 상속 / 파이프 방식 IPC

2-8 프로세스 환경변수 / 핸들 테이블 상속 / 파이프 방식 IPC 프로세스 환경변수 핸들 테이블 상속 파이프 방식 IPC 프로세스 환경변수 환경변수 하나의 데이터 블록, 프로세스가 자신의 정보를 넣어두었다가 사용하기 위한 용도 프로세스 별로 독립적인 메모리 공간이 할당, 저장은 key와 value 쌍으로 저장 프로세스의 환경변수 사용을 위해 SetEnvironmentVariable(), GetEnvironmentVariable() 함수가 필요 1. SetEnvironmentVariable() : 데이터를 저장하기 위함 -> key와 value를 인자로 전달 2. GetEnvironmentVariable() : 데이터를 반환 받기 위함 -> key값을 통해서 value 값의 포인터를 반환 프로세스 환경..

[Window System Programming] Chapter 07. 프로세스 간 통신(IPC)의 의미 / 메일 슬롯 방식 IPC / Signaled vs Non-Signaled

2-7 프로세스 간 통신(IPC)의 의미 / 메일 슬롯 방식 IPC / Signaled vs Non-Signaled 프로세스 간 통신(IPC)의 의미 메일 슬롯 방식 IPC Signaled vs Non-Signaled 프로세스 간 통신(IPC)의 의미 일반적인 통신 : 데이터의 송수신하는 방식 프로세스 간 통신 : 같은 메모리 영역을 공유하는 방식 ex) 프로세스 A의 데이터 영역에 프로세스 B가 접근이 가능한 경우 -> 프로그램 A가 프로그램 B에게 영향을 받을 수 있음 -> 이를 제한하고자 운영체제에서 프로세스의 공유 가능한 메모리 영역을 지정 -> 프로세스 A가 공유 메모리 영역에 데이터를 저장, 프로세스 B가 공유 메모리 영역에서 데이터를 로드하는 방식 IPC(Inner Process Commun..

[Window System Programming] Chapter 06. 커널 오브젝트에 대한 이해 / 핸들의 종속 관계

2-6 커널 오브젝트에 대한 이해 / 핸들의 종속 관계 커널 오브젝트에 대한 이해 핸들의 종속 관계 커널 오브젝트 커널 모든 OS가 가지고 있는 핵심에 해당하는 부분 -> Windows OS와 Linux가 번들로 제공하는 소프트웨어(커널)에는 차이가 있음 -> 이전에는 운영체제와 커널은 동의어 -> 지금에는 운영체제의 기능이 늘어나고 운영체제 별 기능의 차이가 생기면서 그 의미가 분리 -> 따라서 처음 운영체제에서 지금에 이르는 과정에서 변하지 않고 유지되고 있는 부분을 커널이라 함 커널 오브젝트 커널에 의해 관리되는 리소스 정보를 담고 있는 데이터 블록 리소스 : 운영체제에 의해 생성 및 소멸되는 것 -> 커널 오브젝트는 리소를 관리하기 위함 ex) 사용자가 파일을 하나 생성해서 해당 파일에 접근하려는..

[Window System Programming] Chapter 05. 프로세스와 스케쥴러 / 프로세스 생성

2-5 프로세스와 스케쥴러 / 프로세스 생성 프로세스와 스케쥴러 프로세스 생성 프로세스와 스케쥴러 프로세스 메인 메모리로 이동하여 실행 중인 프로그램 하드디스크에 있는 실행 파일을 실행시키는 순간에 메모리 공간이 할당되고 이 순간부터 프로그램은 프로세스 메모리 공간 메모리 공간 : 데이터 영역 + 스택 영역 + 힙 영역 + 코드 영역 -> 데이터 영역 : 전역 변수나 static 변수 할당을 위한 영역 -> 스택 영역 : 지역변수 할당과 함수 호출 시 인자 값 저장을 위한 영역 -> 힙 영역 : 동적 할당을 위한 영역 -> 코드 영역 : 프로그램 실행 시, 명령어들이 올라가는 영역 ex) RAM이 256MB인데 프로세스의 메모리 공간을 4GB 할당 받는 경우 -> 메모리 공간 전체가 RAM에 올라갈 수 ..

[Window System Programming] Chapter 04. 컴퓨터 구조와 접근 방법 / LOAD & STORE 명령어 / Direct & Indirect Mode

2-4 컴퓨터 구조와 접근 방법 / LOAD & STORE 명령어 / Direct & Indirect Mode 컴퓨터 구조와 접근 방법 LOAD & STORE 명령어 Direct & Indirect Mode 컴퓨터 구조와 접근 방법 CPU 디자인 프로그래머 관점 CPU 디자인 : 명령어(컴파일러를 통해 만들어지는 명령어 집합) + 레지스터 디자인 -> 아래부터 간단한 레지스터 디자인을 진행 레지스터 중심 CPU 디자인 예시 1. 고려사항 : 레지스터의 비트수(N비트 시스템에서는 레지스터 역시 N비트로 구성), 레지스터의 개수, 레지스터의 저장 용도(범용 RAM, 하드디스크와 차별되는 부분, 용도를 정하면 명령어가 단순해지고 연산 속도 향상, 필수는 아님) 2. 레지스터 디자인 : 16비트, 레지스터 8개..

[Window System Programming] Chapter 03. 64비트 기반 프로그래밍

1-3 64비트 기반 프로그래밍 WIN32 vs WIN64 프로그램 구현 관점에서의 WIN32, WIN64 WIN32 vs WIN64 32비트와 64비트의 차이 한 번에 송수신 가능한 데이터의 크기, 데이터의 처리 능력 즉, 버스 시스템의 능력과 CPU의 차이가 주요 ex) 32비트 시스템에서는 32비트 명령어를 한 번에 fetch(명령어 이동) 한다고 하면 64비트 시스템에서는 64비트 명령어를 한번에 fetch 하면서 한 번에 fetch 할 수 있는 데이터의 크기가 증가 -> 같은 시간에 32비트 명렁어를 64비트는 2번 fetch 할 수 있다고 생각할 수 있으나, 보통 64비트 시스템에서는 64비트 명령어 길이를 사용하는 것이 일반적 하드웨어 관점에서 WIN32 vs WIN64 버스 인터페이스가 한..

[Window System Programming] Chapter 02. 아스키 코드 VS 유니코드

1-2 아스키 코드 VS 유니코드 윈도우에서 유니코드 MBCS와 WBCS의 동시지원 윈도우에서 유니코드 Window OS 문자셋 SBCS, MBCS, WBCS 3가지 지원 SBCS(Single Byte Character Set) 문자 표현에 1Byte 사용 ASCII 코드 MBCS(Multi Byte Character Set) 한글은 2Byte, 영문은 1Byte 사용 WBCS(Wide Byte Character Set) 문자 표현에 2Byte 사용 UNICODE -> 과거 한글 등 다양한 문자의 표현을 위해 ASCII 코드(SBCS)에서 MBCS로 이동 -> 현재는 WBCS(UNICODE)로 옮겨가는 과정 -> WBCS는 문자 표현에 2Byte를 사용함에도 옮기는 기술의 발전에 따라 문자열의 크기가 부..

[Window System Programming] Chapter 01. 시스템 프로그래밍의 이해와 접근 / 컴퓨터 하드웨어의 구성 / CPU에 대한 이해

1-1 시스템 프로그래밍의 이해와 접근 / 컴퓨터 하드웨어의 구성 / CPU에 대한 이해 시스템 프로그래밍의 이해 / 하드웨어와 CPU의 이해 프로그램 실행 과정 / 하드웨어 구성의 재접근 시스템 프로그래밍의 이해 / 하드웨어와 CPU의 이해 System 하드웨어 + 운영체제로 구성 시스템 프로그래밍 운영체제의 기능을 활용하는 프로그래밍 모든 응용 소프트웨어 개발에 들어가는 요소 윈도우 시스템 프로그래밍 : Window OS를 활용한 프로그래밍 시스템의 주요 구성 요소 컴퓨터 구조(하드웨어) + 운영체제 구조로 구성 컴퓨터 구조 : CPU + 캐쉬 운영체제 구조 : 메인 메모리 + 하드 디스크 하드웨어 구성 CPU + 메인 메모리 + 입출력 버스 + 하드 디스크 CPU : 연산 처리 메인 메모리 : 처리..

[effective C++] Chapter 03 : 17. new로 생성한 객체를 스마트 포인터에 저장하는 코드는 별도의 한 문장으로 만들자

17. new로 생성한 객체를 스마트 포인터에 저장하는 코드는 별도의 한 문장으로 만들자 new 객체와 스마트 포인터 이것만은 잊지 말자 ! new 객체와 스마트 포인터 처리 우선 순위를 알려주는 함수가 하나 있고, 동적으로 할당한 Widget 객체에 대해 어떤 우선 순위에 따라 처리를 적용하는 함수가 있다고 가정하자. 자원 관리는 동적 할당된 Widget 객체에 대해 shared_ptr을 사용하도록 만들어졌다고 하고 processWidget 함수를 호출한다. 하지만 위의 코드는 컴파일 되지 않는다. 이유는 shraed_ptr의 생성자는 explicit로 선언되어 있기 때문에 new Widget으로 Widget 형 포인터가 shared_ptr 형태로 바뀌는 암시적 변환이 불가능하기 때문이다. 위 함수에는..

Study/Effective C++ 2023.08.13