20145211《信息安全系統設計基礎》第七週學習總結————世之奇偉,瑰怪,很是之觀,常在於險遠

教材學習內容總結

存儲器層次結構

存儲技術

隨機訪問存儲器

  • 隨機訪問存儲器分爲:靜態的SRAM、動態的DRAM
  • 靜態RAM:
    SRAM的特色:存儲器單元具備雙穩態特性,只要有電就會永遠保持它的值,干擾消除時,電路就會恢復到穩定值。
  • 動態RAM:
    DRAM的特色:每一位的存儲是對一個電容的充電;對干擾很是敏感。
    用途:數碼照相機和攝像機的傳感器
  • DRAM存儲不穩定的應對機制:
    存儲器系統必須週期性地經過讀出,或者重寫來刷新存儲器的每一位;
    使用糾錯碼
  • SRAM和DRAM的區別
    只要有電,SRAM就會保持不變,而DRAM須要不斷刷新;
    SRAM比DRAM快;
    SRAM對光和電噪聲等干擾不敏感;
    SRAM比DRAM須要使用更多的晶體管,因此更昂貴
  • 傳統的DRAM
    DRAM芯片中的單元(位)被分紅了d個超單元,每一個超單元都由w個DRAM單元組成, 一個d*w的DRAM共存儲dw位信息。超單元被組織成一個r行c列的長方形陣列,rc=d。每一個超單元的地址用(i,j)來表示(從零開始)。設計成二維矩陣是爲了下降芯片上地址引腳的數量。
    信息經過稱爲引腳的外部鏈接器流入/流出芯片,每一個引腳攜帶一個1位信號。
    每一個DRAM信號被鏈接到稱爲存儲控制器的電路,電路每次傳輸量爲8位。行地址i,RAS請求;列地址j,CA
    請求共享相同的DRAM地址引腳。組織成二維陣列而不是線性數組的一個緣由是下降芯片上地址引腳的數量。
    二維陣列阻止的缺點是必須分兩步發送地址,這增長了訪問時間。
  • 存儲器模塊
    雙列直插存儲器模塊(DIMM):168個引腳,以64位爲塊傳入/傳出數據到存儲控制器。
    單列直插存儲器模塊(SIMM):72個引腳,以32位爲塊傳入/傳出數據到存儲控制器。
  • 加強的DRAM
    快頁模式DRAM(FPM DRAM):異步控制信號,容許對同一行連續的訪問能夠直接從行緩衝區獲得服務。
    擴展數據輸出DRAM(EDO DRAM):異步控制信號,容許單獨的CAS信號在時間上靠的更緊密一點
    同步DRAM(SDRAM):同步的控制信號,比異步的快
    雙倍數據速率同步DRAM(DDR SDRAM):使用兩個時鐘沿做爲控制信號,使DRAM速度翻倍。
    Rambus DRAM(RDRAM):一種私有技術
    視頻RAM(VRAM):用在圖形系統的幀緩衝區中。
  • 非易失性存儲器
    存儲在ROM中的程序一般稱爲固件。
    可編程ROM(PROM):只能被編程一次
    可擦寫可編程ROM(EPROM):使用紫外線實現
    電子可擦除PROM(EEROM):使用印製電路卡實現
    閃存(FM):非易失性存儲設備
  • 訪問主存
    讀事務:從主存傳送數據到CPU
    寫事務:從CPU傳送數據到主存
    總線:一組並行的導線,能攜帶地址、數據和控制信號。
    系統總線:鏈接總線接口和I/O橋
    存儲器總線:鏈接I/O橋和主存html

    磁盤存儲

  • 磁盤構造:磁盤由盤片構成,表面覆蓋着磁性記錄材料,中央有一個能夠旋轉的主軸 ,旋轉速率大約爲5400-15000每分鐘。磁盤的每一個表面是一組稱爲磁道的同心圓組成,每一個磁道被劃分爲一組扇區,扇區之間由一些間隙隔開,間隙存儲用來標識扇區的格式化位。
  • 磁盤容量由如下技術因素決定:
    記錄密度(位/英寸):磁道一英寸的段中能夠放入的位數。
    磁道密度(道/英寸):從盤片中心出發半徑上一英寸的段內能夠有的磁道數
    面密度(位/平方英寸):記錄密度與磁道密度的乘積。算法

    現代大容量磁盤使用一種稱爲多區記錄的技術,柱面的集合被分割稱爲不相交的子集合,稱爲記錄區,每一個區包含一組連續的柱面。
    磁盤操做:磁盤用讀/寫頭來讀寫存儲在磁性表面的位,而讀寫頭鏈接到一個傳動臂一端,經過移動轉動臂將讀寫頭定位在磁道上的機械運動稱爲尋道。編程

    磁盤以扇區大小的塊來讀寫數據,對扇區的訪問時間有三個主要的組成部分:
    尋道時間:轉動臂將讀/寫頭定位到包含目標扇區的磁道上所需時間。
    旋轉時間:驅動器等待目標扇區的第一個位旋轉到讀/寫頭下的時間。最大爲:ubuntu

    平均旋轉時間是Tmax的一半。
    傳送時間:讀寫並傳送該扇區內容的時間。平均傳送時間爲:
    vim

    邏輯磁盤塊:
    現代磁盤將盤面的構造視爲一個B個扇區大小的邏輯塊序列,磁盤控制器維護着邏輯塊號和實際磁盤扇區之間的映射關係。邏輯塊號可識別爲一個盤面、磁道、扇區三元組,惟一的標識了相對應的物理扇區。
    內存能夠當作字節數組、磁盤能夠當作塊數組。
    I/O總線鏈接了CPU,主存和I/O設備數組

    固態硬盤

    固態硬盤是一種基於閃存的存儲技術。一個硬盤包由一個或者多個閃存芯片和內存翻譯層組成,閃存芯片替代旋轉磁盤中的機械驅動器,而閃存翻譯層將對邏輯塊的請求翻譯成對底層物理設備的訪問
    SSD比旋轉磁盤
    優勢:隨機訪問時間比旋轉磁盤塊,能耗更低,更結實。
    缺點:閃存翻譯層中的平均磨損邏輯試圖經過將擦除平均分佈在全部的塊上來最大化每一個塊的壽命。緩存

    存儲技術趨勢

    不一樣的存儲技術有不一樣的價格和性能折中。
    不一樣存儲技術的價格和性能屬性以大相徑庭的速率變化着
    DRAM和磁盤的性能滯後於CPU的性能。安全

    局部性

    局部性原理:一個編寫良好的計算機程序傾向於引用鄰近於其餘最近引用過的數據項,或者最近引用過的數據項自己。有良好局部性的程序比局部性差的程序運行的更快,在硬件層引入高速緩存存儲器就體現了局部性原理。
    對程序數據引用的局部性
    時間局部性(temporal locality):被引用過一次的存儲器位置在將來會被屢次引用(一般在循環中)。
    空間局部性(spatial locality):若是一個存儲器的位置被引用,那麼未來他附近的位置也會被引用。
    一個連續向量中,每隔k個元素進行訪問,被稱爲步長爲k的引用模式,具備步長爲1的引用模式稱爲順序引用模式,隨着步長增長空間局部性降低。
    雙重嵌套循環按照行優先順序讀取數組元素。(由於C數組在存儲器中是按照行順序來存放的)bash

    取指令的局部性

    程序指令是存放在存儲器中的,CPU讀取這些指令的過程當中評價一個程序關於取指令的局部性。
    代碼區別與程序數據的一個重要屬性就是在運行時指令是不能被修改的。異步

    局部性小結

    重複引用同一個變量的程序有良好的時間局部性
    對於具備步長爲k的引用模式的程序,步長越小,空間局部性越好。
    對於取指令來講,循環具備良好的時間和空間局部性。循環體越小,迭代次數越多局部性越好。

    存儲器層次結構

  • 存儲技術:不一樣的存儲技術的訪問時間差別很大,速度較快的技術每字節的成本要比速度較慢的技術高,並且容量較小,CPU和主存之間的速度差距在增大。
  • 計算機軟件:一個編寫良好的程序傾向於展現出良好的局部性。

存儲器層次結構中的緩存

  • 高速緩存:是一個小而快速地存儲設備,它做爲存儲在更大、也更慢的設備中的數據對象的緩衝區域。 緩存:使用高速緩存的過程。
    塊:第k+1層的存儲器被劃分紅連續的對象片。每一個塊有一個惟一的地址或名字,使之區別於其餘的塊。
  • 傳送單元:數據老是以塊大小爲傳送單元。
  • 緩存命中:
    • 當程序須要第k+1層的某個數據對象d時,首先在當前存儲在第k層的一個塊中查找d,若是d恰好緩存在第k層中,就稱爲緩存命中。
    • 該程序直接從第k層讀取d,比從第k+1層中讀取d更快。
  • 緩存不命中:第k層中沒有緩存數據對象d
    • 這時第k層緩存會從第k+1層緩存中取出包含d的那個塊。若是第k層緩存已滿,就可能會覆蓋現存的一個塊;覆蓋一個現存的塊的過程稱爲替換/驅逐這個塊;被驅逐的塊有時也稱爲犧牲塊。
    • 替換策略:決定替換哪一個塊;隨機替換策略:隨機選擇一個犧牲塊;最近最少被使用替換策略(LRU):選擇最後被訪問的時間距如今最遠的塊。
  • 緩存不命中的種類:
    • 強制性不命中/冷不命中:即第k層的緩存是空的(稱爲冷緩存),對任何數據對象的訪問都不會命中。一般是短暫事件,不會在反覆訪問存儲器使得緩存暖身以後的穩定狀態中出現。
    • 衝突不命中:因爲一個放置策略:將第k+1層的某個塊限制放置在第k層塊的一個小的子集中,這就會致使緩存沒有滿,可是那個對應的塊滿了,就會不命中。
    • 容量不命中:當工做集的大小超過緩存的大小時,緩存會經歷容量不命中,就是說緩存過小了,不能處理這個工做集。
  • 緩存管理:某種形式的邏輯必須管理緩存,而管理緩存的邏輯能夠是硬件、軟件,或者二者的集合。

    高速緩存存儲器

  • 通用的高速緩存存儲器結構
    一個計算機系統每一個存儲地址有m位,造成M=2^m個不一樣的地址。
  • 高速緩存被組織成一個有S=2^s個高速緩存組的數組,每一個組包含E個高速緩存行,每一個行是由一個B=2^b字節的數據塊、一位有效位以及t=m-(b+s)個標記位組成,惟一標識存儲在這個高速緩存行中的塊。
  • 高速緩存的結構用元組(S,E,B,m)來描述,高速緩存的大小C = S * E * B。

    直接映射高速緩存

  • 直接映射高速緩存:每一個組只有一行的高速緩存。
  • 組選擇:
    高速緩存從w的地址中間抽取出s個組索引位
    組索引位:一個對應於一個組號的無符號整數。
  • 行匹配:
    判斷緩存命中的兩個充分必要條件:該行設置了有效位;高速緩存行中的標記和w的地址中的標記相匹配
    字選擇:肯定所須要的字在塊中是從哪裏開始的。

    組相聯高速緩存

  • 組相連高速緩存中的組選擇:與直接映射高速緩存中的組選擇同樣,組索引位標識組。
  • 組相連高速緩存中的行匹配和字選擇:把每一個組看作一個小的相關聯存儲器,是一個(key,value)對的數組,
    以key爲輸入,返回對應數組中的value值。高速緩存必須搜索組中的每一行,尋找有效的行其標記與地址中的相匹配。
  • 組相連高速緩存中不命中時的行替換:最簡單的替換策略是隨機選擇要替換的行,其餘複雜的策略則使用了局部性原理,例如最不常使用、最近最少使用,等。

    全相聯高速緩存

  • 全相連高速緩存中的組選擇:只有一個組,沒有組索引位。
  • 全相連高速緩存中的行匹配和字選擇:與組相連高速緩存是同樣的,但規模大不少,所以只適合作小的高速緩存,例如虛擬存儲系統中的翻譯備用緩衝器。

    有關寫的問題

  • 直寫:
    當即將w的高速緩存塊寫回到緊接着的第一層中
    缺點是每次寫都會引發總線流量。
  • 寫回:
    只有當替換算法要驅逐更新過的塊時,才能把它寫到緊接着的低一層中,因爲局部性,寫回能顯著減小總線流量。
    缺點是增長了複雜性。
  • 另外一個問題是如何處理寫不命中。
    寫分配:加載相應的低一層中的塊到高速緩存中,而後更新這個高速緩存塊。 缺點是每次不命中都會致使一個塊從低一層傳送到高速緩存。
    非寫分配:避開高速緩存,直接把這個字寫到低一層中。

    高速緩存參數的性能影響

  • 不命中率:不命中數量/引用數量
  • 命中率:1-不命中率
  • 命中時間:從高速緩存傳送一個字到CPU所需的時間,包括組選擇,行匹配,字抽取的時間。
    不命中處罰:因爲不命中所須要的額外時間。

    綜合:高速緩存對程序性能的影響

    存儲器山

  • 一個程序從存儲系統中讀數據的速率稱爲讀吞吐量,或者讀帶寬,一般以兆字節每秒(MB/s)爲單位。
  • 讀帶寬的時間和空間局部性的二維函數稱爲存儲器山。

問題解決

  • 此次裝好virtualbox後,十分想念以前的kali,因而將她的vdi多重載入;等到輸帳戶密碼的時候,突然發現,我全忘了。。尷尬。。
  • 因而我從新啓動的Kali ,等出現GRUB引導菜單時,按向下方向鍵選擇「恢復模式」,按E鍵進入編輯模式。

  • 進入編輯模式後將ro改成rw,在後面添加init=/bin/bash

  • 修改完成後,按F10鍵或Ctrl+X鍵繼續啓動。啓動完成後,出現命令行界面

  • 用過ubuntu後,能夠知道,root即爲我以前的帳戶,知道帳戶就好辦了
  • 這時輸入passwd root,回車就能夠直接設置新密碼
  • 回車之後,輸入新密碼,並再次輸入確認,系統提示密碼更新成功!
  • 直接關機並重啓,就能夠用新密碼直接登陸了。KO.

心得體會

  • 由於想用kali,因此想裝一個虛擬機平臺,心路歷程在這——基於VirtualBox的多重載入
  • 王安石說,「世之奇偉,瑰怪,很是之觀,常在於險遠。"到此次安裝好virtualbox,期間經歷了win10的崩潰,虛擬機的崩潰,然至今日,不管從系統仍是虛擬機都獲得了巨大的改善。雖然過程有點讓人慾哭無淚,但還好結局是能夠接受的。看來,某個東西用的好很差,用的長久不長久,關鍵在於用東西的人的心志是否始終如一。

本週代碼託管

  • 按照老師上週評論的要求,代碼結構從新進行了組織
  • 託管截圖

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 120/200 1/2 16/16 學習Linux核心命令
第二週 100/200 1/3 30/46 學習vim,gcc以及gdb的基本操做
第三週 30/230 1/4 15/61 對信息的表示和處理有更深刻的理解
第四周 30/260 1/5 22/83 雙系統的探索
第五週 130/390 1/6 25/108 彙編的深刻學習
第六週 60/450 1/7 25/133 熟悉了Y86模擬器
第七週 60/510 2/8 20/153 掌握局部性原理

參考資料

相關文章
相關標籤/搜索