---
# System prepended metadata

title: BIOS 與 CMOS 關係

---

# BIOS做的事情與步驟

BIOS為基本輸入輸出系統（Basic Input Output System）的簡稱,是==固化==在計算機主板只讀儲存裝置==ROM==（Read-Only Memory）晶片上的一組程序代碼 ， 不用供電即可使資料不會消失。

參考資料:
> [RAM 與 ROM 之間的差異](https://www.crucial.tw/articles/about-memory/what-is-the-difference-between-ram-and-rom)

BIOS為計算機開機啟動後執行的第一個程序，其保存最重要的
1. 基本輸入輸出的程序
2. 系統設置信息
3. 開機上電自檢程序
4. 系統啟動自檢程序

## BIOS主要有以下功能及作用：

### POST上電自檢及初始化程序：
![](https://hackmd.io/_uploads/HJpXuwuFn.png)

硬體設備包括CPU、640K基本內存（640K BASE MEMORY）、1MB以上擴展內存（EXTEND MEMORY）、 ROM、主板、CMOS RAM晶片、序列埠(Serial port)、並列埠（Parallel Port）、顯卡、软盘子系统、硬盘子系统、鍵盤等。

BIOS報錯聲音對應連結：https://baike.baidu.com/item/BIOS%E6%8A%A5%E8%AD%A6%E5%A3%B0/4231622?fr=aladdin

POST過程會非常快速，使用者幾乎感覺不出來。在POST過程中，BIOS也會查找顯卡的BIOS，並且調用顯卡的BIOS代碼，由顯卡BIOS去初始化顯卡，這個時候顯示器一般會顯示一些初始化信息，同時系統BIOS也會去查找其它設備的BIOS，分別調用對應的初始化代碼來初始化設備。

:::info
软盘、硬盘都是硬碟的一部分，此處還需要查一些資料
:::

參考資料:
> [软盘和硬盘的区别](https://www.eefocus.com/e/523313.html)
> [如何選擇：傳統硬碟或固態硬碟](https://www.intel.com.tw/content/www/tw/zh/gaming/resources/ssd-v-hdd.html)
> [初步介紹固態硬碟的儲存原理](https://www.computerdiy.com.tw/introduce-ssd/)
> [640K基本內存](https://www.initroot.com/tutorial/linuxbasic/29_computer/computerbootmemorylayout.html)

### 加載操作系統啟動程序bootloader :

POST自檢成功後，BIOS會把控制權轉交給下一階段的啟動程序。BIOS藉由一個外部儲存設備的啟動排序(排序後，越前面的設備其優先權越高)，而此排序稱為啟動順序（Boot Sequence）。


開機啟動過程中可以通過快捷鍵進入BIOS設置界面，在裡面可以設置設備的啟動順序，並可設置信息存進CMOS裡。

BIOS根據系統CMOS中設置的啟動順序搜尋軟硬盤驅動器及唯讀記憶光碟(CD-ROM)、網絡服務器等有效的啟動設備， 將啟動設備(通常是磁盤)相對0磁道0扇區上的操作系統引導啟動程序bootloader讀入內存並運行， 最後系統控制權交給bootloader，由bootloader完成操作系統的加載啟動；
### BIOS中斷服務程序：
BIOS告訴CPU各硬體設備的中斷號(IRQ number)，當用戶發出使用某個設備的指令後，CPU根據中斷號使用相應的硬體完成工作，再根據中斷號跳回原來的工作。
### IO服務程序：
BIOS直接與計算機的輸入輸出IO(Input/Output)設備打交道，需要加載I/O驅動程序。通過特定的數據端口發出命令，傳送或接收各種外部設備數據，實現軟件程序對硬件的直接操作；
### CMOS設置讀取程序：
引導過程中，可以通過特殊熱鍵進行系統設置，設置信息存入CMOS RAM中。硬件設備的配置情況存放在一塊可讀寫的CMOS RAM芯片中的，CMOS為一小塊特殊的RAM，由主板後備電池供電以保證CMOS信息在關機後不會丟失。 CMOS中保存著系統CPU、軟硬盤驅動器、顯示器、鍵盤等設備信息。如果CMOS中的配置信息不正確，會導致系統性能降低、設備無法識別等各種系統軟硬件故障；

:::info

CMOS主要的功能為記錄主機板上面的重要參數, 包括
1. 系統時間
2. CPU電壓與頻率
3. 設備的I/O地址與IRQ等

因為CMOS中的data在斷電後會消失，所以主機板上會有一顆按鈕電池給CMOS供電

BIOS是寫入到主機板上某一塊flash或EEPROM的程序,可以在開機時執行以加載CMOS中的參數, 並嘗試加載調用儲存裝置中的開機程序,進一步進入操作系統當中
:::

> [BIOS和CMOS](https://www.initroot.com/linuxintroduction/computerbioscmos.html#bios)
> [drawio(圖形線條3pt、箭頭4pt、文字24pt)](https://app.diagrams.net/)