99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀一張圖了解磁盤里的數(shù)據(jù)結構_數(shù)據(jù)分析師
一張圖了解磁盤里的數(shù)據(jù)結構_數(shù)據(jù)分析師
2015-01-26
收藏

一張圖了解磁盤里的數(shù)據(jù)結構_數(shù)據(jù)分析師


有了文件系統(tǒng),使我們對文件的訪問變得很容易,不用考慮文件到底存在哪里,怎么存的,不過適當了解一下底層文件存儲還是有幫助的。我們知道文件不僅僅能夠存儲在磁盤上,還可以存儲在光盤等設備上,對于存儲在硬盤上的,對于不同的硬盤內部存儲介質,如磁性盤面、閃存(SSD固態(tài)硬盤存儲介質)存儲結構也是不同的;對于同樣的存儲介質的磁盤,不同的文件系統(tǒng),如NTFS、FAT、ext等,底層存儲也是有所區(qū)別的,下面僅僅對整體邏輯上的結構做一簡單介紹。

先來看下圖,我花了一下午時間畫的,后面就要圍繞這張圖來展開的。

數(shù)據(jù)結構

點擊可放大

 

不要被上面的圖嚇到,我來一點點的解釋。

先來整體上看一下,上面圖是我電腦的磁盤,按照LBA尋址,把所有的扇區(qū)按照從左到右,依次排開,最左邊為第一塊扇區(qū),最右邊是最后一塊扇區(qū),所有數(shù)據(jù)信息就存儲在里面。從左到右分為了幾部分:Start Sections–>Partition1(系統(tǒng)保留分區(qū))–>Partition2(C盤)—>Partition3(D盤)–>Partition4(E盤)–>Partition5(F盤),其中Partition1~3是主分區(qū),Partion4~5是擴展分區(qū)上的兩個邏輯分區(qū),里面綠色的部分是分區(qū)與分區(qū)之間的Partition gap,大小為1MB,最后黃色的表示Unpartitional space,沒有利用的,也是1MB。下面開始分開逐個來解釋一下。

一、Start Sections:

這個開始扇區(qū)部分有1MB大小,其中第一個扇區(qū),也是整個磁盤的第一個扇區(qū),位于0柱面0磁頭1扇區(qū),也叫做主引導扇區(qū),一共512個字節(jié),分為了三部分:

(1)MBR(446字節(jié)):Main Boot Record,主引導記錄

如果直接說MBR可能不知道它從何而來,我們從開機來看看,它到底在什么時候起作用的。我們按下電腦的開機按鍵,就給主板通上了電,上面的bios程序開始運行,對電腦硬件進行檢測,然后就需要我們去選擇First boot device,我們可以從U盤啟動、從光盤啟動,當然也可以從硬盤啟動,而且很多時候默認的是從硬盤啟動。如果我們選擇了從硬盤啟動,那么bios程序就會讀取該設備的第一個扇區(qū)的數(shù)據(jù),也就是前面512個字節(jié),如果最后兩個字節(jié)不是以0x55AA結束,那么表示這個設備不可以用來啟動;如果是0x55AA,那么表示該設備可以用來啟動,bios程序就會有一個jump的操作,跳轉到硬盤這一個扇區(qū)的代碼,把操作交給硬盤,那么跳轉的是哪兒呢?就是我們要說的MBR,主引導記錄。

MBR中包含了整個硬盤的一些參數(shù)和一段引導程序,引導程序就會去DPT磁盤分區(qū)表里面去找到底從硬盤的哪個分區(qū)去啟動(具有激活標志的分區(qū)),找到后就把控制權交出去,不過這之前會先檢查DPT磁盤分區(qū)表是否正確。

(2)DPT(64字節(jié)):Disk Partition Table,磁盤分區(qū)表

DPT用來記錄磁盤到底分了幾個分區(qū)以及分區(qū)的一些信息,磁盤分區(qū)有許多好處,比如不同的分區(qū)放不同的數(shù)據(jù),又或者可以安裝多操作系統(tǒng)等等。DPT只有64個字節(jié),分成了四項,分別為第一~四分區(qū)表項,圖中紅色虛線箭頭指向的。每個分區(qū)表項占16個字節(jié),因此一個磁盤只能分為四個分區(qū),即四個主分區(qū)。當然如果想增加更多的分區(qū),其中一個主分區(qū)可以當成擴展分區(qū),在擴展分區(qū)里面新建邏輯分區(qū)。

磁盤分區(qū)表的四個分區(qū)表項內容格式一致,我們拿出一個分區(qū)表項(16字節(jié))看看都包含了什么。

第1個字節(jié):如果為0x80,表示是激活分區(qū),那么前面的MBR引導程序就把控制權給這個分區(qū)。四個分區(qū)只能有一個是激活的。0x00表示非激活的分區(qū)。

第2-4個字節(jié):主分區(qū)的第一個扇區(qū)的CHS地址,里面有程序代碼的。

第5個字節(jié):主分區(qū)的類型。例如01表示FAT32,05表示extended(如果一個分區(qū)的主分區(qū)id號為05,那么它就是一個擴展分區(qū)了)等,具體可參看分區(qū)類型標志。

第6-8個字節(jié):主分區(qū)的最后一個扇區(qū)的CHS地址,所以我們改改分區(qū)表,也可以修改磁盤分區(qū)的大小。

第9-12個字節(jié):該主分區(qū)的第一個扇區(qū)的邏輯地址LBA。

第13-16個字節(jié):主分區(qū)的扇區(qū)總數(shù)。

我們看到我們上圖中,四個分區(qū)表項分別對應了三個主分區(qū)和一個擴展分區(qū)。

(3)其他幾個扇區(qū):除了第一個扇區(qū)外,1MB空間里面的其他幾個扇區(qū)就空著了,可能沒用,也可能與后面要講的partition gap功能一致。

二、主分區(qū)

我的磁盤分了三個主分區(qū),分別為系統(tǒng)保留、C盤、D盤,我們以C盤為例,看看主分區(qū)所占用的扇區(qū),可以分為幾部分。

(1)引導扇區(qū):OS Boot Record,主分區(qū)的引導記錄,有時也叫卷引導記錄(Volume boot record)含有一段操作系統(tǒng)的引導程序,如果該分區(qū)是激活的,可以通過它來啟動本主分區(qū)的操作系統(tǒng)。

(2)DATA數(shù)據(jù)區(qū):存儲數(shù)據(jù),不同的文件系統(tǒng),如fat、ntfs還會細分。

三、Partition gap

用Winhex查看磁盤情況,往往會看到分區(qū)和分區(qū)之間會有Partition gap,so上面的一個解釋,可以參看一下,Windows disk partion gap。

四、擴展分區(qū)

我的最后一個主分區(qū)當做擴展分區(qū),里面有兩個邏輯分區(qū)E盤和F盤,每一個邏輯分區(qū)由幾部分組成。

(1)擴展分區(qū)表

擴展分區(qū)的第一個邏輯分區(qū)的第一個扇區(qū),叫做EBR,extended boot record,擴展分區(qū)記錄,類似于整個磁盤的第一個扇區(qū),但是它沒有引導程序,只有一個擴展分區(qū)表和0x55AA結束標志,其中擴展分區(qū)表由四部分組成。里面的第二項可以找到下一個邏輯分區(qū)的位置。

(2)引導扇區(qū):同前。

(3)數(shù)據(jù)區(qū):同前。

五、Unpartitional space

只有1MB空間,我也不想知道它是干什么了。

數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師考試動態(tài)
數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調,回調的第一個參數(shù)驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }