2018-2019-1 20165206 《資訊安全系統設計基礎》第六週學習總結
- 2018-2019-1 20165206 《資訊安全系統設計基礎》第六週學習總結
- 教材學習內容總結
- 輸入操作是從I/O裝置複製資料到主存,輸出操作是從主存複製資料到I/O裝置。
- Unix I/O:
所有的I/O裝置都被模型化為檔案。
描述符在開啟檔案的後續對此檔案的所有操作中標識這個檔案。
每個程序開始時都有開啟的三個檔案:標準輸入(描述符為0)、標準輸出(描述符為1)和標準錯誤(描述符為2)。
讀操作:一個讀操作就是從檔案複製n個位元組到記憶體,從當前檔案位置k開始,然後將k增加到k+n。
寫操作:一個寫操作就是從記憶體複製n個位元組到一個檔案,從當前檔案位置k開始,然後更新k。
- 文字檔案和二進位制檔案
- 開啟檔案:
int open(char *filename,int flags,mode_t mode)
- flags引數指明瞭程序打算如何訪問這個檔案:
O_RDONLY:只讀;
O_WRONLY:只寫;
O_RDWD:可讀可寫
注意O_RDONLY|O_WRONLY和O_RDWD不相同。
- mode引數指定了新檔案的訪問許可權位。
資料夾許可權0777表示使用者、使用者組的成員和其他人可讀可寫可執行。
7轉化為二進位制111,分別對應讀、寫、操作。
- 關閉檔案
- int close(int fd)
若成功則為0,若出錯則為-1.
關閉一個已關閉的描述符會出錯。
- 讀、寫檔案
- 應用程式是通過分別呼叫read和write函式來執行輸入和輸出的。
- ssize_t read(int fd,void *buf,size_t n);
- ssize_t write(int fd,const void *buf,size_t n);
size_t是無符號長整型,ssize_t是有符號長整型。
核心通過三個相關的資料結構來表示開啟的檔案:描述符表、檔案表(file table)和v-node表。
dup2函式:
int dup2(int oldfd,int newfd)
dup2函式複製描述符表表項oldfd到描述符表表項newfd,覆蓋描述符表表項newfd以前的內容。
- 課上內容總結
- 幫助命令man:
man -k 函式名 搜尋與此函式相關的資訊
man -k 函式名 | grep key1| grep key2 帶有篩選的搜尋
man 2 函式名 可直接進入檢視函式功能、所需標頭檔案、返回值等相關資訊的檔案
grep -nr:grep -nr XXX /usr/include查巨集定義,查詢關鍵字,全文搜尋
echo命令:用於建立一個二進位制檔案。
echo -ne "\x6b" > test
\x表示為16進位制,\0NNN 表示八進位制
也可以用另外一種寫法:
echo 6b | xxd -r -ps > test
od命令:輸出檔案內容。檢視二進位制檔案時,用od -x將其轉成8進位制或od -h將其轉成16進位制來看
head和tail命令:用來顯示開頭或結尾。
顯示檔案的前5行內容
head -n 5 example.c
顯示檔案除了頭5行以外的所有內容
head -n -5 example.c
顯示檔案後5行的內容。
tail -n 5 example.c
- who命令:
who命令用於顯示目前登入系統的使用者資訊。
c語言實現who命令的學習,我是參考部落格:Linux下who命令之C語言實現進行學習的。
通過man who檢視who了幫助文件,瞭解who命令的實現。
通過檢視utmpx,瞭解/var/run/utmp是如何儲存的
程式設計思想:
1、用open函式開啟/var/run/utmp檔案;
2、用while迴圈實現從頭到尾讀取檔案;
3、用read函式讀取並輸出實現who命令的相關資訊。
- 上週錯題總結
- 錯題1:
有關快取記憶體的說法正確的是()
A .
快取記憶體的容量可以用C=SEB 來計算
B .
快取記憶體容量為2048,快取記憶體結構為( 32 ,8,8,32)
C .
直接對映快取記憶體要:組選擇、行匹配、字抽取
D .
當程式訪問大小為2的冪的陣列時,直接對映高帶快取中常發生衝突不命中
- 答案: A C D