面試題2-作業系統和計算機網路
1.程序和執行緒的區別? 1)程序是具有一定功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源排程和分配的一個獨立單位; 2)執行緒是程序的實體,是CPU排程和分配的基本單位,它是比程序更小的能獨立執行的基本單位,不擁有資源,因此其可以提高併發和減少切換的開銷; 3)一個程序可以有多個執行緒,多個執行緒可以併發執行; 2.執行緒同步的方式有哪些?(注意一下同步和互斥的區別) 1)互斥量:採用互斥物件機制,只有擁有互斥物件的執行緒才有訪問公共資源的許可權。因為互斥物件只有一個,所以可以保證公共資源不會被多個執行緒同時訪問; 2)訊號量:它允許同一時刻多個執行緒訪問同一資源,但是需要控制同一時刻訪問此資源的最大執行緒數量。當需要一個計數器來限制可以使用某共享資源的執行緒數目時,可以使用“訊號量”物件; 3)事件:通過通知操作的方式來保持多執行緒同步,還可以方便的實現多執行緒優先順序的比較操作。即事件機制允許一個執行緒在處理完一個任務後,主動喚醒另外一個執行緒執行任; 4)臨界區:保證在某一時刻只有一個執行緒能訪問資料的簡便辦法。在任意時刻只允許一個執行緒對共享資源進行訪問。如果有多個執行緒試圖同時訪問臨界區,那麼在有一個執行緒進入後其他所有試圖訪問此臨界區的執行緒將被掛起,並一直持續到進入臨界區的執行緒離開。臨界區在被釋放後,其他執行緒可以繼續搶佔,並以此達到用原子方式操 作共享資源的目的; 3.程序的狀態和轉換? 1)執行狀態:程序正在處理機上面執行; 2)就緒狀態:程序已經處於準備執行狀態,就是程序獲得了出了CPU之外的所有資源,一旦獲取CPU就可以立即執行; 3)阻塞狀態:跟是否獲取時間片無關,程序因為等待某個事件而暫停執行的狀態,例如:等待資源可用或者等待輸入和輸出的完成; 4.使用者態和核心態? 當程式執行在3級特權級之上時,就可以稱為執行在使用者態,反之為核心態。 使用者態和核心態最大的差別就是在於權利的不同,使用者態下的引用程式是不能直接訪問作業系統核心資料結構和程式的。 5.死鎖產生的原因和處理方法? 死鎖:死鎖是指多個程序在執行的過程中,因為爭奪資源而造成的互相阻塞,沒有外力的介入無法打破僵局,程序無法繼續執行。 死鎖產生的原因:1)競爭資源:請求同一個資源的程序數超過了可用資源數;2)程序推進順序發:程序執行的過程中,資源的請求和釋放的順序不合理。 死鎖產生的必要條件:1)互斥條件:程序對分配的資源進行排它性的使用;2)請求和保持條件:程序被阻塞的時候並不釋放申請到的資源;3)不可剝奪條件:程序對於已經申請到的資源在使用完成之前不可以被剝奪;4)環路等待條件:發生死鎖的時候存在一個程序-資源環形等待鏈; 死鎖的處理:1)預防死鎖:破壞產生死鎖的四個必要條件中的一個或者多個;實現比較簡單,但是限制過多會導致系統資源利用率和吞吐量過低;2)避免死鎖:在資源的動態分配中,防止系統進入不安全狀態;3)檢測死鎖:允許系統執行過程中產生死鎖,在死鎖發生的時候,採用演算法檢測,並確定與死鎖相關的資源和程序,採用相關的演算法清除檢測到的死鎖;4)解除死鎖:級死鎖的檢測相互配合,將系統從死鎖中解放出來(撤銷程序或者剝奪資源)。 6.程序和程式的區別? 1)程序是動態的,程式是靜態的。程序是正在執行的程式,而程式就是一段程式碼、檔案和資料的集合; 2)程式是一直存在的,而程序是暫時的,執行結束就消失了; 3)程序是具有併發性的,而程式沒有; 4)一個程式可以有多個程序,但是一個程序只能有一個程式; 7.IP地址的分類? IP地址分為A,B,C,D,E五種; 1)A類(1.0.0.0-127.255.255.255):地址的第一位必須是0,前8位是網路號,後24位是主機號;私有地址:10.0.0.0~10.255.255.255 ;注意,數字0和 127不作為A類地址,數字127保留給內部回送函式,而數字0則表示該地址是本地宿主機,不能傳送。; 2)B類(128.0.0.0-191.255.255.255):地址的前兩位必須是10,前16位是網路號,後16位是主機號;私有地址:172.16.0.0~172.31.255.255; 3)C類(192.0.0.0-223.255.255.255):地址的前三位必須是110,前24位是網路號,後8位是主機號;私有地址:192.168.0.0~192.168.255.255; 4)D類(224.0.0.0-239.255.255.255):地址的前四位必須是1110,廣播地址; 5)E類:地址的前五位必須是11110,保留地址; 8.子網數、子網掩碼和主機數的關係? IP地址:網路+子網+主機 替換預設子網掩碼轉換為二進位制中主機地址部分的前幾位(子網數目轉換成二進位制的位數); 注意:求最大可用主機數要減2(除去全是0的網路地址和全是1廣播地址) 9.作業系統中的程序排程演算法? 1)先進先出程序排程演算法(FIFO):按照程序就緒的先後順序來排程程序; 2)短作業(程序)優先排程演算法(SJF/SPF):選擇就緒佇列中估計執行時間最短的程序投入執行; 3)時間片輪轉排程演算法:把CPU劃分成若干時間片,並且按順序賦給就緒佇列中的每一個程序,程序輪流佔有CPU,當時間片用完時,即使程序未執行完畢,系統也剝奪該程序的CPU,將該程序排在就緒佇列末尾。同時系統選擇另一個程序執行。 4)優先權排程演算法:優先選擇就緒佇列中優先權最高的程序投入執行。 非搶佔式優先權演算法: 僅在事件發生放棄處理機時 ;搶佔式優先權演算法: 可將正在執行的執行權剝奪; 5)高響應比優先排程演算法:高響應比優先排程演算法的基本思想是把CPU分配給就緒佇列中響應比最高的程序。短作業優先排程演算法 + 動態優先權機制 既考慮作業的執行時間也考慮作業的等待時間,綜合了先來先服務和最短作業優先兩種演算法的特點。計算公式:響應比 =(等待時間+要求服務時間)/ 要求服務時間,即RR=(w+s)/s=1+w/s,因此響應比一定是大於1的。 6)多級反饋佇列排程演算法:設定多個就緒佇列,每個佇列的優先順序各不相同,第一個佇列的優先順序最高,其餘佇列的優先順序逐個降低,各個佇列中執行的時間片也是各不相同,優先順序越高,執行的時間片越小;