日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

华为内部面试题库---(10)

發(fā)布時(shí)間:2025/5/22 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 华为内部面试题库---(10) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 對(duì)于linux內(nèi)核信號(hào)量,說(shuō)法正確的是(多選):(參考:Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn),第二版,第9章,9.4小節(jié))

A. 如果獲取一個(gè)被占用的信號(hào)量,任務(wù)會(huì)睡眠,等待信號(hào)量釋放之后,該任務(wù)才能重新獲得調(diào)度

B. 信號(hào)量可以允許任意數(shù)量的鎖持有者

C. 信號(hào)量保護(hù)的代碼可以被搶占

D. 信號(hào)量的實(shí)現(xiàn)也是與體系架構(gòu)相關(guān)的

答案:A,B,C,D

試題解析:信號(hào)量是一個(gè)睡眠鎖,在信號(hào)量被占用時(shí),企圖獲取該信號(hào)量的任務(wù)會(huì)睡眠,等待信號(hào)量被釋放,或者被喚醒,之后再重新獲得調(diào)度;

信號(hào)量在初始化時(shí),其count可以初始化為大于等于0的任何數(shù)值,因此可以允許任意數(shù)量的鎖持有者;

信號(hào)量獲取后,在釋放之前,并不管搶占,正因?yàn)檫@個(gè)原因,在可搶占的內(nèi)核中,高優(yōu)先級(jí)任務(wù)可以搶占獲取信號(hào)量的低優(yōu)先級(jí)任務(wù);

在內(nèi)核中,信號(hào)量數(shù)據(jù)結(jié)構(gòu)如下:

struct semaphore {

?????? spinlock_t????????????? lock;

?????? unsigned int?????????? count;

?????? struct list_head?????? wait_list;

};

自旋鎖保護(hù)P/V(對(duì)其count加減)操作,而自旋鎖是基于原子操作才能實(shí)現(xiàn),因此信號(hào)量是與體系架構(gòu)相關(guān)的。

?

2. 對(duì)于內(nèi)核信號(hào)量,對(duì)其使用方法,錯(cuò)誤的是(單選):(參考:Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn),第二版,第9章,9.4小節(jié))

A. 信號(hào)量在使用之前一定要初始化,否則在使用時(shí)可能會(huì)導(dǎo)致內(nèi)核崩潰

B. 對(duì)信號(hào)量的操作,其實(shí)就是P/V操作,在linux內(nèi)核中,對(duì)信號(hào)量的down()相當(dāng)于V操作,up()相當(dāng)于P操作

C. 在使用down_interruptible()函數(shù)未獲取信號(hào)量時(shí),進(jìn)入睡眠的任務(wù)可以被信號(hào)喚醒

D. 如果想在獲取信號(hào)量失敗后超時(shí)退出,可以使用down_timeout()函數(shù)接口

答案:B

試題解析:內(nèi)核信號(hào)量以及內(nèi)核mutex,在使用之前都需要初始化,內(nèi)核對(duì)信號(hào)量的初始化,方法有:

1. ?sema_init(struct semaphore *sem, int val),將count的值初始化為val;

2. init_MUTEX(sem), count的值初始化為1,通常用于互斥操作;

3. init_MUTEX_LOCKED(sem), count的值初始化為0,通常用于異步事件的同步;

linux內(nèi)核中,對(duì)信號(hào)量的down()相當(dāng)于P操作,up()相當(dāng)于V操作

down_interruptible()以及down_timeout()接口函數(shù),可參考內(nèi)核代碼。

因此選B

?

3. 對(duì)于信號(hào)量和自旋鎖使用區(qū)別,錯(cuò)誤的是(單選):(參考:Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn),第二版,第9章,9.4小節(jié))

A. 信號(hào)量適合于多進(jìn)程對(duì)資源互斥,競(jìng)爭(zhēng)失敗就會(huì)發(fā)生上下文切換,適合進(jìn)程長(zhǎng)時(shí)間占用資源;

B. 如果占用資源時(shí)間短于線程上下文切換開(kāi)銷(xiāo)時(shí)間,使用自旋鎖

C. 在使用信號(hào)量和自旋鎖時(shí),持有信號(hào)量或者自旋鎖的代碼可以被高優(yōu)先級(jí)任務(wù)搶占

D. 如果需要在中斷上下文中保護(hù)臨界區(qū),則只能使用spinlock,不能使用信號(hào)量

答案:C

試題解析:信號(hào)量特點(diǎn):

1. linux中的信號(hào)量是一種睡眠鎖,當(dāng)一個(gè)任務(wù)試圖獲得一個(gè)已經(jīng)被占用的信號(hào)量,信號(hào)量會(huì)將其推進(jìn)一個(gè)等待隊(duì)列,然后讓其睡眠。

2. 爭(zhēng)用信號(hào)量的進(jìn)程在等待鎖可用時(shí)會(huì)睡眠,使用鎖長(zhǎng)時(shí)間持有的情況;

3. 允許任意數(shù)量持有該鎖。

自旋鎖特點(diǎn):

1. 低開(kāi)銷(xiāo)加鎖;

2. 短期鎖定;

3. 可用于中斷上下文中加鎖;

4. 只允許一個(gè)任務(wù)獲取。

自旋鎖用于多核之間的同步,因此需要禁止搶占,否則很容易造成死鎖(如在本地CPU上任務(wù)被搶占,在高優(yōu)先級(jí)任務(wù)中又獲取了同一個(gè)自旋鎖,死鎖)由此得出:C錯(cuò)誤,獲取自旋鎖的代碼不能被搶占。

?

4. 下面不是解決linux內(nèi)核態(tài)并發(fā)機(jī)制的是(單選):(參考:Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn),第二版,第9章)

A. 自旋鎖;

B. 互斥鎖mutex

C. 原子操作

D. 管道

答案:D。

試題解析:管道是一種用戶(hù)態(tài)進(jìn)程間通信機(jī)制。管道是進(jìn)程之間的一個(gè)單向數(shù)據(jù)流:一個(gè)進(jìn)程寫(xiě)入管道的所有數(shù)據(jù)都由內(nèi)核定向到另一個(gè)進(jìn)程,另一個(gè)進(jìn)程由此就可以從管道中讀取數(shù)據(jù)。

?

5. 下面不是內(nèi)核態(tài)和用戶(hù)態(tài)間通信機(jī)制的是(單選)(參考:http://www.ibm.com/developerworks/cn/linux/l-netlink/index.html)

A. Netlink

B. 消息隊(duì)列

C. 系統(tǒng)調(diào)用

D. ioctl

答案:B

試題解析:消息隊(duì)列是一種用戶(hù)態(tài)進(jìn)程間通信機(jī)制,不能實(shí)現(xiàn)內(nèi)核態(tài)和用戶(hù)態(tài)間通信;

Netlink,系統(tǒng)調(diào)用,ioctl是使用較多的內(nèi)核態(tài)和用戶(hù)態(tài)間通信機(jī)制,其中系統(tǒng)調(diào)用只能由用戶(hù)態(tài)發(fā)起。

轉(zhuǎn)載于:https://www.cnblogs.com/hehehaha/archive/2013/05/20/6332760.html

總結(jié)

以上是生活随笔為你收集整理的华为内部面试题库---(10)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。