某虚拟存储系统采用最近最少使用(LRU)页面淘汰算法,假定系统为每个作业分配4个页面的主存空间--软考系统架构设计师--不会做题?“猿”来绘个图解决吧
軟考系統架構設計師考這樣的題,大家可能覺得有問題?
我對這個題的看法,
1. 首先作為一個架構師,需要了解操作系統的基礎知識吧,這個絕對是沒爭議的,作為程序員必須要熟悉的基礎,要了一定的層次,如果還不懂操作系統的知識,那還算是合格的架構師?
2. 這個題同樣考察了一定的思維邏輯在里面,屬于比較綜合的題型,包括對一維數組、二維數組的理解,操作系統缺頁中斷的理解,高級語言嵌套循環的寫法,等等,涉及到的知識比較廣,又比較基礎,所以是對一個人IT的基礎知識的考察。
如果基礎都不懂?架構師? 別鬧了,后面還有排隊的,你先靠后...
某虛擬存儲系統采用最近最少使用(LRU)頁面淘汰算法,假定系統為每個作業分配4個頁面的主存空間,其中一個頁面用來存放程序。現有某作業的
程序如下:
Var A: Array[1..100,1..100] OF integer;
i,j: integer;
FOR i:=1 to 100 DO
FOR j:=1 to 100 DO
A[i,j]:=0;
設每個頁面可存放200個整數變量,變量i、j存放在程序頁中。初始時,程序及i、j均已在內存,其余3頁為空。若矩陣A按行序存放,那么當程序執行完后共產
生( )次缺頁中斷;若矩陣A按列序存放,那么當程序執行完后共產生( )次缺頁中斷。
A.50
B.100
C.5000
D.10000
?
A.50
B.100
C.5000
D.10000
?
若矩陣A按行序存放,什么意思呢?
什么是行序、什么是列序?由題意中描述的每個頁面存放200個遍歷,行序的意思就是,2行(100*100矩陣)的數據由一個頁面存儲,同理列序意思就是2列的數據由一個頁面存儲。
一圖勝千言,我們看下繪解的過程吧!!!
矩陣為 100*100,我這里更喜歡叫它二維數組,那么存放了10000個數據,每200個數據可以存放到內存的一個頁面中。
按行序存放的二維數組,每2行就可以占用一個內存頁面,初始狀態內存中的3個頁面都是空的,那么訪問第0和1行時,發生一次卻也中斷,訪問2和3、4和5行的時候也會發生缺頁中斷。
?因為內存中只有3個頁面空閑了,那么訪問6和7行的時候,會按一定的算法淘汰掉之前用過的頁面,也會發生缺頁中斷。
總結:對于二維數組,每2行發生一次缺頁中斷,總共100行,也就是總共發生了50次缺頁中斷。
按列序存儲就不一樣了, 二維數組中的第0列和第1列,存放在內存中的一個頁面,第2和3列存放在內存中的一個頁面,以此類推...
題目中的嵌套循環,是按行為單位遍歷二維數組,所以訪問Array[0,0]、Array[0,1]發生一次缺頁中斷,訪問Array[0,2]、Array[0,3]時候又發生一次缺頁中斷,那么二維數組的一行就需要發生50次缺頁中斷,這就是所謂的系統“抖動現象”。一共需要訪問100行數據,每行50次缺頁中斷,因此列序存儲的缺頁中斷次數為5000次。
如何想深入了解操作系統存儲管理、缺頁中斷問題,可以參考以下文章:
http://www.ylaihui.com/blog/article/9276?rootCategoryId=16
總結
以上是生活随笔為你收集整理的某虚拟存储系统采用最近最少使用(LRU)页面淘汰算法,假定系统为每个作业分配4个页面的主存空间--软考系统架构设计师--不会做题?“猿”来绘个图解决吧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Alpha测试与Beta测试
- 下一篇: 在Windows Server 2008