부팅 과정
- 전원이 들어온 후 CPU는 BIOS 롬에 새겨진 프로그램 실행
- 현재 사용하는 마더보드의 상태 체크, 주변 장치 접속 체크
- 디스크의 첫 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에서는 완전히 다른 방식을 사용
시스템의 하위 메모리 맵