20145218 《信息安全系統設計基礎》課程總結

20145218 《信息安全系統設計基礎》課程總結

每週做業連接彙總

  • 第0周做業:針對課本十二章的內容提出本身的問題,並在以後的學習中慢慢思考與解答;成功安裝虛擬機。
    html

  • 第1周做業:瞭解Linux操做系統,掌握核心的Linux命令,如find/locate/cheat/grep/which/whereis等,使用Linux中用戶管理命令/系統相關命令/文件目錄相關命令/打包壓縮相關命令/比較合併相關命令/網絡相關命令等。
    git

  • 第2周做業:熟悉vi的基本操做,熟悉gcc編譯器的基本原理,學習使用gcc編譯器的經常使用選項,學習使用gdb調試技術,熟悉makefile基本原理及語法規範,掌握靜態庫和動態庫的生成與調用方法。
    web

  • 第3周做業:學習教材第二章《信息的表示和處理》,理解二進制在計算機中的重要地位,掌握布爾運算在C語言中的應用,理解有符號整數、無符號整數、浮點數的表示,理解補碼的重要性,及課後習題詳解。
    數據庫

  • 第5周做業:掌握X86彙編基礎。
    編程

  • 第6周做業:1.瞭解ISA抽象的做用,掌握ISA。
    vim

  • 第7周做業:瞭解常見的存儲技術(RAM、ROM、磁盤、固態硬盤等),理解局部性原理,理解緩存思想,理解局部性原理和緩存思想在存儲層次結構中的應用,高速緩存的原理和應用。
    數組

  • 期中總結:複習Linux經常使用命令,複習教材1-7章。
    瀏覽器

  • 第9周做業:掌握系統編程和系統調用的概念,掌握系統編程錯誤處理的方式,掌握Unix/Linux系統級I/O,掌握RIO及I/O重定向的方法。
    緩存

  • 第10周做業:掌握系統編程和系統調用的概念,掌握Unix/Linux系統級I/O。
    安全

  • 第11周做業:瞭解異常及其種類,理解進程和併發的概念,掌握進程建立和控制的系統調用及函數使用:fork,exec,wait,waitpid,exit,getpid,getppid,sleep,pause,setenv,unsetenv,,理解數組指針、指針數組、函數指針、指針函數的區別,理解信號機制:kill,alarm,signal,sigaction,掌握管道和I/O重定向:pipe, dup, dup2。

  • 第12周做業:第9、10、十一週代碼檢查。

  • 第13周做業:掌握三種併發的方式:進程、線程、I/O多路複用,掌握線程控制及相關係統調用,掌握線程同步互斥及相關係統調用。

  • 第14周做業:理解虛擬存儲器的概念和做用,理解地址翻譯的概念,理解存儲器映射,掌握動態存儲器分配的方法,理解垃圾收集的概念,瞭解C語言中與存儲器有關的錯誤。

實驗報告連接彙總

代碼託管連接和二維碼

  • 代碼託管鏈接:https://git.oschina.net/senlinmilelu/IS20145218

  • git log --pretty=format:"%h - %an, %ar : %s"

  • 代碼量彙總

  • 代碼驅動的學習作到沒有?
    • 作到了。
  • 加點代碼,改點代碼是理解的最好方式,談談你的心得
    • 咱們看到代碼的時候總會下意識的以爲太難懂了,看上去就很難理解,因此歷來都是會去躲避學習代碼,能不看就不看,能少看就少看,更別提加減代碼了。但其實咱們靜下心去一行行得讀下去,就會發現其實並無很難理解,反而由於能多懂一點而感到開心。
  • 實踐上有什麼經驗教訓
    • 實踐是鍛鍊咱們對各類命令的熟練程度,也能讓咱們更加了解計算機語言,多動手老是沒錯的,不要每次爲了考試就死記硬背一些命令,用熟了天然手到擒來。

你有什麼項目被加分,談談你的經驗

回答一下第0周做業中本身提出的總題

  • 第一章問題:什麼是併發?
    • 一個同時具備多個活動的系統。並行:用併發使一個系統運行地更快,並行能夠在計算機系統多個抽象層次上運用。按照系統層次結構由高到低的順序強調三個層次:線程級併發、指令級並行、單指令多數據並行。
  • 第二章問題:有符號數和無符號數之間在計算機中是怎麼轉化的?
    • C語言容許在各類不一樣的數字數據類型之間作強制類型轉換。將負數轉換成無符號數可能會獲得0。若是轉換的無符號數太大以致於超出了補碼可以表示的範圍,可能會獲得TMax。
    • C語言容許有符號數與無符號數之間的轉換,轉換的原則是底層的位表示保持不變。-
  • 第三章問題:一元操做和二元操做具體是什麼?
    • 一元操做:只有一個操做數,既是源又是目的,能夠是一個寄存器或者存儲器。
    • 二元操做:第二個操做數既是源又是目的,兩個操做數不能同時是存儲器。
  • 第四章問題:如何使用Y86指令集進行操做?
    • Y86指令
movl:irmovl、rrmovl、mrmovl、rmmovl,分別顯式地指明源和目的地的格式。第一個字母代表源的類型,i(當即數)、r(寄存器)或m(存儲器 ),第二個字母表明目的,能夠是r或者m。

注意:

1.兩個存儲器傳送指令中的存儲器引用方式是簡單地基址和偏移量形式,即:
Imm(Eb) M[Imm+R[Eb]](基址+偏移量)尋址

2.不容許從一個存儲器地址直接傳送到另外一個存儲器地址,也不容許將當即數傳送到存儲器。

OPl(整數操做指令):addl、subl、andl和xorl。只對寄存器數據進行操做,同時還設置條件碼。
jXX(跳轉指令):jmp、jle、jl、je、jne、jge、jg,根據分支指令的類型和條件碼的設置來選擇分支。
cmovXX(條件傳送指令):cmovle、cmovl、cmove、cmovne、cmovge和comvg,與寄存器-寄存器傳送指令rrmovl同樣,但只有當條件碼知足所須要的約束時纔會更新目的寄存器的值。
call和ret:call指令將返回地址入棧,而後跳轉到目的地址。ret指令從這樣的過程調用中返回。
pushl和popl:入棧和出棧。
halt:中止指令的執行。
  • 第五章問題:優化程序性能須要哪些基本要求?
    • 讓最多見的狀況運行的快。
    • 在每一個循環內部緩存不命中數量最小。
    • 對局部變量的反覆引用是好的,由於編譯器可以將他們緩存在寄存器文件中。
    • 步長爲1的引用模式是好的,由於存儲器層次結構中全部層次上的緩存都是將數據存儲爲連續的塊(空間局部性)。
  • 第六章問題:隨機訪問存儲器區別是什麼?
    • 隨機訪問存儲器(RAM)
      1.靜態RAM(SRAM):用來做爲高速緩存存儲器,每一個位存儲在一個雙穩態的存儲器單元裏。雙穩態:電路能夠無限期的保持在兩個不一樣的電壓配置或者狀態之一。只要供電,就會保持不變。即便有干擾,例如電子噪音來擾亂電壓,當干擾消除後,電路就會恢復到穩定值。
      2.動態RAM(DRAM):用來做爲主存以及圖形系統的幀緩衝區。將每一個位存儲爲對一個電容的充電,當電容的電壓被擾亂以後,他就永遠都不會再恢復了。暴露在光線下會致使電容電壓改變。
  • 第七章問題:靜態鏈接器主要任務是什麼?
    • 符號解析、重定位。
  • 第八章問題:怎麼進行進程控制?
    • 獲取進程ID
每一個進程有一個惟一的非零正數進程ID(PID)。
pid_t getpid(void);     /*返回調用進程的PID*/
pid_t getppid(void);             /*返回它的父進程的PID*/
- 建立和終止進程
進程老是處於如下三種狀態之一:
•運行。在CPU上執行,或者等待被執行且最終會被內核調度。
•中止。進程的執行被掛起,且不會被調度。(與信號有關)

•終止。進程永遠中止。進程終止的緣由:1)收到一個信號,默認行爲是終止程序2)從主程序返回3)
 調用exit函數。

•exit函數以status退出狀態來終止進程。void exit(int ststus)
•父進程經過調用fork函數建立一個新的運行子進程。
pid_t fork(void); /*子進程返回0,父進程返回子進程的pid,出錯則返回-1。*/
  • 第九章問題:虛擬存儲器有哪些做用?
    • 虛擬存儲器的三個重要功能:
    • 將主存看作是一個存儲在磁盤上的地址空間的高速緩存,在主存中只保護活動區域。
    • 爲每一個進程提供了一致的地址空間,從而簡化了存儲器管理。
    • 保護了每一個進程的地址空間不被其餘進程破壞
  • 第十章問題:有哪些I/O函數咱們可使用?
    • 應用程序能夠經過open、close、lseek、read、write和stat這樣的函數來訪問Unix I/O。
  • 第十一章問題:如何搭建web服務器?
    (1)當一個客戶端須要服務時,它向服務器發送一個請求,發起一個事務。例如,當Web覽器須要一個文件時,它就發送一個請求給Web服務器
    (2)服務器收到請求後,解釋它,並以適當的方式操做它的資源。例如,當Web服務器收到瀏覽器發出的請求後,它就讀一個磁盤文件
    (3)服務器給客戶端發送一響應,並等待下一個請求。例如,Web服務器將文件發送回客戶端;
    (4)客戶端收到響應並處理它。例如,當Web瀏覽器收到來自服務器的一頁後,它就在屏幕上顯示此頁。
  • 第十二章問題:如何使用線程提升並行性?
    • 到目前爲止,在對併發的研究中,咱們都假設併發線程是在單處許多現代機器具備多核處理器。併發程序一般在這樣的機器上運理器系統上執行的。然而,在多個核上並行地調度這些併發線程,而不是在單個核順序地調度,在像繁忙的Web服務器、數據庫服務器和大型科學計算代碼這樣的應用中利用這種並行性是相當重要的。

課程收穫與不足

  • 本身的收穫(投入,效率,效果等)
    • 這一個學期以來對這門課程的投入時間不少,都是天天積累起來的。每週的任務量大體差很少,有幾周任務比較重就須要花費更多時間,天天讀一節或者天天作一點實踐,累積一週就是一章的內容,累積一學期就是一整本書的內容,聚沙成塔不可謂不深入。
    • 而咱們花費時間和精力,效率卻忽高忽低,有的時候明明深入鑽研,付出大量時間,卻收效甚微,由於咱們只聚焦在課本上,與之相關的、能夠幫助理解的知識卻一律不知,好比彙編學得很差的同窗,就會發現第三章的內容學起來比較困難;操做系統學的很差的同窗,會發現十二章內容很難理解。這就是咱們即便花了時間去讀書,寫了博客,作了實踐,也效率低下,沒法融會貫通的緣由。
    • 一個學期學一本書,不能說是徹底理解,但起碼作到了解、記憶書中內容,經過實踐習得一些基本操做,好比vim,gdb等的基本用法,起碼作到這些才能保證咱們這一個學期的所花在這門課上的時間沒有白費,才叫學有所成。
  • 本身須要改進的地方
    • 就如同前面說到的,有時候花了大量時間,效率卻很低,只在乎每週任務是否已經完成,而不去作深的思考,電腦到底爲何這樣作,某條機器語言到底表明什麼,這些都是咱們長久以來忽略的,而過多的把目光投在寫博客上。
  • 若是有結對,寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考建議
    • 在本學期的五次實驗中,有結對進行。結對實驗能夠取長補短,本身欠缺的知識說不定正好是對方擅長的,並且團隊合做能夠更好地促進兩人彼此學習,實現1+1>2的效果。但願老師之後能夠多給些能夠組隊進行得項目。

給學弟學妹們的學習建議

  • 若是從新學習這門課,怎麼作才能夠學的更好
    • 首先要注重學習的效率,每一週的任務並非隨便在書上找點內容寫完博客就能夠了,每週的考試會提醒咱們其實在上一週本身並無學到什麼,因此必定要注重實踐,代碼必要的話本身敲一敲,必定要本身運行,不要到了學期末連怎麼使用虛擬機都不知道。
    • 其次是每一章學習任務都或多或少跟咱們之前學過的或者如今正在學的知識有關,咱們的知識就像一整條鏈條,環環緊扣,有時加入新的分支,可是若是有一環是徹底斷開的,那就至關於咱們其實什麼都沒有學到,每週只是在應付而已,因此建議學弟學妹們不要只是應付博客,更要爲了本身能掌握的知識去學習,去努力。

問卷調查

  • 你平均每週投入到本課程多長時間?
    • 天天大概都會有幾個小時來學習,每週將近20個小時。
  • 每週的學習效率有提升嗎?
    • 在慢慢找尋學習這門課的方法,效率是慢慢提升的。
  • 學習效果本身滿意嗎?
    • 一開始的時候確實沒找到正確方法,不知道每週本身在幹什麼,後來漸漸明白了本身的任務及目標。整體來講,本學期的學習效果仍是比較滿意的。
  • 課程結束後會繼續一週至少一篇博客嗎?(若是能作到,畢業時我把你的博客給你集結成一本書)
  • 你以爲這門課老師應該繼續作哪一件事情?
    • 首先每週的總結也就是博客是必須的,並且內容上要多體現一些實踐的東西,而不是單純的抄一抄課本上的內容。
    • 其次每週考試的內容,也能夠多一些理解性的內容,能夠檢驗同窗們過去的一週是否是真的理解了,仍是隻抄了書。
    • 最後,查代碼或者檢查操做的時候應該擴大一些範圍,考試分數高的實踐不必定強。
  • 你以爲這門課老師應該中止作哪一件事情?
    • 目前教學方法能夠繼續下去,頗有效果。
  • 你以爲這門課老師應該開始作什麼新的事情?
    • 能夠穿插一些小項目在課程學習中,而不是做爲加分項出現。

給出本文連接和二維碼

]第十五週](http://www.cnblogs.com/senlinmilelu/p/6212453.html)

相關文章
相關標籤/搜索