CHS模式值轉換成LBA值

2021-05-22 10:39:07 字數 1301 閱讀 4034

硬碟的每個碟片都有兩個盤面(side),即上、下盤盤面,安照順序從上至下從「0」開始依次編號。磁碟在格式化時被劃分成許多同心圓,這些同心圓軌跡叫磁軌(track)。磁軌從外向內從0開始順序編號。所有盤面上的同一磁軌構成的乙個圓柱,通常稱做柱面(cylinder),每個柱面上的磁頭由上而下從「0」開始編號。

作業系統以扇區(sector)形式將資訊儲存在硬碟上,每個扇區包括512個位元組的資料和一些其他資訊。

這些通常用來表示硬碟的實體地址,現在隨著硬碟容量增大我們用邏輯位址即線性位址(lba)。因此我們需要了解chs與lba之間的轉換。

從chs到lba

假設用c表示當前柱面號,h表示當前磁頭號,cs表示起始柱面號,hs表示起始磁頭號,ss表示起始扇區號,ps表示每磁軌有多少個扇區,ph表示每柱面有多少個磁軌,則有以下對應關係:

lba=(c-cs)*ph*ps+(h-hs)*ps+(s-ss)

一般情況下,cs=0、hs=0、ss=1;ps=63、ph=255

那麼以下可以根據公司計算,如下:

c/h/s=0/0/1,代入上述公式中得到lba=0

c/h/s=0/0/63,代入上述公式中得到lba=62

c/h/s=1/0/1,代入上述公式中得到lba=63

c/h/s=220/156/18,代入上述公式中得到lba=3544145

從lba到chs

在這裡先介紹兩種運算div和mod。div做整除運算,即被除數除以除數所得的商的整數部分;比如5 div 3=1,33 div 6=5。

mod是餘運算,mod運算則取商的餘數;比如:5 mod 3=2,33 mod 6=5。

div和mod是一對搭檔,乙個取整乙個取餘。各個變數按照上面的進行假設,那麼有:

c=lba div (ph*ps) + cs

h=(lba div ps) mod ph + hs

s=lba mod ps + ss

如果上述不用mod運算,只用div運算可以如下:

c= lba div (ph*ps) + cs

h=lba div ps –(c-cs) * ps + ss

s=lba- (c-cs) * ph * ps - (h-hs) * ps + ss

那麼按照這個規律則有:

lba=0,相應地c/h/s=0/0/1

lba=62,相應地c/h/s=0/0/63

lba=63,相應地c/h/s=1/0/1

lba=62,相應地c/h/s=0/0/63

lba=3544145,相應地c/h/s=220/156/18,

Sale表中橫列值轉換成豎列顯示。

select employeeid,max case saledate when 2007 01 01 then amount else null end asjan,max case saledate when 2007 02 01 then amount else null end asfeb,...

把字段的值轉換成字串

這句是把上公升和 10 的業務顯示出來!select wm concat type name as bb from select type name,trunc sum mon usercount sum last mon usercount sum last mon usercount 2 as ...

Jmeter轉換成中文模式

本片文章轉至 所以,如何把英文介面換成中文呢?方法一 從網上看到的 啟動jmeter找到 options choose language chinese 簡體繁體自己選 這樣設定後介面就變成了中文,但是當我們下次開啟時又恢復了英文,要再次設定,這樣一來就很麻煩。那我們怎麼設定預設為中文呢?請看方法二...