华为内部面试题库---(2)
1.在分頁存儲管理系統中,從頁號到物理塊號的地址映射是通過(? )實現的。
A.段表?
B.頁表???
C.PCB???
D.JCB
答案:B
???? 用戶程序的地址空間被劃分成若干固定大小的區域,稱為“頁”,相應地,內存空間分成若干個物理塊,頁和塊的大小相等,可將用戶程序的某一頁放在內存的一個塊中。線性地址包含了頁號信息和頁內偏移量信息(頁大小為4Kbyte時線性地址的低12位為頁內偏移量),頁表的功能是將一個線性地址的頁號轉換為某一個物理塊的物理地址。得到了物理塊的物理地址后通過線性地址中的頁內偏移量就可以找到精確的物理地址。
???? 分段是將邏輯地址轉換為線性地址,在LINUX中邏輯地址與線性地址是一致的,即LINUX實際上沒有使用分段功能。
???? PCB(進程控制塊):進程創建時內核為其分配的一個由結構體task_struct所定義的數據結構,其中包括了管理進程所需的各種信息,進程自身不能對其直接存取。
???? JCB:作業是用戶提交給操作系統計算的一個獨立任務,一般每個作業必須經過若干個相對獨立又相互關聯的順序加工步驟才能得到結果。為有效管理作業,操作系統為每個作業建立作業控制塊JCB(Job Control Block)用于對作業進行管理。JCB通常在批作業進入系統時建立,它是作業存在于系統的標志,作業撤離時,JCB也被撤銷。
?
2.快速排序在( )情況下最易發揮其長處
?? A.被排序的數據中含有多個相同排序碼
?? B.被排序的數據已基本有序
?? C.被排序的數據完全無序
?? D.被排序的數據中的最大值和最小值相差懸殊
答案: C?
???? 在快速排序算法中, n個元素被分成三段:左段l e f t,右段r i g h t和中段m i d d l e。中段僅包含一個元素。左段中各元素都小于等于中段元素,右段中各元素都大于等于中段元素。
???? 因此l e f t和r i g h t中的元素可以獨立排序,并且不必對l e f t和r i g h t的排序結果進行合并。m i d d l e中的元素被稱為支點( pivot )。支點的一種選法是選擇待排序段中的第一個元素。
????在最壞情況下(被排序的數據已基本有序) l e f t總是為空,快速排序所需的計算時間為O(n^2)。在最好情況下(被排序的數據完全無序), le f t和r i g h t中的元素數目大致相同,快速排序的復雜性為O(nlogn)。
?
3.采用(? )不會產生內部碎片
??? A.分頁存儲管理?? B.分段存儲管理?? C.固定分區存儲管?? D.段頁式存儲管理
答案: B
???? 在一個分區內部出現的碎片(即被浪費的空間)稱做內部碎片,如固定分區法會產生內部碎片.在所有分區之外新增的碎片稱做外部碎片.
???? 在分頁系統中,允許將進程的各個頁離散地存儲在內存不同的物理塊中,但系統應能保證進程的正確運行,即能在內存中找到每個頁面所對應的物理塊。為此,系統又為每個進程建立了一張頁面映像表,簡稱頁表。
???? 分段管理方式和分頁管理方式在實現思路上是很相似的,只不過他們的基本單位不同。分段有段表,也有地址變換機構。
???? 段頁式系統的基本原理,是分段和分頁原理的結合,即先將用戶程序分成若干個段,再把每個段分成若干個頁,并為每一個段賦予一個段名。在段頁式系統中,地址結構由段號、段內頁號和頁內地址三部分所組成。
分頁和分段的主要區別:
1、兩者相似之處:兩者都采用離散分配方式,且都要通過地址映射機構來實現地址變換。
2、兩者不同之處:
(1)頁是信息的物理單位,分頁是為實現離散分配方式,以消減內存的外零頭,提高內存的利用率。或者說,分頁僅僅是由于系統管理的需要而不是用戶的需要。段則是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好地滿足用戶的需要。
(2)頁的大小固定且由系統決定,而段的長度卻不固定。
(3)分頁的作業地址空間是一維的,即單一的線性地址空間;而分段的作業地址空間則是二維的。
?
4.下面敘述中正確的是(? )。
??? A.操作系統的一個重要概念是進程,因此不同進程所執行的代碼也一定不同
??? B.為了避免發生進程死鎖,各進程只能逐個申請資源
??? C.操作系統用PCB管理進程,用戶進程可以從PCB中讀出與本身運行狀態有關的信息
??? D.進程同步是指某些進程之間在邏輯上的相互制約關系?
標準答案是 D
A:不同進程可以執行相同的代碼,例如動態庫。
B:產生死鎖的四個必要條件:
(1)互斥條件:一個資源每次只能被一個進程使用。
(2)請求與保持條件:一個進程因請求資源而阻塞時,對已獲得的資源保持不放。
(3)不剝奪條件:進程已獲得的資源,在末使用完之前,不能強行剝奪。
(4)循環等待條件:若干進程之間形成一種頭尾相接的循環等待資源關系。
這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發生死鎖。?
C:個人覺得也算正確,不管是用戶進程還是內核線程,只要是在內核態就可以讀取自身PCB。問題是目前用戶進程進入內核態的方式只能是系統調用和中斷處理,而目前操作系統沒有提供這種接口給用戶進程使用。
D:進程同步指的是進程間邏輯上的直接制約關系,進程異步是進程間邏輯上的間接制約關系。
?
5.Linux軟中斷softirq是在什么上下文中運行的???
?A.進程上下文
?B. 中斷上下文
?C. 可能是中斷上下文也可能是進程上下文
?D. 以上都不對
答案:C
????? softirq 屬于中段下半部,一般來說是在中斷上下文中執行。但是如果系統中的sofrirq一次執行的次數太多,內核會把softirq轉由softirqd內核線程執行,
????? 參與CPU競爭,從而保證sortirq太頻繁的情況下,普通進程也能夠被執行;
nt max_restart = MAX_SOFTIRQ_RESTART; //最大的softirq執行次數
if (pending && --max_restart) //如果沒有到最大次數,繼續執行
goto restart;
...
if (pending) //如果在執行上次softirq途中又pending了新的softirq請求并且已經不能再繼續執行softirq了,那么喚醒softirqd吧。
wakeup_softirqd();
?
6.?intel x86架構CPU有一種新類型的中斷SMI,一下對SMI描述不正確的說法是:
?A. SMI中斷是x86體系結構的一種新的CPU執行模式;
?B. SMI中斷又稱系統管理中斷,由引腳SMI# Pin或者APIC SMI message觸發;
?C. SMM中斷對操作系統透明,操作系統不感知SMM中斷的執行
?D. SMM中斷就是普通中斷,只是中斷調用號不同而已;
答案:D
?CPU的四種運行模式
?實模式
?保護模式
?系統管理模式
?V86模式
????? SMM是Intel在386SL之后引入x86體系結構的一種CPU的執行模式。系統管理模式只能通過系統管理中斷(System Management Interrupt, SMI)進入,并只能通過執行RSM指令推出。SMM模式對操作系統透明,換句話說,操作系統根本不知道系統何時進入SMM模式,也無法感知SMM模式曾經執行過。為了實現SMM,Intel在其CPU上新增了一個引腳SMI# Pin,當這個引腳上為高電平的時候,CPU會進入該模式。在SMM模式下一切被都屏蔽,包括所有的中斷。SMM模式下的執行的程序被稱作SMM處理程序,所有的SMM處理程序只能在稱作系統管理內存(System Management RAM,SMRAM)的空間內運行。可以通過設置SMBASE的寄存器來設置SMRAM的空間。SMM處理程序只能由系統固件實現。
???進入SMM的唯一方法就是通過SMI,也即是系統管理中斷(System Management Interrupt)。而觸發SMI的唯一方法是將前述的SMI Pin引腳上加一個物理電平。而這個電平是由系統chipset根據不同的物理執行環境(如某些事件到來,某些設備需要特別服務)加到CPU上去的。
?
7.以下哪一點不是異常的特點:
?A.異常與指令執行的是同步的,由指令的異常情況觸發;
?B. 當異常發生時,CPU將當前指令的地址入棧,在異常返回時,可能會重復執行該指令;
?C. 異常發生時,當前執行的程序也會被打斷;
?D. 異常也可能由CPU的外部引腳所觸發;
答案:D
?
8.?一下哪一點不是中斷的特點:
?A.中斷分為可屏蔽中斷和不可屏蔽中斷;
?B. 當CPU執行關中斷執行時,NMI中斷不會被屏蔽;
?C. 在中斷中要打印信息時,必須使用不可睡眠的printk命令;
?D. CPU SF寄存器,反映了系統當前對中斷的是否屏蔽的狀態;
答案:D
???? 同步的中斷,也稱為異常,之所以稱為"同步",是因為這些異常是在程序執行的時候某條語句觸發的,比如除0錯誤,缺頁異常等等,有名的段錯誤也屬于其中的一種,這個時候,你的程序不能繼續往下走,而必須對這些異常做出回應,也就是處理.
異步的中斷,也就是中斷,之所以稱為"異步",是因為這些中斷是在當前指令之外的指令觸發的.比如你的程序正在執行,來了一個I/O請求,或者定時器到時間被觸發了,等等.也就是說,程序無法預知中斷在什么時候到來.
總的來說:中斷分為兩種,同步的中斷叫做異常,一般由程序中的錯誤觸發;異步的中斷叫做中斷,一般由當前程序外部觸發,比如IO請求,定時器等觸發.
中斷分類:
v可屏蔽中斷(Maskable interrupt)
?I/O設備發出的所有中斷請求(IRQ)都可以產生可屏蔽中斷。
?可屏蔽中斷可以處于兩種狀態:屏蔽的(masked)和非屏蔽的(unmasked)
v非屏蔽中斷(Nonmaskable interrupt)
?只有幾個特定的危急事件才引起非屏蔽中斷。如硬件故障或是掉電
中斷是否得到響應由兩條件決定:一是IF寄存器,為0時,所有可屏蔽中斷都不被響應。二是8259上的中斷屏蔽寄存器,當其相應位為1,且IF寄存器為1時,中斷才可以被響應。
異常分類?
v處理器探測異常
?由CPU執行指令時探測到一個反常條件時產生,如溢出、除0錯等
v編程異常
?由編程者發出的特定請求產生,通常由int類指令觸發
?通常叫做“軟中斷”
?
v對于處理器探測異常,根據異常時保存在內核堆棧中的eip的值可以進一步分為:
?故障(fault):eip=引起故障的指令的地址
l通常可以糾正,處理完異常時,該指令被重新執行
l例如缺頁異常
?陷阱(trap):eip=隨后要執行的指令的地址。
?異常中止(abort):
9.?一下關于中斷號共享正確的是:
?A. Linux下中斷是不能共享的;
?B. 中斷號共享是只所有的中斷號共享一條中斷線;
?C. 對于共享的中斷號,當中斷觸發時,LInux一定要把所有的共享中斷例程都執行一遍;
?D. 所有的中斷歷程都支持中斷號共享;
答案:C
???? 共享同一中斷號的ISR,通過request_irq中的同一個中斷號注冊到系統中的同一個中斷鏈表中,而dev_id則用于區分該中斷鏈表中不同的ISR,因此注冊時dev_id不能相同,也不能為NULL
???? 共享中斷的所有注冊,其第3個參數都必須指明IRQF_SHARED,以表示是注冊共享中斷,中斷發生時,系統會順次調用中斷鏈表中所有的ISR。因此ISR一定要根據自己是否真的發生了中斷,來返回IRQ_HANDLED或IRQ_NONE,釋放中斷free_irq的第2個參數dev_id,正是用來查找中斷鏈表中要被釋放的中斷。
?
轉載于:https://www.cnblogs.com/wangfengju/archive/2013/05/20/6173057.html
總結
以上是生活随笔為你收集整理的华为内部面试题库---(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 链表常见面试问题
- 下一篇: linq to sql (Group B