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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

经典面试题-Linux Kernel面试题

發(fā)布時間:2025/3/21 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 经典面试题-Linux Kernel面试题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

快速鏈接:
.
👉👉👉 個人博客筆記導(dǎo)讀目錄(全部) 👈👈👈

目錄

      • 一、經(jīng)典題目
        • 1、主要有哪幾種內(nèi)核鎖?Linux 內(nèi)核的同步機制是什么?
        • 2、Linux 中的用戶模式和內(nèi)核模式是什么含義?
        • 3、怎么申請大塊內(nèi)存?vmalloc 和 kmalloc 有什么區(qū)別?
        • 4、進程間通信主要有哪幾種方式?
        • 5、伙伴系統(tǒng)申請內(nèi)存的函數(shù)有哪些?
        • 6、通過 slab 分配器申請內(nèi)存的函數(shù)有哪些?
        • 7、Linux 的內(nèi)核空間和用戶空間如何劃分的?進程地址空間布局圖?
        • 8、vmalloc() 申請內(nèi)存有什么特點?
        • 9、用戶程序使用 malloc() 申請的內(nèi)存空間在什么范圍?
        • 10、在支持并使能 MMU 的系統(tǒng)中,Linux 內(nèi)核和用戶程序分別運行在物理地址模式還是虛擬地址模式?
        • 11、ARM 處理器是通過幾級頁表進行存儲空間映射的?
        • 12、Linux 是通過什么組件來實現(xiàn)支持多種文件系統(tǒng)的?
        • 13、Linux虛擬文件系統(tǒng)的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)有哪些?(至少寫出4個)
        • 14、對文件系統(tǒng)的操作函數(shù)保存在哪個數(shù)據(jù)結(jié)構(gòu)中?
        • 15、Linux 中的文件包括哪些?
        • 16、創(chuàng)建進程的系統(tǒng)調(diào)用有哪些?
        • 17、調(diào)用 schedule() 進行進程切換的方式有幾種?
        • 18、Linux 調(diào)度程序是根據(jù)進程的動態(tài)優(yōu)先級還是靜態(tài)優(yōu)先級來調(diào)度進程的?
        • 19、進程調(diào)度的核心數(shù)據(jù)結(jié)構(gòu)是哪個?
        • 20、如何加載、卸載一個模塊?
        • 21、模塊和應(yīng)用程序分別運行在什么空間?
        • 22、Linux 中的浮點運算由應(yīng)用程序?qū)崿F(xiàn)還是內(nèi)核實現(xiàn)?
        • 23、模塊程序能否使用可鏈接的庫函數(shù)?
        • 24、TLB 中緩存的是什么內(nèi)容
        • 25、Linux 中有哪幾種設(shè)備?
        • 26、字符設(shè)備驅(qū)動程序的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)是哪個?
        • 27、設(shè)備驅(qū)動程序包括哪些功能函數(shù)?
        • 28、如何唯一標識一個設(shè)備?
        • 29、Linux 通過什么方式實現(xiàn)系統(tǒng)調(diào)用?
        • 30、Linux 軟中斷和工作隊列的作用是什么?
      • 二、帶補充
        • volilate 作用
        • 信號量和互斥體的區(qū)別
      • 三、靈魂的一問
        • linux kernel你都熟悉什么?
        • 講一講中斷機制?
        • 講一講同步機制?
        • 講一講MMU/CACHE?
      • 三、安全相關(guān)
        • optee os你知道什么?
        • 講一講sharememrory
        • 講一講secureboot
        • 安全算法都有哪些?
        • Linux Kernel掌握怎樣
        • 微內(nèi)核的 IPC通信怎么實現(xiàn)的

一、經(jīng)典題目

1、主要有哪幾種內(nèi)核鎖?Linux 內(nèi)核的同步機制是什么?

原子變量
spinlock 自旋鎖

信號量semaphore、二值信號量
互斥體mutex

禁止強制、禁止軟中斷、禁止硬中斷
每處理器變量、每處理器計數(shù)器、內(nèi)存屏障

RCU

2、Linux 中的用戶模式和內(nèi)核模式是什么含義?

執(zhí)行在EL0的用戶程序,每個用戶程序都有自己的虛擬地址空間
執(zhí)行在EL1的kernel程序,整個kernel程序使用一個虛擬地址空間

3、怎么申請大塊內(nèi)存?vmalloc 和 kmalloc 有什么區(qū)別?

  • vmalloc 用于申請大塊內(nèi)存,虛擬地址連續(xù),物理地址不一定連續(xù),不能直接用于DMA,在進程地址空間有專門的一塊。
  • kmalloc 用于申請小內(nèi)存,由 slab 管理實現(xiàn),一般至少小于4KB(page)。不能申請大于128K的數(shù)據(jù)。物理地址和虛擬地址都連續(xù),可用于DMA操作。

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

  • 管道(Pipe)
  • 命名管道(named pipe)
  • 信號(Signal)
  • 消息(Message)隊列
  • 共享內(nèi)存
  • 信號量(semaphore)
  • 套接字(Socket)

5、伙伴系統(tǒng)申請內(nèi)存的函數(shù)有哪些?

  • alloc_page(gfp_mask, order)
  • __get_free_pages(gfp_mask, order)

6、通過 slab 分配器申請內(nèi)存的函數(shù)有哪些?

  • 自己構(gòu)造對象:kmem_cache_create/kmem_cache_alloc
  • 普通匿名內(nèi)存申請:kmalloc

7、Linux 的內(nèi)核空間和用戶空間如何劃分的?進程地址空間布局圖?

8、vmalloc() 申請內(nèi)存有什么特點?

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

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

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

10、在支持并使能 MMU 的系統(tǒng)中,Linux 內(nèi)核和用戶程序分別運行在物理地址模式還是虛擬地址模式?

在開啟MMU之后,用戶程序和內(nèi)核程序,都是使用的虛擬地址

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

L3 L2 L1 L0 L-1
要看你的系統(tǒng)的granue size和虛擬地址有效位的配置

12、Linux 是通過什么組件來實現(xiàn)支持多種文件系統(tǒng)的?

VFS(virtual file system)

13、Linux虛擬文件系統(tǒng)的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)有哪些?(至少寫出4個)

struct super_block、struct inode、struct file、struct dentry

14、對文件系統(tǒng)的操作函數(shù)保存在哪個數(shù)據(jù)結(jié)構(gòu)中?

struct file_operations

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

  • 執(zhí)行文
  • 普通文
  • 目錄文
  • 鏈接文件
  • 設(shè)備文件
  • 管道文件

16、創(chuàng)建進程的系統(tǒng)調(diào)用有哪些?

  • clone()
  • fork()
  • vfork();

系統(tǒng)調(diào)用服務(wù)例程:

  • sys_clone
  • sys_fork
  • sys_vfork;

17、調(diào)用 schedule() 進行進程切換的方式有幾種?

  • 系統(tǒng)調(diào)用 do_fork();
  • 定時中斷 do_timer();
  • 喚醒進程 wake_up_process
  • 改變進程的調(diào)度策略 setscheduler();
  • 系統(tǒng)調(diào)用禮讓 sys_sched_yield();

18、Linux 調(diào)度程序是根據(jù)進程的動態(tài)優(yōu)先級還是靜態(tài)優(yōu)先級來調(diào)度進程的?

Liunx調(diào)度程序是根據(jù)根據(jù)進程的動態(tài)優(yōu)先級來調(diào)度進程的,但是動態(tài)優(yōu)先級又是根據(jù)靜態(tài)優(yōu)先級根據(jù)算法計算出來的,兩者是兩個相關(guān)聯(lián)的值。因為高優(yōu)先級的進程總是比低優(yōu)先級的進程先被調(diào)度,為防止多個高優(yōu)先級的進程占用CPU資源,導(dǎo)致其他進程不能占有CPU,所以引用動態(tài)優(yōu)先級概念

19、進程調(diào)度的核心數(shù)據(jù)結(jié)構(gòu)是哪個?

TODO

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

insmod xxx.ko
rmmod xxx

21、模塊和應(yīng)用程序分別運行在什么空間?

模塊: 內(nèi)核空間
應(yīng)用程序: 用戶空間

22、Linux 中的浮點運算由應(yīng)用程序?qū)崿F(xiàn)還是內(nèi)核實現(xiàn)?

內(nèi)核也可以實現(xiàn),VFPV4架構(gòu)的,V0-V31寄存器

23、模塊程序能否使用可鏈接的庫函數(shù)?

模塊程序運行在內(nèi)核空間,不能鏈接庫函數(shù)。

24、TLB 中緩存的是什么內(nèi)容

ASID,物理地址,虛擬地址,NS比特位,MESI位等

25、Linux 中有哪幾種設(shè)備?

  • 字符設(shè)備
  • 塊設(shè)備
  • 網(wǎng)絡(luò)設(shè)備

26、字符設(shè)備驅(qū)動程序的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)是哪個?

字符設(shè)備描述符struct cdev、cdev_alloc()用于動態(tài)的分配cdev描述符,cdev_add()用于注冊一個cdev描述符,cdev包含一個struct kobject類型的數(shù)據(jù)結(jié)構(gòu)它是核心的數(shù)據(jù)結(jié)構(gòu)

27、設(shè)備驅(qū)動程序包括哪些功能函數(shù)?

open()、,read()、write()、llseek()、realse()

28、如何唯一標識一個設(shè)備?

Linux使用一個設(shè)備編號來唯一的標示一個設(shè)備,設(shè)備編號分為:主設(shè)備號和次設(shè)備號,一般主設(shè)備號標示設(shè)備對應(yīng)的驅(qū)動程序,次設(shè)備號對應(yīng)設(shè)備文件指向的設(shè)備,在內(nèi)核中使用dev_t來表示設(shè)備編號,一般它是32位長度,其中12位用于表示主設(shè)備號,20位用于表示次設(shè)備號,利用MKDEV(int major,int minor);用于生成一個dev_t類型的對象。

29、Linux 通過什么方式實現(xiàn)系統(tǒng)調(diào)用?

syscall,底層調(diào)用到svc同步異常指令

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

實現(xiàn)中斷下半部分

二、帶補充

volilate 作用

信號量和互斥體的區(qū)別

三、靈魂的一問

linux kernel你都熟悉什么?

講一講中斷機制?

講一講同步機制?

講一講MMU/CACHE?

三、安全相關(guān)

optee os你知道什么?

講一講sharememrory

講一講secureboot

安全算法都有哪些?

Linux Kernel掌握怎樣

微內(nèi)核的 IPC通信怎么實現(xiàn)的

總結(jié)

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

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