1. 程式人生 > >2017-2018-1 20155318 《信息安全系統設計基礎》第十三周學習總結

2017-2018-1 20155318 《信息安全系統設計基礎》第十三周學習總結

create 文字 htm 指令 信息安全 資源 內容 顯示 計算機

2017-2018-1 20155318 《信息安全系統設計基礎》第十三周學習總結

  • 完成這一章所有習題
  • 詳細總結本章要點
  • 給你的結對學習搭檔講解你的總結並獲取反饋
  • 參考上面的學習總結模板

教材學習內容總結

  • 客戶端-服務器編程模型
  1. 一個服務器進程 -> 管理某種資源 -> 通過操作這種資源來為它的客戶端提供某種服務
  2. 一個或多個客戶端進程,客戶端和服務器都是進程
  • 網絡
  1. 對主機而言:網絡是一種I/O設備,通過DMA(直接存儲器存取方式)傳送:從網絡上接收到的數據從適配器經過I/O和存儲器總線拷貝到存儲器
  2. 協議:互聯網由采用不同技術,互不兼容的局域網和廣域網組成,並能使其相互通信。其中不同網絡相互通信的解決辦法是一層運行在每臺主機和路由器上的協議軟件,消除不同網絡的差異。
  3. 協議提供的兩種基本能力
    • 命名機制:唯一的標示一臺主機
    • 傳送機制:定義一種把數據位捆紮成不連續的片的同一方式
  4. CP/IP協議族:混合使用套接字接口函數和UnixI/O函數進行通信
  5. 世界範圍的主機集合特性:
    • 主機集合被映射為一組32位的IP地址
    • 這組IP地址被映射為一組稱為因特網域名的標識符
    • 因特網主機上的進程能夠通過連接和任何其他主機上的進程
  • Web服務器
  1. HTTP (Hypertext Transfer Protocol,超文本傳輸協議):Web 客戶端和服務器之間交互時用的一個基於文本的應用級協議。
  2. 一個 HTML 程序(頁)包含指令(標記),它們告訴瀏覽器如何顯示這頁中的各種文本和圖形對象。
  3. Web 服務器以兩種不同的方式向客戶端提供內容:
    取一個磁盤文件,並將它的內容返回給客戶端。磁盤文件稱為靜態內容 (static content), 而返回文件給客戶端的過程稱為服務靜態內容 (serving static content)。 運行一個可執行文件,並將它的輸出返回給客戶端。運行時可執行文件產生的輸出稱為態內容 (dynamic content),而運行程序並返回它的輸出到客戶端的過程稱為服務動態內容 (serving dynamic content)。
  • 並發
  1. 並發程序:使用應用級並發的應用程序。
  2. 三種基本構造方法:
    • 進程
    • I/O多路復用
    • 線程
  • 基於進程的並發編程
  1. 在父進程中接受客戶端連接請求後,創建一個新的子進程來為每個新客戶端提供服務。
  2. 服務器會運行較長時間,需用SIGCHLD 處理程序回收僵死 (zombie) 子進程的資源
  3. 優缺點:
    父、子進程間共享狀態信息,但不共享用戶地址空間。
    • 優點:一個進程不可能不小心覆蓋另一個進程的虛擬存儲器
    • 缺點:獨立的地址空間使得進程共享狀態信息變得更加困難,進程控制和 IPC 的開銷很高,速度變慢。
  • 線程
  1. 主線程:每個進程開始生命周期時都是單一線程,在某一時刻,主線程創建一個對等線程 ,從這個時間點開始,兩個線程就並發地運行。最後,因為主線程執行一個慢速系統調用。或者因為它被系統的間隔計時器中斷, 控制就會通過上下文切換傳遞到對等線程。對等線程會執行一段時間,然後控制傳遞回主線程,依次類推。
  2. 創建:pthread_create 函數,一個輸入變量arg,能用attr參數來改變新創建線程的默認屬性。
  3. 終止:通過調用 pthreadexit 函數,線程會顯式地終止。如果主線程調用 pthreadexit , 它會等待所有其他對等線程終止,然後再終止主線程和整個進程,返回值為 thread_return。
  4. 回收:線程通過調用 pthread_join 函數等待其他線程終止,pthreadjoin 函數會阻塞,直到線程 tid 終止,將線程例程返回的 (void*) 指針賦值為 threadreturn 指向的位置,然後回收己終止線程占用的所有存儲器資源。
  5. 分離
  6. 初始化:pthread_once 函數
  • 一個基於線程的並發服務器
  1. 調用 pthread_ create 時,如何將已連接描述符傳遞給對等線程
  2. 借助結構體可以把所有的函數化成萬能函數的等價形式。

    void *  func( void * parameter)
    typedef void* (*uf)(void * para)
  3. fflush(stdout):在printf()後使用fflush(stdout)將要輸出的內容輸出。
    當使用printf()函數後,系統將內容存入輸出緩沖區,等到時間片輪轉到系統的輸出程序時,將其輸出。
  4. pthread_join()函數:以阻塞的方式等待thread指定的線程結束。

  • 讀者—寫者問題:
  1. 讀者優先,要求不讓讀者等待,除非已經把使用對象的權限賦予了一個寫者。
  2. 寫者優先,要求一旦一個寫者準備好可以寫,它就會盡可能地完成它的寫操作。
  3. 饑餓就是一個線程無限期地阻塞,無法進展。

教材學習中的問題和解決過程

(一個模板:我看了這一段文字 (引用文字),有這個問題 (提出問題)。 我查了資料,有這些說法(引用說法),根據我的實踐,我得到這些經驗(描述自己的經驗)。 但是我還是不太懂,我的困惑是(說明困惑)。【或者】我反對作者的觀點(提出作者的觀點,自己的觀點,以及理由)。 )

  • 問題1:XXXXXX
  • 問題1解決方案:XXXXXX
  • 問題2:XXXXXX
  • 問題2解決方案:XXXXXX
  • ...

代碼調試中的問題和解決過程

  • 問題1:XXXXXX
  • 問題1解決方案:XXXXXX
  • 問題2:XXXXXX
  • 問題2解決方案:XXXXXX
  • ...

代碼托管

上周考試錯題總結

錯1-7圖

結對及互評

本周結對學習情況

  • 20155227

其他(感悟、思考等)

本周通過學習虛擬存儲器的相關知識,對於計算機系統中存儲器部分又有了更深一步的了解。虛擬存儲器在現代操作系統中作用很重要

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一周 0/0 1/1 3/3
第二周 100/100 1/2 3/6
第三周 300/400 1/3 4/10
第四周 0/400 2/5 2/12
第五周 25/425 1/6 4/16
第六周 181/606 3/9 10/26
第七周 201/807 2/11 7/33
第八周 -(包括腳本無意義)/6719 2/13 7/40
第九周 396/7115 3/16 4/44
第十周 1160/8275 2/18 4/49
第十一周 135/8410 3/21 5/54
第十三周 317/8727 1/22 8/62

嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進自己的計劃能力。這個工作學習中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。

參考:軟件工程軟件的估計為什麽這麽難,軟件工程 估計方法

  • 計劃學習時間:5小時

  • 實際學習時間:8小時

  • 改進情況:

(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)

參考資料

  • 《深入理解計算機系統V3》學習指導
  • ...

2017-2018-1 20155318 《信息安全系統設計基礎》第十三周學習總結