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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 内核经典面试题

發布時間:2023/12/10 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 内核经典面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“服務端思維”,選擇“設為星標”

回復”669“獲取獨家整理的精選資料集

回復”加群“加入全國服務端高端社群「后端圈」

內核經典面試題總覽

主要有哪幾種內核鎖?Linux 內核的同步機制是什么?

Linux 中的用戶模式和內核模式是什么含義?

怎么申請大塊內存?vmalloc 和 kmalloc 有什么區別?

進程間通信主要有哪幾種方式?

伙伴系統申請內存的函數有哪些?

通過 slab 分配器申請內存的函數有哪些?

Linux 的內核空間和用戶空間如何劃分的?進程地址空間布局圖?

vmalloc() 申請內存有什么特點?

用戶程序使用 malloc() 申請的內存空間在什么范圍?

在支持并使能 MMU 的系統中,Linux 內核和用于程序分別運行在物理地址模式還是虛擬地址模式?

ARM 處理器是通過幾級頁表進行存儲空間映射的?

Linux 是通過什么組件來實現支持多種文件系統的?

Linux虛擬文件系統的關鍵數據結構有哪些?(至少寫出4個)

對文件系統的操作函數保存在哪個數據結構中?

Linux 中的文件包括哪些?

創建進程的系統調用有哪些?

調用 schedule() 進行進程切換的方式有幾種?

Linux 調度程序是根據進程的動態優先級還是靜態優先級來調度進程的?

進程調度的核心數據結構是哪個?

如何加載、卸載一個模塊?

模塊和應用程序分別運行在什么空間?

Linux 中的浮點運算由應用程序實現還是內核實現?

模塊程序能否使用可鏈接的庫函數?

TLB 中緩存的是什么內容

Linux 中有哪幾種設備?

字符設備驅動程序的關鍵數據結構是哪個?

設備驅動程序包括哪些功能函數?

如何唯一標識一個設備?

Linux 通過什么方式實現系統調用?

Linux 軟中斷和工作隊列的作用是什么?

0x01 答案

1. 主要有哪幾種內核鎖?Linux 內核的同步機制是什么?

自旋鎖:spin_lock 忙等,中斷中使用

信號量:semxxx down/up write/read

mutex:初始化為1的信號量

讀寫鎖,RCU(read-copy update)

2. Linux 中的用戶模式和內核模式是什么含義?

cpu mode,用戶模式只能通過系統調用操作硬件資源,內核模式可以直接操作硬件資源

3. 怎么申請大塊內存?vmalloc 和 kmalloc 有什么區別?

vmalloc 用于申請大塊內存,虛擬地址連續,物理地址不一定連續,不能直接用于DMA,在進程地址空間有專門的一塊。

kmalloc 用于申請小內存,由 slab 管理實現,一般至少小于4KB(page)。不能申請大于128K的數據。物理地址和虛擬地址都連續,可用于DMA操作。

4. 進程間通信主要有哪幾種方式?

管道:兩個進程需要有共同的祖先,pipe/popen

命名管道:兩個進程可以無關

信號

消息隊列

共享內存

信號量

套接字

Android:binder/ashmem

5. 伙伴系統申請內存的函數有哪些?

alloc_page(gfp_mask, order)

__get_free_pages(gfp_mask, order)

6. 通過 slab 分配器申請內存的函數有哪些?

自己構造對象:kmem_cache_create/kmem_cache_alloc

普通匿名內存申請:kmalloc

7. Linux 的內核空間和用戶空間如何劃分的?進程地址空間布局圖?

32位可配置3G/1G, 2G/2G,一般是兩級頁表

64位可配置幾級頁表,一般可選3級/4級頁表,256G/256G,或512T/512T

8. vmalloc() 申請內存有什么特點?

申請大塊內存,虛擬地址連續,物理地址不一定連續,不能直接用于DMA。對于釋放函數 vfree()。

9. 用戶程序使用 malloc() 申請的內存空間在什么范圍?

stack 和 heap 中間。小于128M的通過brk申請,大于的通過 mmap 申請。

10. 在支持并使能 MMU 的系統中,Linux 內核和用于程序分別運行在物理地址模式還是虛擬地址模式?

都運行在虛擬地址模式,頁表轉換對應由硬件單元MMU完成。

11. ARM 處理器是通過幾級頁表進行存儲空間映射的?

兩級頁表,PGD和PTE

12. Linux 是通過什么組件來實現支持多種文件系統的?

VFS(virtual file system)

13. Linux虛擬文件系統的關鍵數據結構有哪些?(至少寫出4個)

super_block超級塊

inode索引節點

dentry目錄項

file文件

14. 對文件系統的操作函數保存在哪個數據結構中?

struct file_operations

15. Linux 中的文件包括哪些?

可執行文件,普通文件,目錄文件,鏈接文件,設備文件,管道文件

16. 創建進程的系統調用有哪些?

clone, fork, vfork

17. 調用 schedule() 進行進程切換的方式有幾種?

do_fork/do_timer/wake_up_process/setscheduler/sys_sched_yield

18. Linux 調度程序是根據進程的動態優先級還是靜態優先級來調度進程的?

cfs 會計算虛擬時間,還有一個計算出來的優先級。

實時進程根據xx

19. 進程調度的核心數據結構是哪個?

struct runqueue

20. 如何加載、卸載一個模塊?

ismod, rmmod

21. 模塊和應用程序分別運行在什么空間?

模塊運行在內核空間,應用程序運行在用戶空間

22. Linux 中的浮點運算由應用程序實現還是內核實現?

由應用程序實現,對應的數學庫函數。

23. 模塊程序能否使用可鏈接的庫函數?

module 運行在內核空間,不能鏈接庫函數。

24. TLB 中緩存的是什么內容

translation lookaside buffer, 也叫快表,用作頁表緩沖。記錄虛擬地址和物理地址的對應關系,用于加快地址轉換。

25. Linux 中有哪幾種設備?

字符設備和塊設備

26. 字符設備驅動程序的關鍵數據結構是哪個?

struct cdev: kobject

cdev_alloc()

cdev_add()

27. 設備驅動程序包括哪些功能函數?

open/read/write/ioctl/release/llseek

28. 如何唯一標識一個設備?

主設備號和次設備號。dev_t,12位表示主設備號,20位表示次設備號。

MKDEV(int major, int minor)用于生產一個 dev_t 類型的對象。

29. Linux 通過什么方式實現系統調用?

軟件中斷。系統調用編號,異常處理程序

30. Linux 軟中斷和工作隊列的作用是什么?

軟中斷:不可睡眠阻塞,處于中斷上下文,不能進程切換,不能被自己打斷。

工作隊列:處理進程上下文中,可以睡眠阻塞。

— 本文結束 —

●?漫談設計模式在 Spring 框架中的良好實踐

●?顛覆微服務認知:深入思考微服務的七個主流觀點

●?人人都是 API 設計者

●?一文講透微服務下如何保證事務的一致性

●?要黑盒測試微服務內部服務間調用,我該如何實現?


關注我,回復 「加群」 加入各種主題討論群。

對「服務端思維」有期待,請在文末點個在看

喜歡這篇文章,歡迎轉發、分享朋友圈

在看點這里

總結

以上是生活随笔為你收集整理的Linux 内核经典面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

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