Thường rất khó cho mọi người hiểu rõ sự khác biệt giữa phần cứng và phần mềm trong một hệ thống máy tính cá nhân. Sự khác biệt là do cả hai có nhiều sự đan xen vào nhau trong thiết kế, cấu tạo và vận hành hệ thống. Hiểu rõ những sự khác biệt này là cơ bản để hiểu được vai trò của BIOS trong hệ thống.
BIOS là hệ thống nhập xất cơ bản (Basic input/output system), bao gồm phần mềm cấp thấp kiểm soát phần cứng hệ thống và đóng vai trò như giao diện chung giữa hệ điều hành và phần cứng. Nhiều người biết thuật ngữ BIOS bằng tên khác – những trình điều khiển thiết bị (device driver), hoặc những trình điều khiển (driver). Nói một cách khác, BIOS là những trình điều khiển theo đúng nghĩa của nó. BIOS về cơ bản là sự kết nối giữa phần mềm và phần cứng trong một hệ thống.
BIOS chạy trong bộ nhớ bao gồm tất cả trình điều khiển khác nhau cho phần cứng đối với hệ điều hành. BIOS được so sánh với phần mềm bình thường trong đó một số trình điều khiển được cài trước vào bộ nhớ chỉ đọc (ROM: Read Only Memory) và một số được cài vào RAM từ đĩa.
•BIOS trong một PC đến từ ba nguồn có thể:
•ROM bo mạch chủ.
•Những ROM card thiết bị tiếp hợp (như là cái được tìm thấy trên card video)
•Được cài vào RAM từ đĩa (những trình điều khiển thiết bị)
Khi một máy tính cá nhân được giới thiệu đầu tiên, phần mềm BIOS chứa đựng tất cả trình điều khiển thiết bị cho toàn bộ hệ thống được ghi chung vào một hay nhiều chip nhớ chỉ đọc (ROM) ổn định (Nonvolatile nghĩa là chúng duy trì dữ liệu ngay cả khi nguồn bị tắt) và được đặt trên bo mạch chủ. Về bản chất, các trình điều khiển này độc lập, được nạp trước vào bộ nhớ và có thể truy xuất bất cứ khi nào máy tính khởi động.
Các chip ROM này cũng chứa đựng chương trình tự kiểm tra khi bật nguồn (POST: power-on self test) và bộ nạp chương trình tự mồi (bootstrap loader). Chương trình tự mồi này được thiết kế để khởi động việc tải một hệ điều hành bằng cách kiểm tra và đọc rãnh ghi khởi động (boot sector) từ một ổ đĩa mềm, nếu không thực hiện được thì dùng ổ đĩa cứng. Sau khi hệ điều hành được tải, nó có thể gọi thường trình cấp thấp (những trình điều khiển thiết bị) trong BIOS để tương tác với phần cứng hệ thống. Ngay lúc ban đầu, tất cả trình điều khiển thiết bị cần thiết trong BIOS được chứa trong ROM bo mạch chủ. Nó bao gồm những trình điều khiển thiết bị cho bàn phím, các thiết bị tiếp hợp MDA/CGA, các cổng serial/parallel, bộ điều khiển ổ đĩa mềm, bộ điều khiển ổ đĩa cứng, cần điều khiển và dồng hồ.
Khi hệ điều hành đã được tải về, bạn không cần phải nạp thêm trình điều khiển để tương tác với các phần cứng vì các trình điều khiển dã được nạp trước trong ROM. Hệ thống sẽ vận hành tốt miễn là bạn không thêm bất kỳ một phần cứng mới nào không có sẵn trình điều khiển trên ROM. Nếu bạn làm điều đó bạn sẽ có hai sự lựa chọn. Nếu phần chứng thêm vào là một card tiếp hợp, card này có thể có một ROM trên bo mạch chủ chứa những trình điều khiển thiết bị cần thiết. ROM bo mạch chủ (motherboard ROM) đã được lập trình để quét ở vùng bộ nhớ định sẵn để tìm ROM của card tiếp hợp và nếu tìm được thì mã của ROM bị quản lý, cơ bản thêm chức năng của ROM vào BIOS hiện hành. Về bản chất thì ROM bo mạch chủ “đồng hóa” bất kỳ ROM card tiếp hợp nào, thêm vào chức năng “tập trung”.
Phương pháp thêm vào các trình điều khiển chỉ quy định cho số mục nhất định như card video cần thực hiện chức năng ngay lập tức khi máy tính được bật nguồn. Mã BIOS trên ROM bo mạch chủ có những trình điều khiển chỉ dành cho những card video bộ điều hợp hiển thị đơn sắc (MDA: monochrome display adapter) và bộ điều hợp hiển thị đồ họa màu (CGA: color graphics adapter) của IBM. Nếu bạn thêm bất kỳ card video nào khác các card này thì các trình điều khiển trên ROM bo mạch chủ sẽ không hỗ trợ nó. Sẽ không là vấn đề nếu card video mới có sẵn những trình điều khiển trong ROM trên bo của chính nó, được kết nối vào BIOS ngay lập tức vào lúc mở nguồn.
Nếu thiết bị không có ROM trên bo kết nối với bus hệ thống chính, có một cách khác để thêm trình điều khiển cần thiết này vào BIOS. Một sự phối hợp được hình thành qua đó trong suốt giai doạn đầu quá trình nạp các tệp tin khởi động MS-DOS (IO.SYS) kiểm tra một tập tin cấu hình (gọi là CONFIG. SYS) định rõ bất kỳ trình điều khiển nạp thêm nào để hỗ trợ phần cứng mới. Tệp tin CONFIG. SYS này, cùng với bất kỳ trình điều khiển nào được chỉ định, được đặt trên ổ đĩa khởi đông. Khi khởi động, chương trình IO. SYS sẽ tải những trình điều khiển này vào bộ nhớ và kết nối chúng vào phần còn lại của BIOS, một lần nữa thêm chứ năng của chúng vào chức năng tập trung. Về bản chất, các trình điều khiển này đã được nạp từ đĩa vào RAM và kết nối kết BIOS, do đó chúng có thể được gọi ra khi cần thiết.
Tại thời điểm này, BIOS đã đầy đủ từ được chứa đựng toàn bộ trong ROM bo mạch chủ, đến có những trình điều khiển thêm vào của ROM card tiếp hợp, đến thậm chí có nhiều tình điều khiển thêm vào sau khi được nạp vào RAM trong suốt quy trình khởi động. Ngày nay BIOS được cấu tạo bởi những chương trình được đặt ở ba vị trí vật lý khác nhau trong hệ thống, và nó có chức năng như một thực thể đơn bởi vì tất cả các chương trình này được kết nối với nhau qua thường trình con của BIOS gọi là những ngắt phần mềm hệ thống (system-of software interrups). Hệ điều hành hay một chương trình ứng dụng cần thiết sẽ làm việc với một phần cứng cụ thể (cho ví dụ, đọc từ ổ đĩa CD-ROM) tạo thành một cuộc gọi điến một ngắt phần mềm cụ thể, và sau đó bảng vector ngắt dẫn cuộc gọi tới phần cụ thể của BIOS (nghĩa là trình điều khiển cụ thể) cho chính thiết bị được gọi. Không thành vấn đề nếu trình điều khiển này nằm trên ROM bo mạch chủ. ROM card tiếp hợp, hay RAM. Miễn là trong phạm vi chịu ảnh hưởng của hệ thống, bộ nhớ là bộ nhớ, và miễn là thường trình tồn tại một địa chỉ của bộ nhớ được biết, nó có thể gọi.
Sự kết hợp của ROM bo mạch chủ, BIOS card tiếp hợp và các trình điều khiển thiết bị được nạp từ đĩa vào RAM đóng góp cho BIOS như một tổng thể. Phần BIOS được chứ đựng trong những chip ROM trên bo mạch chủ và trên một vài card tiếp hợp, đôi khi được gọi là chương trình cở sở (firmware), là tên đặt cho phần mềm được chứa trong các chip ROM hơn là trên đĩa. Hiển nhiên, sau khi bạn tắt hệ thống, những trình điều khiển trên ROM ổn định sẽ giữ nguyên vẹn, nhưng những cái trên ROM không ổn định sẽ bị xóa bỏ tức thời. Tuy nhiền đó không phải là vấn đề bởi vì lần sau hệ thống bật nguồn lại, đi qua quy trinh khởi động và lần nữa lại nạp các trình điều khiển cần thiết từ đĩa.
Cùng với sự phát triền của máy tình cá nhân, càng nhiều phụ kiện và phần cứng mới thêm vào hệ thống. Điều này đồng nghĩa với càng nhiều trình điều khiển được nạp để hỗ trợ cho phần cứng mới, việc thêm vào những trình điều khiển mới vào ROM bo mạch chủ thì khó khăn do các chip ROM bị khá cố định (khó thay đổi) và khoảng bộ nhớ bị giới hạn. Kiến trúc của máy tính cá nhân chỉ cho phép 128KB cho ROM bo mạch chủ, và phần lớn kiến trúc được sử dụng bới các trình điều khiển hiện hữu, POST, chương trình BIOS Setup và tất nhiên có bộ nạp chương trình tự mồi (bootstrap loader). Đặt những trình điều khiển trên các ROM card tiếp hợp cũng mắc tiền, và chỉ có 128KB được chỉ định cho tất cả ROM card tiếp hợp, không kể đến trên thực tế card video chiếm 32KB. Do đó, hầu hết các công ty phát triển phần cứng mới cho máy tính cá nhân chỉ đơn giản viết những trình điều khiển được thiết kế để nạp vào RAM trong suốt quy trình khởi động.
Theo thời gian, càng nhiều trình điều khiển được nạp từ đĩa trong một vài trường hợp, ngày cả những trình điều khiển đang được thay thế những trình điều khiển trên bo mạch chủ. Ví dụ, Windows 95 đã giới thiệ một chương trình điều khiển ở cứng mới sử dụng mã 32 bit, được thay thế trình điều khiển 16 bit đang tồn tại trên ROM bo mạch chủ. Mặt khác, tình điều khiển ổ cứng 16 bit trên ROM bo mạch chủ được sử dụng để bắt đầu nạp hệ điều hành và những trình điều khiển khác, và sau khi trình điều khiển 32 bit được nạp vào RAM trong suốt quy trình khới động, bảng vector được thay đổi để chỉ vào trình điều khiển 32 bit trong RAM thay vì trình điều khiển 16 bit trong ROM. Windows 95, 98 và Me cho phép sử dụng cả hai trình điều khiển 16 bit và 32 bit, làm dễ dàng hơn quá trình chuyển đổi đến vận hành 32 bit hoàn toàn.
Khi các phiên bản 32bit và 64 bit hiện đại của Windows được chạy, các trình điều khiển 32 bit và 64 bit tương ứng được nạp từ đĩa để thay thể tất cả trình điều khiển trong ROM bo mạch chủ. Các hệ điều hành hiện đại không thể dùng bất kỳ trình điều khiển 16 bit trong các ROM bo mạch chủ hay bất kỳ ROM card tiếp hợp nào và chỉ phải sử dụng những trình điều khiển 32 bit hay 64 bit, tùy thuộc vào phên bản. Mã 16 bit trong ROM bo mạch chủ chỉ được dùng để lấy chức năng hệ thống vừa đủ để các trình điều khiển và hệ điều hành được nạp, tại thời điểm nào chugns ta tiếp quản. Mặt khác một khi windows được nạp, BIOS (nghĩa là tất cả trình điều khiển) về cơ bản cư trú toàn bộ trên RAM. ROM bo mạch chủ tồn tại chỉ để hệ thống khởi động, khởi chạy phần cứng cụ thể, cho bảo mật trong các mật khẩu khi bật hệ thống và để thự hiện một vài cấu hình ban đầu cơ bản. Một khi hệ điều hành được nạp, toàn bộ trình điều khiển mới tiếp tục.
Một hệ thống máy tính cá nhân có thể được mô tả như là một chuỗi các lớp một số phần cứng và một số phần mềm tiếp xúc với nhau theo nghĩa cơ bản nhất, bạn có thể chia một máy tính cá nhân thành 4 lớp cơ bản, mỗi lớp đó có thể phân ra thành các lớp con. Hình 5.1 thể hiện 4 lớp của một máy tính cá nhân điển hình.
Mục đích của thiết kế phân tầng là cho phép một hẹ điều hành định sẵn và những ứng dụng có khả năng chạy trên phần cứng khác nhau. Hình 5.1 chỉ rõ làm cách nào để hai máy khác nhau với những phần cứng khác nhau có thể sử dụng các bộ trình điều khiển (BIOS) khác nhau để giao tiếp phần cứng cụ thể này với một hệ điều hành và những ứng dụng. Do đó, hai máy với những bộ xử lý, môi trường lưu trữ, những bộ hiển thị video… khác nhau có thể chạy cùng hệ điều hành và những ứng dụng.
Trong kiến trúc phân tầng này, những chương trình phần mềm ứng dụng làm việc với hệ điều hành thông qua cái gọi là Giao diện lập trình ứng dụng (API: Application programming interface). API thay đổi tùy thuộc vào hệ điều hành bạn đang sử dụng và bao gồm các lệnh và chức năng mà hệ điều hành có thể thực thi cho một ứng dụng. Cho ví dụ. Một ứng dụng có thể yêu cầu hệ điều hành nạp hay lưu trữ một tệp tin. Điều này ngăn chặn ứng dụng tự nó từ việc phải biết làm cách nào đọc ổ đĩa, gửi dữ liệu đến máy in, hay thực hiện bất cứ trong nhiều chức năng mà hệ điều hành có thể cung cấp. Bởi vì những ứng dụng là hoàn toàn cách ly với phần cứng, thực chất bạn đang chạy cùng những ứng dụng trên những máy khác nhau; ứng dụng được thiết kế để làm việc với hệ điều hanh hơn là làm việc với phần cứng.
Hệ điều hành sau đó sẽ tiếp xúc hay là việc với BIOS hay tầng trình điều khiển. BIOS bao gồm tất cả chương trình trình điều khiển riêng biệt hoạt đông giữa hệ điều hành và phần cứng thực. Như vậy, hệ điều hành sẽ không bao giờ làm việc trực tiếp với phần cứng; thay vào đó nó phải luôn thông qua những trình điều khiển thích hợp. Điều này cho một phương pháp cố định để làm việc với phần cứng. Thường trách nhiêm của nhà sản xuất phần cứng là cung cấp các trình điều khiển cho phần cứng của họ. Bởi vì những trình điều khiển này phải làm việc với cả hệ điều hành lẫn phần cứng, các trình điều khiển này tiêu biể là hoạt động hệ thống cụ thể. Do đó, các công ty chế tạo phần cứng phải cung cấp những trình điều khiển khác nhau cho các hệ điều hành khác nhau. Do nhiều hệ điều hành dùng các giao diện nội bộ giống nhau, một số trình điều khiển có thể vạn hành dưới nhiều hẹ điều hành. Cho ví dụ, các trình điều khiển trong phiên bản 32/64 bit cảu Windows 7 sẽ thường hoạt động trong phiên bản tương ứng của Vista; các trình điều khiển làm việc trong Windows XP sẽ thường hoạt động trong phiên bản Windows 2000, Windows NT; các trình điều khiển làm việc trong Windowns Me sẽ thường hoạt động trong phiên phiên bản Windows 95, Windows 98. Đó là vì Windows 7 và Vista về cơ bản là những biến đổi trên hệ điều hành cùng nhân, cũng như trong windows XP, Windows 2000 và NT, Windows 95, 98 và Me. Mặc dùng là Windows 7 và Vista trên nền Windows NT nhưng model trình điều khiển này thay đổi dủ cho chugns không thể dùng cũng những trình điều khiển như các hệ điều hành XP, hệ điều hành trên nền NT đầu tiên.
Bời vì tầng BIOS giống như hệ điều hành bất kể là phần cứng nào ở trên nó (hay ở dưới, tùy thuộc và phan điển của bạn), cùng một số hệ điều hành có thể chạy trên các hệ thống khác nhau, cho ví dụ, bạn có thể chạy Windows trên hai hệ thống với những bộ xử lý, nhuwngxoor cứng, những bộ điều hợp video… khác nhau, lúc này Windows sẽ tìm và nhận thấy sự giống nhau gần như hoàn toàn trên cả hai hệ htoongs. Đó là bởi vì những trình điều khiển cung cấp cùng cách chức năng cơ bản bất kể phần cứng cụ thể nào được sử dụng.
Như bạn thấy hình 5.1 những lớp của các hệ điều hành và ứng dụng giống hệt nhau từ hệ thống này qua hệ thống khác, nhưng phần cứng khác nhau hoàn toàn. Bởi vì BIOS bao gồm những trình điều khiển hoạt động để nối keets phần cứng với phần mềm, lớp BIOS thích ứng với phần cứng dauy nhất trong một giới hạn nhưng xem giống như một hệ điều hành ở giới hạn khác.
Lớp phần cứng là nới khu trú phần lớn các khác biệt giữa các hệ thống khác nhau. Nó phụ thuộc vào BIOS để lọc những khác biệt trong phần cứng duy nhất mà từ đó hệ điều hành định sẵn (và tiếp đó là ứng dụng) có thể chạy.
BIOS và RAM CMOS
Nhiều người hay nhầm lẫn BIOS với RAM CMOS trong cùng hệ thống. Sự nhầm lẫn này phát xuất từ thực tế là chương trình setup trên BIOS được sử dụng để lập ra và lưu trữ những thiết lập cấu hình trong RAM CMOS. Trên thực tế chúng là hai thành phần tách biệt.
BIOS trên bo mạch chủ được lưu trữ trong chip ROM cố định. Cũng vậy trên bo mạch chủ một chip gọi là chip RTC/NVRAM, tên gọi tắt của đồng hồ thời gian thực/bộ nhớ ổn định (real-time clock/nonvolatile memory). Đây là nơi các thông tin thiết lập BIOS được lưu giữ và nó thực sự là một chip dồng hồ với một ít byte bộ nhớ cộng thêm vào. Nó thường được gọi là chip CMOS bỏi vì nó được làm để sử dụng công nghệ CMOS (complementary metal-oxide semiconductor).
Ví dụ đầu tiên của việ này được sử dụng trên PC là chip Mororola MC146818, có 64 byte dung lượng lưu trữ, trong đó 14 byte được dành riêng cho chức năng đồng hồ, 50 byte còn lại để lưu trữ các thiết lập BIOS Setup. Mặc dùn được gọi là ổn định, chip này thực ra là không ổn định, nghĩa là không có nguồn điện, các thiết lập thời gian/ ngày tháng và dữ liệu trong phần RAM sẽ bị xóa trên thực tế. Chip này được nhiều người xem là ổn định vì nó được thiết kế sử dụng công nghệ CMOS, kết quả là một con chip vẫn đì hỏi phải có nguồn điện nhưng ít hơn so với các chip khác. Một pin nhỏ có thể cung cấp nguồn điện đó khi hệ thống tắt nguồn. Chip đồng hồ nguồn pin/ bộ nhớ thường được xem như chip RAM CMOS; mặc dù có phần sai lạc (hầu hết các con chip hiện đại đều sử dụng một trên 1micro amp (1 phần triệu của một amp), do đó chúng dùng rất ít nguồn điện pin để vận hành. Hầu hết các phân tử pin lithium dạng đồng tiền có thể dùng trong 5 năm hay nhiều hơn trước khi pin chai và dữ liệu lưu trữ (bao gồm ngày và giờ) sẽ bị mất.
Khi bạn vào BIOS setup, cấu hình tham số cho ổ đĩa cứng hay các thiết lập BIOS setup khác và lưu chúng, những thiết lập này được ghi vào vùng lưu trữ trong chip RTC/NVRAM (hayconf gọi là chip RAM CMOS). Mỗi lần hệ thống của bạn được khỏi động, nó đọc các tham số được lưu trữ trong chip RAM CMOS để quyết định hệ thống nên được cấu hình bằng cách nào. Mối quan hệ tồn tại giữa BIOS và RAM CMOS nhưng chúng là hai phần hoàn toàn khác nhau của hệ thống. Một số hệ thống dùng những phên bản đặc biệt của những chip này do Dallas Semiconductor, Benchmarq hay Odin (như là DS12885 và DS12887) chế tạo bao gồm cả chip RTC/NVRAM và pin trong một thành phần. Tuy nhiên, ngay nay hiếm có những phần này trong các hệ thống hiện đại. Mặc dù chip CMOS RAM xuát phát như một chip riêng biệt trên bo mạch chủ, trong những hệ thống hiên jđại nó không còn là chip riêng nữa, thay vì vậy được bao gồm như một trong những chức nawg trong South Bridge hay thành phần Trung tâm bộ điều khiển I/O (I/O Controller Hub) của chipset bo mạch chủ.
BIOS bo mạch chủ
Tất cả các bo mạch chủ đều có một chip đặc biệt chứ phần mềm được gọi là ROM BIOS. Chip ROM này chứ các chương trình khỏi đông jcaf các trình điều khiển được sử dụng trong chạy chương trình và đóng vai trò như một giao diện đối với phần cứng cơ bản trong hệ thống. Khi bạn mở một hệ thống, quy trình POST (power-on self test) trong BIOS cũng sẽ kiểm tra các phần chính của hệ thống. Thêm vào đó, bạn cũng có thể chạy chương trình thiết lập để lưu trữ dữ liệ cấu hình hệ thống trên bộ nhớ CMOS, bộ nhớ được cung cấp nguồn từ pin trên bo mạch chủ. RAM CMOS này thường được gọi là NVRAM (Nonvolatele RAM) bời vì nó chạy khoảng 1 phần triệu của một amp dùng điện hiện hữu và lưu trữ dữ liệu trong nhiều năm khi được cung cấp nguồn điện từ pin Lithium nhỏ.
ROM bo mạch chủ chứ tập hợp những chương trình được nhúng vào trong một hay nhiều con chip, tùy thuộc vào thiết kế máy tính. Tập hợp đó được nạp đầu tiên khi bạn khỏi động máy tính, thậm chí trước cả hệ điều hành. Một cách đơn giản, BIOS trên hầu hết máy tính cá nhân có 4 chứ năng chính:
Tự kiểm tra bật hệ thông (POST: Power-on self tét) – POST kiểm tra bộ xử lý, bộ nhớ, chipset, bộ điều hợp video, các bộ điều khiển đĩa, các ổ đĩa, bàn phím, và các thành phần quan trọng khác trong máy tính.
Cài đặt (setup) – Cấu hình hệ thống và chương trình thiết lập thường là một chương trình điều khiển bằng trình đơn (menu-driven program) được kích hoạt bằng cách nhấn vào một nút đặc biệt trong suốt quá trình POST, và nó cho phép bạn cấu hình các thiết lập của bo mạch chủ và chipset cùng với ngày giờ, mật khẩu, các ổ đĩa, các thiết lập các hệ thống cơ bản khác. Bạn cũng có thể kiểm soát các thiết lập quản lý nguồn và chuỗi đĩa khởi động từ BIOS Setup, và trên vài hệ thống, bạn cũng có thể cấu hình các thiết lập định thời gian CPU và đồng hồ hệ số nhân. Một số hệ thống cũ 286 và 386 không có chương trình thiết lập trên ROM và đòi hỏi bạn khởi động từ đĩa khởi động đặc biệt và một số hệ thống mới hơn sử dụng ứng dụng trên Windows để truy cập các thiết lập BIOS Setup.
Bộ nạp chương trình tự mồi (Bootstrap loader) – Một thương trình đọc sector vật lý đầu tiên của các ổ đĩa khác nhau tìm kiếm bản ghi khởi động chính (MBR: master bôt record). Nếu có một cái phù hợp tiêu chuẩn tối thiểu nào đó (kết thúc trong các byte ký tự 55aah) được tìm thấy, mã trong đó sẽ được thực thi. Mã chương trình MBR sau đó tiếp tụ quy trình khở động bằng cách đọc sector vật lý đầu tiên của bộ đĩa có thể khởi động, là sự bắt đầu của bản ghi khởi động bộ đĩa (VBR: volume boot record). VBR kế tiếp nạp tệp tin khởi động hệ điều hành trước, thường là IO. SYS (DOS/Windows/9x/Me) hay ntldr (Windows NT/2000/XP), hay bootmgr (Windows 7/Vista). Hệ điều hành nằm trong kiểm soát và tiếp tụ quy trình khởi động.
BIOS (basic input/output system) – Cái này liên quan đến tập hợp các trình điều khiển thực được sử dụng như một giao diện cơ bản giữa hệ điều hành và phần cứng hệ thống được khởi động và chạy. Khi chay DOS hay Windows ở chế độ safe, hầu như bạn chỉ cho chay duy nhất các trình điều khiển BIOS trên ROM bởi vì không có cái nào được tải từ đĩa.
Theo "Nâng cấp và sửa chữa máy tính" Scott Mueller