20145317 《資訊保安系統設計基礎》第七週學習總結2
課後作業中的問題和解決過程
習題6.2
計算這樣一個磁碟的容量。它有2個碟片,10 000個柱面,每條磁軌平均有400個扇區,每個扇區平均有512個位元組
磁碟容量 = (512/400)*400*10000*2*2= 8 192 000 000 位元組 = 8.192GB
習題6.3
估計訪問下面的一個磁碟上的一個扇區需要的時間(以ms為單位)。旋轉速率:15000RPM;Taveseek = 8ms;每條磁軌的平均扇區數:500
訪問時間 = Taveseek+Taverotation+Tavetransfer = 8ms+0.51/15000RPM60secs.min1000ms/s+1/15000RPM1/50060secs/min1000ms/s=8ms+2ms+0.008ms=10.008ms
習題6.4
假設1MB的檔案由512位元組的邏輯塊組成,儲存在有如下特性的磁碟驅動器上(旋轉速率:10 000RPM,Taveseek=5ms,平均扇區/磁軌 = 1000)。
(1)最好的情況:給定邏輯塊到磁碟扇區的最好的可能的對映(即,順序的),估計讀這個檔案需要的最優時間
(2)隨機的情況:如果塊是隨機地對映到磁碟扇區的,估計讀這個檔案需要的時間
(1)T=Taveseek+Taverotation+2Tmaxrotation=5ms+3ms+26ms=20ms
(2)在這種情況下,塊被隨機的對映到扇區上,讀2000塊的每一塊都需要Taveseek+Tavgrotation=8ms。所以讀這個檔案的總時間為T = 8ms*2000=16000ms=16s
習題6.11
在前面dotprod的例子中,在我們對陣列x做了填充之後,所有對x和y的引用的命中率是多少? 在填充了之後,對於x和y陣列,只有在引用第0個和第4個元素的時候發生不命中。因而命中率為75%
習題6.8
【改變下面函式中的迴圈順序,使得它以步長為1的引用模式掃描三維陣列a】
int sumarray3d(int a[N][N][N])
{
int i,j,k,sum=0;
for(i=0;i<N;i++)
{
for(j =0;j<N;j++)
{
for(k=0;k<N;k++)
{
sum+=a[k][i][j];
}
}
}
return sum;
}
只需要對三層巢狀迴圈體的順序進行調整即可:
int sumarray3d(int a[N][N][N])
{
int i,j,k,sum=0;
for(i=0;k<N;i++)
{
for(j =0;i<N;j++)
{
for(k=0;j<N;k++)
{
sum+=a[k][i][j];
}
}
}
return sum;
}
習題6.13
有兩個低位是塊偏移(CO)
,然後是三位的組索引(CI)
,剩下的位作為標記(CT)
。