목록OS (4)
tmxklab
여기서 다루는 내용은 Device Driver와 I/O Manager에 중점을 둔다. 다음 그림은 유저단에서 WriteFile() API 함수를 호출했을 때 I/O Manager와 Device Drvier가 처리하는 과정이다. syscall(x64) 또는 sysenter(x86) 요청을 발생하면 커널 익스큐티브(ntoskrnl.exe)에서 NtWriteFile() 시스템 서비스 루틴을 호출한 후 요청을 I/O Manager에게 전달한다. I/O Manager는 요청한 연산을 처리하는 드라이버를 파악하여 해당 드라이버에게 IRP(I/O Request Packet)을 전달한다. (IRP는 데이터 구조체로 I/O연산에 수행되어야 하는 연산과 필요한 버퍼의 정보를 포함한다.) Device Driver는 IRP를..
윈도우 OS는 객체 기반이며 여기서 말하는 객체는 프로세스, 파일, 디바이스 등과 같은 시스템 리소스를 참조하고, 커널 컴포넌트인 객체관리자(object manager)에서 관리한다. MS에서 제공하는 WinObj툴을 통해 윈도우의 모든 객체 유형을 살펴 볼 수 있다. [ WinObj ] WinObj - Windows Sysinternals The ultimate Object Manager namespace viewer is here. docs.microsoft.com 관리자 권한으로 실행하고 왼쪽 탭에 ObjectTypes를 누르면 모든 윈도우 객체가 표시되는데, 이 때, Process도 객체임을 확인할 수 있다. 따라서, 프로세스도 객체로 관리되며 여기서 객체는 _EPROCESS구조체로 표현된다. [..
0. 목차 1. 커널 메모리 내용 2. 유저모드, 커널모드 3. Window API 호출 흐름 1. 커널 메모리 내용 커널 메모리는 OS와 장치 드라이버를 포함한다. 커널 메모리는 다음 주요 컴포넌트로 이루어져 있다. ① hal.dll 하드웨어 추상 레이어(HAL, Hardware Abstraction Layer)는 로드 가능한 커널 모듈 hal.dll에 구현되었으며, 다른 하드웨어 플랫폼(주로 칩셋)을 지원하는 함수를 구현하기 떄문에 HAL은 OS와 Hardware에서 분리한다. 주로 윈도우 실행 프로그램, 커널, 커널 모드 장치 드라이버에 서비스를 제공 커널 모드 장치 드라이버는 하드웨어와 상호작용하고자 하드웨어와 직접 통신하지 않고 hal.dll에서 익스포트한 함수를 호출 ② ntoskrnl.exe..
main()가 호출되고 종료되는 과정에 대한 지식이 필요하여 이번에 정리하게 되었다. 우리가 흔히 .c파일을 작성하여 컴파일 과정을 마치면 결과물로 linux실행파일인 elf파일이 생성된다. 이제 elf파일 실행할 때 내부적으로 어떻게 실행되는지 단계별로 살펴보자 목표 : elf파일(바이너리 파일)이 실행되어 종료되는 과정을 살펴본다 특히 main함수가 호출되고 종료되는 과정에 중점을 둔다. 너무 깊게 들어가지는 않을꺼다.... 1. elf파일 실행 (이쪽 부분은 커널 영역이다 보니 자세하게 다루지 않음... 나중에 리눅스 커널쪽을 배우고 커널 디버깅을 할 수 있을 때 따로 정리하도록 하겠다. ) 1) 쉘에서 ./a.out와 같이 elf파일을 실행시키면 새로운 프로세스를 fork 2) 새로운 프로세스가 ..