저는 시작 프로세스의 첫 번째 단계를 이해하려고 노력하고 있습니다.
CPU가 BIOS를 읽습니다.
- 고정 주소 명령어를 읽습니다.
- 첫 번째 BIOS 명령어 주소로 점프합니다.
- 코드를 실행합니다
- "부팅 선택 테스트"를 수행하고, 장치를 확인하고, 첫 번째 부팅 가능한 장치를 찾습니다.
그러면 바이오스는읽다MBR 에짐메인 부트로더
- 메인 부트로더는 로더의 두 번째 단계를 실행합니다(예: Grub)
- 로더의 두 번째 단계는 커널을 메모리에 로드합니다.
내 질문은 다음과 같습니다
- BIOS를 사용할 때읽다그리고짐메모리의 마스터 부트 로더, RAM 메모리에 대해 이야기하고 있습니까?
- 중앙처리장치를 사용할 수 있나요?직접 주소콘텐츠를 RAM에 로드하지 않고 HDD에서 (지침 읽기)(여기서는 성능 문제를 무시합시다)?
- BIOS에 대한 동일한 질문: 실행 전에 직접 읽히나요, 아니면 RAM에 로드됩니까?
답변1
감사해요@slm, 대부분의 답변을 찾았습니다.
BIOS가 메모리의 메인 부트로더를 읽고 로드할 때 RAM 메모리에 대해 이야기하고 있습니까?
응 우리는 그래. BIOS는 부트로더 코드를 특정 주소( 0x7c00
)에 로드한 다음 해당 주소로 점프하여 명령을 실행합니다.
내용을 RAM에 로드하지 않고 HDD에서 직접 CPU 주소(명령 읽기)를 수행할 수 있습니까(여기서 성능 문제는 무시하겠습니다)?
CPU가 메모리 주소 공간에 없는 명령을 실행할 수 없을 것 같은데, 틀렸다면 정정해 주십시오(I/O 주소 공간에서 명령을 실행할 수 있습니까?).
BIOS에 대한 동일한 질문: 실행 전에 직접 읽히나요, 아니면 RAM에 로드됩니까?
BIOS는 직접 읽혀집니다. 메모리 주소 공간의 특정 주소 영역은 ROM 메모리로 직접 리디렉션됩니다.
원천:http://duartes.org/gustavo/blog/post/how-computers-boot-up/
인용하다
답변2
CPU가 BIOS를 읽습니다 [...]
이는 다소 단순화된 보기이지만 기본 아이디어는 정확합니다. 일반적인 초기화 코드는 실제로 여러 개의 연속된 부분으로 구성됩니다.
그런 다음 Bios는 MBR을 읽어 기본 부트 로더를 로드합니다.
이것은 전통적인 BIOS입니다. 최신 PC BIOS에는 표준화된 부트 로더 인터페이스가 있습니다.UEFI. PC가 아닌 플랫폼에서는 제조업체가 제공한 부트로더를 "BIOS"라고 부르지 않습니다.
BIOS가 메모리의 메인 부트로더를 읽고 로드할 때 RAM 메모리에 대해 이야기하고 있습니까?
예. 다른 메모리에는 쓸 수 없습니다(정상 작동 시).
내용을 RAM에 로드하지 않고 HDD에서 직접 CPU 주소(명령 읽기)를 수행할 수 있습니까(여기서 성능 문제는 무시하겠습니다)?
아니요. 내가 아는 한, CPU가 주소를 지정할 수 있는 자기 저장소를 갖춘 아키텍처는 없습니다. 하드 드라이브에 액세스하려면 운영 체제에 항상 몇 가지 코드가 필요합니다.
BIOS에 대한 동일한 질문: 실행 전에 직접 읽히나요, 아니면 RAM에 로드됩니까?
이는 하드웨어에 따라 다릅니다. ROM이나 플래시 메모리의 일부 코드는 ROM에서 직접 실행될 수 있습니다. 일반적으로 ROM(또는 PC 하드웨어의 EEPROM)에서 실행되는 일부 초기 부트로더 코드와 별도로 RAM이 더 빠르기 때문에 코드가 RAM에 먼저 복사됩니다.