本章依然涉及的概念較多,做知識儲備
在第一章記憶體外存的時候涉及到了儲存器層次結構,今天對這一部分深入了解
首先做乙個劃分:
1 暫存器是cpu晶元內部的儲存裝置
2 快取記憶體(sram)、記憶體儲存(dram)以及圖中沒有標出的rom都是記憶體(記憶體條)
3 磁碟是外存,磁碟分為硬碟(機械硬碟hdd 固態硬碟ssd)、u盤等等。。
根據這個劃分,介紹記憶體外存各自使用的技術
外存區域性性
快取記憶體
記憶體中使用的儲存單元晶元主要是兩種,ram(隨機訪問儲存器)、rom(非易失性儲存器)
其中ram的訪問讀寫的速度更快,但ram有乙個劣勢:如果斷電之後ram會喪失它的所有資訊
這也是為什麼要引入rom,rom的意義在於關電之後依然能夠儲存它們的資訊
rom用來儲存系統資訊、bios程式等需要斷電保留的程式資訊(這些儲存在rom中的程式稱為韌體),計算機開機後先執行rom中的韌體。
ram主要分為兩類,靜態ram(sram),動態ram(dram)
sram用來作為暫存器和主存之間的快取記憶體儲存器,具有雙穩態特性,只要有電就可以保持它的值,它的硬體位置可能在記憶體條上,也有可能在cpu晶元上。
dram用來作為記憶體以及圖形系統的幀快取區,對電子干擾十分敏感,在有電情況下要通過週期性的讀出來重寫重新整理記憶體中的每一位,它的位置就是記憶體條上。
sram比dram的容量小,但讀寫速度更快,同樣更貴。
rom稱為唯讀儲存器,但實際上他是可以進行讀寫操作的,依據它被重寫的次數分類
prom:程式設計rom,只可以被程式設計一次,之後就只能讀操作
eprom:可擦除可程式設計rom,可讀可寫,基於這種晶元開發出快閃儲存器(flash)晶元,為電子裝置提供快速持久的非易失性儲存(例如ssd固態硬碟)
外存也就是磁碟,磁碟分為硬碟、u盤、軟盤(目前已被淘汰)等等,是用來儲存大量資料的儲存裝置,它的容量大了很多,同樣它的讀寫速度就慢了很多
目前硬碟作為主流,主要分為兩種,傳統機械硬碟(hdd)固態硬碟(ssd)
ssd讀寫由於hdd,當然次於我們上面介紹的記憶體,例如dram
傳統的機械硬碟是由碟片構成的,利用讀寫頭讀取儲存在碟片表面的資訊,磁碟中包含乙個或多個這樣的碟片並裝封到密封的容器中
固態硬碟則是基於我們上面講到的快閃儲存器flash儲存技術,利用flash晶元代替碟片
ssd中的讀操作優於寫操作,ssd中的寫操作是基於 塊 的,經過一定次數的重複寫之後,這個塊就會被磨損,不可使用。這就是ssd的乙個缺陷:底層快閃儲存器塊會磨損,當然這個重複寫的次數足夠滿足我們日常的操作
以上就是儲存器硬體上的層次結構,和我們日常中名詞聯絡起來
現在介紹在程式上的區域性性
乙個編寫良好的電腦程式要具有良好的區域性性,區域性性分為兩種:時間區域性性 空間區域性性
時間區域性性: 乙個引用過一次的記憶體位置,在不久之後再次被多次引用
空間區域性性: 乙個引用過一次的記憶體位置,在不久之後引用它附近的記憶體位置
所以我們有:
1 一旦從儲存器讀入了乙個資料物件,就盡可能的多使用它,這樣會使得程式中的時間區域性性較大
2 按照資料物件儲存在記憶體中的順序,以步長為1的讀取資料,可以使得程式中的空間區域性性較大
舉個例子:如果資料物件是按行儲存的(陣列),那就一行一行的讀取它
步長盡可能為1,不要一會在最開頭,一會在最末尾的來回跳著讀取
3 把注意力放在內迴圈上,大部分計算和記憶體訪問都發生在內迴圈上
這一部分還需要深入了解,先佔坑
第六章 儲存器層次結構
cpu執行指令。儲存器系統為cpu存放指令和資料。儲存器系統 memory system 是乙個具有不同容量 成本和訪問時間的儲存器裝置的層次結構。cpu暫存器 register 儲存著最常用的資料。快取記憶體儲存器 cache memory 作為一部分儲存在相對慢速主儲存器 main memory...
mysql第六章 第六章 mysql日誌
第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...
SQL第六章 儲存過程
建立儲存過程 一 create proc 名字 引數1 引數1型別,引數2 引數2型別 as查詢語句 例如 select from where go例 create proc pr stu marks asselect stuinfo.stuid,stuname,subject,score from...