實驗二程序管理實驗指導書
1.了解程序與程式的區別,加深對程序概念的理解;
2.掌握程序併發執行的原理,及其所引起的同步、互斥問題的方法;
3.掌握程序管理的常用命令及系統呼叫,並會用c語言實現系統呼叫。
實驗預備知識:學習linux或windows中有關程序建立、控制的部分;查閱有關linux或windows環境下api中的有關程序建立、控制的部分。(可參考教材2版p34和p69,3版p71)
1.熟悉程序管理常用命令,並完成下列任務:
在linux下,試用ps命令的各個選項觀察系統中諸程序的運**況;
在linux下,試用pstree命令觀察系統程序的層次;
在linux下,試用top等命令觀察系統中程序運**況和cpu工作情況;
在linux下,試用kill、killall、skill等命令來終止程序;
在linux下,試用at、crontab命令進行程序排程。
2.學習程序管理類系統函式,並用c語言完成下列任務:
程序的建立
編寫程式,建立兩個子程序。當此程式執行時,系統中有乙個父程序和兩個子程序。父程序在螢幕上顯示「a」,子程序分別在螢幕上顯示「b」和「c」。
程序控制
如果在程式中使用系統呼叫lockf()來給每乙個程序加鎖,可以實現程序之間的互斥,觀察並分析出現的現象。
程序通訊
建立一管道pipe檔案,同時父程序建立子程序。父子共同在此pipe檔案上操作,子程序負責向該pipe檔案寫資訊,父程序則從中讀資訊並輸出到螢幕上。
1.linux的程序
回顧程序的概念。使用此前的資訊,完成以下填空:
1) linux系統中,幾乎每乙個啟動的程序,都會由核心分配乙個唯一的用於跟蹤從程序啟動到程序結束。
2) 當啟動新程序的時候,核心也給它們分配系統資源,如________和________。
3) 永遠不向父程序返回輸出的程序叫做
4) 由父程序派生出來的程序叫做程序。
5程序是乙個派生另乙個程序的程序。
6) 執行用於提供服務的linux系統程序是
7) 如果父程序在子程序之前結束,它建立了乙個程序。
2.linux的程序管理命令
步驟1:進入gnome。
步驟2:訪問命令列。寫出在gnome中,開啟終端視窗的操作(至少兩種方法):
步驟3:ps命令用於列出當前系統中執行的程序,回顧ps命令。
基本的ps命令顯示在當前shell中的程序資訊。輸入ps命令,將結果填入下表1中。
表1 實驗記錄
從當前終端視窗中,練習使用給出的每個選項的ps命令。
解釋ps -f命令輸出的各欄標題的含義,將解釋填入表2中
表2 ps -f欄標題
輸入 ps -f 命令,顯示執行在系統中程序的完全資訊,填入表3中。
表3 實驗記錄
步驟4:列出系統中執行的所有程序。
輸入 ps -ef 命令,顯示執行在系統中的各個程序的完全資訊。執行該命令,並與ps –f命令的輸出結果對照,一致嗎?有何不同?
注意分析當前終端視窗中的輸出結果:
1)顯示了多少個程序?(提示可以使用top命令)
2)當前使用的shell的程序id的pid是什麼?
3)啟動shell的程序的命令 (cmd) 是什麼?
4)請觀察,什麼命令的pid號是1?
5)再次執行ps –ef命令,計算程序的數目:
步驟5:根據命令名搜尋特定的程序。
為了終止乙個程序,必須找到該程序的pid。大多數執行的系統中,有上百個程序在執行,ps -ef的列表可能很長。如果知道啟動程序的執行程式的名字,可以更快地找到pid。
通過把ps命令的輸出結果輸入到grep中,可以搜尋想要終止的特定程序,確定正確的pid。
grep命令可以在其他命令的輸出中搜尋所有型別的特徵字串。
1)啟動文字編輯器(gedit)程式,再次計算程序的數目,看有什麼變化?
2)在當前的終端視窗中,執行命令:
ps –e | grep gedit
(文字編輯器的程序名是「gedit」,查詢和「gedit」排程守護程序相關的所有程序) ,記錄文字編輯器的父程序的cmd是什麼?
3)在當前終端視窗中執行命令:
pgrep –l gedit
查詢所有和「gedit」排程守護程序相關的程序。ps和pgrep命令輸出之間有什麼不同?
步驟6:按照使用者查詢乙個程序。
ps命令可以帶 -u (使用者) 選項使用,查詢指定使用者的程序。這個命令比ps-ef使用得更多,因為一般只能夠管理屬於自己的程序。我們可以通過使用者登入名或者uid號來查詢使用者的程序。
使用者只能夠終止自己的程序,但是超級使用者可以終止系統中所有執行的程序。
ps –u login-id或uid
1)用以姓名建立的使用者名稱登入系統,啟動計算器gnome應用程式。
2)使用帶 -u選項的ps命令,查詢以登入id (例如,以姓名建立的使用者,登入id為使用者名稱)執行的所有程序。計算器應用程式的pid是什麼?
3)使用ps -u命令組合grep,查詢「計算機」程式的pid號,而不是使用ps -u查詢整個列表。使用什麼命令?
提示:猜猜「計算器」程式的命令名中可能有哪個字母,使用grep搜尋那些字母。
步驟7: 使用kill命令終止乙個程序。
訊號用於終止、掛起和繼續程序。有時候使用ctrl + c可以終止乙個不響應的程序。這樣向程序傳送乙個中斷 (int) 訊號,終止它及所有它派生的子程序。
kill命令提供了乙個終止不想要的命令程序的直接方法。當想停止乙個執行了很長時間的命令的時候,或者當需要終止乙個不能夠正常退出的程序的時候,它很有用。指定pid正常地殺死乙個程序。
kill [-signal] process-id
為了使用kill命令終止乙個程序,應該首先鍵入ps找出程序的pid,然後鍵入kill緊跟著pid。如果使用kill而沒有指定訊號,則訊號15 (sigterm) 將被傳送給特定pid號的程序。這叫做軟殺死,通常終止了程序。
如果可能,最好軟殺死程序,這樣它可以正確地關閉檔案,溫和地終止程序。
如果需要強制終止乙個程序,可以使用帶 -9選項的kill命令。這個選項叫做強制殺死,當shell對所有其他終止訊號都不響應的時候,需要使用它來殺死shell。
kill -9 process-id
注意:對於shell之外的程序,把kill –9 (sigkill) 作為最後的選項,因為它是一種生硬的方法,不允許正確的程序終止。
1)續步驟6,檢視「計算器」程序的pid號是多少?
2)軟殺死「計算器」程式,它是否還在桌面上執行?
3)開啟4個虛擬終端,用ps –ef命令,觀察這4個虛擬終端的程序識別符號,它們的父程序是誰?
電路實驗指導書實驗
一 實驗目的 1 學會使用直流穩壓電源和萬用表 2 通過實驗證明線性電路的疊加原理 二 實驗裝置 1 雙路直流穩壓電源一台 2 數字萬用表一塊 3 實驗電路板一塊 三 實驗原理 由疊加原理 性電路中,有多個電源同時作用時,在電路的任何部分產生的電流或電壓,等於這些電源分別單獨作用時在該部分產生的電流...
實驗指導書
測樹學實驗 指導書 李鳳日編 二00五年三月 實驗一測樹工具的使用 一 目的 熟悉和掌握幾種常用的測樹工具的構造 原理及使用方法。二 儀器 用具 輪尺 圍尺 勃魯萊測高器 超聲波測高器 dqw 2型望遠測樹儀 二公尺測竿 記錄夾 記錄用表 計算工具。三 儀器的構造 原理及使用方法 一 測徑器 1 輪...
實驗指導書
前言本實驗指導書是根據機電一體化 數控技術 電子技術 通訊技術等專業所設定課程的教學大綱中關於實驗專案及內容的要求,在原校內使用的實驗講義的基礎上編寫而成的,是陝西省理工學校實訓中心的同志通過幾年的教學改革和實踐的成果。該實驗指導書的目的是幫助學生鞏固理論教學知識,掌握基本的實驗方法和操作技能,培養...