Máy tính chip Intel 64-bit hiện đại chạy chế độ khởi động ở chế độ nào?


12

Tôi biết với các máy cũ hơn như 286, 512 byte đầu tiên được tải từ khu vực đầu tiên của ổ đĩa khởi động đến 0000: 7C00 trong bộ nhớ đã chạy ở chế độ thực 16 bit, nhưng kiến ​​trúc 64 bit hiện đại thì sao?

Chỉnh sửa: Tôi đoán đây là một câu hỏi sai khi nghĩ về nó. Người viết trình tải khởi động là người quyết định sử dụng hướng dẫn lắp ráp chế độ nào, đúng không? Phần cứng chỉ làm những gì nó nói. Vậy thì câu hỏi của tôi là, các bộ tải khởi động hệ điều hành lớn như Windows 7, Mac OS X (mới nhất) và GRUB trên các máy 64 bit sử dụng chế độ nào?

Câu trả lời:


12

Tất cả các máy tính tương thích x86 hiện tại (bao gồm cả kiến ​​trúc x64, cả từ Intel và AMD, nhưng không phải Itanium) đều thực thi mã khởi động ở chế độ thực x86 , giống hệt như PC IBM gốc đã làm cách đây hơn 20 năm. Đây không phải là chế độ kernel, đây là chế độ phân đoạn ban đầu mà không có bảo vệ bộ nhớ, đa nhiệm hoặc các cấp đặc quyền mã.

Nếu bạn có thể giữ ổ đĩa mềm, hãy đặt MS-DOS (hoặc FreeDOS ) vào đó và mắc kẹt vào máy tính ngày nay, nó sẽ bắt đầu khởi động.

Nhiệm vụ của mã khởi động là chuyển sang chế độ được bảo vệ, thiết lập bảo vệ bộ nhớ, v.v ... Vì vậy, dự đoán của bạn là một phần đúng. Trình tải khởi động bắt đầu thực thi như chế độ thực x86 và chuyển sang chế độ được bảo vệ, tải và bắt đầu thực sự thực thi OS Kernel ở chế độ "kernel" (ring 0).

Để biết thêm thông tin, bạn có thể truy cập bài viết Wikipedia về quá trình khởi động Windows NT , trong đó có khá nhiều chi tiết về chủ đề này.


haimg, cảm ơn vì liên kết và làm rõ. @Deshe, xin lỗi để lấy đi câu trả lời tốt nhất.
mring

Bây giờ là lúc để chỉnh sửa điều này, nếu không, bạn không đồng ý với câu trả lời của riêng bạn :-)
Daniel Beck

13

Kiến trúc 64-bit hiện đại thì sao?

Điều đó phụ thuộc vào phần sụn có trên máy 64 bit hiện đại với kiến ​​trúc 64 bit hiện đại. haimgCâu trả lời sẽ là trường hợp khoảng năm đến sáu năm trước đối với thế giới x86, nhưng đã lỗi thời đối với thế giới x86 ngày nay.

Phần mềm PC / AT cũ

Một số máy 64 bit hiện đại có phần cứng kiểu PC / AT cũ. Như đã lưu ý trong các câu trả lời khác, họ tải và chạy chương trình bootstrap từ sector # 0 của một đĩa theo cách tương tự như PC / AT đã làm. Đây là quá trình bootstrap PC / AT cũ.

Phần mềm EFI mới

Các máy 64 bit hiện đại khác có phần mềm EFI mới. Những điều này không tải một chương trình bootstrap từ ngành # 0 của đĩa ở tất cả . Họ bootstrap bởi Trình quản lý khởi động EFI đang tải và chạy ứng dụng bộ tải khởi động EFI . Các chương trình như vậy được chạy trong chế độ được bảo vệ. Đây là quá trình bootstrap EFI.

Các phần mềm EFI nói chung chuyển sang chế độ được bảo vệ trong một vài hướng dẫn thoát khỏi thiết lập lại bộ xử lý. Việc chuyển sang chế độ được bảo vệ được thực hiện sớm trong cái gọi là "Giai đoạn SEC" của khởi tạo phần sụn EFI. Về mặt kỹ thuật, bộ xử lý x86 32 bit và lớn hơn thậm chí không bắt đầu ở chế độ thực, nhưng ở chế độ thông thường được gọi là chế độ không thực . (Bộ mô tả phân đoạn ban đầu cho thanh CSghi không mô tả ánh xạ chế độ thực thông thường và là thứ làm cho "không thực" này.)

Như vậy, có thể nói rằng những hệ thống EFI không bao giờ vào chế độ thực thích hợp chút nào, khi bootstrapping natively một bootloader EFI (tức là khi họ không sử dụng một mô-đun hỗ trợ khả năng tương thích ), kể từ khi họ chuyển từ chế độ không thật trực tiếp sang chế độ bảo vệ và ở trong chế độ được bảo vệ từ đó về sau.


Liên kết đến quá trình bootstrap dường như bị hỏng / chết. Tôi không thể tìm thấy một sự thay thế.
slm

Cái này của bạn? - jdebp.eu/FGA/pcat-boot- process.html
slm

1
Và bây giờ tôi biết tên của bạn nhìn vào các URL 8-). Không cố gắng để gián điệp không thể giúp thông báo.
slm

Tôi nghĩ rằng bạn đã chuyển mọi thứ từ ntlworld, điều đó có đúng không?
slm

URL thay thế có thể cho 1st - jdebp.eu/FGA/pcat-boot- Process.html . Chúa ơi sao chép / dán A'er của bạn khắp nơi. Ngay cả wikipedia này cũng có A'er này được trích dẫn - en.wikipedia.org/wiki/Talk%3AReal_mode .
slm

1

Theo tôi biết, mã khởi động luôn chạy ở chế độ Kernel.

Đối với một người, không thể có bất cứ điều gì để quyết định sử dụng chế độ nào khi nó chạy từ khu vực khởi động, đơn giản vì đó là hướng dẫn đầu tiên được thực thi bởi phần sụn. Không có cách nào để mã đặt các hướng dẫn có sẵn cho nó trước khi nó bắt đầu chạy. Do đó, theo thiết kế, tập hợp có sẵn cho mã trên khu vực khởi động được xác định trước bởi kiến ​​trúc.

Nếu có bất kỳ chế độ không được ưu tiên nào được chọn cho điều đó, thì sẽ không thể sử dụng các hướng dẫn từ các chế độ đặc quyền cao hơn, điều này buộc phải thực tế là mã khởi động chạy với chế độ đặc quyền nhất hiện có.


1

Hướng dẫn sử dụng Intel Tập 3 Hướng dẫn lập trình hệ thống 325384-053US Tháng 1 năm 2015:

2.2 PHƯƠNG THỨC HOẠT ĐỘNG

Bộ xử lý được đặt ở chế độ địa chỉ thực sau khi bật nguồn hoặc đặt lại.

Chỉ cần cho các cú đá, một sơ đồ đẹp từ hướng dẫn:

nhập mô tả hình ảnh ở đây

GRUB khởi động hệ điều hành multiboot trong chế độ được bảo vệ. Thông số kỹ thuật Multiboot 0.6.96 Trạng thái máy :

'CR0' Bit 0 (PE) phải được đặt.

Không chắc chắn về GRUB và x86_64.


GRUB khởi động các HĐH tuân thủ đặc tả Multiboot trong chế độ được bảo vệ. Điều đó bao gồm các * BSD, nhưng theo tôi biết, Linux không tuân theo thông số kỹ thuật này và thực hiện theo cách riêng của nó. Khi khởi động HĐH tuân thủ thông số kỹ thuật Multiboot, cấu hình GRUB sử dụng multiboottừ khóa; cho Linux, có những cống hiến linux, linux16và, trong các phiên bản UEFI của GRUB, linuxefitừ khóa, nói với GRUB dùng một giao thức khởi động Linux cụ thể.
telcoM

@telcoM đủ công bằng
Ciro Santilli 改造
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.