1. 程式人生 > >20155236 《信息安全系統設計基礎》第11周學習總結

20155236 《信息安全系統設計基礎》第11周學習總結

學習總結 user 修改 一個數 tps 說明 一級目錄 教學 錯誤

20155236 《信息安全系統設計基礎》第11周學習總結

教材學習內容總結

  • ls -l:可以顯示當前目錄下目錄或文件的詳細屬性信息
  • 1
  • 詳細屬性說明:
    • 第一位表示類型,-代表文件,d代表目錄;
    • 二至四位代表文件創建者權限,-代表無權限,r代表具有讀權限,w代表具有寫權限,x代表具有執行權限;
    • 五至七位代表同組用戶權限;
    • 八至十位代表其他用戶權限。
  • 第二列為文件硬鏈接數,或目錄、子目錄數。若為目錄的,該字段至少是2,表示該目錄下至少有兩個子目錄
  • 第三列為所有者
  • 第四列為所屬用戶組
  • 第五列為文件大小
  • 第六列為文件最後修改時間
  • 第七列為文件名
  • 編寫ls三大問題
    • 1、如何列出目錄內容
    • 2、如何讀取文件屬性
    • 3、如何判斷目錄名與文件名
  • 目錄文件永遠不會為空,因為每一個目錄會表示當前文件夾,以及他的父文件夾,所以每個目錄至少包含兩個特殊項...,其中.表示當前目錄,..表示上一級目錄

echostate.c

  • 功能:查看在命令行中輸入命令時是否可見,可見返回1,否則返回0
    • echo is on:命令可見
    • echo is off:命令不可見

setecho.c

  • 功能:設置echo的狀態,用來改變輸入指令是否可見。
    • 輸入y(或是以y開頭的一串字符),命令可見
    • 否則(即輸入不以y開頭的字符),命令不可見

fileinfo.c

  • 功能:查看文件信息
  • 其中各變量的含義是:(通過grep -nr XXX /usr/include
    可查詢)
    • mode:st_mode 文件的類型和存取的權限
    • links:st_nlink 連到該文件的硬鏈接數目,剛建立的文件值為1
    • user:st_uid 用戶ID
    • group:st_gid 組ID
    • size:st_size 文件字節數
    • modtime:st_mtime 最後一次修改時間

ls1.c

  • 功能:顯示指定目錄下的所有文件(默認為當前目錄)

ls2.c

  • 顯示指定目錄下的文件詳細信息(默認為當前目錄)

spwd.c

  • 功能:顯示當前目錄路徑

testioctl.c

  • 查看窗體大小信息

教材學習中遇到的問題

who.c

  • 我重點學習了上一屆學長學姐的博客
  • 參考博客:Linux下who命令之C語言實現

cp1.c

  • 第一遍的輸入是錯誤的,第二遍的輸入正常
  • 2
  • 通過錯誤提示,我們可以觀察其報錯部分的代碼,調用了oops()自定義函數
void oops(char *s1, char *s2)
{
    fprintf(stderr, "Error: %s ", s1);
    perror(s2);
    exit(1);
}
  • 經查找相關資料可以得到,perror(s)用來將上一個函數發生錯誤的原因輸出到標準設備(stderr)。參數 s 所指的字符串會先打印出,後面再加上錯誤原因字符串。此錯誤原因依照全局變量errno(這裏的說法不準確,errno是一個宏,該宏返回左值) 的值來決定要輸出的字符串。
  • 在庫函數中有個errno變量,每個errno值對應著以字符串表示的錯誤類型。當你調用"某些"函數出錯時,該函數已經重新設置了errno的值。perror函數只是將你輸入的一些信息和現在的errno所對應的錯誤一起輸出。
  • 這就是函數自動輸出錯誤信息的原因。

結對學習

1、頁表:是一個數據結構,存放在物理存儲器中,將虛擬頁映射到物理頁,就是一個頁表條目的數組。
頁表就是一個頁表條目PTE的數組。
PTE:由一個有效位和一個n位地址字段組成的,表明了該虛擬頁是否被緩存在DRAM中。 頁表的組成:有效位+n位地址字段
2、如果設置了有效位:
地址字段表示DRAM中相應的物理頁的起始位置,這個物理頁中緩存了該虛擬頁。
如果沒有設置有效位:
空地址:表示該虛擬頁未被分配
不是空地址:這個地址指向該虛擬頁在磁盤上的起始位置。

其他(感悟、思考等,可選)

  • 本周主要是對上一周學習的精進,通過實驗和代碼實踐,能幫助我們更好理解本章內容;並使我們通過親身的編譯鏈接執行,慢慢體會Linux的運作,強大的系統調用,可以幫助我們完成更多的事情,有一種通過C語言通過代碼“操控”系統的感覺。但這種體驗是要建立在熟悉使用各種Linux查詢指令的基礎上的,只有學會怎樣搜索有用信息、學會思考分析,才能應對更多的陌生的指令。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 200/200 1/1 20/20
第二周 79/279 1/2 30/50
第三周 182/461 1/3 25/75
第四周 36/497 1/4 3/78
第五周 194/691 1/5 28/106
第六周 520/1211 2/7 27/133
第七周 85/1296 1/8 21/153
第八周 0/1296 2/10 20/173
第九周 234/1530 1/11 30/203
第十周 453/1983 2/13 20/223
第十一周 200/2183 1/14 10/234

參考資料

  • 《深入理解計算機系統》
  • 2016-2017-1 《信息安全系統設計基礎》教學進程

20155236 《信息安全系統設計基礎》第11周學習總結