1、程序和執行緒的區別?
解析:(1)程序是資源的分配和排程的乙個獨立單元,而執行緒是cpu排程的基本單元
(2)同乙個程序中可以包括多個執行緒,並且執行緒共享整個程序的資源(暫存器、堆疊、上下文),乙個進行至少包括乙個執行緒。
(3)程序的建立呼叫fork或者vfork,而執行緒的建立呼叫pthread_create,程序結束後它擁有的所有執行緒都將銷毀,而執行緒的結束不會影響同個程序中的其他執行緒的結束
(4)執行緒是輕兩級的程序,它的建立和銷毀所需要的時間比程序小很多,所有作業系統中的執行功能都是建立執行緒去完成的
(5)執行緒中執行時一般都要進行同步和互斥,因為他們共享同一程序的所有資源
(6)執行緒有自己的私有屬性tcb,執行緒id,暫存器、硬體上下文,而程序也有自己的私有屬性程序控制塊pcb,這些私有屬性是不被共享的,用來標示乙個程序或乙個執行緒的標誌
2、死鎖?死鎖產生的原因?死鎖的必要條件?怎麼處理死鎖?
解析:(--)相互等待資源而產生的一種僵持狀態,如果沒有外力的干預將一直持續這個狀態
(--)系統資源不足、相互競爭資源、請求資源順序不當
(2)互斥、不可搶占、迴圈等待、請求與保持
(3)因為互斥是不可改變的,所以只能破壞其他三個條件中的乙個來解除死鎖,方法:剝奪資源、殺死其中乙個執行緒
3、windows記憶體管理方式:段儲存、頁儲存、段頁儲存
解析:4、程序的幾種狀態?
解析:(1)run(執行狀態):正在執行的程序或在等待佇列中對待的程序,等待的程序只要以得到cpu就可以執行
(2)sleep(可中斷休眠狀態):相當於阻塞或在等待的狀態
(3)d(不可中斷休眠狀態):在磁碟上的程序
(4)t(停止狀態):這中狀態無法直觀的看見,因為是程序停止後就釋放了資源,所以不會留在linux中
(5)z(殭屍狀態):子程序先與父程序結束,但父程序沒有呼叫wait或waitpid來**子程序的資源,所以子程序就成了殭屍程序,如果父程序結束後任然沒有**子程序的資源,那麼1號程序將**
5、ipc通訊方式?
解析:(1)管道(匿名管道(pipe親緣關係的程序通訊)、命名管道(mkfifo/mknod))
(2)訊息佇列:是基於訊息的、用無親緣關係的程序間通訊,主要函式:msgget、msgsend、msgrecv、msgctl
(3)訊號量:相當於一把互斥鎖,通過p、v操作,主要函式:semget、semop、semctl
(4)共享記憶體:是程序間通訊速度最快的,所以用經常是集合訊號量或互斥鎖來實現同步,shmget、shmat、shmdt、shmctl
6、什麼是虛擬記憶體?
解析:是將程序部分裝入記憶體中,從而能實現乙個很大的程式能在乙個比它小的記憶體中執行,它的主要實現是靠程式的換進換出來實現的,因為記憶體中0~3g是使用者使用,3~4g才是記憶體使用,通過對映來實現來進行邏輯位址到實體地址的對映
7、虛擬位址、邏輯位址、線性位址、實體地址的區別?
邏輯位址(啟動分段)--》線性位址(啟動分頁)--》實體地址
作業系統面試題
一 linux下程序間通訊的幾種主要手段簡介 管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊 訊號 signal 訊號是比較複雜的通訊方式,用於通知接受程序有某種事...
作業系統面試題
作業系統 1.select,poll和epoll 其實所有i o都是輪詢的方法,只不過實現的層面不同罷了 基本select有三個缺點 1.連線受限 2.查詢配對速度慢 3.資料由核心態拷貝到使用者態 poll改善了第乙個缺點 epoll改善了第三個缺點 2.排程演算法 實時排程演算法 1.最早截至時...
作業系統面試題
內容源自 一 請分別簡單說一說程序和執行緒以及它們的區別。二 執行緒同步的方式有哪些?三 程序的通訊方式有哪些?主要分為 管道 系統ipc 包括訊息佇列 訊號量 共享儲存 socket 管道主要分為 普通管道pipe 流管道 s pipe 命名管道 name pipe 四 什麼是緩衝區溢位?有什麼危...