1. 程式人生 > >作業系統原理常見面試題總結

作業系統原理常見面試題總結

程序和執行緒有何區別? 

程序間相互獨立,同一程序的各執行緒間共享。某程序內的執行緒在其它程序不可見。

程序間通訊IPC,執行緒間可以直接讀寫程序資料段(如全域性變數)來進行通訊——需要程序同步和互斥手段的輔助,以保證資料的一致性。

執行緒上下文切換比程序上下文切換要快得多。

與程序的控制表PCB相似,執行緒也有自己的控制表TCB,但是TCB中所儲存的執行緒狀態比PCB表少得多。

中斷和輪詢的特點?

對I/O裝置的程式輪詢的方式,是早期的計算機系統對I/O裝置的一種管理方式。它定時對各種裝置輪流詢問一遍有無處理要求。

程式中斷通常簡稱中斷,是指CPU在正常執行程式的過程中,由於預先安排或發生了各種隨機的內部或外部事件,使CPU中斷正在執行的程式,而轉到為響應的服務程式去處理。

輪詢——效率低,等待時間很長,CPU利用率不高。

中斷——容易遺漏一些問題,CPU利用率高。

什麼是臨界區?如何解決衝突?

臨界區指的是一個訪問共用資源的程式片段。

臨界區管理:

軟體方法:設定一個指示變數;

硬體方法:test and build指令、swap指令、關中斷

分段和分頁:

  頁的大小固定且由系統確定,把邏輯地址劃分為頁號和頁內地址兩部分,是由機器硬體實現的,因而一個系統只能有一種大小的頁面。段的長度卻不固定,決定於使用者所編寫的程式,通常由編輯程式在對源程式進行編輯時,根據資訊的性質來劃分。

  分頁的作業地址空間是一維的,即單一的線性空間,程式設計師只須利用一個記憶符,即可表示一地址。分段的作業地址空間是二維的,程式設計師在標識一個地址時,既需給出段名,又需給出段內地址。

說出你所知道的保持程序同步的方法?

原子操作

訊號量機制

自旋鎖:對於互斥鎖,如果資源已經被佔用,資源申請者只能進入睡眠狀態。但是自旋鎖不會引起呼叫者睡眠,如果自旋鎖已經被別的執行單元保持,呼叫者就一直迴圈在那裡看是否該自旋鎖的保持者已經釋放了鎖,"自旋"一詞就是因此而得名。

管程:利用共享資料結構抽象地表示系統中的共享資源,而把對該共享資料結構實施的操作定義為一組過程。

Linux中常用到的命令

  顯示檔案目錄命令ls        如ls

  改變當前目錄命令cd        如cd /home

  建立子目錄mkdir           如mkdir xiong

  刪除子目錄命令rmdir       如rmdir /mnt/cdrom

  刪除檔案命令rm            如rm /ucdos.bat

  檔案複製命令cp            如cp /ucdos /fox

  獲取幫助資訊命令man      如man ls

  顯示檔案的內容less        如less mwm.lx

  重定向與管道type          如type readme>>direct,將檔案readme的內容追加到文direct中

makefile檔案的作用是什麼?

makefile定義了一系列的規則來指定哪些檔案需要先編譯,哪些檔案需要後編譯,哪些檔案需要重新編譯,甚至於進行更復雜的功能操作。makefile就像一個Shell指令碼一樣,其中也可以執行作業系統的命令。makefile帶來的好處就是——“自動化編譯”。

什麼是中斷?中斷時CPU做什麼工作?

  中斷是指在計算機執行期間,系統內發生任何非尋常的或非預期的急需處理事件,使得CPU暫時中斷當前正在執行的程式而轉去執行相應的事件處理程式。待處理完畢後又返回原來被中斷處繼續執行或排程新的程序執行的過程。

你知道作業系統的內容分為幾塊嗎?什麼叫做虛擬記憶體?他和主存的關係如何?記憶體管理屬於作業系統的內容嗎?

  作業系統的主要組成部分:程序和執行緒的管理,儲存管理,裝置管理,檔案管理。虛擬記憶體是一些系統頁檔案,存放在磁碟上,每個系統頁檔案大小為4K,實體記憶體也被分頁,每個頁大小也為4K,這樣虛擬頁檔案和實體記憶體頁就可以對應,實際上虛擬記憶體就是用於實體記憶體的臨時存放的磁碟空間。頁檔案就是記憶體頁,實體記憶體中每頁叫物理頁,磁碟上的頁檔案叫虛擬頁,物理頁+虛擬頁就是系統所有使用的頁檔案的總和。

執行緒是否具有相同的堆疊?

  每個執行緒有自己的堆疊。

什麼是緩衝區溢位?有什麼危害?其原因是什麼?

  緩衝區溢位是指當計算機向緩衝區內填充資料時超過了緩衝區本身的容量,溢位的資料覆蓋在合法資料上。

  危害:在當前網路與分散式系統安全中,被廣泛利用的50%以上都是緩衝區溢位,其中最著名的例子是1988年利用fingerd漏洞的蠕蟲。而緩衝區溢位中,最為危險的是堆疊溢位,因為入侵者可以利用堆疊溢位,在函式返回時改變返回程式的地址,讓其跳轉到任意地址,帶來的危害一種是程式崩潰導致拒絕服務,另外一種就是跳轉並且執行一段惡意程式碼,比如得到shell,然後為所欲為。通過往程式的緩衝區寫超出其長度的內容,造成緩衝區的溢位,從而破壞程式的堆疊,使程式轉而執行其它指令,以達到攻擊的目的。

  造成緩衝區溢位的主原因是程式中沒有仔細檢查使用者輸入的引數。

什麼是死鎖?其條件是什麼?怎樣避免死鎖?

死鎖的概念略。

產生死鎖的條件:互斥訪問、佔有並等待、非搶佔、迴圈等待。

這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發生死鎖。

死鎖的處理策略:

死鎖的防止:靜態分配、層次分配。

死鎖的避免:銀行家演算法。

死鎖的檢測和解除。

程序間的通訊是如何實現的?

管道:速度慢,容量有限

訊息佇列:容量受到系統限制,且要注意第一次讀的時候,要考慮上一次沒有讀完資料的問題。

訊號量:不能傳遞複雜訊息,只能用來同步

共享記憶體區:能夠很容易控制容量,速度快,但要保持同步,比如一個程序在寫的時候,另一個程序要注意讀寫的問題,相當於執行緒中的執行緒安全,當然,共享記憶體區同樣可以用作執行緒間通訊,不過沒這個必要,執行緒間本來就已經共享了一塊記憶體的。

相關推薦

作業系統原理見面試題總結

程序和執行緒有何區別? 程序間相互獨立,同一程序的各執行緒間共享。某程序內的執行緒在其它程序不可見。程序間通訊IPC,執行緒間可以直接讀寫程序資料段(如全域性變數)來進行通訊——需要程序同步和互斥手段的輔助,以保證資料的一致性。執行緒上下文切換比程序上下文切換要快得多。與程序

作業系統見面試題總結

1、什麼是程序(Process)和執行緒(Thread)?有何區別?   程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位。執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位

【資料結構】連結串列的原理及與其相關的見面試題總結

一:連結串列原理         連結串列是一種資料結構,和陣列同級。比如,Java中我們使用的ArrayList,其實現原理是陣列。而LinkedList的實現原理就是連結串列了。連結串列在進行迴圈遍歷時效率不高,但是插入和刪除時優勢明顯。下面對單向連結串列做一個介紹

作業系統見面試題總結----

轉自:http://blog.csdn.net/youngchang06hpu/article/details/8009947 1、什麼是程序(Process)和執行緒(Thread)?有何區別?   程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序

數據庫見面試題總結

sql 一個表 mysql cad 成功 多條 read 左右 min 1. 數據庫三範式是什麽? 第一範式:表中每個字段都不能再分。 第二範式:滿足第一範式並且表中的非主鍵字段都依賴於主鍵字段。 第三範式:滿足第二範式並且表中的非主鍵字段必須不傳遞依賴於主鍵字段。 2.

Windows原理見面試題

Windows原理IMAGE_OPTIONAL_HEADER結構如下: typedef struct _IMAGE_OPTIONAL_HEADER { // // Standard fields. // WORD Magic;

試題:HTTP必知必會——見面試題總結

nec range www 加密 server 優化網站 host 無法識別 color 1、常用的HTTP方法有哪些?GET: 用於請求訪問已經被URI(統一資源標識符)識別的資源,可以通過URL傳參給服務器POST:用於傳輸信息給服務器,主要功能與GET方法類似,但一般

java面試題之----HashMap見面試題總結

使用 這一 hashtable 此刻 獲取 重要性 microsoft ria 取值 “你用過HashMap嗎?” “什麽是HashMap?你為什麽用到它?” 幾乎每個人都會回答“是的”,然後回答HashMap的一些特性,譬如HashMap可以接受null鍵值和值,而Has

Java見面試題總結

概念 rt.jar 組裝 高效 chain 類型 swa 處理方式 編譯器 轉載請註明出處https://www.cnblogs.com/lwy521/ 1.面向對象 面向對象是基於現實事物,將事物抽象成對象,賦予對象屬性和方法,讓後讓每一對象去執行自己的方法與屬性,面向

嵌入式見面試題總結(4)

24,IRQ和FIQ有什麼區別,在CPU裡面是是怎麼做的? 答:快速中斷請求(Fast Interrupt Request,FIQ) 中斷控制器去中斷ARM核心,可以選擇fiq和irq兩種方式: irq發生時,ARM處於irq模式。在irq模式期間,不可以再次被irq中

嵌入式見面試題總結(5)

35,什麼是GPIO? 答:general purpose input/output   GPIO是相對於晶片本身而言的,如某個管腳是晶片的GPIO腳,則該腳可作為輸入或輸出高或低電平使用,當然某個腳具有複用的功能,即可做GPIO也可做其他用途。  也就是說你可以把這些引腳拿

嵌入式見面試題總結(6)

50,如何編寫一個LINUX驅動?  答:一.在系統的資原始檔程式碼中定義platform_device,裡面填寫對應裝置的外設IO起始地址,地址長度,中斷,DMA資源等資訊資源資訊,並把資源資訊新增到系統啟動初始化流程裡面; 二. 通過module_init(xxx_in

Java見面試題總結(八)

本次的面試題:多執行緒知識的面試解答題。 1. 有T1、T2、T3三個執行緒,如何怎樣保證T2在T1執行完後執行,T3在T2執行完後執行?   答:使用join方法。 join方法的功能是使非同步執行的執行緒變成同步執行。即呼叫執行緒例項的start方法後,該方法會立即返回,如果呼叫star

SpringMVC見面試題總結(超詳細回答)

1、什麼是Spring MVC ?簡單介紹下你對springMVC的理解? Spring MVC是一個基於MVC架構的用來簡化web應用程式開發的應用開發框架,它是Spring的一個模組,無需中間整合

HTTP必知必會——見面試題總結

1、常用的HTTP方法有哪些?GET:用於請求訪問已經被URI(統一資源識別符號)識別的資源,可以通過URL傳參給伺服器POST:用於傳輸資訊給伺服器,主要功能與GET方法類似,但一般推薦使用POST

計算機網路見面試題總結(二)

面試中網路方面的知識被問到的概率很大,尤其是網際網路公司,要熟悉osi七層模型,其中TCP/IP方面的知識尤其重要。如果自己平時有Socket程式設計的經驗對面試也是很有幫助的。網路方面有空可以看看TCP/IP詳解卷一和UNIX網路程式設計。以下總結了一些面試中常問

vue見面試題總結

列舉資料繫結 說出至少4種vue當中的指令和它的用法? v-if:判斷是否隱藏;v-for:資料迴圈出來;v-bind:class:繫結一個屬性;v-model:實現雙向繫結 資料繫結最基礎的形式是文字插值,使用 "Mustache" 語法(雙大括號) v-model 主要

大資料見面試題總結

Hadoop部分 1.Hadoop安裝步驟? 1使用root賬戶登入 2 修改IP 3 修改host主機名 4 配置SSH免密碼登入 5 關閉防火牆 6 安裝JDK 6 解壓hadoop安裝包 7 配置hadoop的核心檔案 hadoop-env.sh,co

Java見面試題——總結

一、Java基礎 String類為什麼是final的。 HashMap的原始碼,實現原理,底層結構。 說說你知道的幾個Java集合類:list、set、queue、map實現類咯。。。 描述一下ArrayList和LinkedList各自實現和區別 Java

前端見面試題總結---第二篇

1. HTML與XHTML——二者有什麼區別 所有的標記都必須要有一個相應的結束標記 所有標籤的元素和屬性的名字都必須使用小寫 所有的 XML 標記都必須合理巢狀 所有的屬性必須用引號 “” 括起來 把所有 < 和 & 特殊符號用編碼表示 給所