[OS 개발 7] 32비트 커널 로더(1) - 커널과 디스크 구조
1. 커널 로딩 드디어 OS의 핵심이라고 볼 수 있는 커널을 로딩하는 단계까지 왔습니다. 부트로더 포스팅만 해도 시간이 꽤 걸렸는데, 앞으로 커널 로더를 구현하는 부분은 얼마나 걸릴지 모르겠네요. 이전 포스트까지 디스크의 MBR 영역에서 부트 로더 프로그램을 읽어들이는...
1. 커널 로딩 드디어 OS의 핵심이라고 볼 수 있는 커널을 로딩하는 단계까지 왔습니다. 부트로더 포스팅만 해도 시간이 꽤 걸렸는데, 앞으로 커널 로더를 구현하는 부분은 얼마나 걸릴지 모르겠네요. 이전 포스트까지 디스크의 MBR 영역에서 부트 로더 프로그램을 읽어들이는...
세그먼트:오프셋 주소 개념과 물리주소 변환 계산하기 레지스터의 종류에는 범용 레지스터, 세그먼트 레지스터, 컨트롤 레지스터 등, 다양한 역할을 담당하고 있는 레지스터들이 있는데, 이번 포스팅에서는 세그먼트 레지스터에 대해서 알아보도록 하겠습니다. 세그먼트 레지스터는 처...
1. 간단한 부트코드 입력 준비단계가 길었는데 이제 본격적으로 시작해보겠습니다. 우선, 우리는 부트스트랩의 첫 과정으로, 디스크의 첫 512b바이트를 읽어들이는 부분을 구현해야 합니다. 특별히 이 512바이트 영역을 MBR영역이라고 칭한다고 이전 포스트에서 언급했었습니...
부트스트랩 대부분의 PC 부팅과정은 다음과 같습니다. 1. 컴퓨터가 구동되면 전기적 신호에 의해 메인보드에 이식되어있는 BIOS가 구동된다. 2. 이 후 POST 단계(Power On Self Test)를 통해 메모리와 하드디스크, 하드웨어를 자체적 으로 점검하기 시작...
1. 어셈블리 언어? OS를 제작하는 과정에서 우리는 어셈블리 언어와 맞닥뜨릴 것입니다. 그런데 이 어셈블리 언어가 그리 쉽지만은 않습니다. 저도 그 동안 프로그래밍을 해오면서 거의 C++이나 자바와 같은 하이레벨(High Level) 언어를 위주로 주로 공부했을 뿐,...
제작을 위한 준비 본격적으로 OS제작에 앞서 몇 가지 준비물이 필요합니다. 1. NASM 먼저 우리는 앞으로 OS를 제작하기 위해 어셈블리어를 자주사용하게 될텐데, 이를 CPU가 인식할 수 있는 기계어로 변환하는 작업이 필요합니다. 이미 OS를 제작한 선구자들이 이러한...
운영체제(Operating System, OS) 만들기에 앞서 그 동안 프로그래밍을 공부하면서 운영체제에 대해서도 계속 공부해야겠다는 생각을 가지고 있었지만 그러지 못했습니다. 이제는 험난했던 대학원 생활도 끝났고 입사를 앞둔 상황에서 OS를 꼭 공부하고, 특히 블로그...
올리디버거(ollyDbg) 쉽게 테마 변경하기 이번에는 올리디버거를 '간지'나게 해줄 색상 변경방법에 대해 소개하고자 한다. 보통 처음 올리디버거를 내려 받고 실행하면 다음과 같은 화면을 볼 수 있습니다. 그런데, 어두운 배경 윈도우에서 작업하는 것이 익숙한 나는 영 ...
디버깅 커맨드 창 자동 종료 해결 방법 처음 디버깅을 하는 과정에서 콘솔창이 종료되는 현상으로 인해 당황하는 경우가 있는데, 이러한 현상을 바로 해결하기 위한 매우 간단한 방법을 소개하고자 합니다. 먼저, 다음과 같이 '프로젝트' 메뉴에서 '속성'을 선택합니다.(속성 ...