自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

嵌入式筆試面試題目系列(一)

開發(fā) 前端
本系列將按類別對(duì)題目進(jìn)行分類整理,重要的地方標(biāo)上星星,這樣有利于大家打下堅(jiān)實(shí)的基礎(chǔ)。本文均為嵌入式筆試面試高頻題目

[[375850]]

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

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

一、進(jìn)程與線程

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

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

2、多進(jìn)程、多線程的優(yōu)缺點(diǎn)

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

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

3、什么時(shí)候用進(jìn)程,什么時(shí)候用線程

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

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

進(jìn)程間通訊:

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

線程通訊(鎖):

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

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

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

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

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

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

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


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

處于就緒狀態(tài)的進(jìn)程,當(dāng)進(jìn)程調(diào)度程序?yàn)橹峙淞颂幚頇C(jī)后,該進(jìn)程便由就緒狀態(tài)轉(zhuǎn)變成執(zhí)行狀態(tài)。

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

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

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

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

(4) 阻塞→就緒

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

6、父進(jìn)程、子進(jìn)程

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

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

你可以有很多角度,有進(jìn)程上下文,有中斷上下文。

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

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

 

責(zé)任編輯:姜華 來源: 嵌入式Linux系統(tǒng)開發(fā)
相關(guān)推薦

2021-01-20 07:28:34

嵌入式筆試面試

2021-01-15 07:49:01

嵌入式筆試面試

2021-01-19 07:16:25

嵌入式筆試面試

2021-01-22 07:17:14

嵌入式筆試面試

2021-01-21 08:00:50

嵌入式筆試面試

2021-02-25 16:26:35

嵌入式筆試面試

2011-05-19 16:30:38

軟件測(cè)試

2018-03-08 18:40:47

Java百度面試題

2021-10-27 11:00:30

C++語言面試

2009-06-06 18:34:05

java面試題

2009-05-14 09:28:16

嵌入式面試求職

2009-06-18 15:45:55

J2ee筆試

2009-08-01 23:17:19

ASP.NET面試題目ASP.NET

2020-06-04 14:40:40

面試題Vue前端

2011-01-14 13:13:23

嵌入式Linux開發(fā)

2009-08-01 22:47:13

ASP.NET筆試題目ASP.NET

2013-11-26 13:54:00

AMD嵌入式

2013-08-01 17:42:08

AMD嵌入式SOC產(chǎn)品

2011-03-24 13:27:37

SQL

2023-11-13 07:37:36

JS面試題線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)