嗨我是k66,上一篇介紹kernel概念,本篇要來實作,先用assembly寫Kernel.asm,NASM編譯成Kernel.bin,最後寫Kernel.c以...
嗨我是k66,還記得本系列文初衷是做一個開機畫面嚇唬邪惡城主這件事嗎?以做出嚇唬畫面來說Day17已完成XDD但開機畫面而言還不算做完,目前為止我們的bootl...
Linux 與發行版 大家都在討論 Linux,甚至會把 Linux 當作是一個公司發行的商品畫上等號,其實這部份是有區別的,我們要分為 2 個部份來看,一個是...
快速導覽 Demo影片 各章節完整程式碼Github 拯救豬腳城的完整漫畫 引言 嗨我是k66,UEFI網路資源都是一堆文字,學UEFI過程很痛...
Hello大家,連假開始((敲鑼打鼓,最近不知怎麼整天都很餓餒,連假藥去吃點啥好吃的呢?? 今天來講一下怎麼看Ubuntu的Kernel,並且刪除舊的Kerne...
前言 如昨天所說,目前 Gosh 的 prompt 真的太醜了,就只有一個簡單的 >,連路徑都沒有顯示,根本不知道怎麼用 看看隔壁棚的 zsh,不僅該有的...
本系列文的環境狀態,可點擊此連結後花園環境參考 因為昨天安裝了 iterm2 跟 zsh ,所以今天來稍微講講核 ( kernel ) 與殼 ( shell )...
注意:整篇文章極度數學高能!! 沒有把前一篇文章看完的朋友別擔心,我們會在開頭先回顧一下。在一番數學技巧的替換過後,我們的 maximum-margin cla...
單一電腦多 CPU 核心是目前電腦的主流,而多個 CPU 的運作方式可分為不同 CPU 負擔不同工作的非對稱模式 (asymmetrical multi-pro...
Kernel module 跟程式之間的互動主要是透過特定檔案控制、傳送 IOCTL,還有系統呼叫,然而 kernel module 並不只有回應 user s...
在 Linux 中如果要在預定的時間內去執行特定動作,我們通常會透過設定 crontab,好讓他依照排定的時間去執行。可是如果我們想要排定的工作是某個 kern...
tty (Teletype) 指的是跟系統溝通的輸出入介面,它可以是連接主機的 terminal (螢幕 + 鍵盤)、X-Window,或是網路連結的 ssh/...
允許 sleep/awaken 動作的 process 稱之為 blocking I/O,反之不允許 sleep 動作的稱之為 non-blocking I/O...
當一個 sleep 的 process 再度被喚醒之後,有幾件事情也是必須注意的:我們無法預期 process 會 sleep 多久,也就是說 process...
當 driver 無法當下回應 user space 的動作要求時,譬如說設備正在忙碌,或者是 buffer 滿了暫時無法寫入等等,driver 都必須讓 pr...
因為之前介紹的網站 (http://www.tldp.org/LDP/lkmpg/2.6/html/x892.html) 上所提供的例子有錯,所以在這邊舉另一個...
因為原本參考的資料其例子有錯,所以特此列出來修正,同時說明實作系統呼叫的方法。 原本的例子 (syscall.c): http://www.tldp.org/L...
程式送出中斷來執行系統呼叫的時候,會帶一個系統呼叫標號,以指出將要執行的 kernel 動作是甚麼。然後 kernel 會去查表 (sys_call_table...
所以程式與 kernel 進行溝通的動作,最後都是以系統呼叫 (system call) 的方式來進行,譬如程式需要開啟一個檔案、建立一個新的子行程、或是要求一...
在 Linux 中,所有設備在 kernel 中皆有一個 device 檔來代表他,而要透過該設備進行輸出或輸出的動作時,也就相當於對他的 device fil...
上回介紹如何建立並從 /proc 檔案系統中讀取資料,這次來介紹如何寫入到自建的 /proc 檔案中。讀跟寫的基本動作一樣,都是令讀或寫的動作去執行對應的函數。...
file_operations 資料結構是 Linux character device 的核心,程式呼叫到 kernel moduel 的動作時,實際上都是引...
在 Linux 中 /proc 檔案系統可以用來做為 kernel module 傳送訊息給程式之用,也能夠記錄一些 kernel 的狀態,如 /proc/mo...
要移除使用中的 kernel module 應該要設法避免有其他程式正在使用他,因為這將會導致存取不到內容而出錯、或者引用到錯誤的 module 上。 之前採用...
在系統中新增一個 driver,即代表是在 kernel 中註冊一個位置,此刻會在 /dev/ 目錄底下建立一個檔案,同時賦予這個 driver 相對的 mao...
最常見的 kernel module 就是 device driver了,也就是各種硬體 (顯示卡、磁碟、serial port 等等) 的驅動程式。像是在 L...
當開始要執行一個程式的時候 (process 建立了),kernel 就會為這個 process 準備一塊記憶體讓他儲存執行程式所需要的變數、資料、stack...
之前在談 function library 與 system call 的時候就有提到,位甚麼在寫 kernel module 時,不像寫一般程式一樣,需要對引...
程式不外乎就是要利用系統的資源去完成他的指令動作,因為 Linux 是多功的作業系統,所以多個程式同時去競爭使用有限的 (如記憶體) 或是同一個 (對同一磁碟進...
高階的 function library,是屬於 user mode 的函數,是給程式設計師方便使用的 API。而真正在 kernel 中運行的是低階的 sys...