2017-2018-1 20155327 《信息安全系统设计基础》第十一周学习总结
2017-2018-1 20155327 《信息安全系統設計基礎》第十一周學習總結
教材學習內容總結
理解虛擬存儲器的概念和作用
- 虛擬存儲器(Virtual Memory),是硬件異常,硬件地址翻譯,主存,磁盤文件和內核軟件的完善交互,它為每個進程提供一個大的,一致的,私有地址空間。通過一個清晰的機制,虛擬存儲器提供了三個要重的能力:
- 作用
(1)它將主存看成是一個存儲在磁盤上的地址空間的高速緩存,在主存中只保存活動區域,并根據需要在磁盤和主存之間來回傳送數據,通過這種方式,它高效的利用了主存;
(2)它為每個進程提供了一致的地址空間,從而簡化了存儲器管理;
(3)它保護每個進程的地址空間不被其他進程破壞。
理解地址翻譯的概念
地址翻譯是一個N元素的虛擬地址空間(VAS)中的元素和一個M元素的物理地址空間(PAS)中元素之間的映射。
理解存儲器映射
- 定義:
Linux通過將一個虛擬存儲器區域與一個磁盤上的對象關聯起來,以初始化這個虛擬存儲器區域的內容的過程叫做存儲器映射。 - 使用mmap函數的用戶級存儲器映射
1.創建新的虛擬存儲器區域
參數含義:
- start:這個區域從start開始
- fd:文件描述符
- length:連續的對象片大小
- offset:距文件開始處的偏移量
- prot:訪問權限位,具體如下:
- PROT_EXEC:由可以被CPU執行的指令組成
- PROT_READ:可讀
- PROT_WRITE:可寫
- PROT_NONE:不能被訪問
- flag:由描述被映射對象類型的位組成,具體如下:
- MAP_ANON:匿名對象,虛擬頁面是二進制0
- MAP_PRIVATE:私有的、寫時拷貝的對象
MAP_SHARED:共享對象
掌握動態存儲器分配的方法
-.堆:動態存儲器分配維護著一個進程的虛擬存儲器區域,稱為堆。
假設它是一個請求二進制0的區域,緊接在未初始化的bss區域后開始,并向上(更高的地址)生長。有一個變量brk指向堆的頂部- 分配器的兩種基本風格:
a.顯示分配器-malloc和free
b.隱式分配器/垃圾收集器 malloc和free函數:
.系統調用malloc函數,從堆中分配塊:
````
.#include <stdlib.h>
void *malloc(size_t size);
// 返回:成功則為指針,指向大小至少為size字節的存儲器塊,失敗則為NULL
//系統調用free函數來釋放已分配的堆塊:include <stdlib.h>
void free(void *ptr);
// 無返回值
//ptr參數必須指向一個從malloc、calloc或者reallov獲得的已分配塊的起始位置。
理解垃圾收集的概念
- 垃圾收集器是一種動態存儲分配器,它自動釋放程序不再需要的已分配塊,這些塊被稱為垃圾,自動回收堆存儲的過程叫做垃圾收集。
垃圾收集器將存儲器視作一張有向可達圖,只有當存在一條從任意根節點出發并到達p的有向路徑時,才說節點p是可達的,而不可達點就是垃圾。
了解C語言中與存儲器有關的錯誤
1.間接引用壞指針
常見錯誤——scanf錯誤
2.讀未初始化的存儲器
常見錯誤——假設堆存儲器被初始化為0
3.允許棧緩沖區溢出
常見錯誤——緩沖區溢出錯誤
4.假設指針和它們指向的對象是相同大小的
在遠處起作用action at distance
5.造成錯位錯誤
6.引用指針,而不是它所指向的對象
7.誤解指針運算
8.引用不存在的變量
9.引用空堆塊中的數據
10.引起存儲器泄露
教材學習中的問題和解決過程
上周考試錯題總結
- 有關Socket端口和Linux命令,下面說法正確的是()
A .
可以用 echo /etc/services查看
B .
使用 netstat -pan|grep 80可以查看哪些進程占用了80端口
C .
可以使用lsof -i:80查看哪里些進程占用了80端口
D .
可以用sudo /etc/init.d/service start|stop|restart 啟動|停止|重啟系統服務
E .
可以用netstat -pa 查看所有的服務端口(LISTEN,ESTABLISHED)
F .
ps -aux | grep pid 可以查看綁定某端口的進程號為pid的進程的詳細情況
正確答案: A B C D E F 有關Web服務器的說法,正確的是()
A .
Web服務器可以提供靜態和動態內容
B .
Web服務器返回的靜態內容由URL標識
C .
/.../app?150&21傳遞的內容由app可執行文件產生,150和21是調用參數
D .
最小的URL后綴“/”,會被擴展成類似“/index.html”的默認主頁
正確答案: A B C D有關套接字接口函數open_clientfd()、open_listenfd(),下面說法正確的是()
A .
這兩個函數中open_clientfd()只可以用于客戶端編程
B .
這兩個函數中open_clientfd()可以用于客戶端和服務器端編程
C .
這兩個函數中open_listenfd()只可以用于服務器端編程
D .
open_clientfd()中的port參數是客戶端的端口
E .
open_clientfd()中的port參數是服務器端的端口
F .
open_clientfd()返回的clientfd可以有Unix I/O接口讀寫
G .
open_listenfd()返回的listenfd可以有Unix I/O接口讀寫
正確答案: A C E F結對及互評
點評模板:
- 博客中值得學習的或問題:
- xxx
- xxx
- ...
- 代碼中值得學習的或問題:
- xxx
- xxx
- ...
- 其他
本周結對學習情況
- [結對同學學號1](博客鏈接) - 結對照片 - 結對學習內容- XXXX- XXXX- ...其他(感悟、思考等,可選)
xxx
xxx
學習進度條
| 目標 | 5000行 | 30篇 | 400小時 | |
| 第一周 | 200/200 | 2/2 | 20/20 | |
| 第二周 | 300/500 | 2/4 | 18/38 | |
| 第三周 | 500/1000 | 3/7 | 22/60 | |
| 第四周 | 300/1300 | 2/9 | 30/90 |
嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進自己的計劃能力。這個工作學習中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。
參考:軟件工程軟件的估計為什么這么難,軟件工程 估計方法
計劃學習時間:XX小時
實際學習時間:XX小時
改進情況:
(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表)
參考資料
- 《深入理解計算機系統V3》學習指導
- ...
轉載于:https://www.cnblogs.com/l97----/p/7967927.html
總結
以上是生活随笔為你收集整理的2017-2018-1 20155327 《信息安全系统设计基础》第十一周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sublime 插件- px 转rem
- 下一篇: 通过rsync搭建一个远程备份系统(二)