日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
嵌入式筆試面試題目系列(一)

[[375850]]

 本系列將按類別對題目進行分類整理,重要的地方標上星星,這樣有利于大家打下堅實的基礎(chǔ)。

本文均為嵌入式筆試面試高頻題目

一、進程與線程

1、什么是進程、線程,有什么區(qū)別?

進程是資源(CPU、內(nèi)存等)分配的基本單位,線程是CPU調(diào)度和分配的基本單位(程序執(zhí)行的最小單位)。同一時間,如果CPU是單核,只有一個進程在執(zhí)行,所謂的并發(fā)執(zhí)行,也是順序執(zhí)行,只不過由于切換速度太快,你以為這些進程在同步執(zhí)行而已。多核CPU可以同一時間點有多個進程在執(zhí)行。

2、多進程、多線程的優(yōu)缺點

說明:一個進程由進程控制塊、數(shù)據(jù)段、代碼段組成,進程本身不可以運行程序,而是像一個容器一樣,先創(chuàng)建出一個主線程,分配給主線程一定的系統(tǒng)資源,這時候就可以在主線程開始實現(xiàn)各種功能。當我們需要實現(xiàn)更復(fù)雜的功能時,可以在主線程里創(chuàng)建多個子線程,多個線程在同一個進程里,利用這個進程所擁有的系統(tǒng)資源合作完成某些功能。

優(yōu)缺點:1)一個進程死了不影響其他進程,一個線程崩潰很可能影響到它本身所處的整個進程。2) 創(chuàng)建多進程的系統(tǒng)花銷大于創(chuàng)建多線程。3)多進程通訊因為需要跨越進程邊界,不適合大量數(shù)據(jù)的傳送,適合小數(shù)據(jù)或者密集數(shù)據(jù)的傳送。多線程無需跨越進程邊界,適合各線程間大量數(shù)據(jù)的傳送。并且多線程可以共享同一進程里的共享內(nèi)存和變量。

3、什么時候用進程,什么時候用線程

1)創(chuàng)建和銷毀較頻繁使用線程,因為創(chuàng)建進程花銷大。2)需要大量數(shù)據(jù)傳送使用線程,因為多線程切換速度快,不需要跨越進程邊界。3)安全穩(wěn)定選進程;快速頻繁選線程;

4、多進程、多線程同步(通訊)的方法

進程間通訊:

(1)有名管道/無名管道(2)信號(3)共享內(nèi)存(4)消息隊列(5)信號量(6)socket

線程通訊(鎖):

(1)信號量(2)讀寫鎖(3)條件變量(4)互斥鎖(5)自旋鎖

5、進程線程的狀態(tài)轉(zhuǎn)換圖

(1)就緒狀態(tài):進程已獲得除CPU外的所有必要資源,只等待CPU時的狀態(tài)。一個系統(tǒng)會將多個處于就緒狀態(tài)的進程排成一個就緒隊列。

(2)執(zhí)行狀態(tài):進程已獲CPU,正在執(zhí)行。單處理機系統(tǒng)中,處于執(zhí)行狀態(tài)的進程只一個;多處理機系統(tǒng)中,有多個處于執(zhí)行狀態(tài)的進程。

(3)阻塞狀態(tài):正在執(zhí)行的進程由于某種原因而暫時無法繼續(xù)執(zhí)行,便放棄處理機而處于暫停狀態(tài),即進程執(zhí)行受阻。(這種狀態(tài)又稱等待狀態(tài)或封鎖狀態(tài))

通常導(dǎo)致進程阻塞的典型事件有:請求I/O,申請緩沖空間等。

一般,將處于阻塞狀態(tài)的進程排成一個隊列,有的系統(tǒng)還根據(jù)阻塞原因不同把這些阻塞集成排成多個隊列。

(1) 就緒→執(zhí)行

處于就緒狀態(tài)的進程,當進程調(diào)度程序為之分配了處理機后,該進程便由就緒狀態(tài)轉(zhuǎn)變成執(zhí)行狀態(tài)。

(2) 執(zhí)行→就緒

處于執(zhí)行狀態(tài)的進程在其執(zhí)行過程中,因分配給它的一個時間片已用完而不得不讓出處理機,于是進程從執(zhí)行狀態(tài)轉(zhuǎn)變成就緒狀態(tài)。

(3) 執(zhí)行→阻塞

正在執(zhí)行的進程因等待某種事件發(fā)生而無法繼續(xù)執(zhí)行時,便從執(zhí)行狀態(tài)變成阻塞狀態(tài)。

(4) 阻塞→就緒

處于阻塞狀態(tài)的進程,若其等待的事件已經(jīng)發(fā)生,于是進程由阻塞狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài)。

6、父進程、子進程

父進程調(diào)用fork()以后,克隆出一個子進程,子進程和父進程擁有相同內(nèi)容的代碼段、數(shù)據(jù)段和用戶堆棧。父進程和子進程誰先執(zhí)行不一定,看CPU。所以我們一般我們會設(shè)置父進程等待子進程執(zhí)行完畢。

7、說明什么是上下文切換?

你可以有很多角度,有進程上下文,有中斷上下文。

進程上下文:一個進程在執(zhí)行的時候,CPU的所有寄存器中的值、進程的狀態(tài)以及堆棧中的內(nèi)容,當內(nèi)核需要切換到另一個進程時,它需要保存當前進程的所有狀態(tài),即保存當前進程的進程上下文,以便再次執(zhí)行該進程時,能夠恢復(fù)切換時的狀態(tài),繼續(xù)執(zhí)行。

中斷上下文:由于觸發(fā)信號,導(dǎo)致CPU中斷當前進程,轉(zhuǎn)而去執(zhí)行另外的程序。那么當前進程的所有資源要保存,比如堆棧和指針。保存過后轉(zhuǎn)而去執(zhí)行中斷處理程序,快讀執(zhí)行完畢返回,返回后恢復(fù)上一個進程的資源,繼續(xù)執(zhí)行。這就是中斷的上下文。

 


當前標題:嵌入式筆試面試題目系列(一)
鏈接分享:http://www.dlmjj.cn/article/djopcdh.html