BIOS có chức năng đặc biệt nào mà chương trình khác không thể làm được không?


6

Tôi chỉ muốn hỏi, khi tôi đang tìm kiếm thông tin về BIOS, tôi đã tìm thấy hầu hết các bài viết lỗi thời, vì vậy tôi chỉ có một vài câu hỏi đơn giản về cách thức hoạt động của nó ngày hôm nay.

Nếu tôi đúng, mục đích chính của BIOS là tải thông tin từ ổ cứng vào CPU (chủ yếu là một số HĐH). Sau đó, họ đã thêm các thói quen nhỏ mà bạn có thể gọi bằng cách sử dụng lệnh int, thực hiện một số tác vụ đơn giản trong PC, như tích hợp ổ cứng hoặc tích hợp VGA, v.v.

Nhưng nếu tôi vẫn đúng, tất cả công việc này có thể được thực hiện thủ công bởi mọi chương trình khác có chế độ đổ chuông 0. Ý tôi là, BIOS không có chức năng đặc biệt mà mọi chương trình khác không thể có, phải không?

Tôi biết trong những ngày DOS, các thói quen BIOS được sử dụng rất nhiều. Nhưng ngày nay, họ? Ý tôi là, hệ điều hành ngày nay thậm chí có sử dụng các thói quen BIOS không? Khi có tài xế cho mọi thứ?

Nhưng BIOS vẫn được cập nhật rất nhiều, với nhiều sửa lỗi, vì vậy tôi tự hỏi chính xác vai trò của BIOS hiện nay là gì.

Ví dụ, tôi đang nghĩ đến việc thay đổi tần số FSB. Bạn có thể làm điều đó thông qua BIOS, nhưng bạn phải có cách khác để làm điều đó đúng không? Vì BIOS chỉ là chương trình.

Điều duy nhất tôi nghĩ rằng bạn có thể cần BIOS là lớp tương thích giữa hệ điều hành và phần cứng cụ thể, như chipset, nhưng, nếu bạn biết cách chính xác để đi đến hdd (cổng nào và dữ liệu nào sẽ gửi cho họ) mà bạn có thể BIOS có đúng không? Cảm ơn.

Câu trả lời:


11

Bit 'BIOS' của 'BIOS' thực sự là lớp tương thích giữa phần cứng và HĐH. Có, bạn có thể trực tiếp lái phần cứng NHƯNG bạn cần viết mã trình điều khiển cho mọi biến thể của thiết kế bo mạch chủ để ứng dụng của bạn hoạt động trên mọi máy. Trong quá khứ mờ mịt và xa xôi khi Lotus 123 là một ứng dụng DOS, một vài phiên bản đầu tiên đã trực tiếp lái cổng máy in song song để tăng tốc hiệu suất in, điều này rất tốt và tốt nếu bạn có một máy tính IBM thực sự hoặc một bản sao rất tốt , nhưng trên một số PC, 123 sẽ không in vì các thiết bị điện tử của cổng song song hơi khác so với thiết kế của IBM.

Các thói quen và cơ chế ngắt của phần cứng BIOS cũng giúp phân xử giữa nhiều ứng dụng cố gắng sử dụng cùng một phần cứng hoặc đọc cùng một thanh ghi và do đó BIOS ngăn chặn tình trạng hỗn loạn - còn gọi là sự cố giữa các ứng dụng cạnh tranh quyền truy cập vào phần cứng cấp thấp.

Hai phần khác của 'BIOS' là các thói quen tự kiểm tra (POST) và chương trình thiết lập CMOS 'cho máy tính.

Moves đã được tiến hành để thay thế thiết kế BIOS trong một thời gian - không chỉ bởi vì chức năng của nó như là một lớp tương thích phần cứng có giá hiệu năng. Ngày càng có nhiều máy tính được chế tạo với cách thức hoạt động khác gọi là Giao diện phần mềm mở rộng (EFI - hiện đã được đưa vào EFI hoặc UEFI hợp nhất) - Apple đã sử dụng EFI một thời gian và do đó có một số máy tính để bàn và máy chủ cao cấp máy móc. Nếu bạn muốn biết thêm, hãy xem cái này Wikipedia bài viết. và đây là một gần đây mẩu tin .


Cảm ơn, nhưng, nếu BIOS ở đó để cung cấp một số giao diện được tiêu chuẩn hóa cho HĐH, tại sao không thiết kế CTNH để có cùng cấp độ giao diện? Ví dụ, Intel và AMD, cả hai đều có các chipset khác nhau, cả hai đều có thể cung cấp cùng chức năng ở cấp độ CTNH. Bạn biết đấy, để cung cấp giao diện tương tự. Và, tôi có đúng không khi tôi nói BIOS không thể làm bất cứ điều gì hệ điều hành bạn làm? Bạn biết đấy, BIOS chỉ là một SW tải vào RAM từ bộ nhớ ngoài?
user32569

".. tại sao không thiết kế CTNH để có cùng cấp độ giao diện?" Đó sẽ là một tình huống lý tưởng nhưng nó không xảy ra như vậy - các nhà sản xuất chip luôn sản xuất các thiết kế khác nhau có yêu cầu về tín hiệu và thời gian khác nhau, hoặc tích hợp nhiều chức năng I / O vào các khối silicon đơn lẻ cần hoạt động với một vài cuộc gọi bổ sung và xoắn và tùy thuộc vào các nhà thiết kế bo mạch hệ thống và nhà phát triển BIOS để luôn đảm bảo rằng chức năng X của INT Y luôn mang lại những gì mong đợi. (tiếp tục ..)
Linker3000

... Sẽ không có gì tệ hơn khi một công ty phần mềm phát hiện ra rằng, máy tính xách tay mới của Acer đã sử dụng một nhãn hiệu chipset USB khác và ứng dụng của bạn không biết cách điều khiển nó để phần mềm ghi dữ liệu của bạn không hoạt động. nền tảng đó bởi vì các cuộc gọi USB trực tiếp của bạn bằng cách nào đó khóa phần cứng. Tôi đánh giá cao bạn đến từ đâu với câu hỏi ban đầu của bạn, nhưng IBM đã thiết lập tiêu chuẩn ứng dụng và HĐH giao tiếp với phần cứng bằng trình điều khiển s / w và các cuộc gọi BIOS và đó là một phần của thông số chung về 'IBM PC' kể từ đó.
Linker3000

... Vấn đề cuối cùng là một sự tiện lợi: hãy tưởng tượng một công ty phần mềm phải ngồi xuống với mọi phần cứng để đảm bảo ứng dụng của họ có trình điều khiển hỗ trợ tất cả và sau đó viết một số mã có nội dung..Case (USB_CHIPSET) khi tải Intel01 DRV_Intel01 khi Intel02 tải DRV_Intel02 khi SIS01 tải ... và sau đó có các thói quen tiếp theo tương tự cho tất cả các thiết bị IO khác - ứng dụng của bạn sẽ mất rất nhiều thời gian để khởi động! Phải thừa nhận rằng, điều này xảy ra, nhưng sử dụng các cuộc gọi BIOS sẽ lấy đi rất nhiều nhu cầu để làm điều này
Linker3000

3

Bạn đang hiểu nhầm một điều RẤT quan trọng. BIOS không phải là phần mềm, nó là phần sụn . Đây là phần tiêu chuẩn hóa chức năng ở cấp độ CTNH. Đây là những gì tải tất cả các "chương trình" khác.

Vấn đề chính với việc cho phép HĐH trực tiếp điều khiển phần cứng là những cải tiến. Ví dụ, người ta đã chứng minh rằng bộ xử lý x86 truyền thống đã chết từ lâu. Bộ xử lý "x86" hiện đại không phải là x86 bên trong. Thay vào đó, họ cũng có một chương trình cơ sở (trong trường hợp này được gọi là microcode) để chúng có vẻ là bộ xử lý x86. Sử dụng phần sụn là một mức độ đóng gói. Ngoài ra, các bộ xử lý x86 hiện đại cần hỗ trợ các hướng dẫn cần thiết vì các quirks có trong các hệ thống 8086 và 268 ngay cả khi chúng không được sử dụng nhiều ngày nay.

Về cơ bản, bản thân HĐH không quan tâm đến việc phần cứng hoạt động như thế nào. Nó thấy những gì BIOS hiển thị nó, có thể đúng hoặc không chính xác ở cấp độ phần cứng. Điều này tạo ra sự tách biệt trách nhiệm giữa những người tham gia sản xuất và thiết kế máy tính và cho phép mọi tổ chức quan tâm đến các bộ phận gần nhất với nó. Hầu hết các lập trình viên không biết làm thế nào bộ xử lý hoặc bo mạch chủ hoạt động ở mức độ thấp và họ không cần biết vì họ lập trình cho một giao diện được chỉ định. Mặt khác, các nhà thiết kế chipset không biết làm thế nào một bo mạch chủ hoạt động, vì vậy họ cũng lập trình BIOS đến một giao diện được chỉ định. Các nhà sản xuất bo mạch chủ không thực sự làm bo mạch chủ từ đầu. Họ lấy các thành phần đã hoàn thành và tích hợp chúng vào một hệ thống duy nhất và họ sửa đổi BIOS của bo mạch chủ một chút để hoạt động với các thành phần được sử dụng. Có quá phần sụn có mặt vì BIOS giao tiếp với phần sụn của chip mạng hoặc với phần sụn của chip âm thanh, v.v.

Các bản cập nhật BIOS mà bạn thấy thường không cập nhật một số chức năng cốt lõi. Thay vào đó, ngày nay các nhà sản xuất bo mạch chủ cần tung ra sản phẩm của họ càng nhanh càng tốt, vì vậy họ cố gắng thực hiện các sửa đổi BIOS của mình càng nhanh càng tốt, điều này thường dẫn đến lỗi. Đôi khi có bản cập nhật BIOS để sửa phần sụn của một số thiết bị khác. Ví dụ, Intel cung cấp các bản cập nhật khả dụng cho microcode của bộ xử lý. Nếu một lỗi lớn được xác định trong bộ xử lý, Intel sẽ gửi các bản cập nhật đó cho các nhà sản xuất bo mạch chủ sử dụng bộ xử lý bị ảnh hưởng, sẽ tạo ra các bản cập nhật BIOS sẽ cập nhật vi xử lý (microcode chỉ đọc, do đó, cần phải thực hiện mỗi lần khởi động) .

Đối với việc thay đổi tần số FSB và tương tự, bạn luôn thực hiện thông qua BIOS. Chỉ là một số BIOS tiếp xúc với các thành phần chương trình chịu trách nhiệm về FSB để chúng có thể được sửa đổi bởi một chương trình. Tuy nhiên, những chương trình đó là chuyên ngành bởi vì họ cần biết những gì họ đang làm việc với.

Một điểm khác là các nhà sản xuất phần cứng. Bản thân phần cứng cần biết nơi để tìm chương trình. Trên các hệ thống vi điều khiển đơn giản (chúng giống như các máy tính từ 30 năm trước trong khả năng của chúng), bạn có điểm khởi đầu chương trình. Vi điều khiển luôn đọc một địa chỉ bộ nhớ duy nhất nơi dữ liệu bắt đầu chương trình được lưu trữ. BIOS làm điều đó cho PC. Hãy tưởng tượng nó sẽ phức tạp như thế nào nếu bộ xử lý sẽ truy cập dữ liệu trực tiếp trên ổ cứng. Nó sẽ cần phải biết mọi thứ từ chính nó thông qua chipset, bộ điều khiển ổ cứng và ổ cứng hoạt động như thế nào và nơi lưu trữ hệ điều hành trên ổ cứng.

Sau khi đọc câu hỏi của bạn nhiều lần, tôi nghĩ rằng vấn đề chính với tầm nhìn của bạn về BIOS và vị trí của nó là hệ điều hành được kết nối chặt chẽ với phần cứng trên PC hiện đại như thế nào. Người ta đã quyết định rằng trên PC, hệ điều hành sẽ không được kết nối chặt chẽ với phần cứng. Theo thời gian quyết định đó đã chứng minh là tốt. Hãy xem lõi ( Bài viết Wikipedia ) dự án. Họ đang triển khai toàn bộ hệ điều hành GNU / Linux trong chip BIOS của máy tính. như bạn có thể thấy, chúng có nhiều vấn đề liên quan đến thông tin có sẵn về bo mạch chủ cụ thể, nhưng chúng có những ưu điểm. Hệ thống của họ có thể khởi động chỉ trong vài giây. Một máy tính thú vị khác là Acorn . Máy tính của họ có toàn bộ hệ điều hành thông tin một con chip. Có cả Apple nữa. Hệ điều hành của họ không gắn liền với phần cứng và có thể tạo ra hackffy, nhưng mối quan hệ ngày càng gần hơn với PC.

Cuối cùng, tôi nghĩ rằng lý do chính cho sự tồn tại của BIOS ngày nay là sự mở của nền tảng PC. Rất dễ dàng để tạo phần cứng cho PC và một trong những lý do chính là không có một công ty nào kiểm soát thông số kỹ thuật của PC. Nếu BIOS (hoặc thay thế mới hơn của nó) bị loại bỏ, bạn cần có người ở đó để đảm bảo rằng các nhà phát triển hệ điều hành và nhà thiết kế phần cứng được đồng bộ hóa và điều đó sẽ vô cùng phức tạp.


2

Từ lâu, máy tính không có ROM bootstrap. Một người có giao diện trực tiếp để sửa đổi RAM và có thể tạm dừng CPU, thay đổi RAM và sau đó khởi động lại CPU. Vì vậy, khi bạn khởi động lại hệ thống, bạn phải chắc chắn rằng CPU đã bị tạm dừng, nhập mã bootstrap của bạn để tải bộ tải khởi động giai đoạn hai (2bl) ra khỏi băng giấy hoặc không chú ý, sau đó "hủy" CPU của bạn.

ROM tiết kiệm trong ngày ở đây, rõ ràng. Khi bạn bật nguồn cho hệ thống dựa trên CPU x86, nó bắt đầu thực thi tại địa chỉ FFFF: FFF0. Đó là một tính năng cứng của CPU x86. ROM phải nằm ở địa chỉ đó và thực sự là phần trên của BIOS (thường bắt đầu từ E000: 0000).

Thuật ngữ BIOS là một sự tiếp quản từ hệ điều hành CP / M cũ. Cấu trúc của CP / M là BIOS ROM ở lớp thấp nhất, BDOS (Hệ điều hành đĩa cơ bản) ở giữa và ĐCSTQ (Bộ xử lý lệnh điều khiển) trước mặt người dùng. BIOS có các thói quen để thực hiện các chức năng cấp thấp như đọc / ghi một lĩnh vực đĩa cụ thể, đọc một phím từ bàn phím, viết một ký tự lên màn hình, v.v. ĐCSTQ sẽ là trình vỏ lệnh sử dụng các chức năng BDOS và BIOS. Ý tưởng là BIOS sẽ chứa giao diện cụ thể về phần cứng và BDOS và CCP có thể giống nhau trên bất kỳ hệ thống CP / M nào.

BIOS cũng sẽ giữ mã ban đầu được bộ xử lý thực thi, khởi tạo phần cứng cần thiết, hiển thị màn hình giật gân, tải 2bl ra khỏi khu vực đầu tiên khỏi ổ đĩa đầu tiên và chạy nó.

MS-DOS 1.0, gần như là một triển khai CP / M x86, với các tính năng giống như Unix được thêm vào khi bắt đầu từ phiên bản 2.0, được cấu trúc theo cách tương tự. BIOS PC của IBM tại thời điểm đó cũng bao gồm các cải tiến như chuyển đổi chế độ video, chức năng đồ họa và hỗ trợ ổ cứng trong AT BIOS gốc.

Tuy nhiên, hầu hết các chương trình DOS không sử dụng các chức năng BIOS khi chúng khởi động; họ trực tiếp truy cập phần cứng vì lý do hiệu suất. Điều này đặc biệt quan trọng sau khi CPU 32 bit trở nên phổ biến; BIOS chỉ hoạt động từ chế độ 16 bit cũ hơn, do đó, gọi nó từ chế độ 32 bit sẽ bị phạt hiệu năng cao hơn.

Khoảng năm 1990, kiến ​​trúc PC đã bắt đầu được mở rộng và bắt đầu bao gồm những thứ mới như APM, PnP và PCI. Vì vậy, BIOS đã bắt đầu đảm nhận các chức năng bổ sung và ngày càng lớn hơn. PC cũng bắt đầu sử dụng chipset thay vì các thành phần riêng biệt. Khởi tạo chipset là điều cần phải xảy ra để có RAM và các thành phần khác như bus PCI có thể sử dụng được, do đó phải được xử lý bằng mã bootstrap của BIOS. Vì một số lý do, nhiều nhà cung cấp chipset không muốn ghi lại quá trình thiết lập của họ hoạt động như thế nào.

APM đã được xử lý bởi các chức năng BIOS; tức là để tắt nguồn hệ thống, hệ điều hành phải gọi chức năng APM. ACPI, người kế nhiệm của APM, là điều lớn lao mà BIOS làm được ngày hôm nay. BIOS ACPI chịu trách nhiệm tạo ra một loạt các bảng trong bộ nhớ mô tả nhiều thành phần phần cứng không cắm và phát. Hệ điều hành khởi động sử dụng điều này để xác định có bao nhiêu CPU, hệ thống có bao nhiêu RAM, hệ thống là máy tính để bàn hay máy tính xách tay, có bao nhiêu pin được cài đặt, v.v. BIOS ACPI cũng phải được gọi để tắt nguồn hệ thống, hoặc đặt nó vào chế độ ngủ, v.v. Tuy nhiên, không có lý do gì mà mã hệ điều hành không thể xử lý các cuộc gọi ACPI.

Hầu hết các bản cập nhật BIOS là để sửa lỗi ACPI, vì ACPI rất phức tạp và khó khăn, hoặc để giới thiệu vi mã nâng cao. Tất cả các CPU hiện đại đều cho phép cập nhật vi mã và nếu bản cập nhật vi mã mới được phát hành thì BIOS phải được cập nhật để cài đặt vi mã mới đó. Một chương trình bình thường có thể cập nhật vi mã của CPU.

SMI cũng được xử lý bởi BIOS. Tôi khá chắc chắn rằng hầu hết các phần cứng liên quan đến nhiệt và năng lượng trong PC kích hoạt SMI, có thói quen sau đó điều chỉnh tốc độ quạt / CPU và / hoặc những thứ khác. Những thứ khác có thể kích hoạt SMI; kiểm tra bài viết Wikipedia về Chế độ quản lý hệ thống. Nhưng cũng không có lý do gì mà mã này không thể được thay thế bằng mã hệ điều hành nếu các giao diện phần cứng được ghi lại.

Các hệ điều hành hiện đại hoàn toàn không sử dụng BIOS để truy cập phần cứng, ngoại trừ các sự kiện điện. Một số bộ tải khởi động sử dụng I / O ký tự BIOS để hiển thị văn bản và I / O của đĩa tải mã khởi động hệ điều hành.

Vì vậy, tôi hy vọng điều này sẽ làm sáng tỏ vai trò của BIOS và đối với hầu hết các phần bạn hoàn toàn đúng về cách thức hoạt động của nó.

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.