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.

主站蜘蛛池模板: 欧美人与动牲交a欧美精品| 欧美性精品| 国产欧美日韩91| 国产精品久久自在自线观看| 亚洲婷婷在线视频| 亚洲免费成人网| 免费Aⅴ片在线观看蜜芽Tⅴ | a在线亚洲男人的天堂试看| 看你懂的巨臀中文字幕一区二区 | 免费 国产 无码久久久| 国产va免费精品观看| 国产97视频在线| 成年人久久黄色网站| 她的性爱视频| 国产成人一区免费观看| 国产三级视频网站| 日韩av无码DVD| 69精品在线观看| 亚洲第一中文字幕| 无码aⅴ精品一区二区三区| 欧美在线免费| 久久国产V一级毛多内射| 亚洲天堂久久| 亚洲欧美在线综合图区| 无码久看视频| 手机成人午夜在线视频| 在线永久免费观看的毛片| 激情综合五月网| 幺女国产一级毛片| 国产九九精品视频| 尤物精品国产福利网站| 国语少妇高潮| 成人在线观看不卡| 欧美国产三级| 亚洲va欧美va国产综合下载| 自慰网址在线观看| 在线国产欧美| 国产99在线观看| 亚洲欧美国产五月天综合| 亚洲精品欧美重口| 亚洲精品动漫| 国产欧美日韩视频一区二区三区| 久久鸭综合久久国产| 69免费在线视频| 2018日日摸夜夜添狠狠躁| 国产99久久亚洲综合精品西瓜tv| 国产h视频免费观看| 国产成人亚洲毛片| 亚洲色图欧美视频| 国产第二十一页| 在线日韩日本国产亚洲| 手机看片1024久久精品你懂的| 欧美国产综合色视频| 动漫精品啪啪一区二区三区| 国产成人亚洲无吗淙合青草| 午夜国产小视频| 网友自拍视频精品区| 嫩草影院在线观看精品视频| 精品久久久无码专区中文字幕| 真实国产乱子伦视频| 日韩欧美视频第一区在线观看 | 婷婷激情亚洲| 92午夜福利影院一区二区三区| 国产婬乱a一级毛片多女| 亚洲视频在线网| 青青国产视频| 91国内外精品自在线播放| 久久夜色撩人精品国产| 在线免费a视频| 亚洲一本大道在线| 国产精品福利一区二区久久| 欧美精品二区| 夜色爽爽影院18禁妓女影院| 午夜视频免费一区二区在线看| 美臀人妻中出中文字幕在线| 日本高清视频在线www色| 国产理论最新国产精品视频| 色成人亚洲| 国产免费人成视频网| 亚洲欧美精品日韩欧美| 国产成人福利在线| 免费AV在线播放观看18禁强制|