一、實驗準備
在實驗開始之前,需要虛擬化乙個x86-64的cpu硬體平台
使用實驗事先準備的虛擬cpu平台,在ubuntu18.04lts作業系統上依次執行以下命令列
二、實驗過程wget
sudo apt install axel
axel -n 20
xz -d linux-5.4.34.tar.xz
tar -xvf linux-5.4.34.tar
cd linux-5.4.34
patch -p1 < ../mykernel-2.0_for_linux-5.4.34.patch
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev
make defconfig
make -j$(nproc)
sudo apt install qemu
qemu-system-x86_64 -kernel arch/x86/boot/bzimage
以下是配置過程中的部分截圖以及配置完成後的執行截圖
實驗的主體是通過修改目錄 /linux-5.4.34/mykernel下的mymain.c和myinterrupt.c檔案
從而實現多程序與程序切換的功能
首先我們需要為新檔案寫個頭檔案mypcb.h
該標頭檔案定義了執行緒和程序控制塊pcb的結構
新的mymain.c和myinterrupt.c檔案如下:
三、實驗結果
新增多程序與程序排程模組之後
對原有的虛擬cpu平台重新編譯
再次執行的結果如下
四、實驗感想
通過此次實驗,首先我對cpu中的各個暫存器的功能有了更深的印象;其次通過手動新增巢狀組合語言的c**,使我對程序切換時相關堆疊的操作以及暫存器內容的變動有了更深入的理解;最後,這次實驗使我對linux系統核心的認識更加清晰,不再有畏難情緒,也對作業系統的核心有了更高的興趣。
基於mykernel 2 0編寫乙個作業系統核心
一 配置mykernel 2.0 實驗環境 vmware 虛擬機器ubuntu 18.04.1 lts amd64 配置命令 tar.xz 解壓 tar xvf linux 5.4.34 tar cd linux 5.4.34 patch p1 mykernel 2.0 for linux 5.4....
基於全志20平板方案(一)
全志雙核a20是2013年3月推出的一款移動應用處理器,主要針對平板電腦及智慧型電視領域。初識全志a20,只因筆者一時熱 nao 心 chou 關注了一下當前火熱的開源硬體,忍痛在某寶的官方途徑購買了一塊cubietruck開發板。如下圖 筆者坐等收貨的那幾天,一直yy著自己單手托起一塊紅色心臟,接...
基於PYQT編寫乙個人臉識別軟體
9月份時,大四狗都忙著 保研大戰 在等待結果的那幾天,我就自己寫了乙個人臉識別的小軟體 打發時間 軟體基於python語言編寫,用了pyqt還有face recognition庫。有關face recognition庫的應用,我在之前的部落格中介紹了如何使用。應用乙個基於python的開源人臉識別庫...