Hệ điều hành có sửa đổi BIOS theo bất kỳ cách nào không?


4

Tôi đang đọc cuốn sách: Máy tính hoạt động như thế nào: Sự phát triển của công nghệ và trong Chương 4, tác giả nói:

Hệ điều hành không hoạt động một mình. Nó không chỉ phụ thuộc vào sự hợp tác của các chương trình khác mà còn phụ thuộc vào việc kết nối trơn tru với trình điều khiển BIOS và phần mềm. Hệ thống đầu vào / đầu ra cơ bản của BIOS được tạo từ mã chứa trên các chip trong Pc. Nó hoạt động như một trung gian giữa các phần cứng, bộ xử lý và hệ điều hành. Trình điều khiển thiết bị giống như một BIOS chuyên dụng. Trình điều khiển dịch các lệnh từ hệ điều hành và BIOS thành các hướng dẫn cho một phần cứng cụ thể, chẳng hạn như máy in, máy quét hoặc ổ đĩa DVD-ROM. Khi một số phần của hệ điều hành được tải từ đĩa, chúng sẽ được thêm vào BIOS và sau đó được nối bởi trình điều khiển thiết bị và tất cả chúng đều thực hiện các chức năng phần cứng thông thường. Hệ điều hành thực sự bao gồm cả ba thành phần này, cộng với điểm số của các chương trình khác, mã chung,

Phần quan trọng ở đây là:

Khi một số phần của hệ điều hành được tải từ đĩa, chúng sẽ được thêm vào BIOS và sau đó được nối bởi trình điều khiển thiết bị

Những gì được thêm vào BIOS? Tôi không biết BIOS đã được sửa đổi bởi hệ điều hành? Hay tôi hiểu điều này sai?

Câu trả lời:


3

Trước tiên, hãy hiểu rằng phần cứng x86 có Bảng mô tả ngắt sống trong RAM. Trên CPU 8086 ban đầu, nó đã được sửa ở vị trí bộ nhớ 0, vị trí đầu tiên của RAM, nhưng nó có thể được di chuyển trong các CPU hiện đại và sau này. BIOS ban đầu thiết lập điều này ở vị trí bộ nhớ 0.

IDT là danh sách các con trỏ 32 bit để định tuyến ở nơi khác trong bộ nhớ (có thể là ROM hoặc RAM), được đánh số từ 0x00 đến 0xFF.

Ngày nay, 32 trong số đó được dành riêng cho việc sử dụng CPU. Ví dụ, một lỗi bảo vệ chung sẽ khiến cho thường trình được chỉ ra bởi vectơ 0x0D được gọi.

Bất kỳ thường trình nào được chỉ ra trong một trong các vectơ này đều có thể được "gọi" bằng lệnh ngắt phần mềm INT. Vì vậy, INT 0x0Dsẽ gọi cùng một thói quen như sẽ được gọi nếu một lỗi bảo vệ chung được gọi.

BIOS thời đại DOS sử dụng nhiều trong số chúng để trình bày một giao diện chuẩn cho các cuộc gọi BIOS . Một số trong những cái mà BIOS thường sử dụng trùng lặp với những gì CPU sử dụng.

Bản thân DOS cũng đã sử dụng một ngắt đơn 0x21, để cho phép các chương trình một cách tiêu chuẩn để gọi các hàm DOS .

Bây giờ, một ngắt BIOS nổi tiếng là 0x13, cho phép đọc hoặc ghi một sector vào một thiết bị đĩa .

Trong quá trình khởi động, vùng ROM của bộ nhớ được quét và mã khởi tạo của bất kỳ ROM nào được gọi. Các thiết bị ISA và PCI có thể có ROM trên chúng xuất hiện và sẽ được gọi trong khi khởi động. ROM thiết bị có thể sửa đổi các vectơ, mở rộng hoặc thay thế chức năng BIOS. Thẻ RAID được thiết kế để hoạt động với các phiên bản DOS và 9x của Windows có thể làm điều này.

Một thói quen BIOS khởi tạo màn hình video và cho phép thiết lập chế độ hiển thị. Rất phổ biến khi các thẻ video có ROM ghi đè lên ngắt này để cho phép card đồ họa được sử dụng trong quá trình khởi động BIOS (và DOS, nếu bạn thực sự muốn).

Không có gì dừng chương trình sau khi tất cả khởi tạo từ sửa đổi các vectơ đó thành bổ sung hoặc thay thế chức năng BIOS. Quay trở lại khi một số BIOS nhất định không thể truy cập vào các ổ đĩa cứng qua hàng rào 8Gbyte, một số nhà cung cấp đã cung cấp một đĩa khởi động cung cấp tiện ích được nối vào Int 0x13, bỏ qua giới hạn BIOS.

Vì vậy, tất cả điều này rất phổ biến khi DOS là hệ điều hành phổ biến. Ngày nay, BIOS vẫn còn tồn tại (UEFI là thiết bị kế nhiệm), được sử dụng khá nhiều chỉ để khởi tạo và màn hình khởi động của bạn, và hệ điều hành truy cập trực tiếp vào phần cứng - ngoại lệ là những thứ liên quan đến quản lý năng lượng.


Vì vậy, chúng ta có thể nói rằng hệ điều hành KHÔNG sửa đổi DOS chút nào. Nó được sử dụng để sửa đổi bảng ngắt, nhưng thậm chí không còn nữa?
Koray Tugay
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.