Be myself :: 1.OS의 시작

달력

32024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

 

  1. 1. 개요

지금부터 전반적인 OS커널에 대한 이야기를 할 것이다. 이론중심이 될 것이고 관련 소스나 실습을 원하시는 분들은 따로 자료를 참조하시기 바란다. MBR부터 시작하자.

 

  1. 2. MBR이란?

 

MBR이란 무엇일까? 컴퓨터가 처음에 부팅을 시작하면 각종 하드웨어들에 대한 체크들을 한다. 잘 작동하는지부터 시작해 마더보드 상태 체크, 각 장치가 잘 연결되어 있는지 등 이것저것 확인한다. 제일 마지막으로 사용자가 부팅영역으로 사용할 영역이라 정해놓은 디스크의 512바이트의 프로그램을 램으로 읽어 들여 실행하게 된다.

 

뭔가 이상하지 않은가? 겨우 512바이트의 프로그램만 로딩해선 OS라 부를만한 기능(멀티 테스킹, 파일 시스템관리, 네트워크 등)을 수행할 수 없을 것 같다. 해법은 초기 512바이트의 프로그램에서 OS커널 프로그램을 로드시키는 방법이다. 그래서, MBR영역은 초기 첫 매듭을 매는 역할을 한다. 따라서 이를 부트스트랩이라 부르기도 한다. 왜 부트스트랩인가? 부츠를 신을 때 밑에서 쭉 지퍼를 올리는 것을 연상하기 바란다… 마음에 안드는가? 필자도 부트스트랩이란 용어가 직관적이지 않아 마음에 들지는 않지만 별수 없다. ㅠㅠ

 

지금까지의 내용을 정리 하자면, MBR영역이 OS가 메모리에 로드되는 첫 단추이다. 이 MBR영역의 511바이트와 512바이트엔 0x55 0xaa 라는 값이 입력되어야 한다. 왜냐하면 BIOS가 마지막 512바이트를 로드 할 때 이 부분을 보고 이 프로그램이 MBR인지 아닌지를 판단하기 때문이다. 이상의 과정을 그림으로 확인하겠다. 1번 과정은 디스크의 MBR영역으로, BIOS가 프로그램을 읽어 들인다. 그 다음 2번에서 MBR에서 읽은 영역을 실행시켜 다음 프로그램을 3, 4번에서 램으로 가져오는 과정이다.


'컴퓨터구조&OS > OS' 카테고리의 다른 글

5. 보호  (0) 2014.05.05
4. Task switching  (0) 2014.05.05
3. 인터럽트 처리  (0) 2014.05.05
2. Protected 모드로의 전환  (0) 2014.05.05
메모리 구조  (0) 2014.05.04
Posted by flack3r
|