訪問主存
讀事務:從主存傳送數據到CPU
寫事務:從CPU傳送數據到主存
總線:一組並行的導線,能攜帶地址、數據和控制信號。
系統總線:鏈接總線接口和I/O橋
存儲器總線:鏈接I/O橋和主存html
磁盤容量由如下技術因素決定:
記錄密度(位/英寸):磁道一英寸的段中能夠放入的位數。
磁道密度(道/英寸):從盤片中心出發半徑上一英寸的段內能夠有的磁道數
面密度(位/平方英寸):記錄密度與磁道密度的乘積。算法
現代大容量磁盤使用一種稱爲多區記錄的技術,柱面的集合被分割稱爲不相交的子集合,稱爲記錄區,每一個區包含一組連續的柱面。
磁盤操做:磁盤用讀/寫頭來讀寫存儲在磁性表面的位,而讀寫頭鏈接到一個傳動臂一端,經過移動轉動臂將讀寫頭定位在磁道上的機械運動稱爲尋道。編程
磁盤以扇區大小的塊來讀寫數據,對扇區的訪問時間有三個主要的組成部分:
尋道時間:轉動臂將讀/寫頭定位到包含目標扇區的磁道上所需時間。
旋轉時間:驅動器等待目標扇區的第一個位旋轉到讀/寫頭下的時間。最大爲:ubuntu
平均旋轉時間是Tmax的一半。
傳送時間:讀寫並傳送該扇區內容的時間。平均傳送時間爲:
vim
邏輯磁盤塊:
現代磁盤將盤面的構造視爲一個B個扇區大小的邏輯塊序列,磁盤控制器維護着邏輯塊號和實際磁盤扇區之間的映射關係。邏輯塊號可識別爲一個盤面、磁道、扇區三元組,惟一的標識了相對應的物理扇區。
內存能夠當作字節數組、磁盤能夠當作塊數組。
I/O總線鏈接了CPU,主存和I/O設備數組
固態硬盤是一種基於閃存的存儲技術。一個硬盤包由一個或者多個閃存芯片和內存翻譯層組成,閃存芯片替代旋轉磁盤中的機械驅動器,而閃存翻譯層將對邏輯塊的請求翻譯成對底層物理設備的訪問
SSD比旋轉磁盤
優勢:隨機訪問時間比旋轉磁盤塊,能耗更低,更結實。
缺點:閃存翻譯層中的平均磨損邏輯試圖經過將擦除平均分佈在全部的塊上來最大化每一個塊的壽命。緩存
不一樣的存儲技術有不一樣的價格和性能折中。
不一樣存儲技術的價格和性能屬性以大相徑庭的速率變化着
DRAM和磁盤的性能滯後於CPU的性能。安全
局部性原理:一個編寫良好的計算機程序傾向於引用鄰近於其餘最近引用過的數據項,或者最近引用過的數據項自己。有良好局部性的程序比局部性差的程序運行的更快,在硬件層引入高速緩存存儲器就體現了局部性原理。
對程序數據引用的局部性
時間局部性(temporal locality):被引用過一次的存儲器位置在將來會被屢次引用(一般在循環中)。
空間局部性(spatial locality):若是一個存儲器的位置被引用,那麼未來他附近的位置也會被引用。
一個連續向量中,每隔k個元素進行訪問,被稱爲步長爲k的引用模式,具備步長爲1的引用模式稱爲順序引用模式,隨着步長增長空間局部性降低。
雙重嵌套循環按照行優先順序讀取數組元素。(由於C數組在存儲器中是按照行順序來存放的)bash
程序指令是存放在存儲器中的,CPU讀取這些指令的過程當中評價一個程序關於取指令的局部性。
代碼區別與程序數據的一個重要屬性就是在運行時指令是不能被修改的。異步
重複引用同一個變量的程序有良好的時間局部性
對於具備步長爲k的引用模式的程序,步長越小,空間局部性越好。
對於取指令來講,循環具備良好的時間和空間局部性。循環體越小,迭代次數越多局部性越好。
計算機軟件:一個編寫良好的程序傾向於展現出良好的局部性。
緩存管理:某種形式的邏輯必須管理緩存,而管理緩存的邏輯能夠是硬件、軟件,或者二者的集合。
高速緩存的結構用元組(S,E,B,m)來描述,高速緩存的大小C = S * E * B。
行匹配:
判斷緩存命中的兩個充分必要條件:該行設置了有效位;高速緩存行中的標記和w的地址中的標記相匹配
字選擇:肯定所須要的字在塊中是從哪裏開始的。
組相連高速緩存中不命中時的行替換:最簡單的替換策略是隨機選擇要替換的行,其餘複雜的策略則使用了局部性原理,例如最不常使用、最近最少使用,等。
全相連高速緩存中的行匹配和字選擇:與組相連高速緩存是同樣的,但規模大不少,所以只適合作小的高速緩存,例如虛擬存儲系統中的翻譯備用緩衝器。
另外一個問題是如何處理寫不命中。
寫分配:加載相應的低一層中的塊到高速緩存中,而後更新這個高速緩存塊。 缺點是每次不命中都會致使一個塊從低一層傳送到高速緩存。
非寫分配:避開高速緩存,直接把這個字寫到低一層中。
命中時間:從高速緩存傳送一個字到CPU所需的時間,包括組選擇,行匹配,字抽取的時間。
不命中處罰:因爲不命中所須要的額外時間。
讀帶寬的時間和空間局部性的二維函數稱爲存儲器山。
因而我從新啓動的Kali ,等出現GRUB引導菜單時,按向下方向鍵選擇「恢復模式」,按E鍵進入編輯模式。
進入編輯模式後將ro改成rw,在後面添加init=/bin/bash
修改完成後,按F10鍵或Ctrl+X鍵繼續啓動。啓動完成後,出現命令行界面
直接關機並重啓,就能夠用新密碼直接登陸了。KO.
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 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 | 掌握局部性原理 |