作業系統第2次實驗報告:建立程序
- 姓名:倪曉東
- 學號:201821121020
- 班級:計算1811
1. 編寫程式
在伺服器上用VIM編輯器編寫一個程式:一個程序建立(fork)兩個子程序。給出原始碼:
原始碼執行結果:
2. 列印程序樹
列印1所建立的程序樹結構,給出帶有自己名字的截圖。
3. 解讀程序相關資訊
(1) ps -ef 執行:
欄位分析:
UID:使用者ID名:nixiaodong
PID:該程序ID:18997
PPID:該程序的父程序ID,由程序18997建立的兩個程序18998,18999的父程序均為18997
C:CPU佔用率,當前為0
STIME:程序開始時間,改程序為19.05
TTY:使用者的終端機位置
TIME:程序所佔用CPU的時間,為0
CMD:可執行檔名
(2) ps -aux 執行:
欄位分析:
USER:使用者ID
PID:該程序ID
%CPU:該程序所佔CPU百分比
%MEM:該程序所佔記憶體百分比
VSZ:該程序所用虛擬記憶體量
RSS:該程序所用固定記憶體量
TTY:使用者終端機位置
STAT:程序狀態
S為休眠
S+有子程序的程序
START:程序開始時間
TIME:程序佔用CPU的時間
COMMAND:當前指令內容
4. 通過該實驗產生新的疑問及解答
ps -ef 指令和ps -aux指令有什麼區別?
答:ps -ef 指令和ps -aux指令但是用來顯示當前執行程序,沒有什麼差別,ps -aux 是用BSD格式來顯示而ps -ef是用標準格式顯示,兩者輸出略有不同。
5. 加分項
結合例項(例項可以是寫一個輸出Hello World的簡單程式)分析Linux可執行檔案構成。
hello world例項:
使用%!xxd將將當前文字轉換為16進位制格式:
使用命令將文字轉換為16進位制字元陣列,前面8位16進位制數代表行,每行後面8組數代表16位元組,所以每組的兩個16進位制數代表一個位元組,最後的0a實際上是0x0a,表示換行,我們可以在16進位制下進行編輯:
如:696e代表字元in,將第一行的696e改為4141(即字元AA的ASCII碼)
然後使用%!xxd -r 將當前檔案轉換回文字格式
&n