Linkers and Loaders
- Linkers는 하나 이상의 목적 파일을 가져와 이를 단일 실행 프로그램으로 병합하는 프로그램이다. (Wikipedia)
- Loaders는 Executable program을 찾아서 주기억장치에 적재하고, 그 프로그램이 실행되도록 하는 역할을 담당한다.
- Relocation은 프로그램의 위치 종속 코드 및 데이터에 대한 로드 주소를 할당하고 할당 된 주소를 반영하도록 코드 및 데이터를 조정하는 프로세스이다. (Wikipedia)
- Dynamically Linked Libraries(DLL)은 모든 프로그램 메모리를 로딩하는 게 아닌, 함수가 call 될 때 그 메모리를 로딩하는 것이다.
Implementation
- 초기에는 Assembly로 Operating Systems를 많이 작성했다.
- 최근에는 C, C++와 같은 Assembly 보다는 High-Level Language를 사용하여 Operating Systems를 작성한다. 이는 호환성은 Assembly 보다 뛰어나지만 느리다는 단점이 있다.
Layered Approach
- OS의 복잡도를 낮추기 위한 방안이다.
- Layer는 정의가 명확한(well-defined) 함수들로 이루어진다.
- 하나의 Layer는 인접한 Layer와만 통신한다.
Microkernels
- 중요한 기능은 커널에 남겨두고 나머지는 User Space에서 동작하는 것처럼 행동하는 게 Microkernels다. (초소형)
- 장점으로는 확장이 용이하며, reliable, secure 하고 Operating Systems를 새로운 아키텍쳐에 이식하기 쉽다.
- 단점으로는 속도가 떨어진다. (overhead)
Modules
- Modules은 객체 지향 방법론을 이용해 탈부착이 가능한 라이브러리, 소프트웨어, 하드웨어를 뜻한다. (유연성)
Android
- 기본적으로 Android는 Open Source 기반이다.
- Android는 Linux Kernel 기반이지만 물론 어느정도 수정을 거쳐 저전력 저사양에 맞췄다.
- Bionic이라는 Standard C Library를 사용한다.
Building and Booting Linux
- Linux source code를 다운 받는다.
- make menuconfig로 리눅스 커널을 설정한다.
- make로 커널을 컴파일한다.
- make modules로 커널 모듈을 컴파일한다.
- make install로 시스템에 새로운 커널을 할당한다.
System Boot
- Booting Program은 비휘발성 메모리인 ROM 또는 EEPROM에다 둔다. (Bootstrap Loader)
- 그러나 최근에는 Operating Systems의 용량이 크기 때문에, ROM 말고 boot block을 올려 사용한다.
- GRUB는 리눅스의 Boot Loader이다.
BCC
- BPF Compiler Collection이라는 Operating Systems 커널 성능 측정 툴
'공부용 > Kernel Exploit Study' 카테고리의 다른 글
[Kernel Exploit] Basic Operating Systems (3) (0) | 2021.03.04 |
---|---|
[Kernel Exploit] Basic Operating Systems (2) (1) | 2021.03.03 |
[Kernel Exploit] Basic Operating Systems (1) (0) | 2021.03.03 |
[Kernel Exploit] CSAW 2010 Kernel Exploit 분석 (0) | 2021.03.01 |
[Kernel Exploit] To convert from kernel mode to user mode (0) | 2021.02.24 |