iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
自我挑戰組

System Software Introduction系列 第 6

System Software - Kernel

  • 分享至 

  • xImage
  •  

Kernel服務system libraries和shell,負責提供system call API給system library或shell使用、會直接對device driver提出服務請求。


https://ithelp.ithome.com.tw/upload/images/20230428/201522982Z1dW3Rl3S.jpg

How to Request Device Driver Service

Kernel會使用device driver提供的API要求device driver的服務
Kernel在啟動之前會先載入基本的device driver才能開始動作,並且會在運作的過程中偵測system上有哪些hardware而一一載入device driver
有些kernel會動態偵測system新增的hardware而載入device diver。 例如: user將滑鼠插入USB孔時,kernel可以偵測到system有新增了滑鼠,所以會把滑鼠的device driver載入,讓滑鼠可以正常使用

How to Service System Library and Shell

Kernel提供system call讓system library與shell取得kernel的服務

Kernel將software的執行環境依照權限、能做的事情分成兩種模式: user mode與kernel mode

Kernel會利用CPU的privilege level設計,控管software可以執行的操作與功能
CPU privilege level: CPU會將指令集區分成不同的權限需求,並且使用不同的模式開放權限,高權限需求的指令無法在低權限的模式中執行。例如: RISC-V CPU有machine mode, supervisor mode, user mode三種privilege level。

User mode: 只能執行包含無關hardware resource管理、CPU狀態變更此類一般指令的function
例如: user mode執行function的可以做DRAM的讀寫,但不可以控制CPU停止處理interrupt。

Kernel mode: 可以執行包含任何指令的software
例如: kernel mode執行的function可以要求kernel做檔案存檔。

Kernel service會運作在kernel mode下,避免未經kernel允許的software取得過高權限而影響其他software的運作

System call是讓software從user mode切換到kernel mode呼叫kernel service,獲得更高權限後可以使用kernel的服務做更多事情

System call是一種software interrupt(軟體中斷),觸發之後會由kernel的interrupt service routine (ISR)接手完成

例如: Linux環境當中,printf這個system library中的function會使用system call-write()讓kernel在kernel mode中完成字串輸出到console上的工作。


上一篇
System Software - Device Driver
下一篇
System Software - System Library
系列文
System Software Introduction30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言