日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 华为内部面试题库---(10) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 對于linux內核信號量,說法正確的是(多選):(參考:Linux內核設計與實現,第二版,第9章,9.4小節)

A. 如果獲取一個被占用的信號量,任務會睡眠,等待信號量釋放之后,該任務才能重新獲得調度

B. 信號量可以允許任意數量的鎖持有者

C. 信號量保護的代碼可以被搶占

D. 信號量的實現也是與體系架構相關的

答案:A,B,C,D

試題解析:信號量是一個睡眠鎖,在信號量被占用時,企圖獲取該信號量的任務會睡眠,等待信號量被釋放,或者被喚醒,之后再重新獲得調度;

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

信號量獲取后,在釋放之前,并不管搶占,正因為這個原因,在可搶占的內核中,高優先級任務可以搶占獲取信號量的低優先級任務;

在內核中,信號量數據結構如下:

struct semaphore {

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

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

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

};

自旋鎖保護P/V(對其count加減)操作,而自旋鎖是基于原子操作才能實現,因此信號量是與體系架構相關的。

?

2. 對于內核信號量,對其使用方法,錯誤的是(單選):(參考:Linux內核設計與實現,第二版,第9章,9.4小節)

A. 信號量在使用之前一定要初始化,否則在使用時可能會導致內核崩潰

B. 對信號量的操作,其實就是P/V操作,在linux內核中,對信號量的down()相當于V操作,up()相當于P操作

C. 在使用down_interruptible()函數未獲取信號量時,進入睡眠的任務可以被信號喚醒

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

答案:B

試題解析:內核信號量以及內核mutex,在使用之前都需要初始化,內核對信號量的初始化,方法有:

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

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

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

linux內核中,對信號量的down()相當于P操作,up()相當于V操作

down_interruptible()以及down_timeout()接口函數,可參考內核代碼。

因此選B

?

3. 對于信號量和自旋鎖使用區別,錯誤的是(單選):(參考:Linux內核設計與實現,第二版,第9章,9.4小節)

A. 信號量適合于多進程對資源互斥,競爭失敗就會發生上下文切換,適合進程長時間占用資源;

B. 如果占用資源時間短于線程上下文切換開銷時間,使用自旋鎖

C. 在使用信號量和自旋鎖時,持有信號量或者自旋鎖的代碼可以被高優先級任務搶占

D. 如果需要在中斷上下文中保護臨界區,則只能使用spinlock,不能使用信號量

答案:C

試題解析:信號量特點:

1. linux中的信號量是一種睡眠鎖,當一個任務試圖獲得一個已經被占用的信號量,信號量會將其推進一個等待隊列,然后讓其睡眠。

2. 爭用信號量的進程在等待鎖可用時會睡眠,使用鎖長時間持有的情況;

3. 允許任意數量持有該鎖。

自旋鎖特點:

1. 低開銷加鎖;

2. 短期鎖定;

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

4. 只允許一個任務獲取。

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

?

4. 下面不是解決linux內核態并發機制的是(單選):(參考:Linux內核設計與實現,第二版,第9章)

A. 自旋鎖;

B. 互斥鎖mutex

C. 原子操作

D. 管道

答案:D

試題解析:管道是一種用戶態進程間通信機制。管道是進程之間的一個單向數據流:一個進程寫入管道的所有數據都由內核定向到另一個進程,另一個進程由此就可以從管道中讀取數據。

?

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

A. Netlink

B. 消息隊列

C. 系統調用

D. ioctl

答案:B

試題解析:消息隊列是一種用戶態進程間通信機制,不能實現內核態和用戶態間通信;

Netlink,系統調用,ioctl是使用較多的內核態和用戶態間通信機制,其中系統調用只能由用戶態發起。

轉載于:https://www.cnblogs.com/hehehaha/archive/2013/05/20/6332760.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。