BIOS는 MBR에서 1단계 부트 로더를 로드해야 하는데 UEFI는 로드하지 않는 이유는 무엇입니까?
이는 BIOS가 64비트(및 32비트) 메모리를 처리할 수 없는 반면 UEFI는 모든 메모리에 직접 액세스할 수 있기 때문인 것 같습니다. 아니면 내가 틀렸나요?
답변1
MBR은 파티션 구성표(파티션이 디스크에 나타나는 방식의 레이아웃)입니다. 클래식 BIOS는 파티션을 이해하지 못합니다. 이는 부팅 디스크의 섹터 0(원래는 실린더 헤드 트랙, 현재는 일반적으로 논리 블록 주소 지정)에서 512바이트를 로드하고 2바이트 서명을 확인한 다음 서명이 일치하면 코드를 실행합니다. BIOS의 1단계 부트 로더는 16비트 실행 코드를 로드하고 서명용으로 2바이트를 예약하는 디스크의 512바이트 영역입니다.
이와 대조적으로 UEFI는 MBR 및 GPT를 이해하고 두 파티션 시스템 중 하나를 사용하여 특별히 정의된 파티션에 있는 사전 OS 부팅 환경인 1단계 로더 파일을 로드할 수 있으며 여러 칩 부팅 유형에 걸쳐 사용자 정의할 수도 있습니다. 사용 가능한 물리적 메모리의 양이 다릅니다.
UEFI를 구현하는 BIOS는 특정 유형의 파티션을 읽고 해당 코드를 메모리에 로드하는 방법을 알고 있습니다. 로드되면 UEFI 부팅 환경은 32비트 모드 또는 64비트 모드를 사용하고, 디스크의 어느 위치에서든 운영 체제를 로드하고, 로드할 운영 체제 선택, 부팅 조건이 맞는지 확인하는 등의 추가 서비스를 제공할 수 있습니다. 안전하다 등등 전체 파티션을 첫 번째 단계 부트로더로 사용합니다.
BIOS는 전통적으로 CPU 모드(향상된 모드, 롱 모드 등) 전환이나 운영 체제의 부팅 조건을 변경하는 게이트 A20 변경이 제한되었습니다. 이러한 제한은 또한 섹터 0 부트로더가 액세스할 수 있는 메모리 양이나 로드할 수 있는 섹터 수가 제한된다는 것을 의미합니다. 또한 이 경우 1단계 부트로더는 일반적으로 2단계 부트로더를 로드하기 위해 사용 가능한 공간의 대부분을 필요로 하므로 CPU 모드를 전환하거나 더 많은 메모리를 활성화할 수 있는 방법이 없습니다.
부트 섹터가 부팅 가능하려면 두 번째 단계 부트 로더가 디스크의 특정 오프셋에 물리적으로 존재해야 합니다. 기본적으로 BIOS에 관한 모든 것은 이전 버전과의 호환성을 유지합니다. 부트 섹터 코드는 처음에는 16비트 모드여야 합니다. 다음 단계가 32비트 모드인 것을 알고 있으면 32비트 모드로 전환할 수 있지만 제한된 여유 공간을 다른 작업에 활용하기는 어렵습니다. 디스크에서 더 많은 데이터를 로드하고 해당 위치로 이동합니다.
또한 32비트 모드를 사용하면 실행할 수 있는 나머지 명령 수가 그에 따라 줄어듭니다. 마지막으로, BIOS는 16비트의 "드라이버"만 제공하므로 CPU 모드를 변경하면 BIOS가 효과적으로 비활성화됩니다. 이는 코어를 로드할 시간이 있을 때 두 번째 단계 부트로더까지 수행하고 싶지 않은 작업입니다. 드라이버 등
BIOS가 부트 섹터 로딩을 지원하는 한 16GB RAM 및 4TB 하드 드라이브를 갖춘 최신 8코어 프로세서에 DOS 5.0(또는 그 이전 버전)을 설치할 수 있습니다.그리고필요한 BIOS 호출(예: 디스크 읽기/쓰기/검색, 키보드 인터럽트 등)을 제공하는 한, 프로그램은 기본 운영 체제의 제한 내에서 계속 실행됩니다(예: 하드 드라이브 공간의 일부만 분할할 수 있음) , 설치된 일부 메모리에 액세스하고 코어 1개만 사용). 가장 뛰어난 최신 하드웨어는 30년 이상 전에 작성된 코드를 베어메탈(가상 머신이나 에뮬레이터 없이)에서도 여전히 지원하는 경우가 많습니다.
답변2
답변3
당신의 추측은 비슷하지만 틀렸습니다. 실제 제한은 640k와 규칙이 생성된 BIOS ROM의 크기이며, 이는 현재까지 BIOS 부팅을 제한하는 제약 조건입니다. EFI는 엄청납니다. 실제로 이전 버전의 DOS보다 더 강력하고 유용했으며 파일을 직접 읽고 쓸 수 있었습니다. 초기 ROM 배열을 설치하는 것은 매우 비쌉니다. (칩이라고 말하지 않았으니 4개에 설치할 수 없을 것 같습니다!) dos가 로드될 때까지(파일 시스템과 파일을 이해함) 부트로더는 블록만 사용할 수 있습니다. 즉, BIOS에 디스크에서 이 블록이나 해당 블록을 읽도록 요청하면 BIOS는 디스크의 첫 번째 블록에서만 부트 로더를 찾습니다.