부팅 과정

  1. 전원이 들어온 후 CPU는 BIOS 롬에 새겨진 프로그램 실행
  2. 현재 사용하는 마더보드의 상태 체크, 주변 장치 접속 체크
  3. 디스크의 첫 512바이트(MBR)에 있는 프로그램 RAM으로 읽어들여 실행(0x07C00)

Real Mode

  • 컴퓨터에 전원이 들어온 후 CPU가 처음 움직이기 시작하면서 활동하는 모드
  • MS-DOS는 계속 리얼 모드로 동작
  • 프로그램이 한 번에 한 개씩 밖에 동작하지 않음
  • 프로그램이 램의 모든 영역 사용 가능

Protected Mode

  • 현재 사용되는 대부분의 OS가 동작되는 모드 (Windows, Linux 등)
  • 모든 프로그램이 한꺼번에 동작
  • 프로그램이 사용할 수 있는 램의 영역이 커널 루틴에 의해 정해짐
  • 커널 모드의 영역은 유저 모드 프로그램이 접근 불가

세그먼트와 오프셋

  • 0x07C00번지는 0x07C0:0000, 0x0000:7C00, 0x0700:0C00 등으로 표현 가능

  • 여기서 0x07C00을 물리 주소라 부르고, 0x07C0:0000을 논리 주소라 함

  • 물리 주소 : CPU와 RAM의 연결선인 address bus에 실제로 나타나는 전기 신호

  • 논리 주소 : 프로그래머가 소스를 작성할 때, 컴파일러가 기계어로 컴파일했을 때의 결과물인 기계어에서 사용

    • CPU에서 실행될 때 CPU의 하드웨어적인 펌웨어가 논리 주소를 물리 주소로 변환 시켜 사용
  • 변환시킬 때 세그먼트에 있는 값에 16을 곱하여 오프셋을 더함

  • 0x07C0:0000 => 0x7C00 + 0x000 = 0x7C00 = 0x07C00

  • Real Mode에서의 주소 지정 방식, Protected Mode에서는 완전히 다른 방식을 사용

pic1

시스템의 하위 메모리 맵