1. 進(jìn)程與線程的區(qū)別
- 進(jìn)程是具有一定功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng)弟翘,進(jìn)程是系統(tǒng)進(jìn)行資源調(diào)度和分配的一個(gè)獨(dú)立單位
- 線程是進(jìn)程的實(shí)體,是CPU調(diào)度和分派的基本單位骄酗,它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位
- 進(jìn)程擁有獨(dú)立的地址空間稀余,而線程間共享地址空間
2. 什么是死鎖?死鎖產(chǎn)生的必要條件趋翻,如果避免睛琳?
死鎖是指多個(gè)進(jìn)程因循環(huán)等待資源而造成無(wú)法執(zhí)行的現(xiàn)象。死鎖會(huì)造成進(jìn)程無(wú)法執(zhí)行踏烙,同時(shí)會(huì)造成系統(tǒng)資源的極大浪費(fèi)(資源無(wú)法釋放)师骗,
主要原因:
系統(tǒng)資源不足
進(jìn)程運(yùn)行推進(jìn)順序不合適
資源分配不當(dāng)
-
四個(gè)必要條件(都成立,才會(huì)發(fā)生死鎖):
- 互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用
- 請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí)讨惩,對(duì)已獲得的資源保持不放
- 不剝奪條件:進(jìn)程已獲得的資源辟癌,在末使用完之前,不能強(qiáng)行剝奪
- 循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系
-
死鎖避免
- 銀行家算法:判斷此次請(qǐng)求是否造成死鎖若會(huì)造成死鎖荐捻,則拒絕該請(qǐng)求
3. 線程同步的方式
- 互斥量:采用互斥對(duì)象機(jī)制黍少,只有擁有互斥對(duì)象的線程才有訪問(wèn)公共資源的權(quán)限。因?yàn)榛コ鈱?duì)象只有一個(gè)靴患,所以可以保證公共資源不會(huì)被多個(gè)線程同時(shí)訪問(wèn)
- 信號(hào)量:它允許同一時(shí)刻多個(gè)線程訪問(wèn)同一資源仍侥,但是需要控制同一時(shí)刻訪問(wèn)此資源的最大線程數(shù)量
- 事件(信號(hào)):通過(guò)通知操作的方式來(lái)保持多線程同步要出,還可以方便的實(shí)現(xiàn)多線程優(yōu)先級(jí)的比較操作鸳君。
4. 進(jìn)程通信方式有哪些?
主要包括:管道患蹂、系統(tǒng)IPC(包括消息隊(duì)列或颊、信號(hào)量砸紊、共享存儲(chǔ))、Socket
- 普通管道(PIPE)是一種半雙工的通信方式囱挑、數(shù)據(jù)只能單向流動(dòng)醉顽,并且只能在具有親源關(guān)系的進(jìn)程間流動(dòng),這種關(guān)系通常為夫子關(guān)系
- 命名管道(Name_PIPE)也是一種半雙工的通信方式平挑,它允許非親緣關(guān)系的進(jìn)程間進(jìn)行通信
- 信號(hào)量是一個(gè)計(jì)數(shù)器游添,用來(lái)控制多個(gè)進(jìn)程間多資源的訪問(wèn),它通常作為一個(gè)鎖機(jī)制
- 信號(hào)是一種比較復(fù)雜的通信方式通熄,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生
- 共享內(nèi)存就是映射一段能被其他進(jìn)程訪問(wèn)的內(nèi)存唆涝,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建,但是多個(gè)進(jìn)程可以訪問(wèn)
5. 什么是緩沖區(qū)溢出唇辨?危害是什么廊酣?原因是什么?
緩沖區(qū)溢出是指計(jì)算機(jī)向緩沖區(qū)填充數(shù)據(jù)時(shí)超出緩沖區(qū)本身的容量赏枚,溢出的數(shù)據(jù)覆蓋在合法數(shù)據(jù)上亡驰。
- 危害
- 程序崩潰,導(dǎo)致拒絕服務(wù)
- 跳轉(zhuǎn)并且執(zhí)行一段惡意代碼
- 原因
- 未檢出用戶非法輸入
6. 進(jìn)程有哪幾種狀態(tài)饿幅?
- 就緒狀態(tài):進(jìn)程已獲得除處理器以外的所需資源凡辱,等待分配處理機(jī)資源
- 運(yùn)行狀態(tài):占用處理機(jī)資源正在執(zhí)行,處于此狀態(tài)的進(jìn)程小于等于處理器個(gè)數(shù)
- 阻塞狀態(tài):進(jìn)程等待某種條件栗恩,在條件滿足之前無(wú)法執(zhí)行
7. 分頁(yè)與分段的區(qū)別
- 相似之處:
- 都采用離散分配方式煞茫,且都要通過(guò)地址映射機(jī)制來(lái)實(shí)現(xiàn)地址轉(zhuǎn)換
- 不同之處:
- 段是信息的邏輯單位,它是根據(jù)用戶的需要?jiǎng)澐值纳惴玻虼硕螌?duì)用戶是可見(jiàn)的 续徽;頁(yè)是信息的物理單位,是為了管理主存的方便而劃分的亲澡,對(duì)用戶是透明的
- 段的大小不固定钦扭,有它所完成的功能決定;頁(yè)大大小固定床绪,由系統(tǒng)決定
- 段向用戶提供二維地址空間客情;頁(yè)向用戶提供的是一維地址空間
- 段是信息的邏輯單位,便于存儲(chǔ)保護(hù)和信息的共享癞己,頁(yè)的保護(hù)和共享受到限制膀斋。
8. 操作系統(tǒng)中進(jìn)程調(diào)度策略
- FCFS(先來(lái)先服務(wù))
- 優(yōu)先級(jí)
- 時(shí)間片輪轉(zhuǎn)
- 多級(jí)反饋
9. 頁(yè)面置換算法
- FIFO算法:先入先出,即淘汰最早調(diào)入的頁(yè)面痹雅。
- OPT(MIN)算法:選未來(lái)最遠(yuǎn)將使用的頁(yè)淘汰仰担,是一種最優(yōu)的方案,可以證明缺頁(yè)數(shù)最小绩社∷だ叮可惜赂苗,MIN需要知道將來(lái)發(fā)生的事,只能在理論中存在贮尉,實(shí)際不可應(yīng)用拌滋。
- LRU(Least-Recently-Used)算法:用過(guò)去的歷史預(yù)測(cè)將來(lái),選最近最長(zhǎng)時(shí)間沒(méi)有使用的頁(yè)淘汰(也稱(chēng)最近最少使用)猜谚。性能最接近OPT败砂。與頁(yè)面使用時(shí)間有關(guān)。
- LFU(Least Frequently Used)算法:即最不經(jīng)常使用頁(yè)置換算法魏铅,要求在頁(yè)置換時(shí)置換引用計(jì)數(shù)最小的頁(yè)吠卷,因?yàn)榻?jīng)常使用的頁(yè)應(yīng)該有一個(gè)較大的引用次數(shù)。與頁(yè)面使用次數(shù)有關(guān)
10. 什么是虛擬內(nèi)存
- 虛擬內(nèi)存是計(jì)算機(jī)系統(tǒng)內(nèi)存管理的一種技術(shù)沦零。它使得應(yīng)用程序認(rèn)為它擁有連續(xù)的可用的內(nèi)存(一個(gè)連續(xù)完整的地址空間)祭隔,而實(shí)際上,它通常是被分隔成多個(gè)物理內(nèi)存碎片路操,還有部分暫時(shí)存儲(chǔ)在外部磁盤(pán)存儲(chǔ)器上疾渴,在需要時(shí)進(jìn)行數(shù)據(jù)交換。目前屯仗,大多數(shù)操作系統(tǒng)都使用了虛擬內(nèi)存
11. 中斷的概念
- 中斷(英語(yǔ):Interrupt)是指 處理器接收到來(lái)自硬件或軟件的信號(hào)搞坝,提示發(fā)生了某個(gè)事件,應(yīng)該被注意魁袜,這種情況就稱(chēng)為中斷桩撮。