BIOS

BIOS ở đây là viết tắt của cụm từ tiếng Anh (Basic Input/Output System) có nghĩa là Hệ thống xuất nhập cơ bản. BIOS nằm bên trong máy tính cá nhân, trên bo mạch chính. BIOS được xem như là chương trình được chạy đầu tiên khi máy tính khởi động. Chức năng chính của BIOS là chuẩn bị cho máy tính để các chương trình phần mềm được lưu trữ trên các thiết bị lưu trữ (chẳng hạn như ổ cứng, đĩa mềm và đĩa CD) có thể được nạp, thực thi và điều khiển máy tính. Quá trình này gọi là khởi động.
Thuật ngữ này xuất hiện lần đầu trong hệ điều hành CP/M, là phần CP/M được tải lên trong suốt quá trình khởi động, tương tác trực tiếp với phần cứng (các máy CP/M thường có duy nhất một trình khởi động trong ROM). Các phiên bản nổi tiếng của DOS có một tập tin gọi là "IBMBIO.COM" hay "IO.SYS" có chứng năng giống như BIOS CP/M.
Tuy nhiên, thuật ngữ BIOS ngày nay chỉ một chương trình phần mềm khác được chứa trong các chip có sẵn trên bản mạch chính như PROM, EPROM và nó nắm giữ các chức năng chuẩn bị cho máy đồng thời tìm ra ổ nhớ cũng như liên lạc và giao sự điều hành máy lại cho hệ điều hành.
BIOS cũng là bộ phận chuẩn của máy tính. Một máy tính có thể thiếu màn hình, bàn phím, chuột, ổ cứng,... nhưng không thể thiếu BIOS.

Cơ chế vận hành của BIOS

BIOS được chứa sẵn (thường ở dạng nén dữ liệu) trong các con chip như là PROM, EPROM hay bộ nhớ flash của bo mạch chính. Khi máy tính được mở qua công tắc bật điện hay khi được nhấn nút power,thì BIOS được khởi động và chương trình này sẽ tiến hành các thử nghiệm khám nghiệm trên các ổ đĩa, bộ nhớ, bo hình, các con chip có chức năng riêng khác và các phần cứng còn lại.
Thông thường, BIOS tự giải nén vào trong bộ nhớ chính của máy tính và bắt đầu vận hành từ đây. Hầu hết các lắp đặt của BIOS ngày nay có thể thực thi cài đặt các chương trình giao diện CMOS. Bộ phận này (CMOS) là nơi lưu giữ các dữ liệu cài đặt chuyên biệt của người dùng; như thời gian, các đặc tính chi tiết của ổ đĩa, việc gán chức năng khởi động cho bộ điều khiển (controller) nào, hay ngay cả mật mã khởi động máy,... CMOS được truy cập bởi BIOS.
Đối với hệ kiến trúc 80x86, mã nguồn BIOS của các máy PC và AT thời kỳ đầu đã có kèm Bản tham chiếu kĩ thuật IBM.
Trong hầu hết các lắp đặt của BIOS ngày nay, người dùng có thể lựa chọn thiết bị nào được khởi động trước: CD, đĩa cứng, đĩa mềm, ổ USB, hay các thiết bị lưu trữ tương thích. Thủ tục này đặc biệt hữu ích cho việc cài đặt các hệ điều hành hay khởi động từ CD/DVD khởi động được hay ổ USB khởi động được và cho việc lựa chọn thứ tự của việc kiểm tra sự hiện hữu của các vật liệu (media) khởi động được.
Một số BIOS cho phép người dùng lựa chọn hệ điều hành để nạp vào bộ nhớ (thường thấy khả năng này trong các máy mới có kiến trúc 64-bit như các hệ máy chủ Itanium của HP chẳng hạn). Mặc dù vậy, thường thấy hơn, thì thao tác này được tiến hành bởi giai đoạn hai của bộ tải khởi động (boot loader).

BIOS và chế độ thực (realmode)

Đối với các máy theo kiến trúc 8086, khi CPU bắt đầu hoạt động nó lập tức tự cài đặt vào chế độ thực và tìm đến vị trí của đúng 16 byte trên đỉnh của Mega byte của chế độ thực tại địa chỉ 0FFFF0h. Chính tại địa chỉ này, một lệnh jump sẽ dẫn tới nơi mà mã BIOS được bắt đầu thi hành.

BIOS như là phần sụn

BIOS đôi khi được gọi là phần sụn vì nó là phần tích hợp trong một hệ thống phần cứng.
Trước năm 1990, BIOS được lưu giữ trong các con chip ROM và do đó không thể thay đổi (ngoại trừ phải có các thiết bị đặc biệt để đổi phần mềm cho con chip BIOS). Do BIOS ngày càng phức tạp và nhu cầu cập nhật trở nên ngày càng cao, phần sụn BIOS nay thường được chứa trong EEPROM hay trong bộ nhớ flash để người dùng có thể cập nhật chúng dễ dàng hơn (qua đĩa mềm, ổ USB, hay các CD khởi động được). Mặc dù vậy, nếu công việc cập nhật BIOS được tiến hành với sai sót hoặc không được tiến hành trong thời gian đủ dài thì có thể dẫn đến tình trạng máy tính hay thiết bị không sử dụng được nữa (do BIOS bị hỏng hoặc không tương thích với đòi hỏi mới của hệ điều hành). Để tránh hỏng hóc BIOS, một số bo mạch chính loại mới có thêm chức năng lưu giữ lại một phiên bản BIOS cũ. Ngoài ra, hầu hết các BIOS còn có một khối khởi động mà chúng là một phần của ROM được chạy trước tiên và không thể đổi mới được. Khối mã này sẽ kiểm nghiệm xem các phần còn lại của BIOS có còn hoạt động hay không (thông qua các thao tác như là checksum, băm (hash),... v.v.) trước khi thực thi chúng. Nếu khối khởi động này tìm ra hỏng hóc, thì nó thường sẽ tự khởi động từ ổ mềm để cho người dùng có thể thử đổi mới BIOS lại. Các nhà hãng sản xuất phần cứng thường xuất bản các cập nhật BIOS để cải tiến sản phẩm của họ và sửa các trục trặc trong phiên bản cũ.

Đặc tả BIOS Khởi động

Nếu ROM mở rộng muốn thay đổi cách thức khởi động hệ thống (chẳng hạn từ một thiết bị mạng hay từ một bộ điều hợp SCSI mà BIOS chính không có mã điều vận), nó có thể dùng API của Đặc tả BIOS Khởi động (BIOS Boot Specification -- BBS) để đăng ký khả năng này của mình—Trên các NIC, khả năng này thường được gọi là Thức giấc bằng LAN (wake up on LAN) nghĩa là qua một mệnh lệnh truyền qua mạng, ta có thể khởi động một máy tính có mã BIOS hỗ trợ chức năng này).
Một khi các ROM mở rộng đã đăng ký dùng các API của BBS, người dùng máy có thể lựa chọn trong số các chức năng thêm vào này để khởi động qua giao diện sử dụng của BIOS. Đây cũng là lý do tại sao các BIOS sẽ không cho phép người dùng vào được giao diện sử dụng của BIOS cho tới khi tất cả các ROM mở rộng đã hoàn tất việc tự thực thi và đăng ký phần của chúng với API của BBS.

Tăng và giảm chức năng

Các hệ điều hành cũ như DOS dùng BIOS để thực thi hầu hết các thao tác xuất nhập trên máy PC. Với sự xuất hiện của các hệ điều hành mới hơn như Microsoft Windows, Linux, BIOS gần như cơ bản chỉ dùng để cung cấp cài đặt khởi động phần cứng và khởi động mồi. Một khi đã chạy được, hệ điều hành ít khi phụ thuộc vào BIOS.
Trong những năm gần đây, nhờ các hệ thống thiết kế như ACPI, BIOS nhận thêm nhiều chức năng phức tạp, chẳng hạn các khía cạnh của quản lý năng lượng, cắm nóng (hotplug), quản lý nhiệt độ... v.v. Điều này dẫn tới đổi mới trách vụ của BIOS thông qua các nhà sản xuất hệ điều hành, và độ phức tạp của mã BIOS cũng tăng lên.

Hạn chế của BIOS

Sau hơn 30 năm hoạt động trong hầu hết PC trên thế giới, BIOS dần trở nên lỗi thời, bộc lộ nhiều hạn chế. Một ví dụ, BIOS chỉ có 1.024 KB (Kilobyte) dung lượng thực thi. Điều đó có nghĩa là BIOS gặp khó khăn trong việc khởi động các thiết bị ngoại vi đa giao tiếp qua các cổng như USB, eSATA, ThunderBolt,…, và các bộ điều khiển trên một chiếc PC đời mới. Đặc biệt là BIOS không thể thực thi khởi động các thiết bị trong vòng 30 giây sau khi bật công tắc để sẵn sàng cho quá trình nạp hệ điều hành trên máy tính.
BIOS cũng không thể khởi động từ các đĩa cứng với dung lượng lớn hơn 2,19TB (terabyte). Giới hạn này là do hạn chế từ Bản ghi khởi động chủ (MBR - Master Boot Record) trong phần cung mồi (sector 0). Trong BIOS MBR, dung lượng cực đại cho một ổ đĩa bằng 2³² x 512byte (tối đa 2³² sector; kích thước mỗi sector là 512 byte), tức tương đương với 2,19TB. Đây là một "lược đồ" địa chỉ cho ổ đĩa cứng đời cũ. Nghĩa là, máy tính của bạn không thể khởi động từ các ổ đĩa cứng dung lượng lớn hơn 2,2TB.

BIOS trong thương vụ

Hầu hết các nhà cung cấp bo mạch chính PC mua quyền sử dụng một "cốt lõi" BIOS và bộ công cụ từ các hãng thương mại, nơi đã tạo ra và bảo trì các "cốt lõi" đó. Sau đó, các nhà máy sản xuất bo mạch chính sẽ điều chỉnh BIOS này cho hợp với phần cứng của họ - vì lý do này, việc cập nhật các BIOS thường được tiếp nhận trực tiếp từ các hãng chế tạo main.