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

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

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

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

第五章Linux操作系統(tǒng)題目

1、 Linux內(nèi)核的組成部分

Linux內(nèi)核主要由五個(gè)子系統(tǒng)組成:進(jìn)程調(diào)度,內(nèi)存管理,虛擬文件系統(tǒng),網(wǎng)絡(luò)接口,進(jìn)程間通信。


2、Linux系統(tǒng)的組成部分

Linux系統(tǒng)一般有4個(gè)主要部分:

內(nèi)核、shell、文件系統(tǒng)和應(yīng)用程序。

 

3、用戶空間與內(nèi)核通信方式有哪些?

1)系統(tǒng)調(diào)用。用戶空間進(jìn)程通過系統(tǒng)調(diào)用進(jìn)入內(nèi)核空間,訪問指定的內(nèi)核空間數(shù)據(jù);

2)驅(qū)動(dòng)程序。用戶空間進(jìn)程可以使用封裝后的系統(tǒng)調(diào)用接口訪問驅(qū)動(dòng)設(shè)備節(jié)點(diǎn),以和運(yùn)行在內(nèi)核空間的驅(qū)動(dòng)程序通信;

3)共享內(nèi)存mmap。在代碼中調(diào)用接口,實(shí)現(xiàn)內(nèi)核空間與用戶空間的地址映射,在實(shí)時(shí)性要求很高的項(xiàng)目中為首選,省去拷貝數(shù)據(jù)的時(shí)間等資源,但缺點(diǎn)是不好控制;

4)copy_to_user()、copy_from_user(),是在驅(qū)動(dòng)程序中調(diào)用接口,實(shí)現(xiàn)用戶空間與內(nèi)核空間的數(shù)據(jù)拷貝操作,應(yīng)用于實(shí)時(shí)性要求不高的項(xiàng)目中。

以及:

  1. procfs(/proc) 
  2. sysctl (/proc/sys) 
  3. sysfs(/sys) 
  4. netlink 套接口 

4、系統(tǒng)調(diào)用與普通函數(shù)調(diào)用的區(qū)別

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

1.使用INT和IRET指令,內(nèi)核和應(yīng)用程序使用的是不同的堆棧,因此存在堆棧的切換,從用戶態(tài)切換到內(nèi)核態(tài),從而可以使用特權(quán)指令操控設(shè)備

2.依賴于內(nèi)核,不保證移植性

3.在用戶空間和內(nèi)核上下文環(huán)境間切換,開銷較大

4.是操作系統(tǒng)的一個(gè)入口點(diǎn)

普通函數(shù)調(diào)用:

1.使用CALL和RET指令,調(diào)用時(shí)沒有堆棧切換

2.平臺(tái)移植性好

3.屬于過程調(diào)用,調(diào)用開銷較小

4.一個(gè)普通功能函數(shù)的調(diào)用

5、內(nèi)核態(tài),用戶態(tài)的區(qū)別

內(nèi)核態(tài),操作系統(tǒng)在內(nèi)核態(tài)運(yùn)行——運(yùn)行操作系統(tǒng)程序

用戶態(tài),應(yīng)用程序只能在用戶態(tài)運(yùn)行——運(yùn)行用戶程序

當(dāng)一個(gè)進(jìn)程在執(zhí)行用戶自己的代碼時(shí)處于用戶運(yùn)行態(tài)(用戶態(tài)),此時(shí)特權(quán)級(jí)最低,為3級(jí),是普通的用戶進(jìn)程運(yùn)行的特權(quán)級(jí),大部分用戶直接面對(duì)的程序都是運(yùn)行在用戶態(tài)。Ring3狀態(tài)不能訪問Ring0的地址空間,包括代碼和數(shù)據(jù);當(dāng)一個(gè)進(jìn)程因?yàn)橄到y(tǒng)調(diào)用陷入內(nèi)核代碼中執(zhí)行時(shí)處于內(nèi)核運(yùn)行態(tài)(內(nèi)核態(tài)),此時(shí)特權(quán)級(jí)最高,為0級(jí)。執(zhí)行的內(nèi)核代碼會(huì)使用當(dāng)前進(jìn)程的內(nèi)核棧,每個(gè)進(jìn)程都有自己的內(nèi)核棧。

6、 bootloader、內(nèi)核 、根文件的關(guān)系

啟動(dòng)順序:bootloader->linux kernel->rootfile->app

Bootloader全名為啟動(dòng)引導(dǎo)程序,是第一段代碼,它主要用來初始化處理器及外設(shè),然后調(diào)用Linux內(nèi)核。Linux內(nèi)核在完成系統(tǒng)的初始化之后需要掛載某個(gè)文件系統(tǒng)作為根文件系統(tǒng)(RootFilesystem),然后加載必要的內(nèi)核模塊,啟動(dòng)應(yīng)用程序。(一個(gè)嵌入式Linux系統(tǒng)從軟件角度看可以分為四個(gè)部分:引導(dǎo)加載程序(Bootloader),Linux內(nèi)核,文件系統(tǒng),應(yīng)用程序。)

7 、Bootloader啟動(dòng)的兩個(gè)階段:

Stage1:匯編語言

1)基本的硬件初始化(關(guān)閉看門狗和中斷,MMU(帶操作系統(tǒng)),CACHE。配置系統(tǒng)工作時(shí)鐘)

2)為加載stage2準(zhǔn)備RAM空間

3)拷貝內(nèi)核映像和文件系統(tǒng)映像到RAM中

4)設(shè)置堆棧指針sp

5)跳到stage2的入口點(diǎn)

Stage2:c語言

1)初始化本階段要使用到的硬件設(shè)備(led uart等)

2)檢測(cè)系統(tǒng)的內(nèi)存映射

3)加載內(nèi)核映像和文件系統(tǒng)映像

4)設(shè)置內(nèi)核的啟動(dòng)參數(shù)

嵌入式系統(tǒng)中廣泛采用的非易失性存儲(chǔ)器通常是Flash,而Bootloader就位于該存儲(chǔ)器的最前端,所以系統(tǒng)上電或復(fù)位后執(zhí)行的第一段程序便是Bootloader。

8、 linux下檢查內(nèi)存狀態(tài)的命令

  1. 1)查看進(jìn)程:top 
  2. 2)查看內(nèi)存:free 
  3. 3)cat /proc/meminfo 
  4. 4)vmstat 

假如一個(gè)公司服務(wù)器有很多用戶,你使用top命令,可以看到哪個(gè)同事在使用什么命令,做什么事情,占用了多少CPU。

9 、一個(gè)程序從開始運(yùn)行到結(jié)束的完整過程(四個(gè)過程)

預(yù)處理(Pre-Processing)、編譯(Compiling)、匯編(Assembling)、鏈接(Linking)

10、什么是堆,棧,內(nèi)存泄漏和內(nèi)存溢出?

棧由系統(tǒng)操作,程序員不可以操作。

所以內(nèi)存泄漏是指堆內(nèi)存的泄漏。堆內(nèi)存是指程序從堆中分配的,大小任意的(內(nèi)存塊的大小可以在程序運(yùn)行期決定),使用完后必須顯式釋放的內(nèi)存。應(yīng)用程序一般使用malloc,new等函數(shù)從堆中分配到一塊內(nèi)存,使用完后,程序必須負(fù)責(zé)相應(yīng)的調(diào)用free或delete釋放該內(nèi)存塊,否則,這塊內(nèi)存就不能被再次使用。

內(nèi)存溢出:你要求分配的內(nèi)存超出了系統(tǒng)能給你的,系統(tǒng)不能滿足需求,于是產(chǎn)生溢出。

內(nèi)存越界:向系統(tǒng)申請(qǐng)了一塊內(nèi)存,而在使用內(nèi)存時(shí),超出了申請(qǐng)的范圍(常見的有使用特定大小數(shù)組時(shí)發(fā)生內(nèi)存越界)

內(nèi)存溢出問題是 C 語言或者 C++ 語言所固有的缺陷,它們既不檢查數(shù)組邊界,又不檢查類型可靠性(type-safety)。眾所周知,用 C/C++ 語言開發(fā)的程序由于目標(biāo)代碼非常接近機(jī)器內(nèi)核,因而能夠直接訪問內(nèi)存和寄存器,這種特性大大提升了 C/C++ 語言代碼的性能。只要合理編碼,C/C++ 應(yīng)用程序在執(zhí)行效率上必然優(yōu)于其它高級(jí)語言。然而,C/C++ 語言導(dǎo)致內(nèi)存溢出問題的可能性也要大許多。

11、死鎖的原因、條件

產(chǎn)生死鎖的原因主要是:

(1) 因?yàn)橄到y(tǒng)資源不足。

(2) 進(jìn)程運(yùn)行推進(jìn)的順序不合適。

(3) 資源分配不當(dāng)?shù)取?/p>

如果系統(tǒng)資源充足,進(jìn)程的資源請(qǐng)求都能夠得到滿足,死鎖出現(xiàn)的可能性就很低,否則就會(huì)因爭(zhēng)奪有限的資源而陷入死鎖。其次,進(jìn)程運(yùn)行推進(jìn)順序與速度不同,也可能產(chǎn)生死鎖

這四個(gè)條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會(huì)發(fā)生死鎖。

(1) 互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用。

(2) 請(qǐng)求與保持條件:一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已獲得的資源保持不放。

(3) 不剝奪條件:進(jìn)程已獲得的資源,在末使用完之前,不能強(qiáng)行剝奪。

(4) 循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。

12、硬鏈接與軟鏈接

鏈接操作實(shí)際上是給系統(tǒng)中已有的某個(gè)文件指定另外一個(gè)可用于訪問它的名稱。對(duì)于這個(gè)新的文件名,我們可以為之指定不同的訪問權(quán)限,以控制對(duì)信息的共享和安全性的問題。如果鏈接指向目錄,用戶就可以利用該鏈接直接進(jìn)入被鏈接的目錄而不用打一大堆的路徑名。而且,即使我們刪除這個(gè)鏈接,也不會(huì)破壞原來的目錄。

1>硬鏈接

硬鏈接只能引用同一文件系統(tǒng)中的文件。它引用的是文件在文件系統(tǒng)中的物理索引(也稱為inode)。當(dāng)您移動(dòng)或刪除原始文件時(shí),硬鏈接不會(huì)被破壞,因?yàn)樗玫氖俏募奈锢頂?shù)據(jù)而不是文件在文件結(jié)構(gòu)中的位置。硬鏈接的文件不需要用戶有訪問原始文件的權(quán)限,也不會(huì)顯示原始文件的位置,這樣有助于文件的安全。如果您刪除的文件有相應(yīng)的硬鏈接,那么這個(gè)文件依然會(huì)保留,直到所有對(duì)它的引用都被刪除。

2>軟鏈接(符號(hào)鏈接)

軟連接,其實(shí)就是新建立一個(gè)文件,這個(gè)文件就是專門用來指向別的文件的(那就和windows 下的快捷方式的那個(gè)文件有很接近的意味)。軟連接產(chǎn)生的是一個(gè)新的文件,但這個(gè)文件的作用就是專門指向某個(gè)文件的,刪了這個(gè)軟連接文件,那就等于不需要這個(gè)連接,和原來的存在的實(shí)體原文件沒有任何關(guān)系,但刪除原來的文件,則相應(yīng)的軟連接不可用。

13、計(jì)算機(jī)中,32bit與64bit有什么區(qū)別

64bit計(jì)算主要有兩大優(yōu)點(diǎn):可以進(jìn)行更大范圍的整數(shù)運(yùn)算;可以支持更大的內(nèi)存。

64位操作系統(tǒng)下的虛擬內(nèi)存空間大?。旱刂房臻g大小不是2^32,也不是2^64,而一般是2^48。因?yàn)椴⒉恍枰?^64那么大的尋址空間,過大的空間只會(huì)造成資源的浪費(fèi)。所以64位Linux一般使用48位表示虛擬空間地址,40位標(biāo)識(shí)物理地址。

14、中斷和異常的區(qū)別

內(nèi)中斷:同步中斷(異常)是由cpu內(nèi)部的電信號(hào)產(chǎn)生的中斷,其特點(diǎn)為當(dāng)前執(zhí)行的指令結(jié)束后才轉(zhuǎn)而產(chǎn)生中斷,由于有cpu主動(dòng)產(chǎn)生,其執(zhí)行點(diǎn)必然是可控的。

外中斷:異步中斷是由cpu的外設(shè)產(chǎn)生的電信號(hào)引起的中斷,其發(fā)生的時(shí)間點(diǎn)不可預(yù)期。

15、中斷怎么發(fā)生,中斷處理流程

請(qǐng)求中斷→響應(yīng)中斷→關(guān)閉中斷→保留斷點(diǎn)→中斷源識(shí)別→保護(hù)現(xiàn)場(chǎng)→中斷服務(wù)子程序→恢復(fù)現(xiàn)場(chǎng)→中斷返回。


16、 Linux 操作系統(tǒng)掛起、休眠、關(guān)機(jī)相關(guān)命令

關(guān)機(jī)命令有halt, init 0, poweroff ,shutdown -h 時(shí)間,其中shutdown是最安全的

重啟命令有reboot,init 6,,shutdow -r時(shí)間

在linux命令中reboot是重新啟動(dòng),shutdown -r now是立即停止然后重新啟動(dòng)

具體可用參數(shù)可以百度。

17、說一個(gè)linux下編譯優(yōu)化選項(xiàng):

加:-o

18、在有數(shù)據(jù)cache情況下,DMA數(shù)據(jù)鏈路為:

外設(shè)-DMA-DDR-cache-CPU

19、linux命令

1、改變文件屬性的命令:chmod (chmod 777 /etc/squid 運(yùn)行命令后,squid文件夾(目錄)的權(quán)限就被修改為777(可讀可寫可執(zhí)行))

2、查找文件中匹配字符串的命令:grep

3、查找當(dāng)前目錄:pwd

4、刪除目錄:rm -rf 目錄名

5、刪除文件:rm 文件名

6、創(chuàng)建目錄(文件夾):mkdir

7、創(chuàng)建文件:touch

8、vi和vim 文件名也可以創(chuàng)建

9、查看進(jìn)程對(duì)應(yīng)的端口號(hào)

  1. 1、先查看進(jìn)程pid 
  2. ps -ef | grep 進(jìn)程名 
  3.  
  4. 2、通過pid查看占用端口 
  5. netstat -nap | grep 進(jìn)程pid 

20、硬實(shí)時(shí)系統(tǒng)和軟實(shí)時(shí)系統(tǒng)

軟實(shí)時(shí)系統(tǒng):

Windows、Linux系統(tǒng)通常為軟實(shí)時(shí),當(dāng)然有補(bǔ)丁可以將內(nèi)核做成硬實(shí)時(shí)的系統(tǒng),不過商用沒有這么做的。

硬實(shí)時(shí)系統(tǒng):

對(duì)時(shí)間要求很高,限定時(shí)間內(nèi)不管做沒做完必須返回。

VxWorks,uCOS,F(xiàn)reeRTOS,WinCE,RT-thread等實(shí)時(shí)系統(tǒng);

21、MMU基礎(chǔ)

現(xiàn)代操作系統(tǒng)普遍采用虛擬內(nèi)存管理(Virtual Memory Management) 機(jī)制,這需要MMU( Memory Management Unit,內(nèi)存管理單元) 的支持。有些嵌入式處理器沒有MMU,則不能運(yùn)行依賴于虛擬內(nèi)存管理的操作系統(tǒng)。

也就是說:操作系統(tǒng)可以分成兩類,用MMU的、不用MMU的。

用MMU的是:Windows、MacOS、Linux、Android;不用MMU的是:FreeRTOS、VxWorks、UCOS……

與此相對(duì)應(yīng)的:CPU也可以分成兩類,帶MMU的、不帶MMU的。

帶MMU的是:Cortex-A系列、ARM9、ARM11系列;

不帶MMU的是:Cortex-M系列……(STM32是M系列,沒有MMU,不能運(yùn)行Linux,只能運(yùn)行一些UCOS、FreeRTOS等等)。

MMU就是負(fù)責(zé)虛擬地址(virtual address)轉(zhuǎn)化成物理地址(physical address),轉(zhuǎn)換過程比較復(fù)雜,可以自行百度。

 

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

2021-01-15 07:49:01

嵌入式筆試面試

2021-01-14 10:24:33

嵌入式筆試面試

2021-01-19 07:16:25

嵌入式筆試面試

2021-01-22 07:17:14

嵌入式筆試面試

2021-01-21 08:00:50

嵌入式筆試面試

2021-02-25 16:26:35

嵌入式筆試面試

2018-03-08 18:40:47

Java百度面試題

2011-05-19 16:30:38

軟件測(cè)試

2021-10-27 11:00:30

C++語言面試

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

2023-11-13 07:37:36

JS面試題線程

2013-11-26 13:54:00

AMD嵌入式

2013-08-01 17:42:08

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

2011-03-24 13:27:37

SQL

2009-12-09 10:12:28

嵌入式Linux
點(diǎn)贊
收藏

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