본문 바로가기

개인공부121

Chapter 21 - Asynchronous Notification IO 모델 21-1 : 비동기(Asynchronous) Notification IO 모델의 이해 send()와 recv() 함수는 동기(Synchronous)화된 입출력 함수 send() 함수가 호출되는 순간부터 데이터의 전송이 시작되고, send() 함수의 호출이 완료(반환)되는 순간 데이터의 전송이 완료됨 recv() 함수가 호출되는 순간부터 데이터의 수신이 시작되고, recv() 함수의 호출이 완료(반환)되는 순간 데이터의 수신이 완료됨 즉, 입출력 함수의 반환시점과 데이터 송수신의 완료시점이 일치 동기화된 입출력은 입출력이 진행되는 동안 호출된 함수가 반환을 하지 않는다는 단점이 존재함 따라서 보다 효율적으로 CPU를 활용하기 위해서는 비동기 방식을 사용해야함 동기와 비동기 개념은 입출력 뿐만 아니라 Not.. 2023. 2. 24.
Chapter 20 - Windows에서의 쓰레드 동기화 20-1 : 동기화 기법의 분류와 CRITICAL_SECTION 동기화 윈도우 운영체제의 연산방식을 이중모드 연산(Dual-mode Operation)이라고 부름 유저모드(User mode) : 응용 프로그램이 실행되는 기본모드, 물리적인 영역에의 접근이 허용되지 않으며 접근 가능한 메모리 영역에도 제한이 존재 커널모드(Kernel mode) : 운영체제가 실행될 때의 모드, 메모리 및 하드웨어의 접근에 제한이 없음 응용 프로그램 실행과정에서는 유저모드 및 커널모드가 수시로 전환됨 유저모드와 커널몯가 나누어져 잇는 것은 운영체제와 관련된 메모리 영역을 보호하기 위함 쓰레드와 같이 커널 오브젝트의 생성을 동반하는 리소스 생성은 유저모드 > 커널모드 > 유저모드의 변환 과정을 거침 단, 이 때 빈번한 모드 .. 2023. 2. 24.
Chapter 19 - Windows에서의 쓰레드 사용 Chapter 19 - Windows에서의 쓰레드 사용 19-1 : 커널 오브젝트(Kernel Objects) 윈도우 운영체제가 생성해서 관리하는 리소스(프로세스, 쓰레드, 파일, 세마포어, 뮤텍스 등)들은 관리를 목적으로 정보를 기록하기 위해 내부적으로 데이터 블록인 '커널 오브젝트'를 생성함 커널 오브젝트의 소유자는 커널(운영체제) 따라서 커널 오브젝트의 생성 / 관리 / 소멸은 모두 운영체제의 몫 19-2 : 윈도우 기반의 쓰레드 생성 main() 함수를 호출하는 주체는 쓰레드 현재는 운영체제 레벨에서 쓰레드를 지원 쓰레드를 별도로 생성하지 않는 프로그램을 단일 쓰레드 모델의 프로그램이라고 부름 쓰레드를 별도로 생성하는 프로그램은 멀티 쓰레드 모델의 프로그램이라고 부름 윈도우에서 쓰레.. 2023. 2. 24.
Chapter 18 - 멀티쓰레드 기반의 서버구현 Chapter 18 - 멀티쓰레드 기반의 서버구현 18-1 : 쓰레드의 이론적 이해 멀티프로세스 기반은 프로세스 생성자체에 큰 부하가있고, 프로세스 사이의 데이터 교환을 위해 별도의 IPC 기법을 적용해야한다는 단점이 존재함 무엇보다도 컨텍스트 스위칭(Context Switching)으로 인한 비효율이 크게 발생 따라서 이러한 단점을 극복하기 위해 쓰레드(Thread)가 등장 쓰레드의 생성 및 컨텍스트 스위칭은 프로세스보다 빠름 쓰레드 사이의 데이터 교환에는 특별한 기법이 필요하지 않음 프로세스는 데이터/힙/스택 영역을 각각 별도로 가짐 반면 쓰레드는 한 프로세스 내에서 스택 영역만을 독립적으로 유지함 18-2 : 쓰레드의 생성 및 실행 쓰레드는 별도의 실행흐름을 갖기 때문에 쓰레드만의 main() 함수.. 2023. 2. 24.