linux存儲管理
㈠ linux包含哪些模塊
一、進程調度模塊
Linux以進程作為系統資源分配的基本單位,並採用動態優先順序的進程高級演算法,保證各個進程使用處理機的合理性。進程調度模塊主要是對進程使用的處理機進行管理和控制。
二、進程間通信模塊
進程間通信主要用於控制不同進程之間在用戶空間的同步、數據共享和交換。由於不同的用戶進程擁有不同的進程空間,因此進程間的通信要藉助於內核的中轉來實現。一般情況下,當一個進程等待硬體操作完成時,會被掛起。當硬體操作完成,進程被恢復執行,而協調這個過程的就是進程間的通信機制。
進程間通信模塊保證了Linux支持多種進程間通信機制,包括管道、命名管道、消息隊列、信號量和共享內存等。
三、內存管理模塊
Linux的內存管理模塊採用先進的虛擬存儲機制,實現對多進程的存儲管理。它提供了十分可靠的存儲保護措施,對進程賦予不同的許可權,用戶不能直接訪問系統的程序和數據,保證了系統的安全性。同時,為每個用戶進程分配一個相互獨立的虛擬地址空間。
四、文件系統模塊
Linux的文件系統模塊採用先進的虛擬文件系統技術,屏蔽了各種文件系統的差別,為處理各種不同的文件系統提供了統一的介面,支持多種不同的物理文件系統達90多種。同時,Linux把各種硬體設備看作一種特殊的文件來處理,用管理文件的方法管理設備,非常方便、有效。
五、網路介面模塊
Linux具有最強大的網路功能。網路介面模塊通過套接字機制實現計算機之間的網路通信,並採用網路層次模型提供對多種網路協議和網路硬體設備的支持。
網路介面提供了對各種網路標準的實現和各種網路硬體的支持。網路介面一般分為網路協議和網路驅動程序。網路協議部分負責實現每一種可能的網路傳輸協議。網路設備驅動程序則主要負責與硬體設備進行通信,每一種可能的網路硬體設備都有相應的設備驅動程序。
㈡ Windows與Linux操作系統對磁碟和文件的管理方式有什麼異同點(求詳細)
Windows與Linux操作系統對磁碟和文件的管理方式區別為:文件格式不同、空間不同、碎片整理不同。Windows與Linux操作系統都是以一組磁碟管理應用程序的形式提供給用戶。在硬碟中產生臨時交換文件,用該文件所佔用的硬碟空間虛擬成內存。
一、文件格式不同
1、Windows操作系統:Windows操作系統使用FAT、NTFS文件格式。
2、Linux操作系統:Linux操作系統使用ext2、ext3、ext4文件格式。
二、空間不同
1、Windows操作系統:Windows操作系統的磁碟驅動器上有很多扇區,每個扇區都有存放一小段數據。大文件的存儲需要佔用很多不同的扇區。
2、Linux操作系統:Linux操作系統把所有文件都分散到了整個磁碟上,每兩個文件之間都留有相當巨大的空閑空間。
三、碎片整理不同
1、Windows操作系統:當文件被修改、體積增加時,Windows操作系統嘗試把文件新增的部分存放到緊鄰原始文件的扇區里。但周邊已經沒連續的足夠扇區空間了,文件需要被分割成數段。所以需要一個碎片整理工具。
2、Linux操作系統:當文件被修改、體積增加時,Linux操作系統通常有足夠的空間來擴展,一旦有碎片產生時,文件系統會嘗試移動整個文件來消除碎片。所以不需要一個碎片整理工具。
㈢ linux為什麼主要採用分頁機制來實現虛擬存儲管理
1 分頁機制
在虛擬內存中,頁表是個映射表的概念, 即從進程能理解的線性地址(linear address)映射到存儲器上的物理地址(phisical address).
很顯然,這個頁表是需要常駐內存的東西, 以應對頻繁的查詢映射需要(實際上,現代支持VM的處理器都有一個叫TLB的硬體級頁表緩存部件,本文不討論)。
1.1 為什麼使用多級頁表來完成映射
但是為什麼要使用多級頁表來完成映射呢?
用來將虛擬地址映射到物理地址的數據結構稱為頁表, 實現兩個地址空間的關聯最容易的方式是使用數組, 對虛擬地址空間中的每一頁, 都分配一個數組項. 該數組指向與之關聯的頁幀, 但這會引發一個問題, 例如, IA-32體系結構使用4KB大小的頁, 在虛擬地址空間為4GB的前提下, 則需要包含100萬項的頁表. 這個問題在64位體系結構下, 情況會更加糟糕. 而每個進程都需要自身的頁表, 這回導致系統中大量的所有內存都用來保存頁表.
設想一個典型的32位的X86系統,它的虛擬內存用戶空間(user space)大小為3G, 並且典型的一個頁表項(page table entry, pte)大小為4 bytes,每一個頁(page)大小為4k bytes。那麼這3G空間一共有(3G/4k=)786432個頁面,每個頁面需要一個pte來保存映射信息,這樣一共需要786432個pte!
如何存儲這些信息呢?一個直觀的做法是用數組來存儲,這樣每個頁能存儲(4k/4=)1K個,這樣一共需要(786432/1k=)768個連續的物理頁面(phsical page)。而且,這只是一個進程,如果要存放所有N個進程,這個數目還要乘上N! 這是個巨大的數目,哪怕內存能提供這樣數量的空間,要找到連續768個連續的物理頁面在系統運行一段時間後碎片化的情況下,也是不現實的。
為減少頁表的大小並容許忽略不需要的區域, 計算機體系結構的涉及會將虛擬地址分成多個部分. 同時虛擬地址空間的大部分們區域都沒有使用, 因而頁沒有關聯到頁幀, 那麼就可以使用功能相同但內存用量少的多的模型: 多級頁表
但是新的問題來了, 到底採用幾級頁表合適呢?
1.2 32位系統中2級頁表
從80386開始, intel處理器的分頁單元是4KB的頁, 32位的地址空間被分為3部分
單元
描述
頁目錄表Directory 最高10位
頁中間表Table 中間10位
頁內偏移 最低12位
即頁表被劃分為頁目錄表Directory和頁中間表Tabl兩個部分
此種情況下, 線性地址的轉換分為兩步完成.
第一步, 基於兩級轉換表(頁目錄表和頁中間表), 最終查找到地址所在的頁幀
第二步, 基於偏移, 在所在的頁幀中查找到對應偏移的物理地址
使用這種二級頁表可以有效的減少每個進程頁表所需的RAM的數量. 如果使用簡單的一級頁表, 那將需要高達220個頁表, 假設每項4B, 則共需要佔用220?4B=4MB的RAM來表示每個進程的頁表. 當然我們並不需要映射所有的線性地址空間(32位機器上線性地址空間為4GB), 內核通常只為進程實際使用的那些虛擬內存區請求頁表來減少內存使用量.
1.3 64位系統中的分頁
正常來說, 對於32位的系統兩級頁表已經足夠了, 但是對於64位系統的計算機, 這遠遠不夠.
首先假設一個大小為4KB的標准頁. 因為1KB覆蓋210個地址的范圍, 4KB覆蓋212個地址, 所以offset欄位需要12位.
這樣線性地址空間就剩下64-12=52位分配給頁中間表Table和頁目錄表Directory. 如果我們現在決定僅僅使用64位中的48位來定址(這個限制其實已經足夠了, 2^48=256TB, 即可達到256TB的定址空間). 剩下的48-12=36位被分配給Table和Directory欄位. 即使我們現在決定位兩個欄位各預留18位, 那麼每個進程的頁目錄和頁表都包含218個項, 即超過256000個項.
基於這個原因, 所有64位處理器的硬體分頁系統都使用了額外的分頁級別. 使用的級別取決於處理器的類型
平台名稱
頁大小
定址所使用的位數
分頁級別數
線性地址分級
alpha 8KB 43 3 10 + 10 + 10 + 13
ia64 4KB 39 3 9 + 9 + 9 + 12
ppc64 4KB 41 3 10 + 10 + 9 + 12
sh64 4KB 41 3 10 + 10 + 9 + 12
x86_64 4KB 48 4 9 + 9 + 9 + 9 + 12
㈣ linux磁碟存儲管理和分布式存儲區別
1、磁碟存儲管理主要是以冗餘備份來保障文件安全和快速訪問,一般以本機不同磁碟或區域網內磁碟組成。
2、分布式存儲系統將廣泛分布在本機、區域網和廣域網上各個不同物理存儲空間的數據以一定邏輯形式組成的文件系統,提供的服務更多的是起到索引(指向)的作用,而又不必耗費很大的部署資源,順應了雲計算的發展方向。
㈤ 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系統一般有4個主要部分:內核、shell、文件系統和應用程序。內核、shell和文件系統一起形成了基本的操作系統結構,它們使得用戶可以運行程序、管理文件並使用系統。x0dx0a一.Linux內核x0dx0a內核是操作系統的核心,具有很多最基本功能,如虛擬內存、多任務、共享庫、需求載入、可執行程序和TCP/IP網路功能。Linux內核的模塊分為以下幾個部分:存儲管理、CPU和進程管理、文件系統、設備管理和驅動、網路通信、系統的初始化和系統調用等。x0dx0a二.Linux shellx0dx0ashell是系統的用戶界面,提供了用戶與內核進行交互操作的一種介面。它接收用戶輸入的命令並把它送入內核去執行,是一個命令解釋器。另外,shell編程語言具有普通編程語言的很多特點,用這種編程語言編寫的shell程序與其他應用程序具有同樣的效果。x0dx0a三.Linux文件系統x0dx0a文件系統是文件存放在磁碟等存儲設備上的組織方法。Linux系統能支持多種目前流行的文件系統,如EXT2、EXT3、FAT、FAT32、VFAT和ISO9660。x0dx0a四.Linux應用程序x0dx0a標準的Linux系統一般都有一套都有稱為應用程序的程序集,它包括文本編輯器、編程語言、XWindow、辦公套件、Internet工具和資料庫等。
㈦ Linux操作系統具有哪些特點
LINUX系統的主要特點。\x0d\x0a1、開放性:特別是遵循開放系統互連(OSI)國際標准。\x0d\x0a2、多用戶:操作系統資源可以被不同用戶使用,每個用戶對自己的資源(例如:文件、設備)有特定的許可權,互不影響。\x0d\x0a3、多任務:計算機同時執行多個程序,而同時各個程序的運行互相獨立。\x0d\x0a4、良好的用戶界面:Linux向用戶提供了兩種界面:用戶界面和系統調用。Linux還為用戶提供了圖形用戶界面。它利用滑鼠、菜單、窗口、滾勱條等設施,給用戶呈現一個直觀、易操作、交互性強的友好的圖形化界面。\x0d\x0a5、設備獨立性:操作系統把所有外部設備統一當作成文件來看待,只要安裝驅勱程序,任何用戶都可以象使用文件一樣,操縱、使用這些設備。Linux是具有設備獨立性的操作系統,內核具有高度適應能力。\x0d\x0a6、提供了豐富的網路功能:完善的內置網路是Linux一大特點。\x0d\x0a7、可靠的安全系統:Linux採取了許多安全技術措施,包括對讀、寫控制、帶保護的子系統、審計跟蹤、核心授權等,這為網路多用戶環境中的用戶提供了必要的安全保障。\x0d\x0a8、良好的可移植性:將操作系統從一個平台轉移到另一個平台使它仍然能_其自身的方式運行的能力。Linux是一種可移植的操作系統,能夠在從微型計算機到大型計算機的任何環境中和任何平台上運行。
㈧ Linux進程內存如何管理
Linux系統提供了復雜的存儲管理系統,使得進程所能訪問的內存達到4GB。在Linux系統中,進程的4GB內存空間被分為兩個部分——用戶空間與內核空間。用戶空間的地址一般分布為0~3GB(即PAGE_OFFSET,在Ox86中它等於OxC0000000),這樣,剩下的3~4GB為內核空間,用戶進程通常只能訪問用戶空間的虛擬地址,不能訪問內核空間的虛擬地址。用戶進程只有通過系統調用(代表用戶進程在內核態執行)等方式才可以訪問到內核空間。每個進程的用戶空間都是完全獨立、互不相乾的,用戶進程各自有不同的頁表。而內核空間是由內核負責映射,它並不會跟著進程改變,是固定的。內核空間的虛擬地址到物理地址映射是被所有進程共享的,內核的虛擬空間獨立於其他程序。Linux中1GB的內核地址空間又被劃分為物理內存映射區、虛擬內存分配區、高端頁面映射區、專用頁面映射區和系統保留映射區這幾個區域。對於x86系統而言,一般情況下,物理內存映射區最大長度為896MB,系統的物理內存被順序映射在內核空間的這個區域中。當系統物理內存大於896MB時,超過物理內存映射區的那部分內存稱為高端內存(而未超過物理內存映射區的內存通常被稱為常規內存),內核在存取高端內存時必須將它們映射到高端頁面映射區。Linux保留內核空間最頂部FIXADDR_TOP~4GB的區域作為保留區。當系統物理內存超過4GB時,必須使用CPU的擴展分頁(PAE)模式所提供的64位頁目錄項才能存取到4GB以上的物理內存,這需要CPU的支持。加入了PAE功能的Intel Pentium Pro及以後的CPU允許內存最大可配置到64GB,它們具備36位物理地址空間定址能力。由此可見,對於32位的x86而言,在3~4GB之間的內核空間中,從低地址到高地址依次為:物理內存映射區隔離帶vmalloc虛擬內存分配器區隔離帶高端內存映射區專用頁面映射區保留區。