linux存儲管理命令
這種方式中,將用戶程序的地址空間,注意,是 用戶程序的地址空間 分為若干個固定大小的區域,成為「頁」或「頁面」。我們可以知道,這也頁其實是不存在的,只是一種劃分內存空間的方法。也就是說,這種方式將用戶的程序 「肢解」 了,分成很多個小的部分,每個部分稱為一個「頁」。
將邏輯地址的前n位作為頁號,後面32-n位作為頁內偏移量。
由於進程的最後一頁經常裝不滿一個塊,從而形成了不可利用的碎片,稱之為 「頁內碎片」 。
作用:實現頁號到物理號的地址映射。
頁表是記錄邏輯空間(虛擬內存)中每一頁在內存中對應的物理塊號。但並非每一頁邏輯空間都會實際對應著一個物理塊,只有實際駐留在物理內存空間中的頁才會對應著物理塊。
系統會為每一個進程建立一張頁表,頁表是需要一直駐留在物理內存中的(多級頁表除外),另外頁表的起址和長度存放在 PCB(Process Control Block)進程式控制制結構體中。
可以在頁表的表項中設置相關的許可權控制欄位,例如設置存取控制欄位,用於保護該存儲塊的讀寫;若存取控制欄位為2位,則可以設置讀/寫、只讀和只執行等存取方式。
物理塊是實實在在存在於內存中的:
由於執行頻率高,要求效率比較高,需要使用硬體實現。
在系統中設置一個 頁表寄存器(PTR) ,其中存放頁表在內存的起始地址和頁表的長度。平時進程未執行的時候,頁表的起始地址和頁表長度放在本進程的PCB中。當調度程序調度到某個進程的時候,才將這兩個數據裝入 頁表寄存器 。
變換過程:
快表的變換機構
為了提高地址變換速度,可在地址變換機構中增設一個具有並行查詢能力的特殊高速緩沖寄存器,又稱為"聯想寄存器"或者「快表」。俗稱TLB。
快表與頁表的功能類似,其實就是將一部分頁表存到 CPU 內部的高速緩沖存儲器 Cache。CPU 定址時先到快表查詢相應的頁表項形成物理地址,如果查詢不到,則到內存中查詢,並將對應頁表項調入到快表中。但,如果快表的存儲空間已滿,則需要通過演算法找到一個暫時不再需要的頁表項,將它換出內存。
由於成本的關系,快表不可能做得很大,通常只存放 16~512 個頁表項,這對中、小型作業來說,已有可能把全部頁表項放在快表中;但對於大型作業而言,則只能將其一部分頁表項放入其中。由於對程序和數據的訪問往往帶有局限性,因此,據統計,從快表中能找到所需頁表項的概率可達 90% 以上。這樣,由於增加了地址變換機構而造成的速度損失可減少到 10% 以下,達到了可接受的程度。
我們可以採用這樣兩個方法來解決這一問題:
① 對於頁表所需的內存空間,可採用離散分配方式,以解決難以找到一塊連續的大內存空間的問題;
② 只將當前需要的部分頁表項調入內存,其餘的頁表項仍駐留在磁碟上,需要時再調入。
二級頁表的頁表項:
過程:
在採用兩級頁表結構的情況下,對於正在運行的進程,必須將其外層頁表調入內存,而對於內頁表則只需調入一頁或幾頁。為了表徵某頁的頁表是否已經調入內存,還應在外層頁表項中增設一個狀態位 S,其值若為 0,表示該頁表分頁不在內存中,否則說明其分頁已調入內存。進程運行時,地址變換機構根據邏輯地址中的 P1去查找外層頁表;若所找到的頁表項中的狀態位為 0,則產生一個中斷信號,請求 OS 將該頁表分頁調入內存。
多級頁表和二級頁表類似。多級頁表和二級頁表是為了節省物理內存空間。使得頁表可以在內存中離散存儲。(單級頁表為了隨機訪問必須連續存儲,如果虛擬內存空間很大,就需要很多頁表項,就需要很大的連續內存空間,但是多級頁表不需要。)
為什麼引入分段存儲管理?
引入效果:
它將用戶程序的地址空間分為若干個大小不同的的段,每個段可以定義一組完整的信息。
段號表示段名,每個段都從0開始編址,並且採用一段連續的地址空間。
在該地址結構中,允許一個作業最長有64K個段,每個段的最大長度為64KB。
在分段式存儲管理系統中,為每一個分段分配一個連續的分區。進程的各個段,可以離散地裝入內存中不同的分區中。
作用:實現從邏輯地址到物理內存區的映射。
為了保證程序能夠正常運行,就必須能夠從物理內存中找出每個邏輯段所對應的位置。為此在系統中會為每一個進程建立一張 段表 。每個段在表中有一個表項,其中記錄了該段在內存中的起始地址和段的長度。一般將段表保存在內存中。
在配置了段表之後,執行的過程可以通過查找段表,找到每一個段所對應的內存區。
為了實現進程從邏輯地址到物理地址的變換功能,在系統設置了段表寄存器,用於存放段表的起始地址和段表長度TL。
在進行地址變換時,系統將邏輯地址中的段號與段表長度TL 進行比較。若 S > TL,表示段號太大,是訪問越界,於是產生越界中斷信號。若未越界,則根據段表的始址和該段的段號,計算出該段對應段表項的位置,從中讀出該段在內存的起始地址。然後,再檢查段內地址 d 是否超過該段的段長 SL。若超過,即 d>SL,同樣發出越界中斷信號。若未越界,則將該段的基址 d 與段內地址相加,即可得到要訪問的內存。
分頁和分段系統相似之處:兩者都採用離散分配方式,且都是通過地址映射機構實現地址變換。
但在概念上兩者完全不同,主要表現在下述三個方面:
分頁系統以頁面作為內存分配的基本單位,能有效地提高內存利用率,而分段系統以段作為內存分配的基本單位,它能夠更好地滿足用戶多方面的需要。
段頁式地址結構由段號、段內頁號及頁內地址三部分所組成
段頁式系統的基本原理是分段和分頁原理的結合,即先將用戶程序分成若干個段,再把每個段分成若干個頁,並為每一個段賦予一個段名。如下圖展示了一個作業地址空間的結構。該作業有三個段:主程序段、子程序段和數據段;頁面大小為 4 KB:
在段頁式系統中,為了實現從邏輯地址到物理地址的變換,系統中需要同時配置段表和頁表。段表的內容與分段系統略有不同,它不再是內存始址和段長,而是頁表始址和頁表長度。下圖展示出了利用段表和頁表進行從用戶地址空間到物理(內存)空間的映射。
在段頁式系統中,為了便於實現地址變換,須配置一個段表寄存器,其中存放段表始址和段長 TL。進行地址變換時,首先利用段號 S,將它與段長 TL 進行比較。若 S < TL,表示未越界,於是利用段表始址和段號來求出該段所對應的段表項在段表中的位置,從中得到該段的頁表始址,並利用邏輯地址中的段內頁號 P 來獲得對應頁的頁表項位置,從中讀出該貝所在的物理塊號 b,再利用塊號 b 和頁內地址來構成物理地址。
在段頁式系統中,為了獲得一條指令或數據,須三次訪問內存。第一次訪問是訪問內存中的段表,從中取得頁表始址;第二次訪問是訪問內存中的頁表,從中取出該頁所在的物理塊號,並將該塊號與頁內地址一起形成指令或數據的物理地址;第三次訪問才是真正從第二次訪問所得的地址中取出指令或數據。
顯然,這使訪問內存的次數增加了近兩倍。為了提高執行速度,在地址變換機構中增設一個高速緩沖寄存器。每次訪問它時,都須同時利用段號和頁號去檢索高速緩存,若找到匹配的表項,便可從中得到相應頁的物理塊號,用來與頁內地址一起形成物理地址:若未找到匹配表項,則仍需第三次訪問內存。
參考鏈接:
❷ 【Linux命令】磁碟管理(邏輯卷與物理卷)
Linux和Windows都採用了MBR的磁碟管理方法,也就是先對一個硬碟進行分區,在對這個一般光碟進行格式化的方法;他們的區別是: Linux系統,是先進行磁碟分區,如果需要使用該分區,將其掛載到對應目錄即可;而Windows則是自動將所有分區掛載好 傳統的磁碟管理的缺點:不方便進行分區擴充、容易導致文件系統崩潰、不適用於作為生產環境的伺服器、拷貝分區的時候要求強制卸載磁碟分區,分區轉移時耗費的時間長;
LVM磁碟管理技術 是Linux環境下對磁碟管理的一種技術,是通過一個建立在硬碟和分區之上的邏輯層來提高磁碟分區的靈活性
物理卷(PV):就是真正的物理硬碟或物理分區
卷組(VG):是將多個物理硬碟整合到一起形成的邏輯卷組;也可以視作一塊邏輯硬碟
邏輯卷(LV):卷組是一塊邏輯硬碟,邏輯硬碟必須分區之後才能使用;邏輯卷可以視作是卷組的邏輯分區
物理擴展(PE):物理擴展是用來保存數據的最小單元
系統首先把物理硬碟合並為卷組;再通過卷組分區;將卷組(邏輯硬碟)分成邏輯分區(邏輯卷)進行使用;
把物理硬碟分成分區,也可以使用一整塊的物理硬碟;把物理硬碟分區建立為物理卷(PV)也可以把整塊物理硬碟都建立為物理卷;把剛剛劃分的物理卷合為卷組(VG)卷組就已經可以動態的調整大小了,最後把卷組劃分成邏輯卷,其中邏輯卷也是可以隨時劃分大小的
pvcreate命令在系統中一般用於創建物理卷;
語法結構
在使用這個命令的時候不要對存放Linux系統的盤符進行進行使用;我們在創建物理卷的時候都是對邏輯分區進行創建的;擴展分區(Extend)不能進行創建物理卷
pvdisplay 命令用於查看當前的分區情況
語法格式以及常用參數:
查看我們剛剛創建的物理卷
pvremove命令常用於刪除對應的物理卷
語法結構:
刪除我們剛剛創建的物理卷
vgcreate 命令的作用是將一個或多個物理卷整合成一個卷組;在創建卷組之前我們需要保證系統中有足夠的除系統存放卷本身的物理卷(使用pvscan查看)需要注意的是,存放Linux的系統物理卷不能被劃分到自定義卷組中、 常用參數:-s:設定PE(最小物理存儲單元)的大小、-l:最大邏輯卷數量、-p:允許存在的最大物理卷數量
語法結構:
將我們剛剛創建物理卷添加到卷組之中
vgdisplay 這個命令可以用來查看我們創建的卷組; 常見的參數 -s 卷組信息以短格式輸出 ;vgdisplay可以查看對應卷組的簡簡訊息,所以相對於pvdisplay用處又大了那麼一點
語法格式:
查看剛剛創建的卷組和某一個卷組的信息
同樣:vgscan 命令也可以查看當前卷組使用情況的簡簡訊息
vgremove 命令的作用是刪除指定的卷組
語法結構:
刪除我們剛剛創建的卷組
注意:當刪除含有邏輯卷的卷組的時候系統會提示是否刪除對應卷組和對應邏輯卷,只有在兩個都輸入:y之後系統才會刪除對應的卷組
lvcreate 命令作用是在一個指定的卷組中創建一塊邏輯卷,前提是要求有指定的卷組; 常用參數:-L:規定創建的邏輯卷大小(直接寫大小就可以)、-l:通過PE劃分邏輯卷的大小(後面接的數字是PE的個數)
語法結構:
在指定的卷組里創建邏輯卷
lvdisplay 命令可用於查看邏輯卷的詳細信息,也可以用來查看指定邏輯卷的詳細信息 參數:-m:查看對應邏輯卷的掛載信息
語法結構:
檢查指定的邏輯卷,並查看指定邏輯卷的掛載信息:
管理邏輯卷大小的常用命令是lvextend 命令和 lvrece 命令分別表示邏輯卷大小的擴充和減少, 其中lvextend命令表示邏輯卷大小擴充,常用參數 -L(指的是擴充的具體大小)、-l(指的是擴充的LE塊數量);lvextend命令表示邏輯卷大小的減小,常用參數-L(指的是減小的具體大小)、-l(指的是減小的LE塊數量)
語法結構:
對我們指定的兩個邏輯卷分別進行容量的增加和減少,並掛載對應的邏輯卷
❸ 簡述linux系統中以下目錄的主要內容: /home /tmp /etc /bin /sbin /var
linux 常用目錄的作用和存放的內容:
/bin 存放使用者最長用的命令,如:cp、ls、cat,等等。
/boot 啟動linux時使用的一些核心文件。
/dev 是device(設備)的縮寫,這個目錄下是所有linux的外圍設備。
/etc 這個目錄用來存放系統管理所需要的配置文件和子目錄。
/home 用戶的主目錄,比如說有個用戶叫wang,那他的目錄就是/home/wang也可以用~wang來表示。
/lib 這個目錄是存放著系統最基本的動態連接庫,幾乎所有的應用程序都須用這些共享庫。
/lost+found 這個目錄平時是空的,當系統不正常關機後,這里就是一些無家可歸文件的避難所。
/mnt 這個目錄是空的,系統提供這個目錄是讓用戶臨時掛接別的文件系統。
/proc 這個目錄是一個虛擬目錄,它是系統內存映射,我們可以直接通過訪問這個目錄來獲取系統信息。也就是說,這個目錄的內容不在硬碟上而是在內存中。
/root 系統管理員(root)的主目錄,作為系統的擁有者的特權。
/sbin s就是super user的意義,也就是說這里存放的是系統管理員使用的管理程序。
/tmp 這個目錄是存放一些臨時文件的地方。
/usr 我們用到的應用程序的文件幾乎都存放這個目錄下:/usr/X11R6存放X_Window的目錄;/usr/bin存放著許多應用程序;/usr /sbin給超級用戶使用的一些管理程序就放在這個裡面;/usr/include開發和編譯應用程序所需的頭文件;/usr/lib存放一些常用的動態連接共享庫和靜態歸檔案庫;/usr/local這是提供給一般用戶的/usr目錄,在這里安裝軟體最合適。/usr/man存放幫助文檔。/usr /src開放的源代碼就存在這個目錄下。
/var 這個目錄存放那些不斷擴充的東西,為了保持usr的相對穩定,那些才、經常被修改的目錄可以放在這個目錄下,如/var/log日誌文件。