OS 2019第二次實驗

2021-09-12 18:32:10 字數 3226 閱讀 4350

2 編寫程式,首先使用fork系統呼叫,建立子程序

3 使用fork系統呼叫,建立如下程序樹

4 採用不同方式終止p2程序

首先我們用ps -c vi命令,即可實現只顯示名字為vi的程序。

之後我們利用ps -ef|grep +pid,逐步查詢。直到init程序,在這個結果中,第二列為當前程序的pid,第三列為父程序的pid。

可以看到,通過此方法得到的程序樹為2369->2177->2167->1368->1

可以看到。通過pstree命令得到的程序樹依然為2369->2177->2167->1368->1

#include

#include

intmain()

else

//父程序

}return0;

}

ps-al命令為列出所有的程序,但由於程序數目太多,故只擷取了vi程序及其父程序。

引數意義

f程式的flag,4代表root

s程式的執行狀態

uid使用者id

pid程序id

ppid

當前程序的父程序id

ccpu資源使用的百分比

pri優先順序

ninice值,負值表示高優先順序,正值表示低優先順序

addr

指出程式在記憶體的哪個部分

sz使用記憶體的大小

wchan

程式是否仍在執行,若為-則正在執行

tty啟動程序的終端名

time

程序使用cpu的總時間

cmd命令名

ps aux 命令為顯示所有使用者的程序。由於該命令無法檢視父程序的pid,而且數目更加巨大,故只擷取了vi程序。

引數意義

user

程序擁有者

pid程序id

%cpu

上次更新到現在的cpu時間占用百分比

%mem

程序使用的物理記憶體百分比

vsz占用的虛擬記憶體大小

rss占用的記憶體大小

tty終端的次要裝置號碼

stat

d代表不可中斷 r代表正在執行 s代表靜止狀態 t代表暫停執行 z代表僵死狀態

start

程序開始的時間

time

程序占用cpu的時間

command

命令名top命令經常用於監控linux的系統狀況,在這裡我們可以看到系統執行時間和平均負載,系統現在程序運**況,cpu狀態,記憶體狀態等資訊。

在top執行過程中,我們可以通過其內部命令p,來使所有程序按照cpu佔用率排序。

引數意義

pid程序id

user

程序擁有者

pr優先順序

ninice值,負值表示高優先順序,正值表示低優先順序

virt

程序使用的虛擬記憶體總量

res程序使用的、未被換出的物理記憶體的大小

shr共享記憶體大小

s程序狀態

%cpu

上次更新到現在的cpu時間占用百分比

%mem

程序使用的物理記憶體百分比

time+

程序使用的cpu時間總計,單位1/100秒

commond

命令名

#include

正常執行:

利用kill -9終止p2程序後:

可以看到,在殺掉2125程序後,其子程序2127 2128的父程序變為1356,即p1 p2沒有受到影響,p4 p5的父程序發生了變化。

通過ps -al命令我們可以發現,程序2125的執行狀態已經變成了z,即成為乙個僵死程序。其他的幾個程序也均已進入t 暫停狀態。

這是因為kill -9命令是要求程式立刻停止,所以2125成為了乙個僵死程序。與之相比,kill -15則允許程式釋放相應資源後再停止。

可以看到,在我們exit 2163程序後, 輸出結果同正常執行時一樣,程序p1 p2 p3 p4 p5均為受到任何影響。而通過ps-al命令我們可以發現,所有與程序2163有關的程序,均已進入s 即休眠狀態。因為exit命令是正常退出乙個程序。

段錯誤退出,即發生緩衝區溢位從而導致程序的終止,在這裡,我們採用空指標的方式來實現。可以看到,在我們修改原始碼執行後,程式首先建立了程序14314,其子程序為14315和14316,其中14315的子程序為14317和14318。

在程式接下來的執行過程中,由於發生了段錯誤,程序14315被關閉,而14315原來的子程序14317和14318,他們的父程序也由14315轉變為了1710。通過ps-al命令可以看到,程序14315處於僵死狀態,其他四個程序處於暫停執行狀態

本次實驗所涉及到的源**均已儲存在本人github,如有需求請檢視

第二次實驗

一 問題及 問題提 乙個數如果恰好等於它的因子之和,這個數就稱為 完數 例如6 1 2 3,再如8的因子和是7 即1 2 4 8不是完數。程式設計找出1000以內的所有完數。答案 6 28 496 檔名稱 作 者 周玉傑 完成日期 2017 年 3月 13 日 版 本 號 dev c 對任務及求解方...

第二次實驗

1 如何進行模式切換 哪兩種模式 答 第一次啟動linux系統會進入命令列模式,會要求輸入使用者名稱,預設的管理員帳號名為root,輸入 root 後回車,提示輸入密碼 密碼是在安裝系統時自己設定的 這樣就以管理員身份登陸了系統。第二種就是如果不想用使用命令列模式,而需要進入圖形介面 在命令列模式下...

C 第二次實驗

實驗目的 1.掌握類和物件的使用。2.掌握字段 屬性 方法 引數 過載 重寫與覆蓋 繼承和多型的使用。實驗內容 1.隨機給出乙個0至99 包括0和99 之間的數字,然後讓你猜是什麼數字。你可以隨便猜乙個數字,遊戲會提示太大還是太小,從而縮小結果範圍。經過幾次猜測與提示後,最終推出答案。1 控制台 w...