2016年嵌入式軟件助理工程師認(rèn)證考試試題題庫(kù)
26、 Linux系統(tǒng)中,普通用戶使用的命令通常保存在___/bin___目錄中。
27、 setenv命令的功能是___設(shè)置環(huán)境變量___。
28、 Linux文件的鏈接可分為符號(hào)鏈接和___硬鏈接___兩種。
29、 在shell編程時(shí),要把一個(gè)用戶的輸入賦值給一個(gè)變量,使用__read_______命令。
30、 Qt/Embedded使用___信號(hào)___和___插槽___的機(jī)制實(shí)現(xiàn)函數(shù)的回調(diào)。
31、 加載Linux內(nèi)核模塊使用命令___insmod___。
32、 ARM處理器有多種運(yùn)行模式,用戶程序運(yùn)行在其中的___用戶___模式。
33、 Linux系統(tǒng)在啟動(dòng)init進(jìn)程時(shí)使用的配置文件是_/etc/inittab_____。
34、 VI編輯器有三種工作模式:命令模式、插入模式和___末行模式___。
35、 交叉編譯是指___在一個(gè)平臺(tái)上生成可以在另一個(gè)平臺(tái)上執(zhí)行的代碼___。
36、 setenv命令的功能是___設(shè)置環(huán)境變量___。
37、 在linux系統(tǒng)中,以 文件 方式訪問(wèn)設(shè)備 。
38、 利用gdb進(jìn)行調(diào)試時(shí),可通過(guò)step或 next 命令進(jìn)行單步執(zhí)行。
39、 Qt/Embedded的底層圖形引擎基于 FrameBuffer 接口技術(shù)。
40、 Linux操作系統(tǒng)的系統(tǒng)管理員(也就是超級(jí)用戶)帳號(hào)是root 。
41、 編寫的shell程序運(yùn)行前必須賦予該腳本文件 執(zhí)行 權(quán)限 。
42、 使用gcc編譯c程序生成可執(zhí)行文件有時(shí)似乎是一步完成的,但實(shí)際要經(jīng)歷如下四步:預(yù)處理、編譯、 匯編 和連接。
43、 內(nèi)核分為 進(jìn)程管理系統(tǒng) 、 內(nèi)存管理系統(tǒng) 、 IO管理系統(tǒng) 和文件管理系統(tǒng) 等四個(gè)子系統(tǒng)。
44、 嵌入式系統(tǒng)中按照總線所傳送的信息類型,可以分為數(shù)據(jù)總線、地址總線和 控制總線 等幾種。
45、 嵌入式linux系統(tǒng)中,設(shè)備類型分為字符設(shè)備、塊設(shè)備 和 網(wǎng)絡(luò)設(shè)備 等三種。
46、 Linux中所有用戶的信息保存于__ /etc/passwd _和__/etc/shadow __文件。
47、 鏈接分為__軟連接 __和__硬鏈接 ____鏈接 。
48、
49、 某文件的權(quán)限位:d-rw-_r--_r--,用數(shù)值形式表示該權(quán)限,則該八進(jìn)制數(shù)為_644 ,該文件屬性是__目錄 _。
50、 嵌入式Linux系統(tǒng)從軟件的角度看通常可以分為四個(gè)層次:引導(dǎo)加載程序、__ Linux內(nèi)核___、__文件系統(tǒng)_、用戶應(yīng)用程序。
51、 進(jìn)程從產(chǎn)生到終止進(jìn)程可以具有的基本狀態(tài)為: _運(yùn)行態(tài)__ 、 _就緒態(tài)__ 和 等待態(tài)(阻塞態(tài))。
四、判斷題
1、 在gdb調(diào)試過(guò)程中,不退出gdb也可以執(zhí)行UNIX shell命令。(對(duì))
2、 退出交互模式的shell,應(yīng)鍵入quit。(錯(cuò))
3、 Linux文件系統(tǒng)的文件都按其作用分門別類地放在相關(guān)的目錄中,對(duì)于外部設(shè)備文件,一般應(yīng)將其放在/etc目錄中。(錯(cuò))
4、 命令fdisk /mbr的作用是安裝系統(tǒng)引導(dǎo)程序到主分區(qū)。(錯(cuò))
5、 在Linux系統(tǒng)中,測(cè)試DNS服務(wù)器是否能夠正確解析域名的的客戶端命令,使用命令 nslookup 。(對(duì))
6、 命令mount /dev/hdc /mnt/cdrom是將光盤CD-ROM(hdc)安裝到文件系統(tǒng)的/mnt/cdrom目錄下。(對(duì))
7、 /home/src目錄存放著Linux的源代碼。( 錯(cuò))
8、 uCOS-II操作系統(tǒng)屬于順序執(zhí)行系統(tǒng) 。(錯(cuò) )
9、 Linux 文件名的長(zhǎng)度不得超256個(gè)字符。(對(duì) )
10、 在vi編輯器中的命令模式下,刪除當(dāng)前光標(biāo)處的字符使用d命令。( 錯(cuò) )
11、 基于ARM架構(gòu)的指令都是32位的。(錯(cuò))
12、 激活網(wǎng)卡需要編譯內(nèi)核。( 錯(cuò))
13、 可用ctrl+C強(qiáng)行結(jié)束后臺(tái)進(jìn)程。(錯(cuò) )
14、 寫回Cache是指CPU在執(zhí)行寫操作時(shí),必須把數(shù)據(jù)同時(shí)寫入Cache和主存。(×)
15、
16、 文件系統(tǒng)的主要功能是實(shí)現(xiàn)虛擬存儲(chǔ)。(錯(cuò))
17、 進(jìn)程有三種狀態(tài)是準(zhǔn)備態(tài)、執(zhí)行態(tài)和退出態(tài)。(錯(cuò))
18、 Samba服務(wù)器的進(jìn)程由smbd和nmbd兩部分組成。(對(duì))
19、 shell命令的第一個(gè)按鍵必須是字符、數(shù)字或者空格(錯(cuò))
20、 Linux 文件名的長(zhǎng)度不得超256個(gè)字符。(對(duì))
21、 在gdb調(diào)試過(guò)程中,用make命令可以不用退出gdb就可以重新產(chǎn)生可執(zhí)行文件。(對(duì))
22、 若一臺(tái)計(jì)算機(jī)的內(nèi)存為128MB,則交換分區(qū)的大小通常是64M。(錯(cuò))
23、 在重新啟動(dòng)Linux系統(tǒng)的同時(shí)把內(nèi)存中的信息寫入硬盤,應(yīng)使用shutdown –r now命令實(shí)現(xiàn)。(對(duì))
24、 在vi編輯器中的命令模式下,刪除當(dāng)前光標(biāo)處的字符使用d命令。(錯(cuò))
25、 Samba服務(wù)器的進(jìn)程由smbd和nmbd兩部分組成。(對(duì))
26、 從后臺(tái)啟動(dòng)進(jìn)程,應(yīng)在命令的結(jié)尾加上符號(hào)@。(錯(cuò))
27、 網(wǎng)絡(luò)管理的重要任務(wù)是: 控制 和 監(jiān)控 。(對(duì))
28、 函數(shù)的標(biāo)量參數(shù)通過(guò)傳值的方式進(jìn)行傳遞,而數(shù)組名參數(shù)則具有傳址調(diào)用的語(yǔ)義。( √ )
29、 (X)根文件系統(tǒng)是具有操作系統(tǒng)的嵌入式系統(tǒng)必須的組成部分。
30、 (V)一個(gè)shell腳本運(yùn)行時(shí)可以看成是一個(gè)Linux作業(yè),它可能由多個(gè)進(jìn)程完成。
31、 (V)在2.6內(nèi)核中加入的搶占點(diǎn)提高了Linux的可搶占性,但Linux仍不能看作實(shí)時(shí)系統(tǒng)。
32、 (X)目前的ARM處理器采用的是哈佛體系結(jié)構(gòu)。
33、 (V)ARM處理器的運(yùn)行模式可通過(guò)中斷或異常處理改變。
34、 (X)C語(yǔ)言中的棧的壓入和彈出是由操作系統(tǒng)管理的。
35、 (X)BootLoader屬于嵌入式操作系統(tǒng)的一部分。
36、 (X)chmod命令可用來(lái)修改處理器的運(yùn)行模式。
37、 (X)CGI程序由Web服務(wù)器解釋運(yùn)行。
38、 (V)Linux系統(tǒng)中的目錄可以看作是一種特殊的文件。
39、 (X)shell環(huán)境變量主要用于腳本的執(zhí)行過(guò)程,不會(huì)作用于腳本之外的程序。
40、 (V)Busybox常用于替代桌面系統(tǒng)中的init和shell等程序,為嵌入式用戶提供使用環(huán)境。
41、 (V)LINUX是一個(gè)真正的多用戶、多任務(wù)操作系統(tǒng),允許多個(gè)用戶在相同的機(jī)器上一次運(yùn)行很多程序,并能保證相互之間的共享和安全。
42、 在嵌入式系統(tǒng)中,整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由 Boot Loader 來(lái)完成。( √ )
43、 在LINUX系統(tǒng)中,所有的內(nèi)容被表示成文件,組織文件的各種方法便稱為不同的文件系統(tǒng)。( √ )
44、 Linux系統(tǒng)是一個(gè)多用戶多任務(wù)的分時(shí)操作系統(tǒng),允許多個(gè)用戶在相同的機(jī)器上一次運(yùn)行很多程序。( √ )
45、 Linux 中的 ls 命令的功能是變換工作目錄到目標(biāo)指定目錄。( × )
46、 ARM包含32個(gè)通用寄存器。( × )
47、 Qt Embedded的API同Qt/X11和Qt/Windows的相同,但它并不是基于X11庫(kù)。( √ )
48、 kmalloc和vmalloc的區(qū)別在于,前者申請(qǐng)到的是物理地址連續(xù)的內(nèi)存空間,而后者則是虛擬地址連續(xù)的內(nèi)存空間,不能用在中斷時(shí)間。( √ )
49、 LINUX是一個(gè)真正的多任務(wù)和分時(shí)操作系統(tǒng),允許多個(gè)用戶在相同的機(jī)器上一次運(yùn)行很多程序。( √ )
50、 (X)Linux采用線程調(diào)度程序選擇線程占用CPU運(yùn)行。
51、 (V)在單機(jī)系統(tǒng)中可采用關(guān)中斷的方式保證操作的原子性。
52、 (X)根文件系統(tǒng)是系統(tǒng)啟動(dòng)時(shí)首先加載的文件系統(tǒng),因此需要快速加載的內(nèi)容應(yīng)放置于其中,以加快系統(tǒng)的運(yùn)行速度。
53、 (X)線程切換成本小于進(jìn)程,因此Linux系統(tǒng)中的多線程程序的調(diào)度開銷要小于多進(jìn)程程序。
54、 (X)守護(hù)進(jìn)程的主要任務(wù)是完成與用戶的交互,以保證系統(tǒng)的響應(yīng)性能。
55、 (X)Linux內(nèi)存管理采用了Slab機(jī)制,因此,無(wú)需硬件支持,Linux能夠很好地支持虛擬存儲(chǔ)。
56、 (X)模塊程序運(yùn)行于內(nèi)核模式,因此,它們能夠訪問(wèn)內(nèi)核中的所有函數(shù)。
57、 (X)根文件系統(tǒng)所在的分區(qū)越大約好,因?yàn)楦謪^(qū)越大,Linux啟動(dòng)速度越快。
58、 (V)一個(gè)shell腳本的第一行是:#! /bin/csh它的作用是注釋,表示下面腳本是csh腳本。
59、 (X)目前Linux平臺(tái)上的各種線程庫(kù)使得Linux能夠在內(nèi)核空間能夠支持多線程。
60、 (V)Linux允許內(nèi)核以NFS的形式連接根文件系統(tǒng)
61、 (V)EXT3文件系統(tǒng)是一種日志型的文件系統(tǒng)。
62、 (V)BootLoader是嵌入式系統(tǒng)運(yùn)行的第一個(gè)程序。
63、 (X)自旋鎖可以用在單機(jī)系統(tǒng)中來(lái)保證內(nèi)核相關(guān)操作的原子性。
64、 (X)Samba服務(wù)器在Linux平臺(tái)上常用作Web服務(wù)器。
65、 在vi編輯器中的命令模式下,重復(fù)上一次對(duì)編輯的文本進(jìn)行的操作,可使用下箭頭命令。(錯(cuò) )
66、 進(jìn)程有三種狀態(tài)是準(zhǔn)備態(tài)、執(zhí)行態(tài)和退出態(tài)。( 錯(cuò) )
67、 觸摸屏是一種輸入設(shè)備。(√)
68、 VHDL是一種硬件描述語(yǔ)言,用于設(shè)計(jì)硬件電子系統(tǒng)。(√)
69、 二極管具有單向?qū)ㄐ浴?√)
70、 CISC機(jī)器多采用Load/Store結(jié)構(gòu)(×)
71、 GDB是一個(gè)用來(lái)調(diào)試C和C++程序的調(diào)試器。(√)
72、 DSP是專門用于數(shù)字信號(hào)處理方面的處理器。(√)
73、 Nand Flash的特點(diǎn)是應(yīng)用程序可以直接在閃存中運(yùn)行,不需要把代碼讀到系統(tǒng)RAM中。(×)
74、 LCD是一種輸出設(shè)備。(√)
五、簡(jiǎn)答題
1、簡(jiǎn)述嵌入式系統(tǒng)中非占先式與占先式調(diào)度法的區(qū)別有哪些。
答:
非占先式調(diào)度法也稱作合作型多任務(wù)(cooperative multitasking),各個(gè)任務(wù)彼此合作共享一個(gè)CPU。中斷服務(wù)可以使一個(gè)高優(yōu)先級(jí)的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。(1分)但中斷服務(wù)以后控制權(quán)還是回到原來(lái)被中斷了的那個(gè)任務(wù),直到該任務(wù)主動(dòng)放棄CPU的使用權(quán)時(shí),那個(gè)高優(yōu)先級(jí)的任務(wù)才能獲得CPU的使用權(quán)。(2分)
當(dāng)系統(tǒng)響應(yīng)時(shí)間很重要時(shí),要使用占先式(preemptive)內(nèi)核。(1分)最高優(yōu)先級(jí)的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個(gè)運(yùn)行著的任務(wù)使一個(gè)比它優(yōu)先級(jí)高的任務(wù)進(jìn)入了就緒態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說(shuō)被掛起了,那個(gè)高優(yōu)先級(jí)的任務(wù)立刻得到了CPU的控制權(quán)。(2分)
2、什么是硬實(shí)時(shí)操作系統(tǒng)、軟實(shí)時(shí)操作系統(tǒng)以及二者的區(qū)別?
答:
在實(shí)時(shí)系統(tǒng)中,如果系統(tǒng)在指定的時(shí)間內(nèi)未能實(shí)現(xiàn)某個(gè)確定的任務(wù),會(huì)導(dǎo)致系統(tǒng)的全面失敗,這樣的系統(tǒng)被稱為強(qiáng)實(shí)時(shí)系統(tǒng)或硬實(shí)時(shí)系統(tǒng)。(1分)強(qiáng)實(shí)時(shí)系統(tǒng)響應(yīng)時(shí)間一般在毫秒或微秒級(jí)。(1分)
在弱實(shí)時(shí)系統(tǒng)中,雖然響應(yīng)時(shí)間同樣重要,但是超時(shí)卻不會(huì)發(fā)生致命的錯(cuò)誤。(1分)
其系統(tǒng)響應(yīng)時(shí)間在毫秒至秒的數(shù)量級(jí)上,(1分)其實(shí)時(shí)性的要求比強(qiáng)實(shí)時(shí)系統(tǒng)要差一些。(2分)
3、介紹一下嵌入式系統(tǒng)的設(shè)計(jì)步驟有哪些?各部分主要工作是什么?
答:
(1)需求分析階段,羅列出用戶的需求;(1分)
(2)體系結(jié)構(gòu)設(shè)計(jì)階段,描述系統(tǒng)的功能如何實(shí)現(xiàn);(1分)
(3)詳細(xì)設(shè)計(jì)階段,進(jìn)行硬件系統(tǒng)與軟件系統(tǒng)的分類劃分,以決定哪些功能用硬件實(shí)現(xiàn),哪些用軟件實(shí)現(xiàn);(1分)
(4)系統(tǒng)集成,把系統(tǒng)的軟件、硬件和執(zhí)行裝置集成在一起,(1分)進(jìn)行調(diào)試,發(fā)現(xiàn)并改進(jìn)在設(shè)計(jì)過(guò)程中的錯(cuò)誤;(1分)
(5)系統(tǒng)測(cè)試,對(duì)設(shè)計(jì)好的系統(tǒng)進(jìn)行測(cè)試,看其是否滿足給定的要求。(1分)
4、ARM支持哪兩種數(shù)據(jù)存儲(chǔ)格式,簡(jiǎn)單描述各自特點(diǎn)。
答:
分為大端格式和小端格式。(2分)
大端格式:被存放字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在存儲(chǔ)系統(tǒng)的低地址中,而被存放的字?jǐn)?shù)據(jù)的低字節(jié)則存放在存儲(chǔ)系統(tǒng)的高地址中。(2分)
小端格式:與大端存儲(chǔ)格式相反,在小端存儲(chǔ)格式中,存儲(chǔ)系統(tǒng)的低地址中存放的是被放字?jǐn)?shù)據(jù)中的低字節(jié)內(nèi)容,存儲(chǔ)系統(tǒng)的高地址存放的是被存字?jǐn)?shù)據(jù)中的高字節(jié)內(nèi)容。(2分)
5、什么是BootLoader?主要有幾種工作模式及主要功能是什么?
答:
簡(jiǎn)單說(shuō)來(lái),Bootloader就是操作系統(tǒng)內(nèi)核運(yùn)行的一段小程序,完成進(jìn)行初始化系統(tǒng)硬件設(shè)置的任務(wù),包括CPU、SDRRAM、Flash、串口等初始化,時(shí)鐘的設(shè)置、存儲(chǔ)器的映射。(2分)
分為啟動(dòng)加載模式和下載模式。
(1) 啟動(dòng)加載模式
啟動(dòng)加載(Boot laoding)模式又稱為“自主”(Autonomous)模式,是指 Bootloader 從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到 RAM 中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶的介入。(2分)
(2) 下載模式
在下載模式下,目標(biāo)機(jī)上的 Bootloader 將先通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從宿主機(jī)下載文件。(2分)
6、 簡(jiǎn)述Bootloader有何作用?
答案要點(diǎn):(1)首先,bootloader是在特定硬件平臺(tái)運(yùn)行的程序,嚴(yán)重依賴于硬件平臺(tái),需要移植;(2)是系統(tǒng)上電之后,第一個(gè)運(yùn)行的程序,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址 0x0 處開始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的 Boot Loader 程序;(3)bootloader程序的設(shè)計(jì)目標(biāo)是啟動(dòng)嵌入式操作系統(tǒng),嵌入式操作系統(tǒng)的啟動(dòng)需要一定的條件,這些條件由bootloader來(lái)滿足;(4)Bootloader一般具有對(duì)存儲(chǔ)器和網(wǎng)絡(luò)接口操作的功能;如擦除、讀寫Flash,通過(guò)USB、串口下載文件等
7、 程序、進(jìn)程、線程有何區(qū)別?
答案要點(diǎn):程序是編譯后形成的可執(zhí)行代碼,是靜止的。進(jìn)程是程序的一次執(zhí)行,是活動(dòng)的。線程是進(jìn)程的可執(zhí)行單元,同一進(jìn)程的不同線程共享進(jìn)程的資源和地址空間。
8、 簡(jiǎn)述嵌入式系統(tǒng)的幾個(gè)重要特征?
答案要點(diǎn):系統(tǒng)內(nèi)核小 ;專用性強(qiáng) ;系統(tǒng)精簡(jiǎn) ;高實(shí)時(shí)性的系統(tǒng)軟件;多任務(wù)的操作系統(tǒng) ;需要專用的開發(fā)工具和環(huán)境。 答出上述4個(gè)并適當(dāng)闡述的即可給滿分。
9、 什么是程序的局部性原理?
答案要點(diǎn):程序的局部性原理是指程序在執(zhí)行過(guò)程中的一個(gè)較短時(shí)期內(nèi),它所執(zhí)行的指令和訪問(wèn)的存儲(chǔ)空間分別局限在一定的區(qū)域內(nèi)。具體表現(xiàn)在時(shí)間局部性和空間局部性。時(shí)間局部性是指一條指令的一次執(zhí)行和下一次執(zhí)行、一個(gè)數(shù)據(jù)的一次訪問(wèn)和下一次訪問(wèn),都集中在一個(gè)較短的時(shí)間內(nèi)?臻g局部性是指程序執(zhí)行了某條指令,則它相鄰的幾條指令也可能馬上執(zhí)行。
10、Linux作為嵌入式操作系統(tǒng)的優(yōu)勢(shì)?
答:
Linux作為嵌入式操作系統(tǒng)的優(yōu)勢(shì)主要有以下幾點(diǎn):
1. 可應(yīng)用于多種硬件平臺(tái)。Linux已經(jīng)被移植到多種硬件平臺(tái),這對(duì)于經(jīng)費(fèi),時(shí)間受限制的研究與開發(fā)項(xiàng)目是很有吸引力的。原型可以在標(biāo)準(zhǔn)平臺(tái)上開發(fā)后移植到具體的硬件上,加快了軟件與硬件的開發(fā)過(guò)程。Linux采用一個(gè)統(tǒng)一的框架對(duì)硬件進(jìn)行管理,從一個(gè)硬件平臺(tái)到另一個(gè)硬件平臺(tái)的改動(dòng)與上層應(yīng)用無(wú)關(guān)。(1分)
2. Linux的高度模塊化使添加部件非常容易。本身內(nèi)置網(wǎng)絡(luò)支持,而目前嵌入式系統(tǒng)對(duì)網(wǎng)絡(luò)支持要求越來(lái)越高。(1分)
3. Linux是一個(gè)和Unix相似、以內(nèi)核為基礎(chǔ)的、具有完全的內(nèi)存訪問(wèn)控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等現(xiàn)有的大 部分芯片)等特性的一種通用操作系統(tǒng)。(1分)
4. Linux可以隨意地配置,不需要任何的許可證或商家的合作關(guān)系。其程序源碼全部公開,任何人可以修改并在GUN通用公共許可證(GNU General Public License)下發(fā)行。這樣,開發(fā)人員可以對(duì)操作系統(tǒng)進(jìn)行定制,適應(yīng)其特殊需要。(1分)
5. Linux帶有Unix用戶熟悉的完善的開發(fā)工具,幾乎所有的Unix系統(tǒng)的應(yīng)用軟件都已移植到了Linux上。其強(qiáng)大的語(yǔ)言編譯器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。(分)
11、簡(jiǎn)述網(wǎng)絡(luò)文件系統(tǒng)NFS,并說(shuō)明其作用。
答:
NFS即網(wǎng)絡(luò)文件系統(tǒng),是主機(jī)通過(guò)網(wǎng)絡(luò)進(jìn)行文件共享的協(xié)議(2分)。通常用于UNIX或類UNIX系統(tǒng)中。NFS服務(wù)器的共享目錄可以被NFS客戶端作為文件系統(tǒng)掛載到本地中(1分)。它的作用是通常用于局域網(wǎng)中用于文件共享(1分)。它的特點(diǎn)是不想http和ftp要把文件下載到本地才能夠被訪問(wèn),NFS不需要下載到本地即可訪問(wèn)(1分)。
12、簡(jiǎn)述Boot Loader 的兩種操作模式 (Operation Mode)?
答:
啟動(dòng)加載(Boot loading)模式:這種模式也稱為"自主"(Autonomous)模式。也即 Boot Loader 從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到 RAM 中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶的介入。這種模式是 Boot Loader 的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時(shí)侯,Boot Loader 顯然必須工作在這種模式下。 (2.5分)
下載(Downloading)模式:在這種模式下,目標(biāo)機(jī)上的 Boot Loader 將通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從主機(jī)(Host)下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機(jī)下載的文件通常首先被 Boot Loader 保存到目標(biāo)機(jī)的 RAM 中,然后再被 Boot Loader 寫到目標(biāo)機(jī)上的FLASH 類固態(tài)存儲(chǔ)設(shè)備中。Boot Loader 的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時(shí)被使用;此外,以后的系統(tǒng)更新也會(huì)使用 Boot Loader 的這種工作模式。工作于這種模式下的 Boot Loader 通常都會(huì)向它的終端用戶提供一個(gè)簡(jiǎn)單的命令行接口。(2.5分)
13、簡(jiǎn)述嵌入式系統(tǒng)設(shè)計(jì)過(guò)程。
答;每條1分
(1)需求分析 (4)設(shè)計(jì)硬件構(gòu)件和軟件構(gòu)件
(2)規(guī)格說(shuō)明 (5)系統(tǒng)集成
(3)體系結(jié)構(gòu)設(shè)計(jì) (6)系統(tǒng)測(cè)試
14、ARM啟動(dòng)代碼是系統(tǒng)加電后運(yùn)行的第一段軟件代碼,由于這類代碼直接面對(duì)處理器內(nèi)核和硬件控制器進(jìn)行編程,一般都是用匯編語(yǔ)言。一般通用的內(nèi)容主要包括?
答:每條1分
中斷向量表
初始化存儲(chǔ)器系統(tǒng)
初始化堆棧
初始化有特殊要求的斷口,設(shè)備
初始化用戶程序執(zhí)行環(huán)境
改變處理器模式
呼叫主應(yīng)用程序
15、什么是符號(hào)鏈接,什么是硬鏈接?符號(hào)鏈接與硬鏈接的區(qū)別是什么?
答:
鏈接分硬鏈接和符號(hào)鏈接。
符號(hào)鏈接可以建立對(duì)于文件和目錄的鏈接。符號(hào)鏈接可以跨文件系統(tǒng),即可以跨磁盤分區(qū)。符號(hào)鏈接的文件類型位是l,鏈接文件具有新的i節(jié)點(diǎn)。
硬鏈接不可以跨文件系統(tǒng)。它只能建立對(duì)文件的鏈接,硬鏈接的文件類型位是-,且硬鏈接文件的i節(jié)點(diǎn)同被鏈接文件的i節(jié)點(diǎn)相同。
16、進(jìn)程的查看和調(diào)度分別使用什么命令?
答:
進(jìn)程查看的命令是ps和top。
進(jìn)程調(diào)度的命令有at,crontab,batch,kill。
17、簡(jiǎn)述嵌入式系統(tǒng)中非占先式與占先式調(diào)度法的區(qū)別有哪些。
答:
非占先式調(diào)度法也稱作合作型多任務(wù)(cooperative multitasking),各個(gè)任務(wù)彼此合作共享一個(gè)CPU。中斷服務(wù)可以使一個(gè)高優(yōu)先級(jí)的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。(1分)但中斷服務(wù)以后控制權(quán)還是回到原來(lái)被中斷了的那個(gè)任務(wù),直到該任務(wù)主動(dòng)放棄CPU的使用權(quán)時(shí),那個(gè)高優(yōu)先級(jí)的任務(wù)才能獲得CPU的使用權(quán)。(2分)
當(dāng)系統(tǒng)響應(yīng)時(shí)間很重要時(shí),要使用占先式(preemptive)內(nèi)核。(1分)最高優(yōu)先級(jí)的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個(gè)運(yùn)行著的任務(wù)使一個(gè)比它優(yōu)先級(jí)高的任務(wù)進(jìn)入了就緒態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說(shuō)被掛起了,那個(gè)高優(yōu)先級(jí)的任務(wù)立刻得到了CPU的控制權(quán)。(2分)
18、什么是BootLoader,其主要功能是什么?
答:Boot Loader相當(dāng)于普通pc機(jī)的BIOS,是在系統(tǒng)復(fù)位后執(zhí)行的第一段代碼。因此,整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由Boot Loader來(lái)完成。它首先完成系統(tǒng)硬件的初始化,包括時(shí)鐘的設(shè)置、存儲(chǔ)器的映射等。并設(shè)置堆棧指針,然后跳轉(zhuǎn)到操作系統(tǒng)內(nèi)核入口,如系統(tǒng)在加電或復(fù)位時(shí)通常從地址0x00000000處開始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的Boot Loader程序。這樣,將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。在此之后,系統(tǒng)的運(yùn)行在操作系統(tǒng)的控制下了。通常,Boot Loader 是嚴(yán)重地依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個(gè)通用的 Boot Loader 幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫?duì) Boot Loader 歸納出一些通用的概念來(lái),以指導(dǎo)用戶特定的 Boot Loader 設(shè)計(jì)與實(shí)現(xiàn)。
不同的嵌入式系統(tǒng)其Boot Loader一般是不同的。從操作系統(tǒng)的角度來(lái)看, Boot Loader的總目標(biāo)就是正確地調(diào)用內(nèi)核來(lái)執(zhí)行。
另外,由于大多數(shù)Boot Loader都分為階段1和階段2兩部分。依賴于CPU的體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在階段1中,而且通常用匯編語(yǔ)言來(lái)實(shí)現(xiàn),以達(dá)到短小精悍的目的。而階段2通常用C語(yǔ)言來(lái)實(shí)現(xiàn),這樣可以實(shí)現(xiàn)一些復(fù)雜的功能,而且代碼會(huì)具有更好的可讀性和移植性。
19、什么是硬實(shí)時(shí)操作系統(tǒng)、軟實(shí)時(shí)操作系統(tǒng)以及二者的區(qū)別?
答:
在實(shí)時(shí)系統(tǒng)中,如果系統(tǒng)在指定的時(shí)間內(nèi)未能實(shí)現(xiàn)某個(gè)確定的任務(wù),會(huì)導(dǎo)致系統(tǒng)的全面失敗,這樣的系統(tǒng)被稱為強(qiáng)實(shí)時(shí)系統(tǒng)或硬實(shí)時(shí)系統(tǒng)。(1分)強(qiáng)實(shí)時(shí)系統(tǒng)響應(yīng)時(shí)間一般在毫秒或微秒級(jí)。(1分)
在弱實(shí)時(shí)系統(tǒng)中,雖然響應(yīng)時(shí)間同樣重要,但是超時(shí)卻不會(huì)發(fā)生致命的錯(cuò)誤。(1分)
其系統(tǒng)響應(yīng)時(shí)間在毫秒至秒的數(shù)量級(jí)上,(1分)其實(shí)時(shí)性的要求比強(qiáng)實(shí)時(shí)系統(tǒng)要差一些。(2分)
20、多線程有幾種實(shí)現(xiàn)方法,線程間同步有幾種實(shí)現(xiàn)方法,都是什么?
答:
兩種實(shí)現(xiàn)方法,一種是繼承Thread,另外一種是實(shí)現(xiàn)接口Runnable。
同步的實(shí)現(xiàn)方法有兩種,分別是synchronized, wait與notify。用synchronized可以對(duì)一段代碼、一個(gè)對(duì)象及一個(gè)方法進(jìn)行加鎖。用wait與notify可以使對(duì)象處于等待及喚醒方式導(dǎo)致同步,因?yàn)槊總(gè)對(duì)象都直接或間接的繼承了Object類。
21、介紹一下嵌入式系統(tǒng)的設(shè)計(jì)步驟有哪些?各部分主要工作是什么?
答:
(1)需求分析階段,羅列出用戶的需求;(1分)
(2)體系結(jié)構(gòu)設(shè)計(jì)階段,描述系統(tǒng)的功能如何實(shí)現(xiàn);(1分)
(3)詳細(xì)設(shè)計(jì)階段,進(jìn)行硬件系統(tǒng)與軟件系統(tǒng)的分類劃分,以決定哪些功能用硬件實(shí)現(xiàn),哪些用軟件實(shí)現(xiàn);(1分)
(4)系統(tǒng)集成,把系統(tǒng)的軟件、硬件和執(zhí)行裝置集成在一起,(1分)進(jìn)行調(diào)試,發(fā)現(xiàn)并改進(jìn)在設(shè)計(jì)過(guò)程中的錯(cuò)誤;(1分)
(5)系統(tǒng)測(cè)試,對(duì)設(shè)計(jì)好的系統(tǒng)進(jìn)行測(cè)試,看其是否滿足給定的要求。(1分)
22、某/etc/fstab文件中的某行如下:
/dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2
請(qǐng)解釋其含義。
答:
(1)第一列:將被加載的文件系統(tǒng)名;
(2)第二列:該文件系統(tǒng)的安裝點(diǎn);
(3)第三列:文件系統(tǒng)的類型;
(4)第四列:設(shè)置參數(shù);
(5)第五列:供備份程序確定上次備份距現(xiàn)在的天數(shù);
(6)第六列:在系統(tǒng)引導(dǎo)時(shí)檢測(cè)文件系統(tǒng)的順序。
23、ARM支持哪兩種數(shù)據(jù)存儲(chǔ)格式,簡(jiǎn)單描述各自特點(diǎn)。
答:
分為大端格式和小端格式。(2分)
大端格式:被存放字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在存儲(chǔ)系統(tǒng)的低地址中,而被存放的字?jǐn)?shù)據(jù)的低字節(jié)則存放在存儲(chǔ)系統(tǒng)的高地址中。(2分)
小端格式:與大端存儲(chǔ)格式相反,在小端存儲(chǔ)格式中,存儲(chǔ)系統(tǒng)的低地址中存放的是被放字?jǐn)?shù)據(jù)中的低字節(jié)內(nèi)容,存儲(chǔ)系統(tǒng)的高地址存放的是被存字?jǐn)?shù)據(jù)中的高字節(jié)內(nèi)容。(2分)
25、什么是BootLoader?主要有幾種工作模式及主要功能是什么?
答:
簡(jiǎn)單說(shuō)來(lái),Bootloader就是操作系統(tǒng)內(nèi)核運(yùn)行的一段小程序,完成進(jìn)行初始化系統(tǒng)硬件設(shè)置的任務(wù),包括CPU、SDRRAM、Flash、串口等初始化,時(shí)鐘的設(shè)置、存儲(chǔ)器的映射。(2分)
分為啟動(dòng)加載模式和下載模式。
(3) 啟動(dòng)加載模式
啟動(dòng)加載(Boot laoding)模式又稱為“自主”(Autonomous)模式,是指 Bootloader 從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到 RAM 中運(yùn)行,整個(gè)過(guò)程并沒(méi)有用戶的介入。(2分)
(4) 下載模式
在下載模式下,目標(biāo)機(jī)上的 Bootloader 將先通過(guò)串口連接或網(wǎng)絡(luò)連接等通信手段從宿主機(jī)下載文件。(2分)
26、簡(jiǎn)述進(jìn)程的啟動(dòng)方式。