1、打開一個(gè)vi進(jìn)程碧浊。通過ps命令以及選擇合適的參數(shù),只顯示名字為vi的進(jìn)程瘟仿。尋找vi進(jìn)程的父進(jìn)程箱锐,直到init進(jìn)程為止。記錄過程中所有進(jìn)程的ID和父進(jìn)程ID劳较。將得到的進(jìn)程樹和由pstree命令的得到的進(jìn)程樹進(jìn)行比較驹止。
答:
(1)打開一個(gè)終端,執(zhí)行vi观蜗。
(2)打開另一個(gè)終端臊恋,執(zhí)行ps -a,可以看到PID為6331的進(jìn)程為vi墓捻。
(3)執(zhí)行ps -lax抖仅,尋找PID為6331的一行,PPID為6320砖第,即父進(jìn)程的PID岸售。
(4)輸入ps -ef|grep 6320,追蹤進(jìn)程厂画,6331-6320-6306-3232-1968-1507-1凸丸。
(5)輸入pstree -p,查看進(jìn)程樹袱院。我們可以發(fā)現(xiàn)經(jīng)過比較屎慢,兩者相同。
2忽洛、編寫程序腻惠,首先使用fork系統(tǒng)調(diào)用,創(chuàng)建子進(jìn)程欲虚。在父進(jìn)程中繼續(xù)執(zhí)行空循環(huán)操作集灌;在子進(jìn)程中調(diào)用exec打開vi編輯器。然后在另外一個(gè)終端中,通過ps –Al命令欣喧、ps aux或者top等命令腌零,查看vi進(jìn)程及其父進(jìn)程的運(yùn)行狀態(tài),理解每個(gè)參數(shù)所表達(dá)的意義唆阿。選擇合適的命令參數(shù)益涧,對(duì)所有進(jìn)程按照cpu占用率排序。
答:
(1)編寫1.c驯鳖。編譯執(zhí)行闲询。
(2)創(chuàng)建另一個(gè)終端,輸入ps aux查看浅辙。USER指用戶名扭弧,PID是進(jìn)程號(hào),%CPU是進(jìn)程CPU使用率记舆,%MEM是進(jìn)程內(nèi)存使用率寄狼,VSZ是總虛擬內(nèi)存大小,RSS是進(jìn)程使用總物理內(nèi)存大小氨淌,TTY是終端的次要裝置號(hào)碼,STAT是進(jìn)程的狀態(tài)伊磺,START是進(jìn)程開始時(shí)間盛正,COMMAND是此進(jìn)程的命令。輸入ps -aux|sort -k3,3nr?對(duì)所有進(jìn)程按照cpu占用率排序屑埋。
3豪筝、使用fork系統(tǒng)調(diào)用,創(chuàng)建如下進(jìn)程樹摘能,并使每個(gè)進(jìn)程輸出自己的ID和父進(jìn)程的ID续崖。觀察進(jìn)程的執(zhí)行順序和運(yùn)行狀態(tài)的變化。
答:
(1)編寫2.c团搞,編譯執(zhí)行严望。可以看到p1進(jìn)程的ID號(hào)為15627逻恐;P2進(jìn)程的ID號(hào)為15628像吻,其父進(jìn)程為15627,即p1复隆;P3進(jìn)程的ID號(hào)為15629拨匆,其父進(jìn)程為15627,即p1挽拂;P4進(jìn)程的ID號(hào)為15630惭每,其父進(jìn)程為15628,即p2亏栈;P5進(jìn)程的ID號(hào)為15631台腥,其父進(jìn)程為15628宏赘,即p2;
4览爵、修改上述進(jìn)程樹中的進(jìn)程置鼻,使得所有進(jìn)程都循環(huán)輸出自己的ID和父進(jìn)程的ID。然后終止p2進(jìn)程(分別采用kill -9 蜓竹、自己正常退出exit()箕母、段錯(cuò)誤退出),觀察p1俱济、p3嘶是、p4、p5進(jìn)程的運(yùn)行狀態(tài)和其他相關(guān)參數(shù)有何改變蛛碌。
(1)編寫循環(huán)并用kill -9結(jié)束p2進(jìn)程聂喇。可以看到p2
代碼連接:BJTU_operating-system-lesson/Lab2 at master · Jerlllly/BJTU_operating-system-lesson · GitHub