부트로더 - 6
이전에 올린 코드에 대해서 하나하나 분석하는 시간을 갖도록 하겠다. [ORG 0x00] ORG는 Origin의 약자로 해당 코드는 0x00번지부터 시작한다는 뜻이다. [BITS 16] BITS 16 이라고 적혀있는데 이는 16bit 코드를 말한다. 어셈블리어로 입력하면 명령어는 다 동일한데 왜 16bit 코드라고 명시하는지 의문이 들 수 있겠...
이전에 올린 코드에 대해서 하나하나 분석하는 시간을 갖도록 하겠다. [ORG 0x00] ORG는 Origin의 약자로 해당 코드는 0x00번지부터 시작한다는 뜻이다. [BITS 16] BITS 16 이라고 적혀있는데 이는 16bit 코드를 말한다. 어셈블리어로 입력하면 명령어는 다 동일한데 왜 16bit 코드라고 명시하는지 의문이 들 수 있겠...
이전 포스팅에서는 어셈블리어에 대한 설명을 다루었다. 어셈블리어에 대한 추가 설명이 필요하다면 추가적으로 내용을 포스팅하도록 하겠다. 64bit 멀티코어 OS의 구조 책에서 제공하는 코드(https://download.hanbit.co.kr/exam/1836/) 를 기준으로 설명을 해볼까 한다. 해당 책에서는 저자가 Mint64 OS라는 이름의 OS...
부트로더 코드에 대해서 설명하기에 앞서 어셈블리어에 대해서 좀 알아야한다. 아무래도 가장 기계어에 가까운 부분이다 보니 C나 다른 언어로 짜는 것보다는 어셈블리어로 짜는게 좀 더 용이한 부분이 있다. 아래는 주로 사용되는 어셈블리어 명령어이다. 명령어 모음 사칙 연산 add A, B A에 B를 더한 뒤 A에 저장 sub A, B ...
이전에 MBR에 대한 설명을 했을 때 PeTya 랜섬웨어의 금전요구 화면에 대한 이야기를 했는데 어떻게 그런 금전 요구 화면을 띄울 수 있었을까? OS가 부팅되지 않아 그래픽카드나 드라이버에 엑세스할 수 없는데 말이다. 이는 기본적으로 메모리의 특정 위치에 디스플레이가 매핑되어있어서 가능한 일이다. 비디오 메모리라고 불리는 것인데 메모리의 특정 부분...
현대의 MBR은 다음 세가지로 이루어져야한다. 1. Bootstrap Code 파티션 테이블을 참조해서 관련 코드를 불러오는 코드다. 2. Partition Table Entry Boot Flag (1 Byte) 0x80 -> 부팅 가능 코드 0x00 -> 부팅 불가 코드 Starting CHS Address (3 Byte) 현재는 사용...
BIOS에서 구동가능한 부트로더를 한줄로 정의하면 아래와 같다. OS를 구동하기 위해서 필요한 512Bytes 코드 이 문장을 해석하면 BIOS를 통해서 구동되는 부트로더(이하 부트로더)가 무엇인지 어떻게 구동되는지 알 수 있다. 컴퓨터가 켜지면 POST라는 절차를 거친다. 펌웨어인 바이오스가 실행하는 일종의 검사 루틴으로 이 POST는 프로세서...
2. 세그멘테이션 세그멘테이션은 한마디로 세그먼트 레지스터를 이용하여 주소 공간을 관리하는 기법이다. 이 세그먼트 레지스터는 프로세스를 실행하는데 필요한 데이터의 뭉치 시작 주소들을 가리키고 있는데 이러한 데이터 뭉치는 코드, 데이터, 스택으로 나눌 수 있다. 앞서 설명한 페이징이 고정된 사이즈로 메모리를 나눠서 관리하는 기법이라면 세그멘테이션은 ...
페이징과 세그멘테이션 메모리를 효율적으로 운용하기 위해서 컴퓨터의 발생부터 사람들의 많은 노력이 있었다. 그냥 일괄처리 시스템이라면 메모리 0번지부터 차근차근 써버리고 해제하면 되겠지만 PC의 시대가 도래하면서 여러가지 프로그램을 한번에 처리해야할 필요성이 생겼다. 그리하여 메모리 운용의 가장 최신 기술이 세그멘테이션과 페이징인것이다. 이러한 세그멘...
IA-32e 모드 앞서 포스팅한 내용에 따르면 보호 모드의 특성은 아래와 같다. 최근 제공되는 OS들이 구동되는 모드이다. 멀티태스킹, 세그멘테이션, 페이징을 지원한다. 이론상 최대 16EB(2^64) 만큼의 메모리 제한이 있다. 민감한 메모리 영역에 대한 보호를 제공한다. 32bit 호환 모드가 있어 32bit용 코드를 구동가...
보호 모드 앞서 포스팅한 내용에 따르면 보호 모드의 특성은 아래와 같다. 윈도우나 Linux가 구동되는 기본 모드이다. 멀티태스킹, 세그멘테이션, 페이징을 지원한다. 디바이스 드라이버를 써야 장치 제어가 가능하다. 4GB의 메모리 제한이 있다. (2^32) 민감한 메모리 영역에 대한 보호를 제공한다. 이러한 특성을 하나하나 ...