百度面試(磁碟操作)

2021-09-01 06:50:57 字數 794 閱讀 4596

在處理磁碟資料時,需要首先將其讀入記憶體才能進行處理。如果要讀取的資料已經在記憶體中,則可以直接 訪問記憶體。通常來說記憶體是有限的,因此要讀取新的資料時必須覆蓋記憶體中一部分原有的資料。假設現在有n塊同樣大小的資料,記憶體一共可以容納m塊資料。現在給出 一系列對這些資料的讀取請求,要求它們必須按照給定的順序被讀取,同時要求讀取磁碟 的次數盡可能地少。請簡述乙個策略滿足這樣的要求。

整個系統分為三部分:

1.記憶體,可以存放m塊資料

2.外存磁碟,有n塊資料

3.資料佇列,存放了資料讀取的順序 (一系列對資料的讀取請求)

例如n為3 (1,2,3) 此時 資料佇列可能是 (1,2,1,3,2,2)等等

記憶體呢,可以有兩種狀態

1.記憶體未滿

2.記憶體已滿

策略:一、如果記憶體未滿,對於要讀取的資料,首先查詢記憶體中是否已經存在,如果存在則直接從記憶體中讀取,如果不存在則從硬碟中讀取,這樣既可以防止記憶體中有重複資料出現,又能盡可能少的讀取磁碟資料

二、如果記憶體已經滿,就是n>m時唄,這時候對於讀取的資料,首先查詢記憶體中是否已經存在,如果存在則直接讀取記憶體中的資料,如果不存在,則要替換記憶體中的資料,即舊的被移走,新的資料移進。

其中替換演算法有:

記憶體中的m個資料,依次檢查待讀的n-m個資料,是否在記憶體中存在,如果存在則記憶體中的相應資料不能替換,對於記憶體中的資料沒有對應的n-m個資料的可以替換。

只可以保證盡可能少的讀取磁碟資料。

這個題,按照資料佇列讀資料時,記憶體中有的就直接從記憶體中讀取,沒有的就從磁碟中讀取,其中還涉及到記憶體是否已滿時操作的差異,如果記憶體已滿則要用舊的替換新的。

磁碟操作命令

1.製作映象,掛載等 dd if dev mmcblk0 of ext4.img bs 512 count 131072 if是輸入,of是輸出,映象大小為64m mkfs.ext4 ext4.img 格式化ext4.img成ext4格式 mount ext4.img mnt 修改映象裡內容 修改 ...

百度面試小結

首先就是自我介紹啦,接著我們聊到前兩天csdn資料庫被黑導致使用者密碼被盜,然後聯絡到我和同學做的乙個小專案,專案是用php寫的,面試官就問我是怎麼處理使用者登入資訊的,我答用cookie,當然我知道這個很不安全,但是小 只供本校學生使用,就沒有考慮http傳輸時被竊取,當然我資料庫裡面是用md5加...

百度面試感想

下面就講講面試的過程,我報的移動終端開發,開始是自我介紹,我想這個已經介紹了大概好多次了,等我說完後,他就問我感覺筆試怎麼樣,我就說筆試有點難,然後叫我寫一道字串的題 乙個字串a abcd b cdab 怎樣去判斷b是否為a 字串左轉而成的結果,然後寫了二叉樹的深度優先遍歷,昨天晚上看了下,但是過去...