2017-2018-1 20155320《信息安全系統設計基礎》第一週學習總結

2017-2018-1 20155320《信息安全系統設計基礎》第一週學習總結

教材問題

  • 第一章 計算機各個組件如何相互影響?系統硬件如何組成的?
  • 第二章 IEEE是什麼?
  • 第三章 機器機是什麼?學會看懂反彙編碼
  • 第四章 Y86指令集的理解與使用
  • 第五章 優化程序性能要注意哪些方面?
  • 第六章 如何寫好一個從高速緩存存取數據的程序?
  • 第七章 靜態連接是什麼?靜態連接須要注意哪些?
  • 第八章 如何對進程進行控制?
  • 第九章 爲什麼要動態存儲器分配?什麼是虛擬存儲器?
  • 第十章 c語言中使用I/O函數要注意的問題?
  • 第十一章 套接字藉口是什麼?web服務器如何編寫?
  • 第十二章 併發編程對服務有什麼影響?

教材學習內容總結

第一章

  • 信息就是位+上下文。源程序以字節序列的方式存儲在文件中,系統中全部信息——包括磁盤文件、存儲器中的程序、存儲器中存放的用戶數據以及網上傳送的數據,都是由一串位表示的,區分不一樣數據對象的惟一方法是咱們讀到這些數據對象時的上下文。只由ASCII字符構成的文件稱爲文本文件,全部其餘文件都是二進制文件。
  • 程序的生命週期由一個高級C語言程序開始,若要運行該程序須要將每條C語句轉化成一系列的低級機器語言指令並按可執行目標程序的格式打包,並以二進制磁盤文件的形式存放。目標程序稱爲可執行目標文件
  • hello.c——>預處理器(cpp)——hello.i——>編譯器(ccl)——hello.s——>彙編器(as)——hello.o——>連接器(ld)——hello(可執行目標文件——>
  • 系統的硬件組成:總線、I/O設備、主存、處理器。

1.一般總線被設計成傳送定長的字節塊即字。html

2.主存是一個臨時存儲設備,用來存放程序和程序處理的數據。java

3.加載:從主存複製到寄存器;linux

存儲:從寄存器複製到主存。git

  • 一個系統上能夠同時運行多個進程。
  • 文件就是字節序列。
  • 併發:指一個同時具備多個活動的系統web

    並行:指的是用併發使一個系統運行的更快編程

    本週課堂學習內容

  • Linux下編程:
    1.vi hello.c
    2.編譯gcc hello.c
    3.運行./a.out
    4.查看運行完程序的返回值echo $?緩存

  • od -tc -tx1 hello.c用文本查看ASCII碼
  • gcc -E hello.c -o hello.i hello.c——>hello.i預處理安全

    gcc -S hello.i -o hello.s hello.i——>hello.s編譯服務器

    gcc -c hello.s -o hello.o 彙編碼——>機器碼併發

第七章

  • 連接是將各類代碼和數據部分收集起來並組合成爲一個單一文件的過程,這個文件可被加載(或拷貝)到存儲器並執行。
  • 鏈接靜態庫
ar rcs libhello.a hello.o

    gcc main.c -L -lhello

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

  • 問題1:在學習第七章的過程當中,我將重點放在了靜態連接和動態連接的學習上,可是對其區別並不十分了解。
  • 問題1解決方案:經過查找,在博客靜態連接與動態連接的區別中瞭解到

動態連接:
特色:在生成可執行文件的時候(連接階段),把全部須要的函數的二進制代碼都包含到可執行文件中去。所以,連接器須要知道參與連接的目標文件須要哪些函數,同時也要知道每一個目標文件都能提供什麼函數,這樣連接器才能知道是否是每一個目標文件所須要的函數都能正確地連接。若是某個目標文件須要的函數在參與連接的目標文件中找不到的話,連接器就報錯了。目標文件中有兩個重要的接口來提供這些信息:一個是符號表,另一個是重定位表。

優勢:在程序發佈的時候就不須要的依賴庫,也就是再也不須要帶着庫一塊發佈,程序能夠獨立執行

缺點:
程序體積會相對大一些。
若是靜態庫有更新的話,全部可執行文件都得從新連接才能用上新的靜態庫。

動態連接:
特色: 在編譯的時候不直接拷貝可執行代碼,而是經過記錄一系列符號和參數,在程序運行或加載時將這些信息傳遞給操做系統,操做系統負責將須要的動態庫加載到內存中,而後程序在運行到指定的代碼時,去共享執行內存中已經加載的動態庫可執行代碼,最終達到運行時鏈接的目的。

優勢: 多個程序能夠共享同一段代碼,而不須要在磁盤上存儲多個拷貝。

缺點: 因爲是運行時加載,可能會影響程序的前期執行性能

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

  • 問題1:在linux系統中實踐設斷點時,四種斷點的設法和應用不十分清楚。
  • 問題1解決方案:,經過複習上課筆記和上網查資料,我大體明白了四種斷點的設法。

1.條件斷點:b fxx(函數名)

2.條件斷點:b 12 if i=5000

  1. 行斷點:b 行號

4.臨時斷點:tb 行號

還能夠經過p 變量在調試過程當中來查看變量的值

p k=4,來假設正確調試後面的代碼

PS🅱️設斷點

r:運行

stop(s):進入函數的下一步

next(n);不進入函數的下一步

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

代碼託管

上週考試錯題總結

結對及互評

暫無

本週結對學習狀況

  • 20155326
    • 結對照片
    • 結對學習內容
      • 學習了課本第一章、第七章的內容
      • 在Linux下代碼的編譯和調試

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

本週主要學習了一下linux下的代碼編譯和調試以及靜態連接和動態連接的相關內容。上學期學java時雖然初步學習了一些linux下的命令,可是因爲當時主要是在Windows環境下寫代碼,不少命令幾乎都得從新熟悉,最初是感受很不方便也不習慣,可是因爲虛擬機出現了些問題,我在實驗樓裏學習事後感受手感好了不少。確實命令這些東西仍是須要實踐與理論相結合着來學,否則總感受記不住,之後要多多實踐。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 200小時
第一週 5/5 1/1 15

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

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法

  • 計劃學習時間:22小時

  • 實際學習時間:15小時

  • 改進狀況:

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

參考資料

相關文章
相關標籤/搜索