999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

結合系統工具及ChatGPT等大語言模型的操作系統教學探索

2023-04-29 00:00:00曾英佩
計算機時代 2023年12期

摘" 要: 操作系統課程涉及內容較廣,有技術深度和難度,教學上有一定的挑戰,同時,在ChatGPT等大語言模型流行的當下,如何在教學時應對以及利用也值得討論。文章探討如何結合一些系統工具來幫助學生理解Linux操作系統,例如利用QEMU仿真工具來調試內核,用Crash工具來動態查看內核數據。并且探討如何在學生使用ChatGPT等工具輔助操作系統實驗編程時進行有效的考察。

關鍵詞: 操作系統; 系統工具; QEMU; Crash; ChatGPT

中圖分類號:G642;TP311.5" " " " " 文獻標識碼:A" " "文章編號:1006-8226(2023)12-201-04

Discussion on operating system teaching in the context of system

tools and large language models like ChatGPT

Zeng Yingpei

(School of Cyberspace, Hangzhou Dianzi University, Hangzhou, Zhejiang 310018, China)

Abstract: The Operating System course poses certain challenges in achieving effective teaching outcomes due to its broad content and technical depth. In the current era of popular large language models like ChatGPT, it is worthwhile to discuss how to address and utilize them. This paper aims to explore the integration of system tools to aid students in understanding Linux operating systems. Examples include using the QEMU simulation tool for kernel debugging and the Crash tool for dynamic kernel data analysis. It also discusses how to design effective assessments in the experiments of operating system courses when students utilize ChatGPT or similar models as programming assistants.

Key words: operating system; system tool; QEMU; Crash; ChatGPT

0 引言

操作系統課程是計算機相關專業中一門重要的課程。它涵蓋了操作系統中許多核心概念和原理,如進程管理、內存管理、文件系統等。同時,它還需要學生理解底層的計算機體系結構、軟件編譯和運行過程等知識。這些內涵豐富且復雜的內容,使得有效地講授這門課程面臨著較大的挑戰。一些相關工作也分別從課程思政的引入[1-2]和輔助學習系統如雨課堂的使用[3]等角度提出了一些新方法來助力操作系統的教學。

在授課實踐中我們發現,對現代操作系統內部的真實情況不了解,理論知識與實踐脫節是造成學生學習的不自信和畏難情緒的重要原因,進而會嚴重影響教學效果。英國作家霍華德·菲利普斯·洛夫克拉夫特也曾經說過“恐懼源于未知”。對于學生來說,理解Linux操作系統的內部流程并不容易,它往往被視為一個黑盒,即使教材或參考書籍中有一些系統的具體描述,也無法對所有情況做出解釋。

我們提出利用一些系統工具,來幫助學生自行探索和理解操作系統,從而提高學習效果。比如利用動態仿真工具QEMU來調試自己新編譯的內核,學生可以在任何感興趣的地方設定斷點,來中斷運行過程并進行查看,而利用Crash工具則可以實時動態地查看當前內核的各種運行數據。與一些相關工作[4]不同的是我們側重內核而不是設備的模擬仿真。

另外隨著ChatGPT等大語言模型的流行,在操作系統課程設計課(即實驗課)中,學生也會用它們進行輔助編程。我們需要應對并仍然對課程實驗進行有效的考查。目前我們主要通過要求題目做出創新來實現目的。

1 使用QEMU調試內核

通過在線網站或者Source Insight軟件只能靜態查看內核代碼,但是動態調試可以在另一維度上更深入地了解內核運行。使用QEMU和kgdb調試內核各有優勢,QEMU調試內核的優勢是跨平臺支持和靈活性高,而kgdb調試內核的優勢是實時調試和直接訪問硬件。對于學習操作系統來說,僅用一臺機器就可以方便調試的QEMU方式顯然更加合適。

1.1 調試前準備

在調試前需要準備環境和必要的文件,主要包括以下準備。

安裝QEMU、gdb。首先,需要在Linux系統中安裝QEMU和gdb,均以最新支持的版本為佳。

編譯內核。接下來,需要下載Linux內核源碼并編譯內核,確保生成了調試符號信息,并啟用CONFIG_GDB_SCRIPTS以生成一些gdb輔助腳本。一般默認配置已是如此配置的。

配置文件系統。雖然僅用單個可執行文件也可以作為rootfs,但是啟動后不方便使用,還是采用busybox這種包含一整套命令的文件系統為佳,即編譯生成出包含整個工具集的啟動內存盤initrd,如命名為rootfs.img。

1.2 進行調試

在調試時,需要用到兩個控制臺窗口,一個用于啟動QEMU(QEMU同時額外會彈出一個窗口),另一個用于啟動gdb。

啟動QEMU。啟動時設置為-S,即讓其等待gdb連接并不立刻執行,同時設定內核啟動參數為nokaslr,讓其禁用地址隨機化。比如筆者測試啟動參數為“qemu-system-x86_64 -kernel ../kernal/linux-5.4.11/arch/x86/boot/bzImage -initrd ./rootfs.img -append \"root=/dev/ram nokaslr\"" -m 512 -smp 2 -s -S”。

啟動gdb連接QEMU。可以把編譯內核生成的gdb腳本加入到gdbinit中,如筆者加入add-auto-load-safe-path /home/zengyingpei/Documents/kernal/linux-5.4.11/scripts/gdb/vmlinux-gdb.py 到~/.gdbinit中,這樣會引入一些方便的命令到gdb中使用。在另一個控制臺窗口啟動gdb并連接QEMU,加載有符號的內核vmlinux后。既可以如使用gdb一樣進行調試。

比如可以用bstart_kernel在啟動時的一個關鍵函數上下斷點。在命中后可以繼續調試。

可以用apropos lx命令看到所有加了腳本后獲得的額外的調試內核命令(lx打頭)。利用這些命令可以做比如,打印pid為10的進程的task struct:p $lx_task_by_pid(10)。

因為額外彈出的QEMU窗口中會持續輸出內核啟動的信息,此時隨時可以Ctrl+C打斷,查看目前執行棧,如圖1所示。

2 使用Crash查看當前內核數據

Crash工具可以用于交互式分析當前Linux系統運行時,或內核崩潰后生成核心轉儲文件。我們課程中主要使用它分析當前Linux系統運行時。它提供的功能包括查看和修改內存內容,檢查進程和線程的狀態,包括調用棧、等待隊列等,分析內核模塊、設備驅動和文件系統的信息,跟蹤系統調用和中斷處理,分析網絡連接、文件描述符等系統資源等等。Crash也需要與當前運行內核對應的帶符號內核文件才能運行,一般編譯安裝一次系統內核即可滿足。

我們接下來以Linuxx64架構下地址翻譯過程為例介紹Crash的使用。

Linux x64位內核采用4級頁表(4-level Paging)實現虛擬地址到物理地址的轉換,4級頁表分別是:PGD -gt; PUD -gt; PMD -gt; PTE(內核從4.14版起還支持Intel的5級頁表,物理地址達56位),PGD、PUD、PMD、PTE分別占9位,頁內偏移(Page Offset)占12位,合計48位,頁面大小為4KB,頁表項為8B。準備下面測試程序并編譯為hello:

[// gcc -o hello hello.c

#include lt;stdio.hgt;

#include lt;unistd.hgt;

int main(int argc,char **argv)

{

const char * str = \"HelloWorld!\";

printf(\"%s @ %p\n\",str,str);

pause();

} ]

直接運行hello可以得到其輸出:HelloWorld! @ 0x55fd9ebd1754,該地址為“HelloWorld”字符串的邏輯地址,程序同時并不退出。

在另外一個控制臺窗口啟動Crash。

首先可以直接用Crash的vtop命令查看地址翻譯過程,如:

[crashgt;vtop 0x55fd9ebd1754

VIRTUAL" " "PHYSICAL

55fd9ebd1754" 9ffd3754

PGD: 8f43c558 =gt; bc281067

PUD: bc281fb0 =gt; 41f57067

PMD: 41f577a8 =gt; 40900067

PTE: 40900e88 =gt; 9ffd3025

PAGE: 9ffd3000

… ]

從中除了可以直接看到物理地址0x9ffd3754外,還能看到4個目錄項地址-gt;目錄項值的映射。

另外,還可以利用Crash來手動計算出物理地址。

首先獲得CR3寄存器的值,它保存了頁目錄表的物理地址。由于地址隨機化,目前的page_offset_base為內核起始地址,因此進程的pgd值與page_offset_base相減即可推出該進程CR3的值0x8f43c000。

[crashgt;pxpage_offset_base

page_offset_base = $6 = 0xffff9adac0000000

crashgt;ps | grep hello

3289" 2551" 0" ffff9adafde28000" IN" 0.0" 4504" 1464" hello

crashgt;px ((struct task_struct *)0xffff9adafde28000)-gt;mm-gt;pgd

$8 = (pgd_t *) 0xffff9adb4f43c000

crashgt;px (0xffff9adb4f43c000

crashgt;px (0xffff9adb4f43c000 - 0xffff9adac0000000)

$14 = 0x8f43c000 ]

其次,逐個計算在PGD、PUD、PMD、PTE中目錄項的地址,并讀取出該目錄項內容,其中除低12位外其余為物理頁地址。如計算PGD中目錄項的地址:CR3值+虛擬地址中PGD部分*目錄項大小。讀取對應地址內存中內容,即為該目錄項內容,其中高64-12位為下一個頁目錄表物理塊號:

[crashgt;px (0x00000000bc281000 + 0x1f6*8)

$19 = 0xbc281fb0

crashgt;rd -p" 0xbc281fb0

bc281fb0: 0000000041f57067 gp.A....

//省略PUD、PMD計算

crashgt;px (0x000000009ffd3000 + 0x754)

$22 = 0x9ffd3754

crashgt;rd -p 0x9ffd3754 2

9ffd3754:" 726f576f6c6c6548" 402073250021646c

HelloWorld!.%s @ ]

3 使用ChatGPT等大語言模型輔助編程的課程實驗

隨著ChatGPT等大語言模型的流行,不少人也利用其輔助進行代碼編寫,這包括ChatGPT、Claude、NewBing等通用大模型和Copilot等專門用于代碼的大模型,我們也發現實際課程中有一些學生也會采用這些大模型工具進行輔助代碼編寫。如圖2顯示,ChatGPT可以完整給出為指定pid進程修改nice值的內核模塊代碼。可以看出利用這類工具后完成實驗的難度進一步降低。因為實驗課并非封閉式課程,我們并不能阻止學生使用這些新工具來輔助完成代碼編寫,但這使得我們的實驗課程需要做一些適應性改變。

首先,提醒學生不要被工具左右,主要包括下面幾點:①提醒學生還是需要系統性學習基本知識,不能全部依賴工具、頻繁問其問題,因為這樣效率可能反而不高,②自身需要理解ChatGPT等工具給出的代碼的意思,做到“知其所以然”,③工具給出的代碼如不符合自己要求時不能將就,如有的量不是預期的通過參數傳入而是使用常量等,這時自己要加以改動來實現要求。

其次,我們提出了學生需要在課程實驗中做出創新的要求。這既是為了使得學生不會是簡單地使用ChatGPT這些工具,也是仿照現實中軟件常需開發新功能的場景,同時還可以更有效地實現考查,這樣就不會都是同樣的功能。創新需要有具體內容,比如可以是在打印進程父進程時多打印一點祖父進程等信息,創新越多越有新意則可以得到更高評價。在實驗驗收時,我們也會詢問其創新的設計思路、對相應代碼的理解,即進行多維度考查[5],全面了解其創新并指出可以改進之處。

4 結束語

由于操作系統課程的教授難度較高,本文提出采用系統工具如QEMU和Crash來輔助學生對現代操作系統內部深入探索的方法。該方法實施后,部分學生對操作系統課程學習的畏難情緒明顯降低,還有學生主動嘗試Kprobes等的使用。為了使得學生合理利用ChatGPT等大語言模型,我們同時提出了實驗創新的要求。實際中學生各種新奇的小創新頻出,如實現更改進程nice值模塊時改為通過proc文件系統傳入進程pid。可見這一措施確實激發了學生的學習興趣和創新精神。

參考文獻(References):

[1] 林穗,李敏.操作系統課程思政教學設計與實踐[J].計算機

教育,2023,No.339(3):115-118.

[2] 龍諾春.課程思政理念下的“Linux操作系統”課程教學研究

與實踐[J].工業和信息化教育,2022,No.113(5):85-88,94.

[3] 曹曉梅,陳丹偉.智慧教學工具在操作系統課程教學中的應

用研究[J].軟件導刊,2023,22(1):94-98.

[4] 張潤宇,楊朝樹.Linux操作系統設備仿真教學探索與實踐[J].

福建電腦,2023,39(4):112-116.

[5] 楊智,孫磊,杜學繪等.本科信息安全專業實踐教學改革——

以操作系統安全課程為例[J].高教學刊,2022,8(10):127-130.

主站蜘蛛池模板: 综合色婷婷| 国产理论一区| 超碰色了色| 亚洲一区二区三区在线视频| 成人综合网址| 国产在线第二页| 中文字幕2区| 福利国产微拍广场一区视频在线 | 免费在线视频a| 久久99这里精品8国产| 无码中文AⅤ在线观看| 日本午夜影院| 人妻中文字幕无码久久一区| 成人伊人色一区二区三区| 欧美国产精品不卡在线观看| 日日噜噜夜夜狠狠视频| 中文字幕一区二区人妻电影| 亚洲无码视频图片| 中文字幕中文字字幕码一二区| 日韩成人免费网站| 国产亚洲精品自在久久不卡 | 久久熟女AV| 亚洲美女高潮久久久久久久| 亚洲综合一区国产精品| 国产精品无码久久久久久| 国产91高跟丝袜| 亚洲中字无码AV电影在线观看| 91丨九色丨首页在线播放 | 在线播放91| 亚洲视频免| 麻豆精品在线视频| 国产欧美在线观看精品一区污| 久久精品国产精品青草app| 亚洲色中色| 国产精品久久久久久久久| 亚洲天堂区| 国产99视频精品免费观看9e| 天天色天天综合| 黄色网在线| 青青草原国产| 国产精品女主播| 亚洲成人福利网站| 麻豆国产精品| 99尹人香蕉国产免费天天拍| 国产成人无码综合亚洲日韩不卡| 成人福利一区二区视频在线| 亚洲欧美成aⅴ人在线观看| 强奷白丝美女在线观看| 日本免费一区视频| 熟女视频91| 青青草一区| 欧美日韩成人在线观看| 精品无码专区亚洲| 久久伊人色| 香蕉精品在线| 国产福利观看| 伦伦影院精品一区| 国产制服丝袜91在线| 国产精品女主播| 人妻少妇乱子伦精品无码专区毛片| 亚洲区欧美区| 91丝袜乱伦| 国产特级毛片aaaaaaa高清| 欧美中文一区| 99精品免费在线| 久久熟女AV| 欧美三级日韩三级| 99精品国产自在现线观看| 国产免费网址| 人妻丰满熟妇av五码区| 99免费在线观看视频| 精品国产成人高清在线| 九色在线视频导航91| 中文字幕有乳无码| 极品私人尤物在线精品首页 | 成人免费网站久久久| 在线视频97| 91av国产在线| 欧美精品在线免费| 国产在线精彩视频论坛| yjizz国产在线视频网| 午夜国产大片免费观看|