- 시스템 메커니즘 05 - APC묭묭.cpp시스템 메커니즘 05 - APC비동기 프로시저 호출(APC) 인터럽트비동기 프로시저 호출(APC, Asynchronous Procedure Calls)유저 프로그램과 시스템 코드가 특정 유저 스레드 컨텍스트에서 실행되게 해줌즉, 특정 프로세스 주소 공간 내에서 실행됨스레드 스케줄링 규칙에 종속되고 DPC와 동일한 환경에서 동작하지 않음즉, DISPATCH_LEVEL에서 동작하지 않음높은 우선순위 스레드에게 선점될 수 있음블로킹 대기가 가능페이징 메모리 액세스 가능APC_LEVEL(1) IRQL에서 동작일종의 소프트웨어 인터럽트APC 큐APC는 APC 객체라는 커널 컨트롤 객체에 의해 기술됨APC는 커널이 관리하는 2개 중 하나의 APC 큐에 머뭄APC 큐는 스레드 별 존재커널 APC 큐와 유저 APC 큐..
- 2024-10-23 12:09:17
- 시스템 메커니즘 04 - DPC묭묭.cpp시스템 메커니즘 04 - DPC소프트웨어 인터럽트소프트웨어 유발 원인스레드 디스패치 초기화시간에 민감하지 않은 인터럽트 처리타이머 만료 처리특정 스레드 콘텍스트에서 비동기적으로 프로시저 처리비동기 I/O 동작 지원디스패처 또는 지연된 프로시저 요청(DPC) 인터럽트지연된 프로시저 요청(DPC)모든 디바이스 인터럽트가 처리된 이후의 작업을 처리하기 위한 인터럽트 연관 기능지연된다 표현실제로 바로 수행을 하지 않기 때문커널은 타이머 만료를 처리하고자 DPC를 사용스레드 퀀텀이 만료된 이후에 프로세서를 다시 스케줄링 하기 위해서도 사용일반적인 커널 DPC를 통한 것이 아니라 DPC IRQL 레벨에서 발생한다는 의미디바이스 드라이버는 인터럽트를 처리하고 높은 IRQL에서 적합하지 않은 동작을 위해 DPC를 사용..
- 2024-10-22 18:53:36
- 시스템 메커니즘 03 - 트랩 디스패칭묭묭.cpp시스템 메커니즘 03 - 트랩 디스패칭트랩 디스패칭트랩(Trap)예외나 인터럽트를 발생한 스레드를 잡아 운영체제에서 이를 처리하는 코드로 옮기는 메커니즘윈도우에서 트랩 핸들러로 흐름을 옮기고 트랩 핸들러는 개별 인터럽트 또는 예외마다 배치됨트랩 핸들러를 활성화시키는 조건커널이 구분하는 인터럽트와 예외의 차이인터럽트비동기 이벤트(언제라도 일어날 수 있는)이고 프로세서가 실행하고 있는 것과 무관I/O 디바이스, 프로세서 클록에 의해 발생켜지거나 꺼질 수 있음예외동기적으로 발생어떤 명령의 실행에 대한 결과중단(Aborts)는 명령 수행과 관련없는 예외예외나 중단은 폴트라고도 불림메모리 액세스 위반, 특정 디버거 명령, 0 나누기 등이 있음커널은 시스템 서비스를 예외로 다룸하드웨어 예외나 인터럽트가 발생한 경우..
- 2024-10-22 18:53:09
- 시스템 메커니즘 02 - 하드웨어 사이드 채널 취약점묭묭.cpp시스템 메커니즘 02 - 하드웨어 사이드 채널 취약점하드웨어 사이드 채널 취약점최신 CPU 내부 레지스터 연산, 데이터 이동 매우 빠름(피코초 단위)레지스터는 희소 자원임운영체제와 애플리케이션 코드는 항상 CPU에게 데이터를 레지스터에서 주 메모리로 이동하게 지시반대도 마찬가지캐시(Cache)CPU 내부에 위치해 직접적으로 액세스 가능한 메모리비용이 비싸지만 빠른 속도램(RAM)CPU에서 외부 버스를 통해 액세스 가능한 메모리느리지만 비용이 저렴하고 용량이 큼메모리 계층메모리 위치에 따라 정의됨CPU에 가까울수록 더 빠르고 용량이 작음최신 CPU는 코어에 직접 엑세스 가능한 3 계층의 캐시 메모리 운용L1, L2 캐시코어에 가장 가깝고 각 코어가 개별적 소유L3 가장 멀리 있고 모든 CPU 코어 간 공유..
- 2024-10-21 13:54:05
- 시스템 메커니즘 01 - 프로세서 실행 모델묭묭.cpp시스템 메커니즘 01 - 프로세서 실행 모델프로세서 실행 모델세그먼테이션어셈블러(assembler) 또는 어셈블리 코드(assembly code)와 같은 저급 언어프로세서 레지스터에 직접 액세스프로그램이 액세스하는 3가지 기본 유형의 레지스터프로그램 카운터(PC, Program Counter)x86/x64 아키텍터에서는 IP(Instruction Pointer)라고 함EIP(x86), RIP(x64) 레지스터로 표시됨항상 실행 중인 어셈블리 코드 라인을 가리킴특정 32비트 ARM 아키텍처 제외스택 포인터(SP, Stack Pointer)ESP(x86), RSP(x64) 레지스터로 표시됨메모리에서 현재 스택의 위치를 가리킴기타 범용 레지스터(GPR, General Purpose Registers)EAX/R..
- 2024-10-21 10:44:26
- I/O 시스템 05 - I/O 우선순위화묭묭.cppI/O 시스템 05 - I/O 우선순위화I/O 우선순위화I/O 우선순위가 없다면 백그라운드 작업이 포그라운드 작업의 응답성에 영향을 줄 수 있음윈도우는 두 가지 유형의 I/O 우선순위화를 제공개별 I/O 동작 우선순위I/O 대역폭 예약 우선순위I/O 우선순위윈도우는 5 종류의 우선순위를 제공(그러나 3개만이 사용)Critical : 메모리 관리자메모리가 부족한 상황에서 더티 메모리 데이터를 디스크에 쓰기를 원할 때High : 미사용Normal : 일반적인 애플리케이션 I/OLow : 미사용Very Low : 스케줄된 작업, 슈퍼패치, 조각모음, 콘텐츠 인덱싱, 백그라운드 작업윈도우 디펜더 스캐닝 등우선순위화 전략5 종류의 우선순위는 전략(Strategies)이라 불리는 두 개의 우선순위화 모드로 나뉘어짐..
- 2024-10-19 19:01:40
- I/O 시스템 04 - I/O 완료 포트묭묭.cppI/O 시스템 04 - I/O 완료 포트I/O 완료 포트서버의 목표다중 스레드 사용을 통한 최대한의 병렬 처리를 하는 동안 스레드가 불필요하게 블록되는 것을 피해 가능하면 컨텍스트 스위칭 횟수를 줄이는 것이상적인 것은 프로세서마다 한 클라이언트의 요청을 서비스하는 한 스레드가 있고 요청을 완료할 때 추가 요청이 있다면 스레드가 블록되지 않는 것따라서 요청을 처리하는 스레드가 I/O에 의해 블록됐을 때 다른 스레드를 활성화하는 방법이 있어야 함IoCompletion 객체IoCompletion 익스큐티브 객체다중 파일 핸들과 연관된 I/O의 완료 작업의 핵심인 완료 포트(Completion port)윈도우 API에 공개됨파일과 완료 포트가 연결되면 이 파일의 완료되는 비동기 I/O 동작의 결과는 완료 포트에..
- 2024-10-19 17:18:29
- I/O 시스템 03 - I/O 처리묭묭.cppI/O 시스템 03 - I/O 처리I/O의 유형동기적 I/O와 비동기적 I/O동기적 I/O호출자에게 제어를 반환하기 전에 I/O 명령을 완료함I/O 요청이 가장 단순한 형태로 사용되는 케이스ReadFile과 WriteFile을 동기적으로 사용하는 것비동기 I/O(Asynchronous I/O)애플리케이션이 다수의 I/O 요청을 발생하고 장치가 I/O 동작을 수행하는 동안에도 계속 실행할 수 있게 함I/O 명령이 진행 중인 동안에도 다른 작업을 할 수 있음처리량 향상비동기 I/O를 사용하려면FILE_FLAG_OVERLAPPED 플래그를 지정해야 함물론 스레드는 비동기적 I/O 동작을 발생시킨 후 디바이스 드라이버가 데이터 전송을 완료할 때까지 I/O 동작에 관련된 어떤 데이터도 접근하지 않게 주의해야 함스..
- 2024-10-19 15:04:14
- I/O 시스템 02 - 디바이스 드라이버묭묭.cppI/O 시스템 02 - 디바이스 드라이버디바이스 드라이버디바이스 드라이버의 유형유저 모드 드라이버윈도우 서브시스템 프린터 드라이버장치 독립적인 그래픽 요청을 프린터 특정적인 명령으로 변환유저 모드 드라이버 프레임워크(UMDF) 드라이버유저 모드에서 실행되는 하드웨어 디바이스 드라이버UMDF는 ALPC를 통해 커널 모드 UMDF 지원 라이브러리와 통신커널 모드 디바이스 드라이버파일 시스템 드라이버파일 I/O 요청을 받아 좀 더 명시적인 요청을 생성하여 대용량 저장소나 네트워크 디바이스 드라이버로 I/O 요청을 수행플러그앤플레이 드라이버하드웨어와 함께 동작하고 원도우 전원 관리자와 PnP 관리자와 통합되어 동작PnP 드라이버에는 대용량 저장 장치와 비디오 어댑터, 입력 장치, 네트워크 어댑터를 위한 드라이버..
- 2024-10-18 14:32:59
- I/O 시스템 01 - I/O 관리자, 인터럽트와 DPC묭묭.cppI/O 시스템 01 - I/O 관리자, 인터럽트와 DPCI/O 시스템 컴포넌트I/O 관리자I/O 시스템의 핵심 부분I/O 요청을 디바이스 드라이버에 전달하는 일관적인 프레임워크나 모델을 정의I/O 시스템은 패킷 구동(packet driven) 방식대부분의 I/O 요청은 I/O 요청 패킷(IRP)로 표현됨일종의 구조체임IRP는 한 시스템 구성 요소에서 다른 구성 요소로 이동예외로 패스트 I/O는 IRP를 사용하지 않음개별 애플리케이션 스레드는 다중 I/O 요청을 동시에 관리하는 것이 가능하게 설계됨I/O 관리자가 하는 작업I/O 작업을 나타내는 IRP를 메모리에 생성IRP의 포인터를 해당 드라이버에 전달I/O 명령이 완료될 때 IRP를 해제드라이버는 이를 전달받아 작업을 수행한 후 완료하거나 다른 드라이버..
- 2024-10-18 11:16:42
반응형
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)