導航:首頁 > 文件教程 > 整個文件殘留區的數據包括

整個文件殘留區的數據包括

發布時間:2023-08-28 07:27:04

① 緩存數據包括哪些

手機里的緩存數據指的是什麼?
就是你上網瀏覽時產生的臨時文件
手機緩存數據是什麼意思
緩存是指臨時文件交換區,手機把最常用的文件從存儲器里提出來臨時放在緩存里,就像把工具和材料搬上工作台一樣,這樣會比用時現去倉庫取更方便。因為緩存往往使用的是RAM(斷電即掉的非永久儲存),所以在忙完後還是會把文件送到手機存儲器里,
什麼是緩存數據?(手機上的)
緩存(Cache memory)是硬碟控制器上的一塊內存晶元,具有極快的存取速度,它是硬碟內部存儲和外界介面之間的緩沖器。由於硬碟的內部數據傳輸速度和外界介面傳輸速度不同,緩存在其中起到一個緩沖的作用。緩存的大小與速度是直接關繫到硬碟的傳輸速度的重要因素,能夠大幅度地提高硬碟整體性能。當硬碟存取零碎數據時需要不斷地在硬碟與內存之間交換數據,有大緩存,則可以將那些零碎數據暫存在緩存中,減小外系統的負荷,也提高了數據的傳輸速度為了提高訪問網頁的速度,瀏覽器會採用累積式加速的方法,將曾經訪問的網頁內容(包括圖片以及cookie文件等)存放在電腦里。這個存放空間,就稱它為IE緩存。以後每次訪問網站時,瀏覽器會首先搜索這個目錄,其中已經有訪問過的內容,那I就不必從網上下載,而直接從緩存中調出來,從而提高了纖簡訪問網站的速度
qq緩存文件包括哪些內容?
緩存就是數據交換的緩沖區(稱作Cache),當某一硬體要讀取數據時,會首先從緩存中查找需要的數據,如果找到了則直接執行,找不到的話則從內存中找。由於緩存的運行速度比內存快得多,故緩存的作用就是幫助硬體更快地運行。

因為緩存往往使用的是RAM(斷電即掉的非永久儲存),所以在用完後還是會把文件送到硬碟等存儲器里永久存儲。電腦里最大的緩存就是內存條了,最快的是CPU上鑲的L1和L2緩存,顯卡的顯存是給顯卡運算毀御褲晶元用的緩存,硬碟上也有16M或者32M的緩存。

如何清理

打開qq,點擊下方導航菜單中的設置圖標,進入系統設置裡面,進入基本設置——》文件管理,接下來,會進行緩存文件的掃描,需要等待幾分鍾,如果你很久沒有清理過的話。掃描完成後,點擊全部刪除。同時,你也可以勾選上自動清理的qq產生的緩存文件的勾選項,以後就會自動清理了。點擊全部刪除後,耐心待定刪除,一會就刪除成功了,
手機里的緩存文件是什麼?
那隻是一些臨時信息而已,刪除無影響的,那些設置信息還在的【如果要重置該軟體,要在手機里清除數據就好
緩存有什麼作用,應用程序緩存分為哪4種
硬碟的緩存主要起三種作用:

1、預讀取

當硬碟受到CPU指令控制開始讀取數據時,硬碟上的控制晶元會控制磁頭把正在讀取的簇的下一個或者幾個簇中的數據讀到緩存中(由於硬碟上數據存儲時是比較連續的,所以讀取命中率較高),當需要讀取下一個或者幾個簇中的數據的時候,硬碟則不需要再次讀取數據,直接把緩存中的數據傳輸到內存中就可以了,由於緩存的速度遠遠高於磁頭讀寫的速度,所以能夠達到明顯改善性能的目的。

對寫入動作進行緩存

2、是對寫入動作進行緩存。當硬碟接到寫入數據的指令之後,並不會馬上將數據寫入到碟片上,而是先暫時存儲在緩存里,然後發送一個「數據已寫入」拆悉的信號給系統,這時系統就會認為數據已經寫入,並繼續執行下面的工作,而硬碟則在空閑(不進行讀取或寫入的時候)時再將緩存中的數據寫入到碟片上。雖然對於寫入數據的性能有一定提升,但也不可避免地帶來了安全隱患——如果數據還在緩存里的時候突然掉電,那麼這些數據就會丟失。對於這個問題,硬碟廠商們自然也有解決辦法:掉電時,磁頭會藉助慣性將緩存中的數據寫入零磁軌以外的暫存區域,等到下次啟動時再將這些數據寫入目的地。

臨時存儲最近訪問過的數據

3、是臨時存儲最近訪問過的數據。有時候,某些數據是會經常需要訪問的,硬碟內部的緩存會將讀取比較頻繁的一些數據存儲在緩存中,再次讀取時就可以直接從緩存中直接傳輸。緩存就像是一台計算機的內存一樣,在硬碟讀寫數據時,負責數據的存儲、寄放等功能。這樣一來,不僅可以大大減少數據讀寫的時間以提高硬碟的使用效率。同時利用緩存還可以讓硬碟減少頻繁的讀寫,讓硬碟更加安靜,更加省電梗更大的硬碟緩存,你將讀取游戲時更快,拷貝文件時候更快,在系統啟動中更為領先。
QQ設置里的,清空緩存數據是什麼意思?
您好

清空緩存是清空你收到的圖片或者臨時文件。(比如別人發的表情)

希望可以幫到你
清空所有聊天記錄和清空緩存數據有什麼區別
兩者不同概念,,一個是聊天工具,,一個是電腦瀏覽器,,
緩存和內存有什麼區別
CPU緩存(Cache Memory)位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩存間的帶寬引起的。

緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。

正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。

最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進行了分類。當時集成在CPU內核中的緩存已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(Data Cache,D-Cache)和指令緩存(Instruction Cache,I-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,用新增的一種一級追蹤緩存替代指令緩存,容量為12KμOps,表示能存儲12K條微指令。

隨著CPU製造工藝的發展,二級緩存也能輕易的集成在CPU內核中,容量也在逐年提升。現在再用集成在CPU內部與否來定義一、二級緩存,已不確切。而且隨著二級緩存被集成入CPU內核中,以往二級緩存與CPU大差距分頻的情況也被改變,此時其以相同於主頻的速度工作,可以為CPU提供更高的傳輸速度。

二級緩存是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級緩存上有差異,由此可見二級緩存對於CPU的重要性。

CPU在緩存中找到有用的數據被稱為命中,當緩存中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問內存。從理論上講,在一顆擁有二級緩存的CPU中,讀取一級緩存的命中率為80%。也就是說CPU一級緩存中找到的有用數據占數據總量的80%,剩下的20%從二級緩存中讀取。由於不能准確預測將要執行的數據,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數據占總數據的16%)。那麼還有的數據就不得不從內存調用,但這已經是一個相當小的比例了。目前的較高端的CPU中,還會帶有三級緩存,它是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的CPU中,只有約5%的數據需要從內存中調用,這進一步提高了CPU的效率。

為了保證CPU訪問時有較高的命中率,緩存中的內容應該按一定的演算法替換。一種較常用的演算法是「最近最少使用演算法」(LRU演算法),它是將最近一段時間內最少被訪問過......>>
手機軟體清除緩存和清除數據有什麼不一樣?
帳號密碼還裡面下載的表情聊天背景等,沒清除什麼重要東西。放心清楚吧

② 電腦中的本地磁碟,哪些文件可以刪除,哪些文件不可以刪除

除了C盤的文件,其它盤的文件都可以刪除。
如果你一定要清理C盤的文件,那麼建議你看看下面的操作:
方法/步驟
1
一、清理Documents and Settings目錄

「Documents and Settings」是XP中比較特殊的目錄,它記錄了用戶的一些特別的文件信息。下面來看看有什麼內容是可以刪除的。

C:\Documents and Settings\All Users\Application Data\Microsoft\User Account Pictures\Default Pictures
在設置賬戶或使用MSN時都會使用到。這些圖片沒什麼特別,可以刪除,也可以用自己喜歡的圖片來替代。

C:\Documents and Settings\用戶名\My Documents\My Music
一般人們都在硬碟中開辟專門的存放音樂的地方,那麼把它刪除吧。有一點要注意:如果經常播放WMA文件,難免會下載一些音樂播放許可證到本地硬碟,而系統默認會把這些許可證放在這個目錄中,如果在目錄中看到「許可證備份」目錄,建議把它復制到其他位置,並在WMP的「工具/許可證管理」中更改路徑。

C:\Documents and Settings\用戶名\[開始]菜單\程序\附件
這個目錄是一些程序的快捷圖標。在附件中真正用到的功能很少,常用的只有「記事本」、「Windows資源管理器」。把需要的程序快捷圖標復制到「C:\Documents and Settings\All Users\[開始]菜單\程序\附件」中,然後再刪除此目錄。

C:\Documents and Settings\用戶名\Favorites
這里的快捷圖標,「MSN.com」和「Radio Station Guide」,這些你用過嗎?沒用就刪吧。

C:\Documents and Settings\用戶名\Favorites\Links
與上面一樣,如果用不到,就可刪除這個目錄。在這里還要修改一下注冊表,以永久刪除鏈接文件夾。在注冊表中找到「HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar」項,將右側的「LinksFolderName」的值刪除。

目的:精簡目錄結構和程序快捷圖標。

2
二、程序文件也可刪除

「C:\Program Files」大家很熟悉,因為在安裝程序時,其默認的安裝路徑就在這里,下面看看裡面有什麼內容可刪除。

C:\Program Files\Windows Update
這個目錄用於在線升級,可以刪除。只要再次登錄Windows Update的升級網站進行升級,這個目錄會被自動重建。

C:\Program Files\Windows Media Player\Skins
這是WMP自帶的「皮膚」,相信很多「皮膚」不會用到,不如只留下幾個常用的,把其餘的刪掉。

C:\Program Files\Common Files\Microsoft Shared\Stationery
這是Outlook中的信紙圖案,有用的留著,用不到的就刪除。如果不用Outlook收發郵件,則全部刪掉。

目的:刪除程序中不用的組件。

3
三、Windows目錄也可清理

不要被「C:\Windows」所嚇倒,這裡面同樣有不少東西可刪除。在這個目錄下,「.BAK、.BMP、.OLD、.TMP」類型的文件可以刪除。除SchedLgU.txt(它被用於計劃任務程序服務),「.TXT」文件也可刪除。另外,clock.avi、Control.ini文件也可刪除,它不會對系統造成任何影響。

C:\Windows\$NtUninstall$
這是在線升級Windows時系統自動創建的目錄,其作用是方便卸載已安裝的系統補丁。如果補丁正常運行了,這些目錄就無意義了,可安全刪除這些目錄及文件。你可在「添加或刪除程序」中去卸載這些補丁,當然補丁並沒有真正刪除,只是讓「添加或刪除程序」窗口變得干凈些。

C:\Windows\Help
在第一次運行Windows XP時,系統總會提示運行「漫遊Windows XP」,中文版使用的是一個HTML格式的文件,只有文件,沒有聲音。其實在系統中還安裝了英文版的漫遊功能,雖然是英文,但有語言,有音樂,還有漂亮的動畫。它就是「Tours/mmtour」目錄中的「tour.exe」。如果沒有用了,則可將「Tours」整個目錄刪掉。在這之前,應先在「C:\Windows\System32\dllcache」中刪除「tourstrt.exe、tourW.exe以及「C:\Windows\System32」目錄下的「tourstart.exe」文件。

C:\Windows\inf (隱藏)
在這個目錄中會看到很多相同文件名,不同後綴的文件,分別為「.inf」和「.pnf」,「.pnf」是「.inf」文件的預編譯文件,如果沒有「.pnf」文件,「.inf」文件運行時會自動建立相應的「.pnf」文件。因此,這個目錄的所有「.pnf」文件都可以刪除。
(顯示)你打開「我的電腦」後,在項目欄的「工具」里點「文件夾選項」,彈出的對話框點「查看」,在隱藏文件和文件夾下選上「顯示所有文件和文件夾」,點「應用」就可以了

C:\Windows\Media
這是系統自帶的一些MID和WAV音效,喜歡的留下,不喜歡的也可刪除。

C:\Windows\Web
這里的「gif」和「htm」文件均可刪除。到「Wallpaper」目錄中看看,系統自帶的大部分桌面背景都在這里,不喜歡的均可刪除。

C:\Windows\System32
這里有很多名如「1033」的文件夾,這些主要存放系統出現的錯誤報告,其中大部分是空文件夾,這些空文件夾可放心刪除。

C:\Windows\System32\ReinstallBackups
這里有很多子目錄,它們分別是電腦中硬體的驅動程序備份。如果對某一硬體進行升級或更換,並且確定不會再使用原來的驅動程序,則可以刪除相應的目錄。

目的:刪除系統目錄中冗餘的備份文件。
4
【刪除多餘系統文件】

刪除【驅動備份】
*/Windows/driver cache/i386 目錄下的 Driver.cab 文件(73MB)

刪除【不常用的輸入法】
*/Windows ime 目錄下CHTIME 繁體中文 IMJP8_1 日文 IMKR6_1 韓文

刪除【備用的DLL文件】
*/Windows/system32/dllcache下文件(200-300MB)
運行 「sfc.exe /purgecache」也行

刪除【幫助文件】
*/Windows/Help/目錄中的幫助文件

刪除【多餘的屏幕保護】
開始/搜索/,在彈出對話框中選單擊「所有文件或文件夾」命令,在文件名框中輸入「.scr」(不帶引號),再在「在這里尋找」下拉列表中,選擇存儲系統文件的驅動器,單擊「搜索」按鈕,然後刪除想要刪除就可以。保留(默認logon)

關閉【系統還原】
控制面板/性能和維護/系統/系統還原/中的勾選在所有驅動器上關閉系統還原。

取消【遠程】
控制面板/性能和維護/系統/遠程/取消【遠程協助】前的面的勾,取消【遠程桌面】前面的勾。

卸載【Windows Messenger】命令
開始/運行,在「運行」對話框中輸入
RunDll32 advpack.dll,LaunchINFSection %Windir%\inf\msmsgs.inf,BLC.Remove
此命令將卸載 Windows Messenger

卸載【NetMeeting】命令
rundll32.exe setupapi,InstallHinfSection NetMtg.Remove 132 msnetmtg.inf
此命令將卸載 NetMeeting

【刪除多餘系統注冊表】

開始/運行,在對話框中輸入「Regedit」,調出注冊表進行如下逐項操作:

清除多餘的【窗口配色方案】
HKEY_CURRENT_USER\Control Panel\Appearance\Schemes\
保留「Windows 標准(默認)」即可。(Windows 2000) (Windows XP)

刪除【運行】項中的歷史記錄
HKEY_CURRENT_USERS\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU\
刪除右邊,運行中的記錄本

刪除多餘的【滑鼠外觀】
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel\Cursors\Schemes\
保留 Windows 默認

刪除多餘的【世界時區】
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones\
保留「北京時間」刪除其餘的時區設置。

清除多餘【國家列表】
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Telephony\Country List\
保留「86 中國」刪除多餘的國家代碼

刪除多餘的【區域設置】
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Locale\
保留「英文:00000409 /中文:00000804」鍵值。

刪除多餘的【鍵盤布局】
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layout\DosKeybCodes
保留「英文:00000409 /中文:00000804」鍵值。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Keyboard Layouts\
保留。
00000409 (默認) 美國英語
00000804 中文 (簡體) - 美式鍵盤
E0010804 中文 (簡體) - 全拼
E0030804 中文 (簡體) - 鄭碼
E0040804 中文 (簡體) - 智能 ABC
E00E0804 中文 (簡體) - 微軟拼音輸入法 3.0 版
(系統自帶)

【刪除多餘的軟體自定義】

刪除IE工具欄上的自定義圖標
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\
鍵值下找到IE工具欄上的自定義圖標刪除就行了。

刪除IE工具欄的「FlashGet Bar」
HKEY_LOCAL_MACHINE\Software\Microsoft\Intermet Explorer\Toolbar\

刪除【添加/刪除程序】中的殘留項
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
主鍵並選中它,在該鍵下找到應用程序相對應的主鍵,然後刪除即可。

刪除多餘的DLL文件
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDlls\
鍵值為0X00000001(1)表明不被任何程序共享,可以刪除。
5
新建一個記事本並輸入以下的內容:

@echo off
echo 正在清除系統垃圾文件,請稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\小甜餅s\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
echo 清除系統垃圾完成!

③ 程序員必備知識(操作系統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-⊂(`ω´∩)

閱讀全文

與整個文件殘留區的數據包括相關的資料

熱點內容
吉林文件箱多少錢 瀏覽:113
ae模板版本 瀏覽:204
手機qq步數功能在哪裡 瀏覽:721
c程序設計04737 瀏覽:403
女孩什麼年齡學編程 瀏覽:976
安慶如何做網路營銷推廣 瀏覽:620
什麼是數據標准化 瀏覽:708
aecc三維功能實例視頻教程 瀏覽:719
iphone6s靜音鍵用法 瀏覽:560
油卡盒子APP是什麼公司名下的 瀏覽:597
怪物獵人wp文件夾什麼意思 瀏覽:108
設置密碼的pdf文件如何轉換成word 瀏覽:876
多個文件合並到一起後叫什麼 瀏覽:387
資料庫位是什麼意思 瀏覽:104
如何改變手機上的網路連接 瀏覽:908
某網站圖片侵權如何舉報 瀏覽:820
zemax宏編程有什麼用 瀏覽:874
做保函為什麼要獲取招標文件 瀏覽:921
魔獸世界數據是哪個文件夾 瀏覽:439
oppor9s手機系統升級 瀏覽:728

友情鏈接