❶ 選取多個文件後,不能進行的操作是
計算機選取多個文件後,不能進行的操作是:重命名。計算機選取多個文件後,能進行的操作是:1、刪除;2、移動;3、復制。
計算機選中多個文件的方法:
1、滑鼠拖動選擇
在空白處按下滑鼠左鍵,然後拖動就會形成一個選擇框,只要被選擇框圈中的文件都會被選中,選擇完畢後松開滑鼠,這些文件就會處於選中狀態,接下來就可以進行復制、刪除等操作了。
2、Shift+方向鍵
確認當前窗口處於激活狀態,點選某個文件,按下Shift+方向鍵的組合鍵就可以快速選中文件。
3、Ctrl+滑鼠左鍵
如果要選擇的是文件夾中的某些特定文件,可以按住Ctrl的同時用滑鼠左鍵單擊選擇,這樣可以精確選中需要的文件。
(1)在文件系統中下列關於當前目錄擴展閱讀:
常見的文件操作:
(1) 創建文件。在創建一個新文件時,系統首先要為新文件分配必要的外存空間,並在文件系統的目錄中,為之建立一個目錄項。目錄項中應記錄新文件的文件名及其在外存的地址等屬性。
(2) 刪除文件。當已不再需要某文件時,可將它從文件系統中刪除。在刪除時,系統應先從目錄中找到要刪除文件的目錄項,使之成為空項,然後回收該文件所佔用的存儲空間。
(3) 讀文件。在讀一個文件時,須在相應系統調用中給出文件名和應讀入的內存目標地址。此時,系統同樣要查找目錄,找到指定的目錄項,從中得到被讀文件在外存中的位置。在目錄項中,還有一個指針用於對文件的讀/寫。
(4) 寫文件。在寫一個文件時,須在相應系統調用中給出該文件名及該文件在內存中的(源)地址。為此,也同樣須先查找目錄,找到指定文件的目錄項,再利用目錄中的寫指針進行寫操作。
(5) 截斷文件。如果一個文件的內容已經陳舊而需要全部更新時,一種方法是將此文件刪除,再重新創建一個新文件。但如果文件名及其屬性均無改變時,則可採取另一種所謂的截斷文件的方法,此即將原有文件的長度設置為 0,或者說是放棄原有的文件內容。
(6) 設置文件的讀/寫位置。前述的文件讀/寫操作都只提供了對文件順序存取的手段,即每次都是從文件的始端讀或寫。設置文件讀/寫位置的操作,用於設置文件讀/寫指針的位置,以便每次讀/寫文件時,不是從其始端而是從所設置的位置開始操作。也正因如此,才能改順序存取為隨機存取。
❷ 程序員必備知識(操作系統5-文件系統)
本篇與之前的第三篇的內存管理知識點有相似的地方
對於運行的進程來說,內存就像一個紙箱子, 僅僅是一個暫存數據的地方, 而且空間有限。如果我們想要進程結束之後,數據依然能夠保存下來,就不能只保存在內存里,而是應該保存在 外部存儲 中。就像圖書館這種地方,不僅空間大,而且能夠永久保存。
我們最常用的外部存儲就是 硬碟 ,數據是以文件的形式保存在硬碟上的。為了管理這些文件,我們在規劃文件系統的時候,需要考慮到以下幾點。
第一點,文件系統要有嚴格的組織形式,使得文件能夠 以塊為單位進行存儲 。這就像圖書館里,我們會給設置一排排書架,然後再把書架分成一個個小格子,有的項目存放的資料非常多,一個格子放不下,就需要多個格子來進行存放。我們把這個區域稱為存放原始資料的 倉庫區 。
第二點,文件系統中也要有 索引區 ,用來方便查找一個文件分成的多個塊都存放在了什麼位置。這就好比,圖書館的書太多了,為了方便查找,我們需要專門設置一排書架,這裡面會寫清楚整個檔案庫有哪些資料,資料在哪個架子的哪個格子上。這樣找資料的時候就不用跑遍整個檔案庫,在這個書架上找到後,直奔目標書架就可以了。
第三點,如果文件系統中有的文件是熱點文件,近期經常被讀取和寫入,文件系統應該有 緩存層 。這就相當於圖書館裡面的熱門圖書區,這裡面的書都是暢銷書或者是常常被借還的圖書。因為借還的次數比較多,那就沒必要每次有人還了之後,還放回遙遠的貨架,我們可以專門開辟一個區域, 放置這些借還頻次高的圖書。這樣借還的效率就會提高。
第四點,文件應該用 文件夾 的形式組織起來,方便管理和查詢。這就像在圖書館裡面,你可以給這些資料分門別類,比如分成計算機類.文學類.歷史類等等。這樣你也容易管理,項目組借閱的時候只要在某個類別中去找就可以了。
在文件系統中,每個文件都有一個名字,這樣我們訪問一個文件,希望通過它的名字就可以找到。文件名就是一個普通的文本。 當然文件名會經常沖突,不同用戶取相同的名字的情況還是會經常出現的。
要想把很多的文件有序地組織起來,我們就需要把它們成為 目錄 或者文件夾。這樣,一個文件夾里可以包含文件夾,也可以包含文件,這樣就形成了一種 樹形結構 。而我們可以將不同的用戶放在不同的用戶目錄下,就可以一定程度上避免了命名的沖突問題。
第五點,linux 內核要在自己的內存裡面維護一套數據結構,來保存哪些文件被哪些進程打開和使用 。這就好比,圖書館里會有個圖書管理系統,記錄哪些書被借閱了,被誰借閱了,借閱了多久,什麼時候歸還。
文件系統是操作系統中負責管理持久數據的子系統,說簡單點,就是負責把用戶的文件存到磁碟硬體中,因為即使計算機斷電了,磁碟里的數據並不會丟失,所以可以持久化的保存文件。
文件系統的基本數據單位是 文件 ,它的目的是對磁碟上的文件進行組織管理,那組織的方式不同,就會形成不同的文件系統。
Linux最經典的一句話是:「一切皆文件」,不僅普通的文件和目錄,就連塊設備、管道、socket 等,也都是統一交給文件系統管理的。
Linux文件系統會為每個文件分配兩個數據結構: 索引節點(index node) 和 目錄項(directory entry) ,它們主要用來記錄文件的元信息和目錄層次結構。
●索引節點,也就是inode, 用來記錄文件的元信息,比如inode編號、文件大小訪問許可權、創建時間、修改時間、 數據在磁碟的位置 等等。 索引節點是文件的唯一標識 ,它們之間一一對應, 也同樣都會被 存儲在硬碟 中,所以索引節點同樣佔用磁碟空間。
●目錄項,也就是dentry, 用來記錄文件的名字、索引節點指針以及與其他目錄項的層級關聯關系。多個目錄項關聯起來,就會形成 目錄結構 ,但它與索引節點不同的是,目錄項是由內核維護的一個數據結構,不存放於磁碟,而是 緩存在內存 。
由於索引節點唯一標識一個文件,而目錄項記錄著文件的名,所以目錄項和索引節點的關系是多對一,也就是說,一個文件可以有多個別字。比如,硬鏈接的實現就是多個目錄項中的索引節點指向同一個文件。
注意,目錄也是文件,也是用索引節點唯一標識,和普通文件不同的是,普通文件在磁碟裡面保存的是文件數據,而目錄文件在磁碟裡面保存子目錄或文件。
(PS:目錄項和目錄不是一個東西!你也不是一個東西(^_=), 雖然名字很相近,但目錄是個文件。持久化存儲在磁碟,而目錄項是內核一個數據結構,緩存在內存。
如果查詢目錄頻繁從磁碟讀,效率會很低,所以內核會把已經讀過的目錄用目錄項這個數據結構緩存在內存,下次再次讀到相同的目錄時,只需從內存讀就可以,大大提高了 文件系統的效率。
目錄項這個數據結構不只是表示目錄,也是可以表示文件的。)
磁碟讀寫的最小單位是 扇區 ,扇區的大小隻有512B大小,很明顯,如果每次讀寫都以這么小為單位,那這讀寫的效率會非常低。
所以,文件系統把多個扇區組成了一個 邏輯塊 ,每次讀寫的最小單位就是邏輯塊(數據塊) , Linux中的邏輯塊大小為4KB,也就是一次性讀寫 8個扇區,這將大大提高了磁碟的讀寫的效率。
以上就是索引節點、目錄項以及文件數據的關系,下面這個圖就很好的展示了它們之間的關系:
索引節點是存儲在硬碟上的數據,那麼為了加速文件的訪問,通常會把索引節點載入到內存中。
另外,磁碟進行格式化的時候,會被分成三個存儲區域,分別是超級塊、索引節點區和數據塊區。
●超級塊,用來存儲文件系統的詳細信息,比如塊個數、塊大小、空閑塊等等。
●索引節點區,用來存儲索引節點;
●數據塊區,用來存儲文件或目錄數據;
我們不可能把超級塊和索引節點區全部載入到內存,這樣內存肯定撐不住,所以只有當需要使用的時候,才將其載入進內存,它們載入進內存的時機是不同的.
●超級塊:當文件系統掛載時進入內存;
●索引節點區:當文件被訪問時進入內存;
文件系統的種類眾多,而操作系統希望 對用戶提供一個統一的介面 ,於是在用戶層與文件系統層引入了中間層,這個中間層就稱為 虛擬文件系統(Virtual File System, VFS) 。
VFS定義了一組所有文件系統都支持的數據結構和標准介面,這樣程序員不需要了解文件系統的工作原理,只需要了解VFS提供的統一介面即可。
在Linux文件系統中,用戶空間、系統調用、虛擬機文件系統、緩存、文件系統以及存儲之間的關系如下圖:
Linux支持的文件系統也不少,根據存儲位置的不同,可以把文件系統分為三類:
●磁碟的文件系統,它是直接把數據存儲在磁碟中,比如Ext 2/3/4. XFS 等都是這類文件系統。
●內存的文件系統,這類文件系統的數據不是存儲在硬碟的,而是佔用內存空間,我們經常用到的/proc 和/sys文件系統都屬於這一類,讀寫這類文件,實際上是讀寫內核中相關的數據。
●網路的文件系統,用來訪問其他計算機主機數據的文件系統,比如NFS. SMB等等。
文件系統首先要先掛載到某個目錄才可以正常使用,比如Linux系統在啟動時,會把文件系統掛載到根目錄。
在操作系統的輔助之下,磁碟中的數據在計算機中都會呈現為易讀的形式,並且我們不需要關心數據到底是如何存放在磁碟中,存放在磁碟的哪個地方等等問題,這些全部都是由操作系統完成的。
那麼,文件數據在磁碟中究竟是怎麼樣的呢?我們來一探究竟!
磁碟中的存儲單元會被劃分為一個個的「 塊 」,也被稱為 扇區 ,扇區的大小一般都為512byte.這說明即使一塊數據不足512byte,那麼它也要佔用512byte的磁碟空間。
而幾乎所有的文件系統都會把文件分割成固定大小的塊來存儲,通常一個塊的大小為4K。如果磁碟中的扇區為512byte,而文件系統的塊大小為4K,那麼文件系統的存儲單元就為8個扇區。這也是前面提到的一個問題,文件大小和佔用空間之間有什麼區別?文件大小是文件實際的大小,而佔用空間則是因為即使它的實際大小沒有達到那麼大,但是這部分空間實際也被佔用,其他文件數據無法使用這部分的空間。所以我們 寫入1byte的數據到文本中,但是它佔用的空間也會是4K。
這里要注意在Windows下的NTFS文件系統中,如果一開始文件數據小於 1K,那麼則不會分配磁碟塊來存儲,而是存在一個文件表中。但是一旦文件數據大於1K,那麼不管以後文件的大小,都會分配以4K為單位的磁碟空間來存儲。
與內存管理一樣,為了方便對磁碟的管理,文件的邏輯地址也被分為一個個的文件塊。於是文件的邏輯地址就是(邏輯塊號,塊內地址)。用戶通過邏輯地址來操作文件,操作系統負責完成邏輯地址與物理地址的映射。
不同的文件系統為文件分配磁碟空間會有不同的方式,這些方式各自都有優缺點。
連續分配要求每個文件在磁碟上有一組連續的塊,該分配方式較為簡單。
通過上圖可以看到,文件的邏輯塊號的順序是與物理塊號相同的,這樣就可以實現隨機存取了,只要知道了第一個邏輯塊的物理地址, 那麼就可以快速訪問到其他邏輯塊的物理地址。那麼操作系統如何完成邏輯塊與物理塊之間的映射呢?實際上,文件都是存放在目錄下的,而目錄是一種有結構文件, 所以在文件目錄的記錄中會存放目錄下所有文件的信息,每一個文件或者目錄都是一個記錄。 而這些信息就包括文件的起始塊號和佔有塊號的數量。
那麼操作系統如何完成邏輯塊與物理塊之間的映射呢? (邏輯塊號, 塊內地址) -> (物理塊號, 塊內地址),只需要知道邏輯塊號對應的物理塊號即可,塊內地址不變。
用戶訪問一個文件的內容,操作系統通過文件的標識符找到目錄項FCB, 物理塊號=起始塊號+邏輯塊號。 當然,還需要檢查邏輯塊號是否合法,是否超過長度等。因為可以根據邏輯塊號直接算出物理塊號,所以連續分配支持 順序訪問和隨機訪問 。
因為讀/寫文件是需要移動磁頭的,如果訪問兩個相隔很遠的磁碟塊,移動磁頭的時間就會變長。使用連續分配來作為文件的分配方式,會使文件的磁碟塊相鄰,所以文件的讀/寫速度最快。
連續空間存放的方式雖然讀寫效率高,但是有 磁碟空間碎片 和 文件長度不易擴展 的缺陷。
如下圖,如果文件B被刪除,磁碟上就留下一塊空缺,這時,如果新來的文件小於其中的一個空缺,我們就可以將其放在相應空缺里。但如果該文件的大小大於所
有的空缺,但卻小於空缺大小之和,則雖然磁碟上有足夠的空缺,但該文件還是不能存放。當然了,我們可以通過將現有文件進行挪動來騰出空間以容納新的文件,但是這個在磁碟挪動文件是非常耗時,所以這種方式不太現實。
另外一個缺陷是文件長度擴展不方便,例如上圖中的文件A要想擴大一下,需要更多的磁碟空間,唯一的辦法就只能是挪動的方式,前面也說了,這種方式效率是非常低的。
那麼有沒有更好的方式來解決上面的問題呢?答案當然有,既然連續空間存放的方式不太行,那麼我們就改變存放的方式,使用非連續空間存放方式來解決這些缺陷。
非連續空間存放方式分為 鏈表方式 和 索引方式 。
鏈式分配採取離散分配的方式,可以為文件分配離散的磁碟塊。它有兩種分配方式:顯示鏈接和隱式鏈接。
隱式鏈接是只目錄項中只會記錄文件所佔磁碟塊中的第一塊的地址和最後一塊磁碟塊的地址, 然後通過在每一個磁碟塊中存放一個指向下一 磁碟塊的指針, 從而可以根據指針找到下一塊磁碟塊。如果需要分配新的磁碟塊,則使用最後一塊磁碟塊中的指針指向新的磁碟塊,然後修改新的磁碟塊為最後的磁碟塊。
我們來思考一個問題, 採用隱式鏈接如何將實現邏輯塊號轉換為物理塊號呢?
用戶給出需要訪問的邏輯塊號i,操作系統需要找到所需訪問文件的目錄項FCB.從目錄項中可以知道文件的起始塊號,然後將邏輯塊號0的數據讀入內存,由此知道1號邏輯塊的物理塊號,然後再讀入1號邏輯塊的數據進內存,此次類推,最終可以找到用戶所需訪問的邏輯塊號i。訪問邏輯塊號i,總共需要i+ 1次磁碟1/0操作。
得出結論: 隱式鏈接分配只能順序訪問,不支持隨機訪問,查找效率低 。
我們來思考另外一個問題,採用隱式鏈接是否方便文件拓展?
我們知道目錄項中存有結束塊號的物理地址,所以我們如果要拓展文件,只需要將新分配的磁碟塊掛載到結束塊號的後面即可,修改結束塊號的指針指向新分配的磁碟塊,然後修改目錄項。
得出結論: 隱式鏈接分配很方便文件拓展。所有空閑磁碟塊都可以被利用到,無碎片問題,存儲利用率高。
顯示鏈接是把用於鏈接各個物理塊的指針顯式地存放在一張表中,該表稱為文件分配表(FAT, File Allocation Table)。
由於查找記錄的過程是在內存中進行的,因而不僅顯著地 提高了檢索速度 ,而且 大大減少了訪問磁碟的次數 。但也正是整個表都存放在內存中的關系,它的主要的缺點是 不適 用於大磁碟 。
比如,對於200GB的磁碟和1KB大小的塊,這張表需要有2億項,每一項對應於這2億個磁碟塊中的一個塊,每項如果需要4個位元組,那這張表要佔用800MB內存,很顯然FAT方案對於大磁碟而言不太合適。
一直都在,加油!(*゜Д゜)σ凸←自爆按鈕
鏈表的方式解決了連續分配的磁碟碎片和文件動態打展的問題,但是不能有效支持直接訪問(FAT除外) ,索引的方式可以解決這個問題。
索引的實現是為每個文件創建一個 索引數據塊 ,裡面存放的 是指向文件數據塊的指針列表 ,說白了就像書的目錄一樣,要找哪個章節的內容,看目錄查就可以。
另外, 文件頭需要包含指向索引數據塊的指針 ,這樣就可以通過文件頭知道索引數據塊的位置,再通過索弓|數據塊里的索引信息找到對應的數據塊。
創建文件時,索引塊的所有指針都設為空。當首次寫入第i塊時,先從空閑空間中取得一個塊, 再將其地址寫到索引塊的第i個條目。
索引的方式優點在於:
●文件的創建、增大、縮小很方便;
●不會有碎片的問題;
●支持順序讀寫和隨機讀寫;
由於索引數據也是存放在磁碟塊的,如果文件很小,明明只需一塊就可以存放的下,但還是需要額外分配一塊來存放索引數據,所以缺陷之一就是存儲索引帶來的開銷。
如果文件很大,大到一個索引數據塊放不下索引信息,這時又要如何處理大文件的存放呢?我們可以通過組合的方式,來處理大文件的存儲。
先來看看 鏈表+索引 的組合,這種組合稱為 鏈式索引塊 ,它的實現方式是在 索引數據塊留出一個存放下一個索引數據塊的指針 ,於是當一個索引數據塊的索引信息用完了,就可以通過指針的方式,找到下一個索引數據塊的信息。那這種方式也會出現前面提到的鏈表方式的問題,萬一某個指針損壞了,後面的數據也就會無法讀取了。
還有另外一種組合方式是 索引+索引 的方式,這種組合稱為多級索引塊,實現方式是通過一個索引塊來存放多個索引數據塊,一層套一層索引, 像極了俄羅斯套娃是吧๑乛◡乛๑
前面說到的文件的存儲是針對已經被佔用的數據塊組織和管理,接下來的問題是,如果我要保存一個數據塊, 我應該放在硬碟上的哪個位置呢?難道需要將所有的塊掃描一遍,找個空的地方隨便放嗎?
那這種方式效率就太低了,所以針對磁碟的空閑空間也是要引入管理的機制,接下來介紹幾種常見的方法:
●空閑表法
●空閑鏈表法
●點陣圖法
空閑表法
空閑表法就是為所有空閑空間建立一張表,表內容包括空閑區的第一個塊號和該空閑區的塊個數,注意,這個方式是連續分配的。如下圖:
當請求分配磁碟空間時,系統依次掃描空閑表裡的內容,直到找到一個合適的空閑區域為止。當用戶撤銷一個文件時,系統回收文件空間。這時,也需順序掃描空閑表,尋找一個空閑表條目並將釋放空間的第一個物理塊號及它佔用的塊數填到這個條目中。
這種方法僅當有少量的空閑區時才有較好的效果。因為,如果存儲空間中有著大量的小的空閑區,則空閑表變得很大,這樣查詢效率會很低。另外,這種分配技術適用於建立連續文件。
空閑鏈表法
我們也可以使用鏈表的方式來管理空閑空間,每一個空閑塊里有一個指針指向下一個空閑塊,這樣也能很方便的找到空閑塊並管理起來。如下圖:
當創建文件需要一塊或幾塊時,就從鏈頭上依次取下一塊或幾塊。反之,當回收空間時,把這些空閑塊依次接到鏈頭上。
這種技術只要在主存中保存一個指針, 令它指向第一個空閑塊。其特點是簡單,但不能隨機訪問,工作效率低,因為每當在鏈上增加或移動空閑塊時需要做很多1/0操作,同時數據塊的指針消耗了一定的存儲空間。
空閑表法和空閑鏈表法都不適合用於大型文件系統,因為這會使空閑表或空閑鏈表太大。
點陣圖法
點陣圖是利用二進制的一位來表示磁碟中一個盤塊的使用情況,磁碟上所有的盤塊都有一個二進制位與之對應。
當值為0時,表示對應的盤塊空閑,值為1時,表示對應的盤塊已分配。它形式如下:
在Linux文件系統就採用了點陣圖的方式來管理空閑空間,不僅用於數據空閑塊的管理,還用於inode空閑塊的管理,因為inode也是存儲在磁碟的,自然也要有對其管理。
前面提到Linux是用點陣圖的方式管理空閑空間,用戶在創建一個新文件時, Linux 內核會通過inode的點陣圖找到空閑可用的inode,並進行分配。要存儲數據時,會通過塊的點陣圖找到空閑的塊,並分配,但仔細計算一下還是有問題的。
數據塊的點陣圖是放在磁碟塊里的,假設是放在一個塊里,一個塊4K,每位表示一個數據塊,共可以表示4 * 1024 * 8 = 2^15個空閑塊,由於1個數據塊是4K大小,那麼最大可以表示的空間為2^15 * 4 * 1024 = 2^27個byte,也就是128M。
也就是說按照上面的結構,如果採用(一個塊的點陣圖+ 一系列的塊),外加一(個塊的inode的點陣圖+一系列的inode)的結構能表示的最大空間也就128M,
這太少了,現在很多文件都比這個大。
在Linux文件系統,把這個結構稱為一個 塊組 ,那麼有N多的塊組,就能夠表示N大的文件。
最終,整個文件系統格式就是下面這個樣子。
最前面的第一個塊是引導塊,在系統啟動時用於啟用引導,接著後面就是一個一個連續的塊組了,塊組的內容如下:
● 超級塊 ,包含的是文件系統的重要信息,比如inode總個數、塊總個數、每個塊組的inode個數、每個塊組的塊個數等等。
● 塊組描述符 ,包含文件系統中各個塊組的狀態,比如塊組中空閑塊和inode的數目等,每個塊組都包含了文件系統中「所有塊組的組描述符信息」。
● 數據點陣圖和inode點陣圖 ,用於表示對應的數據塊或inode是空閑的,還是被使用中。
● inode 列表 ,包含了塊組中所有的inode, inode 用於保存文件系統中與各個文件和目錄相關的所有元數據。
● 數據塊 ,包含文件的有用數據。
你可以會發現每個塊組里有很多重復的信息,比如 超級塊和塊組描述符表,這兩個都是全局信息,而且非常的重要 ,這么做是有兩個原因:
●如果系統崩潰破壞了超級塊或塊組描述符,有關文件系統結構和內容的所有信息都會丟失。如果有冗餘的副本,該信息是可能恢復的。
●通過使文件和管理數據盡可能接近,減少了磁頭尋道和旋轉,這可以提高文件系統的性能。
不過,Ext2 的後續版本採用了稀疏技術。該做法是,超級塊和塊組描述符表不再存儲到文件系統的每個塊組中,而是只寫入到塊組0、塊組1和其他ID可以表示為3、5、7的冪的塊組中。
在前面,我們知道了一個普通文件是如何存儲的,但還有一個特殊的文件,經常用到的目錄,它是如何保存的呢?
基於Linux 一切切皆文件的設計思想,目錄其實也是個文件,你甚至可以通過vim打開它,它也有inode, inode 裡面也是指向一些塊。
和普通文件不同的是, 普通文件的塊裡面保存的是文件數據,而目錄文件的塊裡面保存的是目錄裡面一項一項的文件信息 。
在目錄文件的塊中,最簡單的保存格式就是 列表 ,就是一項一項地將目錄下的文件信息(如文件名、文件inode.文件類型等)列在表裡。
列表中每一項就代表該目錄下的文件的文件名和對應的inode,通過這個inode,就可以找到真正的文件。
通常,第一項是「則」,表示當前目錄,第二項是.,表示上一級目錄, 接下來就是一項一項的文件名和inode。
如果一個目錄有超級多的文件,我們要想在這個目錄下找文件,按照列表一項一項的找,效率就不高了。
於是,保存目錄的格式改成 哈希表 ,對文件名進行哈希計算,把哈希值保存起來,如果我們要查找一個目錄下面的文件名,可以通過名稱取哈希。如果哈希能夠匹配上,就說明這個文件的信息在相應的塊裡面。
Linux系統的ext文件系統就是採用了哈希表,來保存目錄的內容,這種方法的優點是查找非常迅速,插入和刪除也較簡單,不過需要一些預備措施來避免哈希沖突。
目錄查詢是通過在磁碟上反復搜索完成,需要不斷地進行/0操作,開銷較大。所以,為了減少/0操作,把當前使用的文件目錄緩存在內存,以後要使用該文件時只要在內存中操作,從而降低了磁碟操作次數,提高了文件系統的訪問速度。
感謝您的閱讀,希望您能攝取到知識!加油!沖沖沖!(發現光,追隨光,成為光,散發光!)我是程序員耶耶!有緣再見。<-biubiu-⊂(`ω´∩)
❸ 需要 計算機操作系統 達人進入 幫幫做幾道題 急需答案 謝謝~~!!
18、答案是B。SCAN(掃描)演算法
630,911,1002,1047,1050,1177,194,186,175,30
281+91+45+3+127+(22+1005)+8+11+145=1738
最短尋道時間優先
630,911,1002,1047,1050,1177,194,186,175,30
281+91+45+3+127+983+8+11+145=1694
19、答案是C。課本概念
20、答案是B。1024/4*1024/4*1024/4*1024=16GB
21、答案是D。1KB/64B=16
22、答案是A。課本概念
23、答案是B。文件目錄由於很大,所以不放在主存中,放在外存中。但並不意味著需要長期保存在磁碟上。
24、答案是D。先來先服務可能會隨時改變移動磁臂運動方向。
25、答案是B。這是2009年計算機聯考真題,解釋較復雜,請自行查閱。
26、答案是C。創建文件時建立FCB,刪除文件時清除FCB。
27、答案是A。在隨機尋道的情況下,讀寫一個磁軌的時間包括尋道時間和讀寫磁軌時間,即T+r秒。由於總的數據量是b位元組,它要佔用的磁軌數為b/N個,所以總的平均讀寫時間為b/N*(r+T)
28、答案是B。樹形目錄結構概念。
29、答案是D。課本概念
30、答案是D。磁軌號(即柱面號):1002578/(16*250)=250
盤面號:1002578%(16*250)/250=10
扇區號:1002578%(16*250)%250=78
31、答案是C。課本概念
32、答案是B。磁帶概念理解。
❹ linux中查看文件和目錄的命令是什麼
linux 命令: 顯示文件屬性介紹:文件屬性在文件系統的安全管理方面起很重要的作用,下lsattr命令用於查看文件屬性信息。
語法:
lsattr [-adRvV] [文件或目錄...]選項介紹:
-a: 顯示所有文件和目錄,包括隱藏文件;
-d: 顯示目錄名稱,而非其內容;
-R: 遞歸處理,將指定目錄下的所有文件及子目錄一並處理;
-v: 顯示文件或目錄版本;
-V: 顯示版本信息。
(4)在文件系統中下列關於當前目錄擴展閱讀:
linux操作常用命令:
文件和目錄
cd /home 進入 '/ home' 目錄'
cd .. 返回上一級目錄
cd ../.. 返回上兩級目錄
cd 進入個人的主目錄
cd ~user1 進入個人的主目錄
cd - 返回上次所在的目錄
pwd 顯示工作路徑
ls 查看目錄中的文件
ls -F 查看目錄中的文件
ls -l 顯示文件和目錄的詳細資料
ls -a 顯示隱藏文件
ls *[0-9]* 顯示包含數字的文件名和目錄名
tree 顯示文件和目錄由根目錄開始的樹形結構(1)
lstree 顯示文件和目錄由根目錄開始的樹形結構(2)
mkdir dir1 創建一個叫做 'dir1' 的目錄'
mkdir dir1 dir2 同時創建兩個目錄
mkdir -p /tmp/dir1/dir2 創建一個目錄樹
rm -f file1 刪除一個叫做 'file1' 的文件'
rmdir dir1 刪除一個叫做 'dir1' 的目錄'
rm -rf dir1 刪除一個叫做 'dir1' 的目錄並同時刪除其內容
rm -rf dir1 dir2 同時刪除兩個目錄及它們的內容
mv dir1 new_dir 重命名/移動 一個目錄
cp file1 file2 復制一個文件
cp dir/* . 復制一個目錄下的所有文件到當前工作目錄
cp -a /tmp/dir1 . 復制一個目錄到當前工作目錄
cp -a dir1 dir2 復制一個目錄
ln -s file1 lnk1 創建一個指向文件或目錄的軟鏈接
ln file1 lnk1 創建一個指向文件或目錄的物理鏈接
touch -t 0712250000 file1 修改一個文件或目錄的時間戳 - (YYMMDDhhmm)
file file1 outputs the mime type of the file as text
文件搜索
find / -name file1 從 '/' 開始進入根文件系統搜索文件和目錄
find / -user user1 搜索屬於用戶 'user1' 的文件和目錄
find /home/user1 -name *.bin 在目錄 '/ home/user1' 中搜索帶有'.bin' 結尾的文件
find /usr/bin -type f -atime +100 搜索在過去100天內未被使用過的執行文件
find /usr/bin -type f -mtime -10 搜索在10天內被創建或者修改過的文件
find / -name *.rpm -exec chmod 755 '{}' ; 搜索以 '.rpm' 結尾的文件並定義其許可權
find / -xdev -name *.rpm 搜索以 '.rpm' 結尾的文件,忽略光碟機、捷盤等可移動設備
locate *.ps 尋找以 '.ps' 結尾的文件 - 先運行 'updatedb' 命令
whereis halt 顯示一個二進制文件、源碼或man的位置
which halt 顯示一個二進制文件或可執行文件的完整路徑
參考資料來源:網路:liunx
❺ 關於三級資料庫
http://learning.sohu.com/s2005/4756/s226530790.shtml
一、選擇題(每小題1分,共60分)
下列各題 A) 、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分。
1)系統軟體一般包括
Ⅰ.服務性程序 Ⅱ.語言處理程序Ⅲ.操作系統 Ⅳ.資料庫管理系統
A) Ⅰ、Ⅱ和Ⅲ
B) Ⅰ、Ⅲ和Ⅳ
C) Ⅱ、Ⅲ和Ⅳ
D) 全部
(2) 為提高產品質量、降低生產成本,利用計算機控制、操作和管理生產設備的系統稱為
A) CAT系統
B) CAT系統
C) CAD系統
D) CAM系統
(3) 計算機輸出設備的功能是
A)將計算機運算的二進制結果信息列印輸出
B)將計算機內部的二進制信息顯示輸出
C)將計算機運算的二進制結果信息列印輸出和顯示輸出
D) 將計算機內部的二進制信息轉換為人和設備能識別的信息
(4) Internet上的計算機,在通信之前需要
A) 建立主頁
B) 指定一個IP地址
C) 使用WWW服務
D) 發送電子郵件
(5) 信息傳輸的安全應保證信息在網路傳輸的過程中不被泄露和不被攻擊。下列哪些屬於攻擊方法
Ⅰ.復制信息 Ⅱ.剪裁信息 Ⅲ.竊聽信息
A) Ⅰ和Ⅱ
B) Ⅱ和Ⅲ
C) Ⅰ和Ⅲ
D) 全部
(6) 計算機病毒是一種具有破壞性的計算機程序,它是
A) 最初由系統自動生成的程序
B) 具有惡毒內容的文件
C) 具有自我再生能力的程序
D) 只通過網路傳播的文件
(7) 以下關於數據的存儲結構的敘述中哪一條是正確的?
A) 數據的存儲結構是數據間關系的抽象描述
B) 數據的存儲結構是邏輯結構在計算機存儲器中的實現
C) 數據的存儲結構分為線性結構和非線性結構
D) 數據的存儲結構對數據運算的具體實現沒有影響
(8) 以下關於隊列的敘述中哪一條是不正確的?
A) 隊列的特點是先進先出
B) 隊列既能用順序方式存儲,也能用鏈接方式存儲
C) 隊列適用於二叉樹對稱序周遊演算法的實現
D) 隊列適用於樹的層次次序周遊演算法的實現
(9) 單鏈表的每個結點中包括一個指針link,它指向該結點的後繼結點。現要將指針q指向的新結點插入到指針P指向的的單鏈表結點之後,下面的操作序列中哪一個是正確的?
head ~~~~~~~~~~~~~~~
r>~~~~~~~~~~~~p
↓ ~~~~~~~~~~~~~~~~~
~~~~~~~~~~~`↓
align=left>info□ → info□→ info □ → info □ → info□
~~~~~~~~~~~~~~~~~info □
~~~~~~~~~~~~~~~~~~~~↑
~~~~~~~~~~~~~~~~~~~~~~~q
A) q:=p^.link; p^.link:=q^.link;
B) p^.link:=q^.link; q:=p^.link;
C) q^.link:=p^.link;p^link:=q;
D) p^.link:=q; q^.link:=p^.link;
(10) 按行優先順序存儲下三角矩陣的非零元素,則計算非零元素aij(1≤j≤i≤n)的地址的公式為
A) LOC(aij)=LOC(a11)+i×(i+1)/2+j
B) LOC(aij)=LOC(a11)+i×(i+1)/2+(j-1)
C) LOC(aij)=LOC(a11)+i×(i-1)/2+j
D) LOC(aij)=LOC(a11)+i×(i-1)/2+(j-1)
第(11)至(12)題基於下面的敘述:某二叉樹結點的前序序列為E、A、C、B、D、G、F,對稱序序列為A、B、C、D、E、F、G。
(11) 該二叉樹結點的後序序列為
A)B、D、C、A、F、G、E
B)B、D、C、F、A、G、E
C)E、G、F、A、C、D、B
D)E、G、A、C、D、F、B
(12) 該二叉樹對應的樹林包括多少棵樹?
A) 1
B) 2
C)3
D)4
(13) 在順序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找關鍵碼值11,所需的關鍵碼比較次數為
A) 2
B) 3瀀>
❻ 什麼是文件目錄、目錄文件與當前目錄
文件目錄、目錄文件與當前目錄分別是:
1、文件目錄:為實現「按名存取」,必須建立文件名與輔存空間中物理地址的對應關系,體現這種對應關系的數據結構稱為文件目錄。
2、目錄文件:為了實現文件目錄的管理,通常將文件目錄以文件的形式保存在外存空間,這個文件就被稱為目錄文件。目錄文件是長度固定的記錄式文件。
3、當前目錄:當一個文件系統含有許多級時,每訪問一個文件,都要使用從樹根開始直到樹葉(數據文件)為止的、包括各中間節點(目錄)名的全路徑名。
同時由於一個進程運行時所訪問的文件大多僅局限於某個范圍,因而非常不便。基於這一點,可為每個進程設置一個「當前目錄」
,又稱為「工作目錄」。
(6)在文件系統中下列關於當前目錄擴展閱讀
目錄結構功能介紹和種類:
目錄結構的組織,關繫到文件系統的存取速度,也關繫到文件的共享性和安全性。因此,組織好文件的目錄,是設計好文件系統的重要環節。目前常用的目冊搜亮錄結構形式有單級目錄、兩級目錄和多級目錄。
1、單級目錄結構
這是最簡單的目錄結構。在整個文件系統中只建立一張目錄表,每個文件佔一個目錄項,目錄項中含文件名、文件擴展名、文件長度、文件類型、文件物理地址以及其它文件屬性。此外,為表明每個目錄項是否空閑,又設置了一個狀態位。
2、兩級目錄
為了克服單級目錄所存在的缺點,可以為每一個用戶建立一個單獨的用戶文件目錄UFD(User
FileDirectory)。這些文件目錄具有相似的結構,它由用戶所有文件的文件控制塊組成。
此外,在系統中再建立一個主文件目錄
MFD(MasterFileDirectory);
在主文件目錄中,每個用戶目錄文件都佔有一個目錄項,其目錄項中包括用戶名和指向該用戶目錄文件的指針。
3、多級目錄結構
對於大型文件系統,通常採用三級或三級以上的目錄結構,以提高對目錄的檢索速度和文件系統州寬的性能。多級目錄結構又稱為樹型目錄結構,主目錄在這里被稱為根目錄,把數據文件稱為樹葉,其它的目錄均作為樹的結點。漏孝
❼ 執行linux命令,其中顯示當前目錄下的文件命令是什麼
linux系統下用ls命令列出當前目錄下的文件。
ls 命令將每個由 Directory 參數指定的目錄或者每個由 File 參數指定的名稱寫到標准輸出,以及您所要求的和標志一起的其它信息。如果不指定 File 或 Directory 參數, ls 命令顯示當前目錄的內容。
ls運行時可指定下列參數,
-a 列出目錄下的所有文件,包括以 . 開頭的隱含文件。
-b 把文件名中不可輸出的字元用反斜杠加字元編號(就象在C語言里一樣)的形式列出。
-c 輸出文件的 i 節點的修改時間,並以此排序。
-d 將目錄象文件一樣顯示,而不是顯示其下的文件。
-e 輸出時間的全部信息,而不是輸出簡略信息。
-f -U 對輸出的文件不排序。
-g 無用。
-i 輸出文件的 i 節點的索引信息。
-k 以 k 位元組的形式表示文件的大小。
-l 列出文件的詳細信息。
-m 橫向輸出文件名,並以「,」作分格符。
-n 用數字的 UID,GID 代替名稱。
-o 顯示文件的除組信息外的詳細信息。
-p -F 在每個文件名後附上一個字元以說明該文件的類型,「*」表示可執行的普通
文件;「/」表示目錄;「@」表示符號鏈接;「|」表示FIFOs;「=」表示套
接字(sockets)。
-q 用?代替不可輸出的字元。
-r 對目錄反向排序。
-s 在每個文件名後輸出該文件的大小。
-t 以時間排序。
-u 以文件上次被訪問的時間排序。
-x 按列輸出,橫向排序。
-A 顯示除 「.」和「..」外的所有文件。
-B 不輸出以 「~」結尾的備份文件。
-C 按列輸出,縱向排序。
-G 輸出文件的組的信息。
-L 列出鏈接文件名而不是鏈接到的文件。
-N 不限制文件長度。
-Q 把輸出的文件名用雙引號括起來。
-R 列出所有子目錄下的文件。
-S 以文件大小排序。
-X 以文件的擴展名(最後一個 . 後的字元)排序。
-1 一行只輸出一個文件。
預設情況下,ls 命令按照文件名的字母順序顯示所有信息。整理順序由環境變數 LANG 或 LC_COLLATE 環境變數確定。在 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 "National Language Support Overview for Programming" 包含更多細節。當 ls 命令顯示目錄內容時,它不顯示名稱以 .(點)開頭的文件項,除非使用了 -a 或者 -A 標志。如果命令由 root 用戶執行,它預設使用 -A 標志。格式化輸出有三種主要方式:* 每行列出一項。* 通過指定 -C 或 -x 標志以多列列出各項。當向 tty 輸出時,-C 標志是預設格式。如果文件或目錄名太長,ls 命令顯示單列輸出。* 通過指定 -m 標志可以以逗號分隔系列列出項。要確定輸出行中字元位置的數目,ls 命令使用環境變數 COLUMNS。如果沒有設置此變數,命令獲取顯示的當前列值。如果使用這些方法,ls 命令還不能確定字元位置的數量,它就使用預設值 80。使用 -e 和 -l 標志所顯示的方式解釋如下:如果第一個字元是:d 此項為目錄。b 此項為塊特殊文件。c 此項為字元特殊文件。l 此項為符號鏈接,或者指定 -N 標志,或者符號鏈接不指向現有文件。p 此項為一個先進先出(FIFO)特殊文件。s 此項為本地套接字。- 此項為普通文件。接下來的 9 個字元被分成 3 個集合,每個集合 3 個字元。第一組 3 字元集合顯示所有者許可權。下一組 3 字元集合顯示了組中其它用戶的許可權。最後 3 字元集合顯示了訪問此文件的其它任何人的許可權。每個集合中的三個字元各自表示了文件的讀、寫和執行許可權。目錄的執行許可權讓您可以搜索目錄中的指定文件。