OS 개발에 관한 작은 책

4 days ago 8

소개

  • 이 책은 x86 운영 체제 개발에 대한 실용적인 가이드로, 기술적 세부 사항을 제공하면서도 코드 예제를 과도하게 제공하지 않음.
  • 운영 체제 이론이 아닌 실제 커널 개발에 중점을 두며, 독자가 점차적으로 구현과 설계를 맡게 됨.
  • 초기 챕터에서는 개발 환경 설정과 가상 머신에서 OS 커널 부팅을 다루며, 이후 C 언어로 코드 작성 시작.

책에 대하여

  • 이 책과 OS 커널은 스톡홀름의 왕립 공과대학에서 진행된 고급 개인 과정의 일환으로 제작됨.
  • x86 아키텍처를 사용한 이유는 널리 사용되는 하드웨어 아키텍처로서의 장점 때문임.
  • 6주간의 개발 기간 동안 대부분의 코드가 페어 프로그래밍 방식으로 작성됨.

독자

  • UNIX/Linux, 시스템 프로그래밍, C 언어 및 컴퓨터 시스템에 익숙한 독자를 대상으로 함.
  • 운영 체제 개발은 도전적이므로, 관련 지식이 없는 경우 학습이 어려울 수 있음.

첫걸음

  • 운영 체제 개발은 복잡한 작업이며, 개발 환경 설정과 작은 운영 체제 부팅을 통해 시작함.
  • Ubuntu를 사용하여 개발 환경을 설정하고, 필요한 패키지를 설치함.
  • C 언어와 NASM 어셈블러를 사용하여 운영 체제를 개발함.

부팅

  • 운영 체제 부팅은 작은 프로그램들이 차례로 제어를 넘기는 과정으로, BIOS에서 시작하여 부트로더를 거쳐 운영 체제로 제어가 넘어감.
  • GRUB을 사용하여 운영 체제를 ELF 실행 파일로 빌드하고, 올바른 메모리 위치에 로드함.

Hello Cafebabe

  • 가장 작은 운영 체제를 구현하여 GRUB과 함께 사용하며, eax 레지스터에 0xCAFEBABE를 기록하는 간단한 작업을 수행함.
  • NASM을 사용하여 어셈블리 코드를 작성하고, GNU LD를 사용하여 링크함.

C로의 전환

  • C 언어를 사용하기 위해 스택을 설정하고, 어셈블리 코드에서 C 함수를 호출하는 방법을 설명함.
  • C 코드 컴파일 시 여러 플래그를 사용하여 표준 라이브러리 없이 컴파일함.
  • Makefile을 사용하여 빌드 도구를 설정하고, Bochs 에뮬레이터에서 운영 체제를 실행함.

출력

  • 콘솔에 텍스트를 표시하고, 시리얼 포트에 데이터를 쓰는 방법을 설명함.
  • 프레임버퍼와 시리얼 포트 드라이버를 작성하여 하드웨어와 상호작용하는 방법을 설명함.

Read Entire Article