• X86 Platform 구성과 부팅 과정
1. X86 컴퓨터 하드웨어 구성
- CPU
- Main Memory
- SMBus (System Management Bus)
⇒ I2C 전기신호 프로토콜을 기반으로 하고 있음
⇒ CPU 코어별 주파수 상태(클럭 속도)도 제어
⇒ LPC 중 하나이지만, 무척 소중 -> BUS 신호들로 인해서 메모리 버스 전송 속도를 결정
- LPC (Low Pin Count)
⇒ 저속으로 동작하는 장치 중, CPU와 직접 신호 연결을 통해 동작하는 장치와 버스를 통칭
⇒ BIOS, UEFI 펌웨어 롬도 이에 해당함
⇒ 펌웨어 업데이트 외에도 최근에 TPM, IPMI 같은 장치용으로 쓰임
⇒ Super I/O라는 형태의 장치로 많이 사용 -> 느린데 Super인 이유는 DMA, ACPI, APIC 우선순위는 높음
- ACPI (Advanced Configuration and Power Interface)
⇒ 현존 컴퓨터들은 ACPI를 기반으로 한 컴퓨터를 사용(ACPI 4.9 구격 사용)
⇒ ACPI 루틴들은 보통 BIOS나 UEFI 펌웨어에 프로그래밍되어 있는 경우가 많음
⇒ 모바일 장치에도 적용 중
⇒ USB를 포함한 Plug n Play 장치들은 꼭 준수해야 함
- APIC (Advanced Programmable Interrupt Controller)
⇒ USB 장치를 연결하고, USB Host 와 통신할 수 있는 이유
⇒ APIC는 멀티코어 프로세서에도 필수
⇒ 새로운 장치가 등장할 때, 인터럽트 번호, 인터럽트 우선순위를 부여하고, 각 인터럽트가 발생할 때마다 인터럽트를 중재하거나, 전달, 지연하는 형태로 동작
- DMA (Direct Memory Access)
⇒ 장치간 직접 메모리 데이터 교환 시스템
⇒ I/O 장치의 발달로 장치 간 데이터 전송 빈도와 대역이 증가하면서 CPU I/O 대역을 줄이기 위한 장치
- PIO (Programmed Input-output)
⇒ 일반적인 프로그래밍을 통해 만드는 I/O 처리 프로그램은 PIO 방식과 마찬가지이다.
⇒ CPU를 통한 I/O 처리 기법
⇒ Memory Mapped I/O (MMIO), Port-mapped I/O (PMIO)
⇒ 저가 소형 임베디드 장치나 컨트롤러에서 주로 사용하는 방식
2. BIOS vs UEFI
- BIOS (Basic Input Output System)
16bit x86 architecture Binary
Core i 시리즈까지 사용가능 했으나 이후에 UEFI로 변경
ACPI를 사용하는 APM 기능도 포함
64bit을 지원하는 CPU라고 하더라고 16bit -> 32bit -> 64bit 모드로 변환해야 했음
- UEFI (Unified Extensible Firmware Interface)
32bit x86 Binary
기존 BIOS 기반의 MBR 부팅 방식을 지원하는 CSM(Compatibility Support Module) 방식 지원
컴퓨터를 운용하기 위한 모든 기능을 다 갖춘 펌웨어
3. Windows 의 커널 구조와 부팅과정
- 일반 커널의 공통적인 작동 순서
메모리 공간 인식 및 관리 -> 프로세스 구조체(객체) 정의, 메인 프로세스 시작 -> 드라이버 구조체 정의, 커널 드라이버 등록 시작 -> 저장장치 드라이버 등록, 파일 시스템 정의, 저장장치의 파티션 등록 -> BIOS 혹은 UEFI 호출 서비스 종료 -> 시스템 H/W 필수 드라이버 등록 -> OS 레벨의 드라이버 및 하드웨어 드라이버 호출, OS 부팅 시작
4. 안전모드가 갖는 의미
- 최소한의 권한
- 최소한의 하드웨어 드라이버
- 최소한의 리소스
- 보안과 사용자 로그인은 꼭 실행
'S-DEV > Anti-Virus' 카테고리의 다른 글
Yara 프로젝트 (0) | 2023.10.29 |
---|---|
Flex & bison (0) | 2023.07.31 |
Anit-Virus - 0 (0) | 2023.07.30 |