1. 程式人生 > >2018-2019-1 20165330 《信息安全系統設計基礎》第六周學習總結

2018-2019-1 20165330 《信息安全系統設計基礎》第六周學習總結

總結 系統調用 shel http 層次 內容 讀寫文件 sed end

學習目標

  • 了解系統調用及錯誤處理方法
  • 理解IO處理及文件系統
  • 掌握Unix/Linux系統級I/O:open close read write seek stat
  • 掌握I/O重定向的方法

學習內容

Linux I/O
  1. Linux I/O:將設備優雅地映射為文件的方式,允許Linux內核引出一個簡單、低級的應用接口
  2. 輸入輸出執行方式:
    • 打開文件
      • 描述符:內核打開文件時返回的一個小的非負整數
    • 每個進程開始均有三個打開的文件
      • 標準輸入(描述符為0)
      • 標準輸出(描述符為1)
      • 標準錯誤(描述符為2)
    • 改變當前的文件位置
    • 讀寫文件
    • 關閉文件
  3. 文件
    • 類型:普通文件、目錄、套接字
      • 目錄層次:技術分享圖片
    • 打開和關閉文件
      • 調用open
        函數打開一個已存在的文件或創建一個新文件
       int open(char *filename,int flags,mode_t mode);
      • flags參數指明打開文件方式:
        • O_RDONLY:只讀
        • O_WRONLY:只寫
        • O_RDWR:可讀可寫
      • flags參數提供額外提示:
        • O_CREAT:文件不存在,創建一個截斷(空)文件
        • O_TRUNC:文件已存在就截斷它
        • O_APPEND:在每次寫操作前,設置文件位置到文件的結尾處
      • 關閉文件:
        int close(fd);
    • 讀和寫文件
      • 調用readwrite函數執行輸入輸出
       size_t read(int fd,void *buf,size_t n);
       ssize_t write(int fd,void *buf,size_t n);
RIO包
  1. 無緩沖的輸入輸出函數

     #include "csapp.h"
     ssize_t rio_readn(int fd,void *usrbuf,size_t n);
     ssize_t rio_writen(int fd,void *usrbuf,size_t n);
  2. 帶緩沖的輸入函數

     #include "csapp.h"
     void rio_readinitb(rio_t *rp,int fd);
     ssize_t rio_readlineb(rio_t *rp,void *usrbuf,size_t maxlen);
     ssize_t rio_readnb(rio_t *rp,void *usrbuf,size_t n);
  3. 讀取文件元數據
  • 調用statfstat函數檢索文件的信息(元數據)
    #include <unistd.h> #include <sys/stat.h> int stat(const char *filename,struct stat *buf); int fstat(int fd,struct stat *buf);
  1. 讀取目錄內容
  • 返回目錄流的指針
    #include <dirent.h> #include <sys/stat.h> DIR *opendir(const char *name);
  • 返回流dirp中下一目錄項的指針
    #include <dirent.h> struct dirent *readdir(DIR *dirp);
  • 關閉流並釋放所有資源
    #include <dirent.h> int closedir(DIR *dirp);
I/O重定向
  1. Linux shell提供了I/O重定向操作符,允許用戶將磁盤文件和標準輸入輸出聯系起來
  2. 重定向到磁盤文件foo.txtlinux> ls > foo.txt
  3. I/O重定向使用dup2函數工作

    #include <unistd.h>
    int dup2(int oldfd,int newfd);

    技術分享圖片

ch06課下測試錯題總結

  • 有關磁盤操作,說法正確的是()

A .
對磁盤扇區的訪問時間包括三個部分中,傳送時間最小。

B .
磁盤以字節為單位讀寫數據

C .
磁盤以扇區為單位讀寫數據

D .
讀寫頭總處於同一柱面

正確答案:A C D 書P409

  • 有關RAM的說法,正確的是()

A .
SRAM和DRAM掉電後均無法保存裏面的內容。

B .
DRAM將一個bit存在一個雙穩態的存儲單元中

C .
一般來說,SRAM比DRAM快

D .
SRAM常用來作高速緩存

E .
DRAM將每一個bit存儲為對一個電容充電

F .
SRAM需要不斷刷新

G .
DRAM被組織為二維數組而不是線性數組

正確答案: A C D E G 書P400

2018-2019-1 20165330 《信息安全系統設計基礎》第六周學習總結