- 相關(guān)推薦
2016年嵌入式軟件助理工程師認(rèn)證考試試題題庫(kù)
嵌入式系統(tǒng)無(wú)疑是當(dāng)前最熱門最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。下面一起來(lái)看看嵌入式軟件助理工程師的筆試考試題及答案吧!
一、單項(xiàng)選擇題
1、如下哪一個(gè)命令可以幫助你知道shell命令的用法( A )
A. man B. pwd C. help D. more
2、在大多數(shù)Linux發(fā)行版本中,以下哪個(gè)屬于塊設(shè)備 ( B )
A. 串行口 B. 硬盤 C. 虛擬終端 D. 打印機(jī)
3、下面哪個(gè)命令行可用來(lái)馬上重新啟動(dòng)正在運(yùn)行的Linux系統(tǒng)?( D )
A. restart --delay=0 B. reboot -w
C. halt -p D. shutdown -r now
4、在Linux系統(tǒng),默認(rèn)的shell是什么( A )
A.bash B.ash C.csh D.gnush
5、下面哪條命令可用來(lái)確保文件“myfile”存在( B )
A. cp myfile /dev/null B. touch myfile
C. create myfile D. mkfile myfile
6、 LILO的配置文件是:( B )
A. /etc/conf B. /etc/lilo.conf
C. /proc/kcore D. /usr/local/
7、用“useradd jerry”命令添加一個(gè)用戶,這個(gè)用戶的主目錄是什么( A )
A./home/jerry B./bin/jerry
C./var/jerry D./etc/jerry
8、Linux文件權(quán)限一共10位長(zhǎng)度,分成四段,第三段表示的內(nèi)容是( D )
A.文件類型 B.文件所有者的權(quán)限
C.文件所有者所在組的權(quán)限 D.其他用戶的權(quán)限
9、在ARM系統(tǒng)結(jié)構(gòu)中,MMU映射最小的單元空間是_D___
A、64KB B、16KB C、4KB D、1KB
10、某文件的組外成員的權(quán)限為只讀;所有者有全部權(quán)限;組內(nèi)的權(quán)限為讀與寫,則該文件的權(quán)限為( D )
A.467 B.674 C.476 D.764
11、不是shell具有的功能和特點(diǎn)的是 ( A )
A.管道 B.輸入輸出重定向
C.執(zhí)行后臺(tái)進(jìn)程 D.處理程序命令
12、在ARM處理器的各種工作模式中,( A )模式無(wú)法訪問(wèn)一些被保護(hù)的系統(tǒng)資源。20100626年徐遠(yuǎn)超
A. 用戶模式(user) B.系統(tǒng)模式(system) C. 中斷模式(IRQ) D.終止模式(Abort)
13、如何從當(dāng)前系統(tǒng)中卸載一個(gè)已裝載的文件系統(tǒng)( A )
A. umount B. dismount
C. mount –u D. 從 /etc/fstab 中刪除這個(gè)文件系統(tǒng)項(xiàng)
14、你用vi編輯器編寫了一個(gè)腳本文件shell.sh,你想將改文件名稱修改為shell2.sh,下列命令( B )可以實(shí)現(xiàn)。
A. cp shell.sh shell2.sh B. mv shell.sh shell2.sh
C. ls shell.sh >shell2.sh D. ll shell.sh >shell2.sh
15、在/home/stud1/wang目錄下有一文件file,使用( D )可實(shí)現(xiàn)在后臺(tái)執(zhí)行命令,此命令將file文件中的內(nèi)容輸出到file.copy文件中。
A. cat file >file.copy B. cat file file.copy
C. &cat file file.copy D. &cat file >file.copy
16、字符設(shè)備文件類型的標(biāo)志是 ( B )
A. p B. c C. s D. l
17、刪除文件命令為( D )
A. mkdir B. rmdir C. mv D. rm
18、( B )命令可更改一個(gè)文件的權(quán)限設(shè)置?
A. attrib B. chmod C. change D. file
19、用命令ls -al顯示出文件ff的描述如下所示,由此可知文件ff的類型為( A )。
-rwxr-xr-- 1 root root 599 Cec 10 17:12 ff
A. 普通文件 B. 硬鏈接 C. 目錄 D. 符號(hào)鏈接
20、系統(tǒng)中有用戶user1和user2,同屬于users組。在user1用戶目錄下有一文件file1,它擁有644的權(quán)限,如果user2用戶想修改user1用戶目錄下的file1文件,應(yīng)擁有( B )權(quán)限。
A. 744 B. 664 C. 646 D. 746
21、在指令系統(tǒng)的各種尋址方式中,獲取操作數(shù)最快的方式是( 1 -B );若操作數(shù)的地址包含在指令中,則屬于( 2-A )方式。
(1) A、直接尋址 B、立即尋址 C、寄存器尋址 D、間接尋址
(2) A、直接尋址 B、立即尋址 C、寄存器尋址 D、間接尋址
22、在CPU和物理內(nèi)存之間進(jìn)行地址轉(zhuǎn)換時(shí),( B )將地址從虛擬(邏輯)地址空間映射到物理地址空間。
A、TCB B、MMU C、CACHE D、DMA
23、Linux將存儲(chǔ)設(shè)備和輸入/輸出設(shè)備均看做文件來(lái)操作,(C)不是以文件的形式出現(xiàn)。
A. 目錄 B. 軟鏈接
C. i節(jié)點(diǎn)表 D. 網(wǎng)絡(luò)適配器
24、關(guān)于文件系統(tǒng)的安裝和卸載,下面描述正確的是(A)。
A. 如果光盤未經(jīng)卸載,光驅(qū)是打不開的
B. 安裝文件系統(tǒng)的安裝點(diǎn)只能是/mnt下
C. 不管光驅(qū)中是否有光盤,系統(tǒng)都可以安裝CD-ROM設(shè)備
D. mount /dev/fd0 /floppy 此命令中目錄/floppy是自動(dòng)生成的
25、為了查看Linux啟動(dòng)信息,可以用(B)命令
A. cat /etc/lilo.conf B.dmesg
C. cat/proc/cpuinfo D.lilo
26、用下列(A)命令查看Linux使用了多少內(nèi)存
A.cat /proc/meminfo B. cat /bin/meminfo
C.vi /proc/meminfo D.vi /user/local/meminfo
27、下列(D)設(shè)備是字符設(shè)備。
A. hdc B. fd0 C. hda1 D. tty1
28、下列說(shuō)法正確的是(D)
A. ln -s a.txt b.txt,作用是制作文件b.txt的符號(hào)鏈接,其名稱為a.txt
B. df命令可以查看當(dāng)前目錄占用磁盤空間的大小
C. comm命令打印兩個(gè)文本文件中的相同的內(nèi)容
D. rm命令可以用來(lái)刪除目錄
29、有如下的命令:$dd if=f1 of=f2。其中if=f1表示(A)
A. 以f1作為源文件,代替標(biāo)準(zhǔn)輸入
B. 以f1作為目標(biāo)文件,代替標(biāo)準(zhǔn)輸出
C. 當(dāng)條件滿足f1的時(shí)候,執(zhí)行真正的拷貝
D. 拷貝的過(guò)程中,不轉(zhuǎn)化文件
30、為了查找出當(dāng)前用戶運(yùn)行的所有進(jìn)程的信息,我們可以使用(B)命令:
A. ps -a B. ps -u C. ls -a D. ls –l
31、為保證在啟動(dòng)服務(wù)器時(shí)自動(dòng)啟動(dòng)DHCP進(jìn)程,應(yīng)對(duì)( B )文件進(jìn)行編輯。
A、 /etc/rc.d/rc.inet2 B、/etc/rc.d/rc.inet1
C、/etc/dhcpd.conf D、/etc/rc.d/rc.S
32、文件exer1的訪問(wèn)權(quán)限為rw-r--r--,現(xiàn)要增加所有用戶的執(zhí)行權(quán)限和同組用戶的寫權(quán)限,下列命令正確的是( A )。
A 、chmod a+x g+w exer1 B 、chmod 765 exer1
C 、chmod o+x exer1 D 、chmod g+w exer1
33、刪除當(dāng)前目錄abc以及下面的所有子目錄和文件,并不要求提示任何確認(rèn)信息的命令是(B)
A. del abc\*.* B. rm –rf abc C. rmdir abc D. rm –r abc\ *.*
34、如果忘記了ls命令的用法,可以采用( C )命令獲得幫助
a. ?ls b.help ls c.man ls d.get ls
35、在安裝開始前,用光盤啟動(dòng)系統(tǒng),想要進(jìn)入字符界面安裝,需要輸入的命令是( C )
a.linux doc b.linux c.linux text d.linux note
36、要給文件file1加上其他人可執(zhí)行屬性的命令是( C )
a.chmod a+x b.chown a+x c.chmod o+x d.chown o+x
37、怎樣新建一個(gè)新文件:( A )
a.touch hello.c b.mk hello.c c.rm hello.c d.new hello.c
38、在bash命令中,當(dāng)用( B )參數(shù)時(shí),表示bash是交互的。
A、-c B、-i C、-s D、-d
39、重定向的符號(hào)“>"表示:( C )
A、輸出追加 B、輸入追加 C、輸出重定向,原來(lái)的文件會(huì)被改寫 D、管道
40、linux系統(tǒng)能夠直接讀取的分區(qū)類型是( D )
a.ntfs b.fat16 c.fat32 d.ext3
41、 下列提法中,屬于ifconfig命令作用范圍的是( B )。
A、編譯源程序 B、配置網(wǎng)卡的IP地址
C、配置系統(tǒng)內(nèi)核 D、加載網(wǎng)卡到內(nèi)核中
42、下列對(duì)shell變量FRUIT操作,正確的是( C )
A、為變量賦值:$FRUIT=apple B、顯示變量的值:fruit=apple
C、顯示變量的值:echo $FRUIT D、判斷變量是否有值:[ -f “$FRUIT” ]
43、一般可以用( C )實(shí)現(xiàn)自動(dòng)編譯。
A、gcc B、gdb * C、make D、 vi
44、處理機(jī)主要由處理器、存儲(chǔ)器和總線組成,總線包括( D )。
A、數(shù)據(jù)總線、串行總線、邏輯總線、物理總線
B、并行總線、地址總線、邏輯總線、物理總線
C、并行總線、串行總線、全雙工總線
D、數(shù)據(jù)總線、地址總線、控制總線
45、假設(shè)當(dāng)前目錄下有文件Makefile,下面是其內(nèi)容:
pr1: prog.o subr.o
gcc –o pr1 prog.o subr.o
prog.o: prog.c prog.h
gcc –c –l prog.o prog.c
subr.o: subr.c
gcc –c –o subr.o subr.c
clear:
rm –f pr1*.o
現(xiàn)在執(zhí)行命令make clear,實(shí)際執(zhí)行的命令是( A ):
A. rm –f pr1*.o
B. gcc –c –l prog.o prog.c
C. gcc –c –o subr.o subr.c
D. 都執(zhí)行
46、可加載模塊一般位于系統(tǒng)的(B)目錄下:
A. /lib/modules
B. /lib/modules/x.y.z(x.y.z是內(nèi)核的版本號(hào))
C. /usr/lib
D. /usr/local/lib
47、Linux分區(qū)默認(rèn)的文件系統(tǒng)的類型是:( B )
A. vfat B. ext2/ext3 C. swap D. dos
48. 文件之間可以建立兩種鏈接關(guān)系:軟鏈接和硬鏈接,硬鏈接的特點(diǎn)是(C)
A. 等同于文件復(fù)制操作
B. 類似于文件復(fù)制,但新的鏈接文件并不占用文件磁盤存儲(chǔ)空間
C. 刪除源文件,將使其他鏈接文件失效
D. 可以對(duì)目錄文件名建立硬鏈接
49. 下面哪一個(gè)選項(xiàng)不是linux系統(tǒng)的進(jìn)程類型(D)
A. 交互進(jìn)程
B. 批處理進(jìn)程
C. 守護(hù)進(jìn)程
D. 就緒進(jìn)程
50、下面( B )特性不符合嵌入式操作系統(tǒng)特點(diǎn)。
A、實(shí)時(shí)性 B、不可定制
C、微型化 D、易移植
51、下面關(guān)于C語(yǔ)言程序的描述,正確的是( C )。
A、總是從第一個(gè)定義的函數(shù)開始執(zhí)行
B、要調(diào)用的函數(shù)必須在main()函數(shù)中定義
C、總是從main()函數(shù)開始執(zhí)行
D、main()函數(shù)必須放在程序的開始
52、在FTP協(xié)議中,控制連接是由( B )主動(dòng)建立的。
A、服務(wù)器端 B、客戶端
C、操作系統(tǒng) D、服務(wù)提供商
53、嵌入式系統(tǒng)由硬件部分和軟件部分構(gòu)成,以下不屬于嵌入式系統(tǒng)軟件的是C。
A) 系統(tǒng)內(nèi)核 B) 驅(qū)動(dòng)程序 C) FPGA編程軟件 D)嵌入式中
54、當(dāng)我們與某遠(yuǎn)程網(wǎng)絡(luò)連接不上時(shí),就需要跟蹤路由查看,以便了解在網(wǎng)絡(luò)的什么位置出現(xiàn)了問(wèn)題,滿足該目的的命令是( C )。
A、ping B、ifconfig
C、traceroute D、netstat
55. 下列哪種文件系統(tǒng)的寫入是LINUX所不支持的:D
A. FAT B. UFS C. JFS D. NTFS
56. LINUX支持網(wǎng)絡(luò)文件系統(tǒng)NFS,下列哪個(gè)命令實(shí)現(xiàn)了將位于 192.168.1.4機(jī)器上的 /opt/sirnfs 目錄掛載到本機(jī)/mnt/sirnfs下: A
A.mount -t nfs 192.168.1.4:/opt/sirnfs /mnt/sirnfs
B.mount -t nfs /mnt/sirnfs 192.168.1.4:/opt/sirnfs
C.mount nfs –t 192.168.1.4:/opt/sirnfs /mnt/sirnfs
D.mount nfs –t /mnt/sirnfs 192.168.1.4:/opt/sirnfs
57、同CISC相比,下面哪一項(xiàng)不屬于RISC處理器的特征_ D
A、采用固定長(zhǎng)度的指令格式,指令規(guī)整、簡(jiǎn)單、基本尋址方式有2~3種。
B、減少指令數(shù)和尋址方式,使控制部件簡(jiǎn)化,加快執(zhí)行速度。
C、數(shù)據(jù)處理指令只對(duì)寄存器進(jìn)行操作,只有加載/存儲(chǔ)指令可以訪問(wèn)存儲(chǔ)器,以提高指令的執(zhí)行效率,同時(shí)簡(jiǎn)化處理器的設(shè)計(jì)。
D、RISC處理器都采用哈佛結(jié)構(gòu)
58、在下列ARM處理器的各種模式中,__D___模式有自己獨(dú)立的R8-R14寄存器。
A、系統(tǒng)模式(System)、
B、終止模式(Abort)
C、中斷模式(IRQ)
D、快中斷模式(FIQ)
59、按照ARM過(guò)程調(diào)用標(biāo)準(zhǔn)(APCS),棧指針使用_B___寄存器,
A、R0 B、R13 C、R14 D、R15
60、在ARM體系結(jié)構(gòu)中,_C___寄存器作為連接寄存器,當(dāng)進(jìn)入子程序時(shí)或者處理器響應(yīng)異常的時(shí)候,用來(lái)保存PC的返回值;_C___寄存器作為處理器的程序計(jì)數(shù)器指針。
A、R0,R14 B、R13,R15 C、R14,R15 D、R14,R0
61、在ARM體系結(jié)構(gòu)中,要從主動(dòng)用戶模式(User)切換到超級(jí)用戶模式(Supervisor),應(yīng)采用何種方法?C
A、直接修改CPU狀態(tài)寄存器(CPSR)對(duì)應(yīng)的模式
B、先修改程序狀態(tài)備份寄存器(SPSR)到對(duì)應(yīng)的模式,再更新CPU狀態(tài)
C、使用軟件中斷指令(SWI)
D、讓處理器執(zhí)行未定義指令
62、下面關(guān)于MMU和Linux描述錯(cuò)誤的是:C
A、MMU是內(nèi)存管理單元Memory Management Unit的縮寫
B、uClinux可以運(yùn)行在有MMU的處理器上
C、Linux內(nèi)核功能強(qiáng)大,內(nèi)存管理功能豐富,即使在沒(méi)有MMU的處理器上,也可以通過(guò)軟件實(shí)現(xiàn)地址映射。
D、Linux系統(tǒng)正是利用MMU,才能使得各個(gè)進(jìn)程有獨(dú)立的尋址空間
63、DNS域名系統(tǒng)主要負(fù)責(zé)主機(jī)名和( A )之間的解析。
A、IP地址 B、MAC地址
C、網(wǎng)絡(luò)地址 D、主機(jī)別名
64、在vi編輯器中的命令模式下,重復(fù)上一次對(duì)編輯的文本進(jìn)行的操作,可使用( C )命令。
A、上箭頭 B、下箭頭 C、<.> D、<*>
65、進(jìn)程有三種狀態(tài):( C )。
A 、準(zhǔn)備態(tài)、執(zhí)行態(tài)和退出態(tài) B 、精確態(tài)、模糊態(tài)和隨機(jī)態(tài)
C 、運(yùn)行態(tài)、就緒態(tài)和等待態(tài) D 、手工態(tài)、自動(dòng)態(tài)和自由態(tài)
66、下列變量名中有效的shell變量名是( C )。
A、-1-time B、_2$3
C、bo_chuang_1 D、2009file
67、文件系統(tǒng)的主要功能是( A )。
A、實(shí)現(xiàn)對(duì)文件的按名存取 B、實(shí)現(xiàn)虛擬存儲(chǔ)
C、 提高外存的讀寫速度 D、用于保存系統(tǒng)文檔
68、在ARM Linux體系中,用來(lái)處理外設(shè)中斷的異常模式是__C____
A、軟件中斷(SWI) B、未定義的指令異常
C、中斷請(qǐng)求(IRQ) D、快速中斷請(qǐng)求(FIQ)
69、在Linux系統(tǒng)中,驅(qū)動(dòng)程序注冊(cè)中斷處理程序的函數(shù)是_B____
A、trap_init B、request_irq
C、enable_irq D、register_irq
70、在ARM Linux系統(tǒng)中,中斷處理程序進(jìn)入C代碼以后,ARM的處于__A__工作模式
A、超級(jí)用戶(SVC) B、中斷(IRQ)
C、快速中斷(IRQ) D、和進(jìn)入中斷之前的狀態(tài)有關(guān)系
71、在ARM體系構(gòu)建的嵌入式系統(tǒng)中,由電平模式觸發(fā)的中斷,其對(duì)應(yīng)的中斷標(biāo)準(zhǔn)應(yīng)該在何時(shí)被清除?A
A、當(dāng)中斷處理程序結(jié)束以后,才可以清除
B、進(jìn)入相應(yīng)的中斷處理程序,即可以清除
C、產(chǎn)生IRQ中斷的時(shí)候,處理器自動(dòng)清除
D、任何時(shí)候都可以清除
72、在操作系統(tǒng)中,Spooling技術(shù)是用一類物理設(shè)備模擬另一類物理設(shè)備的技術(shù),實(shí)現(xiàn)這種技術(shù)的功能模塊稱做( B )。
A、可林斯系統(tǒng) B、斯普林系統(tǒng)
C、圖靈機(jī)系統(tǒng) D、虛擬存儲(chǔ)系統(tǒng)
73、通過(guò)修改下面文件哪個(gè)文件 ,可以設(shè)定開機(jī)時(shí)候自動(dòng)安裝的文件系統(tǒng)(C )
A. /etc/mta B. /etc/fastboot
C. /etc/fstab D. /etc/inetd.conf
74、下面關(guān)于Shell的說(shuō)法,不正確的是: (D)
A. 操作系統(tǒng)的外殼
B. 用戶與Linux內(nèi)核之間的接口程序
C. 一個(gè)命令語(yǔ)言解釋器
D. 一種和C類似的程序語(yǔ)言
75、init可執(zhí)行文件通常存放在( C )目錄中。
A./etc B./boot
C./sbin D./root
76、假設(shè)root用戶執(zhí)行“init 0”命令,系統(tǒng)將會(huì)( B )。
A.暫停 B.關(guān)機(jī) C.重新啟動(dòng) D.初始化
77、嵌入式系統(tǒng)應(yīng)用軟件一般在宿主機(jī)上開發(fā),在目標(biāo)機(jī)上運(yùn)行,因此需要一個(gè)( B )環(huán)境。
A、交互操作系統(tǒng) B、交叉編譯
C、交互平臺(tái) D、分布式計(jì)算
78、已知有變量data1定義如下:C
union data
{ int i;
char ch;
float f;
} data1;
則變量data1所占的內(nèi)存存儲(chǔ)空間可表示為。
A、sizeof(int) B、sizeof(char)
C、sizeof(float) D、sizeof(int)+sizeof(char)+sizeof(float)
79、軟件開發(fā)模型給出了軟件開發(fā)活動(dòng)各階段之間的關(guān)系,( D )不是軟件開發(fā)模型。
A、瀑布模型 B、螺旋模型
C、原型模型 D、程序模型
80、實(shí)時(shí)操作系統(tǒng)(RTOS)內(nèi)核與應(yīng)用程序之間的接口稱為( C )。
A、輸入/輸出接口 B、文件系統(tǒng)
C、API D、圖形用戶接口
81、在操作系統(tǒng)中,除賦初值外,對(duì)信號(hào)量?jī)H能操作的兩種原語(yǔ)是( C )。
A、存操作、取操作 B、讀操作、寫操作
C、P操作、V操作 D、輸入操作、輸出操作
82、在下列ARM處理器的各種模式中,只有__A___模式不可以自由地改變處理器的工作模式。
A、用戶模式(User) B、系統(tǒng)模式(System)
C、終止模式(Abort) D、中斷模式(IRQ)
83、32位體系結(jié)構(gòu)的ARM處理器有_B___種不同的處理器工作模式,和__B__個(gè)主要用來(lái)標(biāo)識(shí)CPU的工作狀態(tài)和程序的運(yùn)行狀態(tài)的狀態(tài)寄存器。
A、7、7 B、7、6 C、6、6 D、6、7
84、已知Linux系統(tǒng)中的唯一一塊硬盤是第一個(gè)IDE接口的master設(shè)備,該硬盤按順序有3個(gè)主分區(qū)和一個(gè)擴(kuò)展分區(qū),這個(gè)擴(kuò)展分區(qū)又劃分了3個(gè)邏輯分區(qū),則該硬盤上的第二個(gè)邏輯分區(qū)在Linux中的設(shè)備名稱是( D )
A. /dev/hda2 B. /dev/hda3
C. /dev/hda5 D. /dev/hda6
85、下列軟件中,不屬于BootLoader的是( B )。
A、vivi B、busybox C、uboot D、blob
86、某文件的組外成員的權(quán)限為只寫;所有者有讀寫權(quán)限;組內(nèi)的權(quán)限為只讀,則該文件的權(quán)限為( B )
A 467 B 642 C 476 D 764
87、關(guān)閉linux系統(tǒng)(不重新啟動(dòng))可使用命令 B 。
A) Ctrl+Alt+Del B) halt C) shutdown -r now D) reboot
88、在vi編輯器中的命令模式下,鍵入 B 可在光標(biāo)當(dāng)前所在行下添加一新行。
A) “a” B) “o” C) “I” D) A
89、重定向的符號(hào)“>>"表示:( A )
A、輸出追加 B、輸入追加 C、輸出重定向,原來(lái)的文件被改寫 D、管道
90、WWW服務(wù)器是在Internet上使用最為廣泛,它采用的是 B 結(jié)構(gòu)。
A) 服務(wù)器/工作站 B) B/S C) 集中式 D )分布式
91、NFS是 C 系統(tǒng)。
A) 文件 B) 磁盤 C) 網(wǎng)絡(luò)文件 D) 操作
92、在日常管理中,通常CPU會(huì)影響系統(tǒng)性能的情況是: A 。
A) CPU已滿負(fù)荷地運(yùn)轉(zhuǎn) B) CPU的運(yùn)行效率為30%
C) CPU的運(yùn)行效率為50% D) CPU的運(yùn)行效率為80%
93、在使用GCC編譯器的過(guò)程中,以下(B)選項(xiàng)可用來(lái)指定生成的目標(biāo)文件名
A.-c B.-o C.-S D.-E
94、下面哪一個(gè)選項(xiàng)不是linux系統(tǒng)的調(diào)度策略(D)
A. SCHED_NORMAL
B. SCHED_FIFO
C. SCHED_RR
D. SCHED_LRU
95、為了使用生成的目標(biāo)文件能夠用于gdb調(diào)試,在編譯時(shí)GCC應(yīng)使用(C)選項(xiàng)。
A.-c B.-w C.-g D.-o
96、存盤并退出vi的指令是( D )。
A、q B、q! C、w D、wq
97. 下列關(guān)于/etc/fstab文件描述,正確的是( D )。
A. fstab文件只能描述屬于linux的文件系統(tǒng)
B. CD_ROM和軟盤必須是自動(dòng)加載的
C. fstab文件中描述的文件系統(tǒng)不能被卸載
D 啟動(dòng)時(shí)按fstab文件描述內(nèi)容加載文件系統(tǒng)
98. ARM嵌入式系統(tǒng)中,PC指向的是正在(C )的指令地址。
A 執(zhí)行 B 譯碼 C 取指 D 都不是
99. ARM系統(tǒng)處理16-bit數(shù)據(jù)時(shí),對(duì)應(yīng)的數(shù)據(jù)類型是( B )。
A Byte B Halfword C Word D 三者都不是
100. 實(shí)時(shí)系統(tǒng)是指( B )
A 響應(yīng)快的系統(tǒng) B 時(shí)間約束的系統(tǒng) C 單任務(wù)系統(tǒng) D 內(nèi)核小的系統(tǒng)
101. 下面屬于blob運(yùn)行過(guò)程第一階段的是(C)
A 外圍的硬件初始化(串口,USB等);
B 根據(jù)用戶選擇,進(jìn)入命令行模塊或啟動(dòng)kernel。
C 寄存器的初始化
D 堆棧的初始化
答案:C第一階段的代碼在start.s中定義,大小為1KB,它包括從系統(tǒng)上電后在0x00000000地址開始執(zhí)行的部分。這部分代碼運(yùn)行在Flash中,它包括對(duì)S3C44B0的一些寄存器的初始化和將Blob第二階段代碼從Flash拷貝到SDRAM中。
102.下列幾種流行的嵌入式GUI中,沒(méi)有采用分層設(shè)計(jì)的一種是: B
A.MiniGUI B. Qt/Embedded C. Nano-X Window D. OpenGUI
103. Qt/Embedded的底層圖形引擎基于一下哪種接口技術(shù): A
A.framebuffer B.GAL C.IAL D.GFX
104.在Linux使用GCC編譯器時(shí)有如下命令:Gcc–g test.c –o test,其中參數(shù)-g的作用是(D)
A .生成目標(biāo)文件test.o B.生成匯編文件test.s C .進(jìn)行預(yù)編譯 D .包含調(diào)試信息
105、下列提法中,不屬于ifconfig命令作用范圍的是 D 。
A) 配置本地回環(huán)地址 B) 配置網(wǎng)卡的IP地址
C) 激活網(wǎng)絡(luò)適配器 D) 加載網(wǎng)卡到內(nèi)核中
106、為了得到所有的命令行輸入的參數(shù),我們可以使用變量: B
A) $# B) $@ C) $0 D) $!
107、32位數(shù)0x12345678用小端格式表示,則在AXD調(diào)試器下觀察數(shù)據(jù)在內(nèi)存中分布的情況是(B)
A 12 34 56 78 B 78 56 34 12 C 21 43 65 87 D 87 65 43 21
108、RISC是指(C)
A 復(fù)雜指令計(jì)算機(jī) B 并行機(jī) C 精簡(jiǎn)指令計(jì)算機(jī) D 多處理器計(jì)算機(jī)
109、NFS服務(wù)器通過(guò)調(diào)用/etc/rc.d/init.d中的portmap和nfs腳本啟動(dòng),啟動(dòng)后它將通過(guò)尋找本地服務(wù)器的 D文件,向網(wǎng)絡(luò)上的子機(jī)提供NFS文件共享服務(wù)
A) /etc/hosts B) /etc/inittab
C) /etc/inet.d D) /etc/exports
110、在vi編輯器的命令模式中,刪除一行的命令是( B )
a.yy b.dd c.pp d.xx
111、表達(dá)式A⊕B實(shí)現(xiàn)的功能是(C)
A 邏輯與 B 邏輯非 C 邏輯異或 D邏輯或
112、嵌入式系統(tǒng)的開發(fā)通常是在交叉開發(fā)環(huán)境實(shí)現(xiàn)的,交叉開發(fā)環(huán)境是指( A )
A 在宿主機(jī)上開發(fā),在目標(biāo)機(jī)上運(yùn)行 B在目標(biāo)機(jī)上開發(fā),在宿主機(jī)上運(yùn)行
C 在宿主機(jī)上開發(fā),在宿主機(jī)上運(yùn)行 D在目標(biāo)機(jī)上開發(fā),在目標(biāo)機(jī)上運(yùn)行
113、對(duì)于所有用戶都只能讀的文件權(quán)限是( B )
a.777 b.444 c.644 d.640
114、在ARM Linux啟動(dòng)的過(guò)程中,開啟MMU的時(shí)候,如何實(shí)現(xiàn)從實(shí)地址空間到虛擬地址空間的過(guò)度?D
A、開啟MMU,在內(nèi)存中創(chuàng)建頁(yè)表(映射內(nèi)核到3G以上的虛擬地址空間)并繼續(xù)運(yùn)行。
B、開啟MMU,在內(nèi)存中創(chuàng)建頁(yè)表(映射內(nèi)核到3G以上的虛擬地址空間),跳轉(zhuǎn)到虛擬地址空間繼續(xù)運(yùn)行。
C、在內(nèi)存中創(chuàng)建頁(yè)表(映射內(nèi)核到3G以上的虛擬地址空間),開啟MMU,跳轉(zhuǎn)到虛擬地址空間繼續(xù)運(yùn)行。
D、在內(nèi)存中創(chuàng)建頁(yè)表(映射內(nèi)核到3G以上的虛擬地址空間,同時(shí)把內(nèi)核所在的前1MB空間到和其實(shí)地址相同的虛擬地址空間),開啟MMU,跳轉(zhuǎn)到虛擬地址空間繼續(xù)運(yùn)行。
115、在ARM體系中,MMU的第一級(jí)描述符有___項(xiàng),每個(gè)描述符占用____字節(jié)
A、1024,32 B、4096,4
C、4096,4 D、1024,32
答案:C(B和C一樣的,A和D是一樣的)
116、在ARM體系中,下面MMU的一級(jí)描述符中,是節(jié)描述符的是_A___
A、0xA0000C0E B、0xA0000C0F
C、0x00000000 D、0xC0000C01
117、init進(jìn)程是內(nèi)核在完成核內(nèi)引導(dǎo)以后加載的,它是系統(tǒng)所有進(jìn)程的起點(diǎn),進(jìn)程號(hào)為1,在執(zhí)行過(guò)程中,首先會(huì)讀取( C )文件。20100626徐遠(yuǎn)超
A. /etc/init B. /etc/fstab
C. /etc/inittab D. /etc/rc.sysinit
118 、指令A(yù)DD R2,R1,R1,LSR #2中,LSR的含義是(B)。
A 邏輯左移 B 邏輯右移 C 算術(shù)右移 D循環(huán)右移
119、以下ARM異常中,優(yōu)先級(jí)最高的是(D )。
A Data abort B FIQ C IRQ D Reset
120、指令LDR R0,[R4]對(duì)源操作數(shù)的尋址方式是( A )
A 寄存器間接尋址 B寄存器尋址 C立即數(shù)尋址 D 相對(duì)尋址
121、在Linux 2.4或者2.6內(nèi)核中,和ARM體系結(jié)構(gòu)相關(guān)的中斷處理程序的C代碼在源碼樹的__B_文件中
A、kernerl/irq.c
B、arch/arm/kernel/irq.c
C、arch/arm/mach/irq.c
D、arch/arm/kernel/entry-armv.S
122、以下關(guān)于init進(jìn)程,描述不正確的是:(A)
A. 一個(gè)通用進(jìn)程
B. 可以產(chǎn)生新的進(jìn)程
C. 在某些程序退出的時(shí)候能重起它們
D. 負(fù)責(zé)在系統(tǒng)啟動(dòng)的時(shí)候運(yùn)行一系列程序和腳本文件
123、哈佛結(jié)構(gòu)和馮諾依曼結(jié)構(gòu)的區(qū)別是( A)
A 指令和數(shù)據(jù)分開存儲(chǔ) B 不需要程序計(jì)數(shù)器 C 統(tǒng)一編址 D 單一數(shù)據(jù)總線
124、fstab文件存放在(A)目錄中。
A./etc B./boot
C./sbin D./root
125、Linux系統(tǒng)運(yùn)行級(jí)別5工作在(D)狀態(tài)。
A.單用戶字符模式 B.多用戶字符模式
C.單用戶圖形模式 D.多用戶圖形模式
126、Linux文件權(quán)限一共10位長(zhǎng)度,分成四段,第二段表示的內(nèi)容是( B )
A.文件類型 B .文件所有者的權(quán)限
C. 文件所有者所在組的權(quán)限 D. 其他用戶的權(quán)限
127、啟動(dòng)init進(jìn)程前,不需要經(jīng)過(guò)(D)步驟。
A.加載內(nèi)核 B.檢測(cè)內(nèi)存
C.加載文件系統(tǒng) D.啟動(dòng)網(wǎng)絡(luò)支持
128、哪條命令可以顯示文件系統(tǒng)使用硬盤空間的情況?(B)20100616徐遠(yuǎn)超
A.ls B.df C.du D.Mount
129、能在Linux下,用mkfs.jffs2命令創(chuàng)建JFFS2文件系統(tǒng)(基本上是使用JFFS2的Ramdisk),關(guān)于mkfs.jffs2下列說(shuō)法錯(cuò)誤的是: (C)
A.-e 選項(xiàng)確定閃存的擦除扇區(qū)大小(通常是 64 千字節(jié))
B.-p 選項(xiàng)用來(lái)在映像的剩余空間用零填充。
C.-f 選項(xiàng)用于輸出文件,通常是 JFFS2 文件系統(tǒng)映像
D.一旦創(chuàng)建了 JFFS2 文件系統(tǒng),它就被裝入閃存中適當(dāng)?shù)奈恢?引導(dǎo)裝載程序告知內(nèi)核查找文件系統(tǒng)的地址)以便內(nèi)核能掛裝它。
130、波特率9600bps是指數(shù)據(jù)每秒傳輸( B )
A 9600個(gè)字節(jié) B 9600個(gè)比特 C 9600個(gè)字 D 9600個(gè)字符
131、ARM9和ARM7的重要區(qū)別是(A )
A ARM9帶有MMU功能 B ARM9支持Thumb指令集
C ARM9帶有Cache功能 D ARM9是哈佛結(jié)構(gòu)
132、在使用文件通配符對(duì)文件名操作時(shí)?號(hào)表示(A)
A. 只與一個(gè)任意的字符匹配
B. 只與一個(gè)任意的字母匹配
C. 只與一個(gè)任意的數(shù)字匹配
D. 匹配于任意字符的組合
133、 在安裝Linux的過(guò)程中的第五步是讓用戶選擇安裝方式,如果用戶希望安裝部分組件(軟件程序),并在選擇好后讓系統(tǒng)自動(dòng)安裝,應(yīng)該選擇的選項(xiàng)是 D 。
A) full B) expert C) newbie D) menu
134、當(dāng)系統(tǒng)工作負(fù)載增加時(shí),CPU的 A 將占很大比重
A) 用戶時(shí)間 B)系統(tǒng)時(shí)間 C)空閑時(shí)間、 D) 進(jìn)程時(shí)間
135、fsck對(duì)文件系統(tǒng)的檢查最先是從文件系統(tǒng)的 C 開始的
A) MBR B) 磁盤塊 C) 超級(jí)塊 D) 塊鏈表
136、關(guān)于RISC指令系統(tǒng)描述不正確的是( A )。
A、指令條數(shù)多 B、指令長(zhǎng)度固定
C、指令格式種類少 D、尋址方式種類少
137、對(duì)ARM7微處理器說(shuō)法不正確的是( D )。
A、兼容16位的Thumb指令集 B、集成式RISC內(nèi)核
C、集成了ICE-RT邏輯 D、哈佛體系結(jié)構(gòu)
138、在寄存器間接尋址方式中,指定寄存器中存放的是 ( B )。
A、操作數(shù) B、操作數(shù)地址
C、轉(zhuǎn)移地址 D、地址偏移量
139、Samba服務(wù)器的進(jìn)程由B 兩部分組成 。
A) named和sendmail B) smbd和nmbd C) bootp和dhcpd D) httpd和squid
140、如果數(shù)據(jù)的存儲(chǔ)格式是大端模式,32bit寬的數(shù)0x12345678在大端模式下的CPU內(nèi)存中的存放(假設(shè)從地址0x4000開始)。內(nèi)存地址為0x4001的內(nèi)容是(A )。
A、 0x34 B、0x56
C、 0x23 D、0x78
141、在配置代理服務(wù)器時(shí),若設(shè)置代理服務(wù)器的工作緩存為64MB,配置行應(yīng)為 D 。
A ) cache 64MB B) cache_dir ufs /usr/local/squid/cache 10000 16 256
C) cache_ mgr 64MB D) cache_ mem 64MB
142、安全管理涉及的問(wèn)題包括保證網(wǎng)絡(luò)管理工作可靠進(jìn)行的安全問(wèn)題和保護(hù)網(wǎng)絡(luò)用戶及網(wǎng)絡(luò)管理對(duì)象問(wèn)題。 C 屬于安全管理的內(nèi)容。
A) 配置設(shè)備的工作參數(shù) B) 收集與網(wǎng)絡(luò)性能有關(guān)的數(shù)據(jù)
C) 控制和維護(hù)訪問(wèn)權(quán)限 D) 監(jiān)測(cè)故障
143、 B 命令是在vi編輯器中執(zhí)行存盤退出。
A ) q B ) wq C) q! D) WQ
144、下列哪個(gè)命令以文本菜單方式界面配置內(nèi)核選項(xiàng): A
A Make menuconfig B make xconfig C make config D make mrproper
145、切換用戶登錄的命令是: ( B )
A. ps B. su C. kill D. changeuser
146、已知有如下程序:
#include
void main(){
int a[5]={1,2,3,4,5};
int * p = (int *)(&a+1);
printf(“%d”,p[-1]);
}
那么,輸出結(jié)果為(B )
A、該程序不可執(zhí)行,無(wú)輸出結(jié)果 B、 5
C、1 D、不確定的隨機(jī)值
147、終止一個(gè)前臺(tái)進(jìn)程可能用到的命令和操作是(B )。
A、kill B、+c
C、shut down D、halt
148、 B 目錄存放著Linux的源代碼。
A) /etc B) /usr/src C) /usr D) /home
149、如果要將文件名file1修改為file2,下列命令( B )可以實(shí)現(xiàn)。
A. cp file1 file2
B. mv file1 file2
C. ls file1 >file2
D. ll file1 >file2
150、不存盤退出vi的指令是( B )。
A、q B、q! C、w D、wq
151、有關(guān)歸檔和壓縮命令,下面描述正確的是 C 。
A) 用uncompress命令解壓縮由compress命令生成的后綴為.zip的壓縮文件
B) unzip命令和gzip命令可以解壓縮相同類型的文件
C) tar歸檔且壓縮的文件可以由gzip命令解壓縮
D) tar命令歸檔后的文件也是一種壓縮文件
152、未定義指令異常的C處理函數(shù)在(C)文件中定義。
A、arch/arm/kernel/traps.c B、arch/arm/mm/fault.c
C、arch/arm/mm/irq.c D、arch/arm/calls.S
153、僅當(dāng)前一個(gè)命令執(zhí)行出錯(cuò)時(shí)才執(zhí)行后一條命令,需要采取的操作是:(C)
A. command1 && command2
B. command1 XOR command2
C. command1 || command2
D. command1 << command2
154、具有很多C語(yǔ)言的功能,又稱過(guò)濾器的是 C 。
A) csh B) tcsh C) awk D) sed
155、局域網(wǎng)的網(wǎng)絡(luò)地址192.168.1.0/24,局域網(wǎng)絡(luò)連接其它網(wǎng)絡(luò)的網(wǎng)關(guān)地址是192.168.1.1。主機(jī)192.168.1.20訪問(wèn)172.16.1.0/24網(wǎng)絡(luò)時(shí),其路由設(shè)置正確的是 B 。
A) route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
B) route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.255 metric 1
C) route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1
D) route add default 192.168.1.0 netmask 172.168.1.1 metric 1
156、不需要編譯內(nèi)核的情況是 D 。
A) 刪除系統(tǒng)不用的設(shè)備驅(qū)動(dòng)程序時(shí) B) 升級(jí)內(nèi)核時(shí) C) 添加新硬件時(shí) D)將網(wǎng)卡激活
157、 內(nèi)核不包括的子系統(tǒng)是 D 。
A) 進(jìn)程管理系統(tǒng) B) 內(nèi)存管理系統(tǒng) C) I/O管理系統(tǒng) D)硬件管理系統(tǒng)
158、請(qǐng)選擇正確的命令( B),完成加載 NFS Server "svr.server.net"的 /home/nfs 到 /home2。
A、 mount -t nfs svr.server.net:/home/nfs /home2
B.、mount -t -s nfs svr.server.net /home/nfs /home2
C.、nfsmount svr.server.net:/home/nfs /home2
D、 nfsmount -s svr.server.net /home/nfs /home2
159、下面(D )命令可以列出當(dāng)前動(dòng)態(tài)加載的模塊清單,會(huì)把當(dāng)前插入的所有內(nèi)核模塊都列出來(lái)。
A、insmod B、rmmod
C、dmesg D、lsmod
160、下面對(duì)于Bootloader的描述不正確的是(C)
A、是上電后運(yùn)行的第一個(gè)程序 B、改變系統(tǒng)時(shí)鐘
C、Bootloader的兩種模式對(duì)開發(fā)人員沒(méi)有意義 D、向內(nèi)核傳遞啟動(dòng)參數(shù)
161、符號(hào)“|"在shell命令中表示:( D )
A、輸出追加 B、輸入追加 C、輸出重定向,原來(lái)的文件被改寫 D、管道
162、通常所說(shuō)的32位微處理器是指 C 。
A) 地址總線的寬度為32位 B) 處理的數(shù)據(jù)長(zhǎng)度只能為32位
C) CPU 字長(zhǎng)為32位 D) 通用寄存器數(shù)目為32個(gè)
163、在32位處理器上,假設(shè)棧頂指針寄存器的當(dāng)前值為0x00FFFFE8,那么在執(zhí)行完指令“push eax”(eax為32位寄存器)后,棧指針的當(dāng)前值應(yīng)為A
A) 0x00FFFFE4 B) 0x00FFFFE6 C) 0x00FFFFEA D) 0x00FFFFEC
164、有若干并發(fā)進(jìn)程均將一個(gè)共享變量count 中的值加1 一次,那么有關(guān)count 中的值說(shuō)法正確的是:______ 。(C )
A、肯定有不正確的結(jié)果
B、肯定有正確的結(jié)果
C、若控制這些并發(fā)進(jìn)程互斥執(zhí)行count 加1 操作,count 中的值正確
D、A,B,C 均不對(duì)
165、使用Vim作為文本編輯器,在指令模式下要將光標(biāo)移動(dòng)到文檔的最后一行的命令是(C)。
A、0 B、$
C、G D、GG
166、已知某用戶stud1,其用戶目錄為/home/stud1。如果當(dāng)前目錄為/home,進(jìn)入目錄/home/stud1/test的命令是 ()。
A 、cd test B、cd /stud1/test
C、 cd stud1/test D、cd home
167.如果想配置一臺(tái)匿名ftp服務(wù)器,應(yīng)修改 C 文件。
A) /etc/gateway B) /etc/ftpservers
C) /etc/ftpusers D) /etc/inetd.conf
168.要配置NFS服務(wù)器,在服務(wù)器端主要配置 C 文件。
A) /etc/rc.d/rc.inet1 B) /etc/rc.d/rc.M
C) /etc/exports D) /etc/rc.d/rc.S
169、 Boot Loader 的stage2通常使用C語(yǔ)言實(shí)現(xiàn),以完成復(fù)雜的功能,并增加可讀性和可移植性,以下哪一步驟屬于stage2的內(nèi)容:__D____
A . 為加載 Boot Loader 的 stage2 準(zhǔn)備 RAM 空間
B . 設(shè)置好堆棧
C . 硬件設(shè)備初始化
D . 將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中
170、執(zhí)行以下程序段
MOV SP, #3AH
MOV A, #20H
MOV B, #30H
PUSH ACC
PUSH B
POP ACC
POP B
后,A和B的內(nèi)容是(B )
A、20H,30H B、30H,20H
C、3AH,30H D、3AH,3AH
171、一個(gè)文件名字為rr.Z,可以用來(lái)解壓縮的命令是: D 。
A) tar B) gzip C) compress D) uncompress
172、在使用ln建立鏈接時(shí),為了跨越不同的文件系統(tǒng),需要使用(B )。
A.普通鏈接 B.硬鏈接
C.特殊鏈接 D.軟鏈接
173、( B )不是進(jìn)程和程序的區(qū)別。
A. 程序是一組有序的靜態(tài)指令,進(jìn)程是一次程序的執(zhí)行過(guò)程
B. 程序只能在前臺(tái)運(yùn)行,而進(jìn)程可以在前臺(tái)或后臺(tái)運(yùn)行
C. 程序可以長(zhǎng)期保存,進(jìn)程是暫時(shí)的
D. 程序沒(méi)有狀態(tài),而進(jìn)程是有狀態(tài)的
174、PV操作是在(D )上的操作。
A、臨界區(qū) B、進(jìn)程
C、緩沖區(qū) D、信號(hào)量
175.在TCP/IP模型中,應(yīng)用層包含了所有的高層協(xié)議,在下列的一些應(yīng)用協(xié)議中, B 是能夠?qū)崿F(xiàn)本地與遠(yuǎn)程主機(jī)之間的文件傳輸工作。
A) telnet B) FTP C) SNMP D) NFS
176、中斷向量是指(C ) 。
A、中斷斷點(diǎn)的地址 B、中斷向量表起始地址
C、中斷處理程序入口地址 D、中斷返回地址
177、 如果Boot Loader、內(nèi)核、啟動(dòng)參數(shù)以及其他的系統(tǒng)映像四部分在固態(tài)存儲(chǔ)設(shè)備上分別獨(dú)立存放,則其存儲(chǔ)結(jié)構(gòu)的分配順序應(yīng)當(dāng)是:_D____。
A . 文件系統(tǒng)、內(nèi)核、啟動(dòng)參數(shù)、Bootloader
B . 啟動(dòng)參數(shù)、Bootloader、內(nèi)核、文件系統(tǒng)
C . Bootloader、內(nèi)核、啟動(dòng)參數(shù)、文件系統(tǒng)
D . Bootloader、啟動(dòng)參數(shù)、內(nèi)核、文件系統(tǒng)
178、關(guān)于Qt說(shuō)法不正確的是(C )
A、是跨平臺(tái)的C++圖形用戶界面庫(kù) B、Qt Embedded(Qtopia)基于Framebuffer
C、Qt的各元件通信是基于callback的 D、可以同幾種Java虛擬機(jī)集成
179、暫停當(dāng)前(前臺(tái))任務(wù)并放到后臺(tái)去的命令是(A)。
A、 + Z B、 + C
C、 + P D、&
180、關(guān)于RISC指令系統(tǒng)描述不正確的是( C )。
A、優(yōu)先選取使用頻率最高的一些指令 B、避免使用復(fù)雜指令
C、不需要一個(gè)復(fù)雜的編譯器 D、尋址方式種類少
181、啟動(dòng)samba服務(wù)器進(jìn)程,可以有兩種方式:獨(dú)立啟動(dòng)方式和父進(jìn)程啟動(dòng)方式,其中前者是在 C 文件中以獨(dú)立進(jìn)程方式啟動(dòng)。
A) /usr/sbin/smbd B) /usr/sbin/nmbd C) rc.samba D) /etc/inetd.conf
182、Linux系統(tǒng)中的設(shè)備可分為三類:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備,其中不是基于文件系統(tǒng)訪問(wèn)的設(shè)備是 ( C) 。
A. 字符設(shè)備 B. 塊設(shè)備
C. 網(wǎng)絡(luò)設(shè)備 D. 字符和塊設(shè)備
183、Samba服務(wù)器的配置文件是 D 。
A) httpd.conf B) inetd.conf C) rc.samba D) smb.conf
184、在給定文件中查找與設(shè)定條件相符字符串命令為(A )
A、grep B、gzip
C、find D、sort
185、下列變量名中有效的shell變量名是: C 。
A) -2-time B) _2$3 C )trust_no_1 D ) 2004file
186、以下敘述中正確的是 C 。
A) 宿主機(jī)與目標(biāo)機(jī)之間只需要建立邏輯連接即可
B) 在嵌入式系統(tǒng)中,調(diào)試器與被調(diào)試程序一般位于同一臺(tái)機(jī)器上
C) 在嵌入式系統(tǒng)開發(fā)中,通常采用的是交叉編譯器
D) 宿主機(jī)與目標(biāo)機(jī)之間的通信方式只有串口和并口兩種
187、在使用GCC編譯器的過(guò)程中,如果只想生成目標(biāo)文件而不進(jìn)行連接,需要使用選項(xiàng)( C )
A.-S B.-o C.-c D.-E
188、以下做法不利于嵌入式應(yīng)用軟件的移植的是 D 。
A) 在軟件設(shè)計(jì)上,采用層次化設(shè)計(jì)和模塊化設(shè)計(jì)
B) 在軟件體系結(jié)構(gòu)上,在操作系統(tǒng)和應(yīng)用軟件之間引入一個(gè)虛擬機(jī)層,把一些通用的、共性的操作系統(tǒng)API接口函數(shù)封裝起來(lái)
C) 將不可移植的部分局域化,集中在某幾個(gè)特定的文件之中
D) 在數(shù)據(jù)類型上,盡量直接使用C語(yǔ)言的數(shù)據(jù)類型
189、對(duì)ARM處理器說(shuō)法不正確的是( D )。
A、小體積、低功耗、低成本、高性能
B、支持Thumb(16位)/ARM(32位)雙指令集
C、只有Load/Store指令可以訪問(wèn)存儲(chǔ)器
D、尋址方式多而復(fù)雜
190、嵌入式微控制器相比嵌入式微處理器的的最大特點(diǎn)(B )。
A、體積大大減小 B、單片化
C、功耗低 D、成本高
191.c-shell中變量名ignoreeof表示 C
A)執(zhí)行之前顯示每一條命令 B)使文件名結(jié)束
C)必須用logout注銷而不是^D D)禁止文件名擴(kuò)展
192.在某嵌入式操作系統(tǒng)中,若P、V操作的信號(hào)量S的初值為2,當(dāng)前值為-1,則表示等待信號(hào)量S的任務(wù)個(gè)數(shù)為B 。
A ) 0 B) 1 C) 2 D) 3
193、在字符界面環(huán)境下注銷LINUX,可用( C )命令。
A. exit或quit
B. quit或ctrl+D
C. exit或ctrl+D
D. 以上都可
194、Linux文件權(quán)限一共10位長(zhǎng)度,分成四段,第一段表示的內(nèi)容是( A )
A 文件類型 B 文件所有者的權(quán)限
C 文件所有者所在組的權(quán)限 D 其他用戶的權(quán)限
195、對(duì)于所有用戶具有讀的文件權(quán)限,而文件主同時(shí)具有執(zhí)行權(quán)限的文件權(quán)限是( B )
a.655 b.544 c.644 d.540
196、下面哪條命令可用來(lái)確保文件“file1”存在( B )
A. cp file1 /dev/null
B. touch file1
C. create file1
D. mkfile file1
197、操作系統(tǒng)中同時(shí)存在著多個(gè)進(jìn)程,它們(C )
A、不能共享系統(tǒng)資源 B、不能調(diào)用同一段程序代碼
C、可以共享所有的系統(tǒng)資源 D、可以共享允許共享的系統(tǒng)資源
198、在變址尋址方式中,操作數(shù)的有效地址等于(C)
A、變址寄存器內(nèi)容+形式地址(位移量)
B、程序計(jì)數(shù)器內(nèi)容+形式地址
C、基址寄存器內(nèi)容+形式地址
D、堆棧指示器內(nèi)容+形式地址
199、下列文件系統(tǒng)中,采用了inode來(lái)標(biāo)識(shí)文件的是( D )
a.ntfs
b.fat16
c.fat32
d.ext3
200、如果我們需要設(shè)置一個(gè)文件,使它們作為可執(zhí)行文件運(yùn)行時(shí),該進(jìn)程是作為文件所有者的權(quán)限,此時(shí)我們需要額外設(shè)置該文件的 C
A ) seg-GID位 B ) 粘滯位 C) set-UID位 D) UMASK
二、多項(xiàng)選擇題
1. 嵌入式操作系統(tǒng)不同于通用操作系統(tǒng)的功能是( B C )
A、任務(wù)調(diào)度 B、可裁減性 C、 強(qiáng)實(shí)時(shí) D、設(shè)備管理 E、存儲(chǔ)器管理
2. linux操作系統(tǒng)支持的文件系統(tǒng)有( A B C D E )
A、EXT2 B、VFAT C、NFS D、ISO9660 E、JFFS
3. Linux系統(tǒng)中的設(shè)備文件通常有如下分類(B C D )
A、虛擬設(shè)備 B、字符設(shè)備 C、網(wǎng)絡(luò)設(shè)備 D、塊設(shè)備 E、存儲(chǔ)設(shè)備
4. 片內(nèi)總線是大規(guī)模集成電路(Large Scale Integrated Circuit:LSI)和超大規(guī)模集成電路(VLSI)內(nèi)部各寄存器或功能單元之間的信息交換通道,它由生產(chǎn)廠家決定,下列屬于片內(nèi)總線的有(A B D )。
A、AHB總線 B、APB總線 C、USB總線 D、ASB 總線 E、1394總線
5. 下列能改變ARM處理器工作狀態(tài)的指令有( C D)
A、B指令 B、SUB指令 C、BX指令 D、BLX指令 E、BL指令
6. 常用的軟件開發(fā)模型有(B C D )
A、結(jié)構(gòu)型 B、 原型模型 C、 迭代型 D、瀑布型 E、綜合型
7. ARM處理器的工作模式中屬于異常模式的有( C D E )
A、用戶模式usr B、系統(tǒng)模式sys C、 外部中斷模式irq D、中止模式abt E、快速中斷模式fiq
8. 芯片總線又稱元件級(jí)總線,它是指系統(tǒng)內(nèi)或插件板內(nèi)各元件之間所使用的總線,下列屬于芯片總線的有( A C D )
A、I2C總線 B、ISA總線 C、SPI總線 D、SCI總線 E、PCI總線
9. 在ARM匯編語(yǔ)言程序設(shè)計(jì)中主程序和子程序參數(shù)的傳遞需要滿足ATPCS規(guī)則,ATPCS規(guī)則中用來(lái)傳遞參數(shù)的寄存器是(A B C D )
A、R0 B、R1 C、R2 D、R3 E、R4
三、填空題
1、 在linux系統(tǒng)中,以 文件 方式訪問(wèn)設(shè)備 。
2、 前臺(tái)起動(dòng)的進(jìn)程使用 ctrl+c 終止。
3、 安裝linux系統(tǒng)對(duì)硬盤分區(qū)時(shí),必須有兩種分區(qū)類型: 文件系統(tǒng)分區(qū) 和 交換分區(qū) 。
4、 利用gdb進(jìn)行調(diào)試時(shí),可通過(guò)step或next命令進(jìn)行單步執(zhí)行。
5、 DHCP可以實(shí)現(xiàn)動(dòng)態(tài) IP 地址分配。
6、 Ping命令可以測(cè)試網(wǎng)絡(luò)中本機(jī)系統(tǒng)是否能到達(dá)一臺(tái)遠(yuǎn)程主機(jī) ,所以常常用于測(cè)試網(wǎng)絡(luò)的 連通性 。
7、 vi編輯器具有兩種工作模式: 命令模式 和 輸入模式 。
8、 在使用ls命令時(shí),用八進(jìn)制形式顯示非打印字符應(yīng)使用參數(shù) -b 。
9、 在shell編程時(shí),使用方括號(hào)表示測(cè)試條件的規(guī)則是:方括號(hào)兩邊必須有 空格 。
10、 在Windows9.x環(huán)境下共享Unix/Linux中的用戶目錄的一個(gè)工具是 Samba服務(wù)器。
11、 編寫的shell程序運(yùn)行前必須賦予該腳本文件 執(zhí)行 權(quán)限。
12、 在Linux系統(tǒng)中,用來(lái)存放系統(tǒng)所需要的配置文件和子目錄的目錄是 /etc 。
13、 結(jié)束后臺(tái)進(jìn)程的命令是 kill 。
14、 進(jìn)行遠(yuǎn)程登錄的命令是 telnet 。
15、 在用vi編輯文件時(shí),將文件內(nèi)容存入test.txt文件中,應(yīng)在命令模式下鍵入 :w test.txt 。
16、 在Linux系統(tǒng)下,第二個(gè)IDE通道的硬盤(從盤)被標(biāo)識(shí)為 hdb 。
17、 在CPU和物理內(nèi)存之間進(jìn)行地址轉(zhuǎn)換時(shí),MMU將地址從虛擬(邏輯)地址空間映射到 物理地址空間 。
18、 使用gcc編譯c程序生成可執(zhí)行文件有時(shí)似乎是一步完成的,但實(shí)際要經(jīng)歷如下四步: 預(yù)處理、編譯、匯編和連接 。
19、 利用gdb進(jìn)行調(diào)試時(shí),可通過(guò)step或next命令進(jìn)行單步執(zhí)行。
20、 內(nèi)核分為 進(jìn)程管理系統(tǒng) 、 內(nèi)存管理系統(tǒng) 、 i/o管理系統(tǒng) 和文件管理系統(tǒng)等四個(gè)子系統(tǒng)。
21、 gcc的編譯可分為__預(yù)處理____、編譯、匯編和___鏈接___等四個(gè)階段。
22、 在Linux多線程編程時(shí),需要包含頭文件___pthread.h___。
23、 卸載Linux內(nèi)核模塊使用命令___rmmod___。
24、 ARM處理器有多種運(yùn)行模式,用戶程序運(yùn)行在其中的___用戶___模式。
25、 ARM處理器的中斷有兩種處理模式,分別為___快速中斷___模式和的___外部中斷___模式。
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)方式。
答:
在Linux中啟動(dòng)一個(gè)進(jìn)程有手工啟動(dòng)和調(diào)度啟動(dòng)兩種方式:
(1)手工啟動(dòng)
用戶在輸入端發(fā)出命令,直接啟動(dòng)一個(gè)進(jìn)程的啟動(dòng)方式?梢苑譃椋
、偾芭_(tái)啟動(dòng):直接在SHELL中輸入命令進(jìn)行啟動(dòng)。
、诤笈_(tái)啟動(dòng):?jiǎn)?dòng)一個(gè)目前并不緊急的進(jìn)程,如打印進(jìn)程。
(2)調(diào)度啟動(dòng)
系統(tǒng)管理員根據(jù)系統(tǒng)資源和進(jìn)程占用資源的情況,事先進(jìn)行調(diào)度安排,指定任務(wù)運(yùn)行的時(shí)間和場(chǎng)合,到時(shí)候系統(tǒng)會(huì)自動(dòng)完成該任務(wù)。
27、簡(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、串口下載文件等
28、ARM處理器中,引起異常的原因是什么?
答:(1)、指令執(zhí)行引起的異常
軟件中斷、未定義指令(包括所要求的協(xié)處理器不存在是的協(xié)處理器指令)、預(yù)取址中止(存儲(chǔ)器故障)、數(shù)據(jù)中止。
(2)、外部產(chǎn)生的中斷
復(fù)位、FIQ、IRQ。
29、程序、進(jìn)程、線程有何區(qū)別?
答案要點(diǎn):程序是編譯后形成的可執(zhí)行代碼,是靜止的。進(jìn)程是程序的一次執(zhí)行,是活動(dòng)的。線程是進(jìn)程的可執(zhí)行單元,同一進(jìn)程的不同線程共享進(jìn)程的資源和地址空間。
30、Linux系統(tǒng)中線程的同步方式有互斥量、信號(hào)量和條件變量等。假設(shè)現(xiàn)在需要設(shè)計(jì)一個(gè)多線程的應(yīng)用程序,試分析一下以上幾種同步方式分別可在什么場(chǎng)合下使用(6分)。
參考答案:
Mutex互斥量,用于操作某個(gè)臨界資源時(shí)對(duì)該資源上鎖,以實(shí)現(xiàn)互斥地對(duì)獨(dú)占資源的使用(2分)
Semophore信號(hào)燈,信號(hào)燈內(nèi)有一計(jì)數(shù)器,可以用于對(duì)多個(gè)同類資源的分配。當(dāng)資源用完時(shí),申請(qǐng)資源的線程會(huì)在信號(hào)量上睡眠,有線程釋放資源時(shí),再將該線程喚醒繼續(xù)運(yùn)行。(2分)
Condition條件變量,條件變量用于等待信號(hào)。當(dāng)一個(gè)線程需要等待某個(gè)信號(hào)時(shí),就可到條件變量上等待,當(dāng)信號(hào)具備時(shí),系統(tǒng)會(huì)喚醒該線程繼續(xù)運(yùn)行。(2分)
31、簡(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)闡述的即可給滿分。
32、什么是程序的局部性原理?
答案要點(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í)行。
33、簡(jiǎn)述Busybox的工作原理。(4分)
參考答案:Busybox是通過(guò)一個(gè)程序去實(shí)現(xiàn)原來(lái)Linux的眾多命令程序。這樣可使原來(lái)3.5MB左右的工具包壓縮大約200KB大小一個(gè)程序,這對(duì)嵌入式系統(tǒng)非常重要(2分)。
為了使用的方便,Busybox通過(guò)創(chuàng)建其原文件的符號(hào)連接來(lái)達(dá)到傳遞具體執(zhí)行命令的目的。例如,創(chuàng)建一個(gè)mv的符號(hào)連接,當(dāng)用戶鍵入mv后,mv實(shí)際上會(huì)以C語(yǔ)言中的argv[0]傳遞給Busybox的主程序。這樣Busybox就可據(jù)此跳轉(zhuǎn)到相應(yīng)的代碼去執(zhí)行。(2分)
34、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++等也可以很容易得到,不但成熟完善,而且使用方便。(分)
35、簡(jiǎn)述Linux需要進(jìn)行進(jìn)程調(diào)度的時(shí)機(jī)(6分)
參考答案:(每小點(diǎn)1分)
Linux執(zhí)行進(jìn)程調(diào)度一般是在以下情況發(fā)生的:
(1)正在執(zhí)行的進(jìn)程運(yùn)行完畢;
(2)正在執(zhí)行的進(jìn)程調(diào)用阻塞原語(yǔ)將自己阻塞起來(lái)進(jìn)入等待狀態(tài);
(3)正在執(zhí)行的進(jìn)程調(diào)用了P原語(yǔ)操作,從而因資源不足而被阻塞;或調(diào)用了V原語(yǔ)操作激活了等待資源的進(jìn)程隊(duì)列;
(4)執(zhí)行中的進(jìn)程提出I/O請(qǐng)求后被阻塞;
(5)系統(tǒng)分配的時(shí)間片已經(jīng)用完;
以上都是CPU為不可剝奪方式下的引起進(jìn)程調(diào)度的原因。在CPU方式是可剝奪時(shí),還有下面的原因:
(6)就緒隊(duì)列中的某個(gè)進(jìn)程的優(yōu)先級(jí)變得高于當(dāng)前運(yùn)行進(jìn)程的優(yōu)先級(jí),從而也將引起進(jìn)程調(diào)度。
37、什么是符號(hào)鏈接,什么是硬鏈接?符號(hào)鏈接與硬鏈接的區(qū)別是什么?(6分)
參考答案:
鏈接分硬鏈接和符號(hào)鏈接。
符號(hào)鏈接可以建立對(duì)于文件和目錄的鏈接。符號(hào)鏈接可以跨文件系統(tǒng),即可以跨磁盤分區(qū)。符號(hào)鏈接的文件類型位是l,鏈接文件具有新的i節(jié)點(diǎn)。(3分)
硬鏈接不可以跨文件系統(tǒng)。它只能建立對(duì)文件的鏈接,硬鏈接的文件類型位是-,且硬鏈接文件的i節(jié)點(diǎn)同被鏈接文件的i節(jié)點(diǎn)相同。(3分)
38、簡(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分)
39、模塊的編程和普通程序的編程有哪些區(qū)別?(6分)
參考答案:
主要區(qū)別為:
(1)因?yàn)閮?nèi)核模塊運(yùn)行在內(nèi)核態(tài),所以包含的頭文件是內(nèi)核程序相關(guān)的頭文件,而普通程序則包含的是glibc的頭文件(1分)
(2)模塊程序沒(méi)有main函數(shù),而是通過(guò)init_module函數(shù)在加載后初始化。(2分)
(3)模塊程序內(nèi)可直接調(diào)用內(nèi)核函數(shù),而普通程序則只能通過(guò)系統(tǒng)調(diào)用使用內(nèi)核函數(shù)。(2分)
(4)普通用戶程序可運(yùn)行多次,而內(nèi)核函數(shù)通常則只能加載1次(1分)。
41、 已知C語(yǔ)言程序有主程序模塊prog.c,prog.h,其中調(diào)用了另一模塊subr.c, subr.h中的功能。試寫出一個(gè)可將這兩個(gè)模塊編譯成可執(zhí)行文件pr1的makefile。(5分)
參考答案:
[每行1分]
pr1: prog.o subr.o
gcc –o pr1 prog.o subr.o
prog.o: prog.c prog.h
gcc –c –o prog.o prog.c
subr.o: subr.c subr.h
gcc –c –o subr.o subr.c
43、簡(jiǎn)述Linux的VFS機(jī)制及其特點(diǎn)?(5分)
參考答案:
VFS是一種抽象的文件機(jī)制,內(nèi)核中對(duì)文件系統(tǒng)的相關(guān)操作系統(tǒng)實(shí)際上都通過(guò)操作VFS實(shí)現(xiàn),也就是說(shuō)VFS是對(duì)各具體文件系統(tǒng)的抽象。(3分)
VFS使得內(nèi)核其他部分無(wú)須關(guān)心不同文件系統(tǒng)之間的差異,使得Linux可以支持多種類型的文件系統(tǒng)。當(dāng)然,因?yàn)樵黾恿顺橄髮,?huì)有類型轉(zhuǎn)換的開銷。(2分)
44、模塊的編程和普通程序的編程有哪些區(qū)別?(5分)
參考答案:
主要區(qū)別為:
(1)因?yàn)閮?nèi)核模塊運(yùn)行在內(nèi)核態(tài),所以包含的頭文件是內(nèi)核程序相關(guān)的頭文件,而普通程序則包含的是glibc的頭文件(1分)
(2)模塊程序沒(méi)有main函數(shù),而是通過(guò)init_module函數(shù)在加載后初始化。(2分)
(3)模塊程序內(nèi)可直接調(diào)用內(nèi)核函數(shù),而普通程序則只能通過(guò)系統(tǒng)調(diào)用使用內(nèi)核函數(shù)。(2分)
45、BootLoader有哪幾種工作模式?各有什么特點(diǎn)(5分)
參考答案:?jiǎn)?dòng)加載模式和下模式(2分)。前者“自主”,不需要用戶干預(yù),后者可響應(yīng)用戶的交互請(qǐng)求。(3分)
46、簡(jiǎn)述嵌入式系統(tǒng)調(diào)試有哪幾種方式(5分)
參考答案:
模擬器方式(1分)、在線仿真器方式(1分)、監(jiān)控器方式(1分)、在線調(diào)試器方式,如JTAG(2分)。
47、Qt/Embedded的主要特點(diǎn)是什么?(5分)
參考答案:
是一個(gè)專門為嵌入式系統(tǒng)設(shè)計(jì)的圖形用戶界面的工具包(1分)。支持UNIX和Windows平臺(tái)(1分)。采用面向?qū)ο蟮乃枷腴_發(fā)(1分),開發(fā)接口與桌面的Qt相同,因此桌面應(yīng)用程序可方便的移植到Qt/E(1分)。不分層的架構(gòu)使得其他運(yùn)行速度很快(1分)。
48、簡(jiǎn)述嵌入式系統(tǒng)的開發(fā)流程。
參考答案:
需求分析階段(1分)
體系結(jié)構(gòu)設(shè)計(jì)(1分)
硬件/軟件設(shè)計(jì)(1分)
系統(tǒng)集成(1分)
代碼固化(1分)
49、簡(jiǎn)述C語(yǔ)言中數(shù)組和指針的異同點(diǎn)。
參考答案:
相同點(diǎn):(1)表達(dá)式中的數(shù)組名被編譯器當(dāng)作一個(gè)指向該數(shù)組第一個(gè)元素的指針(1分)
(2)下標(biāo)總是與指針偏移量相同(1分)
(3)在函數(shù)參數(shù)的聲明中,數(shù)組被編譯器當(dāng)作一個(gè)指向該數(shù)組第一個(gè)元素的指針(1分)
不同點(diǎn):(1)指針用于保存數(shù)據(jù)的地址,而數(shù)組用于保存數(shù)據(jù)(1分)
(2)指針是間接訪問(wèn)而數(shù)組是直接訪問(wèn)方式(1分)
50、什么是交叉編譯?為什么要采用交叉編譯(5分)
參考答案:所謂交叉編譯,是指在一個(gè)平臺(tái)上編譯生成在另一個(gè)平臺(tái)上運(yùn)行的可執(zhí)行程序。(3分)。之所以采用交叉編譯,是因?yàn)槟繕?biāo)平臺(tái)上不具備直接運(yùn)行開發(fā)環(huán)境的條件。(2分)
。
51、什么是符號(hào)鏈接,什么是硬鏈接?符號(hào)鏈接與硬鏈接的區(qū)別是什么?
參考答案:
鏈接分硬鏈接和符號(hào)鏈接。
符號(hào)鏈接可以建立對(duì)于文件和目錄的鏈接。符號(hào)鏈接可以跨文件系統(tǒng),即可以跨磁盤分區(qū)。符號(hào)鏈接的文件類型位是l,鏈接文件具有新的i節(jié)點(diǎn)。(3分)
硬鏈接不可以跨文件系統(tǒng)。它只能建立對(duì)文件的鏈接,硬鏈接的文件類型位是-,且硬鏈接文件的i節(jié)點(diǎn)同被鏈接文件的i節(jié)點(diǎn)相同。(2分)
52、簡(jiǎn)述Boot Loader的主要功能。
參考答案:
基本硬件設(shè)備初始化。(1分)
設(shè)置好堆棧。 (1分)
檢測(cè)系統(tǒng)內(nèi)存映射(memory map)。 (1分)
將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中。(1分)
為內(nèi)核設(shè)置啟動(dòng)參數(shù),調(diào)用內(nèi)核。(1分)
53、嵌入式Linux系統(tǒng)的根文件系統(tǒng)通常應(yīng)該包括哪個(gè)內(nèi)容?
參考答案:
通常包括:init、libc庫(kù)、驅(qū)動(dòng)模塊、必需的應(yīng)用程序和系統(tǒng)配置腳本。(各1分)
54、
55、回答下面問(wèn)題:
a) 對(duì)于整形變量A=0x12345678,請(qǐng)畫出在little endian及big endian的方式下在內(nèi)存中是如何存儲(chǔ)的。
b) 在ARM系統(tǒng)中,函數(shù)調(diào)用的時(shí)候,參數(shù)是通過(guò)哪種方式傳遞的?
c) 中斷(interrupt,如鍵盤中斷)與異常(exception,如除零異常)有何區(qū)別?
答:
a) 0x12345678
little endian big endian 剛好反過(guò)來(lái)
高地址--〉 0x12 低地址--〉 0x12
0x34 0x34
0x56 0x56
低地址--〉 0x78 高地址--〉 0x78
b)
答:應(yīng)用程序中使用中間寄存器及數(shù)據(jù)棧來(lái)傳遞參數(shù)。
在arm匯編中,如果第1~4個(gè)參數(shù)通過(guò)r0 -r3寄存器來(lái)傳遞,超過(guò)4個(gè)的使用數(shù)據(jù)棧進(jìn)行傳遞,輸出函數(shù)由r0傳遞。
c)所謂中斷應(yīng)該是指外部硬件產(chǎn)生的一個(gè)電信號(hào),從cpu的中斷引腳進(jìn)入,打斷cpu當(dāng)前的運(yùn)行;
所謂異常,是指軟件運(yùn)行中發(fā)生了一些必須作出處理的事件,cpu自動(dòng)產(chǎn)生一個(gè)陷入來(lái)打斷當(dāng)前運(yùn)行,轉(zhuǎn)入異常處理流程。
56、某Linux主機(jī)的/etc/rc.d/rc.inet1文件中有如下語(yǔ)句,請(qǐng)修正錯(cuò)誤,并解釋其內(nèi)容。
/etc/rc.d/rc.inet1:
……
ROUTE add –net default gw 192.168.0.101 netmask 255.255.0.0 metric 1
ROUTE add –net 192.168.1.0 gw 192.168.0.250 netmask 255.255.0.0 metric 1
答:修正錯(cuò)誤:
(1)ROUTE應(yīng)改為小寫:route;(2)netmask 255.255.0.0應(yīng)改為:netmask 255.255.255.0;
(3)缺省路由的子網(wǎng)掩碼應(yīng)改為:netmask 0.0.0.0;
(4)缺省路由必須在最后設(shè)定,否則其后的路由將無(wú)效。
解釋內(nèi)容:
(1)route:建立靜態(tài)路由表的命令;(2)add:增加一條新路由;
(3)-net 192.168.1.0:到達(dá)一個(gè)目標(biāo)網(wǎng)絡(luò)的網(wǎng)絡(luò)地址;
(4)default:建立一條缺省路由;(5)gw 192.168.0.101:網(wǎng)關(guān)地址;
(6)metric 1:到達(dá)目標(biāo)網(wǎng)絡(luò)經(jīng)過(guò)的路由器數(shù)(跳數(shù))。
6.下述代碼取自u(píng)-boot,請(qǐng)對(duì)其加以逐行注釋和分析。
typedef int (init_fnc_t) (void);
init_fnc_t *init_sequence[] = {
cpu_init,
board_init,
env_init,
serial_init,
display_banner,
NULL,
};
init_fnc_t **init_fnc_ptr;
for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr)
{
if ((*init_fnc_ptr)() != 0) {
hang ();
}
}
4.簡(jiǎn)述2.4與2.6內(nèi)核模塊機(jī)制的改變對(duì)編寫設(shè)備驅(qū)動(dòng)程序的影響?
答:2.4內(nèi)核中,模塊的編譯只需內(nèi)核源碼頭文件;需要在包含linux/modules.h之前定義MODULE;編譯、連接后生成的內(nèi)核模塊后綴為.o。2.6內(nèi)核中,模塊的編譯需要配置過(guò)的內(nèi)核源碼;編譯、連接后生成的內(nèi)核模塊后綴為.ko;
在2.6 內(nèi)核中,內(nèi)核模塊必須調(diào)用宏module_init 與module_exit() 去注冊(cè)初始化與退 出函數(shù)。在2.4內(nèi)核中,如果初始化函數(shù)命名為init_module()、退出函數(shù)命名為cleanup_module()。
2.4內(nèi)核中,模塊自身通過(guò)MOD_INC_USE_COUNT、MOD_DEC_USE_COUNT宏來(lái)管理自己被使用的計(jì)數(shù)。2.6內(nèi)核提供了更健壯、靈活的模塊計(jì)數(shù)管理接口try_module_get(&module)及module_put (& module)取代2.4中的模塊使用計(jì)數(shù)管理宏;模塊的使用計(jì)數(shù)不必由自身管理,而且在管理模塊使用計(jì)數(shù)時(shí)考慮到SMP與 PREEMPT機(jī)制的影響。
2.4 內(nèi)核下,缺省情況時(shí)模塊中的非靜態(tài)全局變量及函數(shù)在模塊加載后會(huì)輸出到內(nèi)核空間。2.6內(nèi)核下,缺省情況時(shí)模塊中的非靜態(tài)全局變量及函數(shù)在模塊加載后不會(huì)輸出到內(nèi)核空間,需要顯式調(diào)用宏EXPORT_SYMBOL。
57、論述一下問(wèn)題
(1) ARM中引起異常的原因
(2) 在ARM體系中,異常中斷向量表的大小是多少,其中每個(gè)異常中斷占據(jù)多少字節(jié)
(3) 異常中斷的處理、返回過(guò)程。
答:(1)原因主要:
a.指令執(zhí)行引起的異常
軟件中斷、未定義指令(包括所要求的協(xié)處理器不存在是的協(xié)處理器指令)、預(yù)取址中止(存儲(chǔ)器故障)、數(shù)據(jù)中止。
b.外部產(chǎn)生的中斷
復(fù)位、FIQ、IRQ。
(2)在ARM體系中,異常中斷向量表的大小為32字節(jié),其中每個(gè)異常中斷占據(jù)4個(gè)字節(jié)大小,保留了4個(gè)字節(jié)空間。
(3)ARM處理器對(duì)異常中斷的響應(yīng)過(guò)程是首先保存處理器當(dāng)前狀態(tài)、中斷屏蔽位及CPSR寄存器中的各個(gè)條件標(biāo)志位。這是通過(guò)將當(dāng)前程序狀態(tài)寄存器CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷對(duì)應(yīng)的SPSR寄存器中實(shí)現(xiàn)的。其次設(shè)置當(dāng)前程序狀態(tài)寄存器CPSR中相應(yīng)的位。再次將寄存器LR_mode(R14_mode)設(shè)置成返回地址。最后將PC設(shè)置成該異常中斷的中斷向量地址,從而跳轉(zhuǎn)到對(duì)應(yīng)的中斷處理程序處執(zhí)行。
ARM處理器從異常中斷程序中返回的過(guò)程:首先恢復(fù)被中斷程序的處理器狀態(tài),也就是將SPSR_mode 內(nèi)容復(fù)制到CPSR。然后返回到發(fā)生異常中斷指令的下一條指令處執(zhí)行,即將LR_mode(R14_mode)寄存器的內(nèi)容復(fù)制到PC中。
58、在linux中如何編譯C程序,使之成為可執(zhí)行文件(3分)?如何調(diào)試(3分)?
答案:
[問(wèn)題1](3分)
1)檢查程序中.h文件所在的目錄,將其加入系統(tǒng)PATH中;
2)執(zhí)行C編譯:#gcc [源文件名] -o [目標(biāo)文件名]
3)改變目標(biāo)文件為可執(zhí)行文件:#chmod +x [目標(biāo)文件名]
4)如需將多個(gè)可執(zhí)行文件連續(xù)執(zhí)行,可用vi生成批處理文件,最后記得將該批處理文件屬性改為可執(zhí)行(同上一步)
[問(wèn)題2](3分)
調(diào)試:在編譯時(shí)使用-g參數(shù),就可以使用gdb進(jìn)行調(diào)試。
59、時(shí)間片的大小對(duì)系統(tǒng)有什么影響?(3分)在選取時(shí)間片是應(yīng)考慮哪些因素?(3分)
參考答案:
[問(wèn)題1](3分)
在輪轉(zhuǎn)法中,時(shí)間片長(zhǎng)度的選取非常重要,將直接影響系統(tǒng)開銷和響應(yīng)時(shí)間。如果時(shí)間片長(zhǎng)度很小,則調(diào)度程序剝奪處理機(jī)的次數(shù)頻繁,加重系統(tǒng)開銷;反之,如果時(shí)間片長(zhǎng)度選擇過(guò)長(zhǎng),比方說(shuō)一個(gè)時(shí)間片就能保證就緒隊(duì)列中所有進(jìn)程都執(zhí)行完畢,則輪轉(zhuǎn)法就退化成先進(jìn)先出算法。
[問(wèn)題2](3分)
影響時(shí)間片大小的主要因素有:系統(tǒng)響應(yīng)時(shí)間、就緒進(jìn)程數(shù)目和計(jì)算機(jī)處理能力
60、模塊的編程和普通程序的編程有哪些區(qū)別?(6分)
參考答案:
主要區(qū)別為:
(1)因?yàn)閮?nèi)核模塊運(yùn)行在內(nèi)核態(tài),所以包含的頭文件是內(nèi)核程序相關(guān)的頭文件,而普通程序則包含的是glibc的頭文件(1分)
(2)模塊程序沒(méi)有main函數(shù),而是通過(guò)init_module函數(shù)在加載后初始化。(2分)
(3)模塊程序內(nèi)可直接調(diào)用內(nèi)核函數(shù),而普通程序則只能通過(guò)系統(tǒng)調(diào)用使用內(nèi)核函數(shù)。(2分)
(4)普通用戶程序可運(yùn)行多次,而內(nèi)核函數(shù)通常則只能加載1次(1分)。
61、什么是交叉編譯?為什么要采用交叉編譯(5分)
參考答案:所謂交叉編譯,是指在一個(gè)平臺(tái)上編譯生成在另一個(gè)平臺(tái)上運(yùn)行的可執(zhí)行程序。(3分)。之所以采用交叉編譯,是因?yàn)槟繕?biāo)平臺(tái)上不具備直接運(yùn)行開發(fā)環(huán)境的條件。(2分)
62、簡(jiǎn)述嵌入式Linux系統(tǒng)的初始化過(guò)程(5分)
參考答案:
嵌入式Linux系統(tǒng)開機(jī)首先運(yùn)行BootLoader,然后由BootLoader引導(dǎo)啟動(dòng)內(nèi)核,由內(nèi)核檢查和初始化硬件設(shè)備,載入設(shè)備的驅(qū)動(dòng)程序模塊,安裝root文件系統(tǒng),然后內(nèi)核將啟動(dòng)一個(gè)名為init的進(jìn)程(2分)。在init運(yùn)行完成并啟動(dòng)其它必要的后續(xù)進(jìn)程后,系統(tǒng)開始運(yùn)行,引導(dǎo)過(guò)程結(jié)束。init進(jìn)程啟動(dòng)時(shí)需要讀取inittab配置文件,該文件確定init在系統(tǒng)啟動(dòng)和關(guān)機(jī)時(shí)的工作特性。(3分)
六、閱讀程序題
1. 管道是Linux中進(jìn)程通信的一種方式,以下程序在父進(jìn)程和子進(jìn)程之間創(chuàng)建了一個(gè)管道,然后建立它們之間的通信,實(shí)現(xiàn)父進(jìn)程向子進(jìn)程寫數(shù)據(jù)的功能。說(shuō)明標(biāo)號(hào)所在行代碼的功能。
#include
#include
#include
#include
#include
int main()
{
int pipe_fd[2];
pid_t pid;
char buf_r[100];
char* p_wbuf;
int r_num;
memset(buf_r,0,sizeof(buf_r)); (1)
if(pipe(pipe_fd)<0) (2)
{
printf("pipe create error\n");
return -1;
}
if((pid=fork())==0) (3)
{
printf("\n");
close(pipe_fd[1]); (4)
sleep(2);
if((r_num=read(pipe_fd[0],buf_r,100))>0) (5)
{
printf( "%d numbers read from the pipe is %s\n",r_num,buf_r);
}
close(pipe_fd[0]); (6)
exit(0);
}
else if(pid>0) (7)
{
close(pipe_fd[0]); (8)
if(write(pipe_fd[1],"Hello",5)!=-1) (9)
printf("parent write1 success!\n");
if(write(pipe_fd[1]," Pipe",5)!=-1)
printf("parent write2 success!\n");
close(pipe_fd[1]); (10)
sleep(3);
waitpid(pid,NULL,0);
exit(0);
}
}
答案要點(diǎn):(1) 將數(shù)據(jù)緩沖區(qū)清0 (2) 創(chuàng)建管道 (3) 創(chuàng)建子進(jìn)程 (4) 關(guān)閉子進(jìn)程寫描述符 (5) 子進(jìn)程讀取管道內(nèi)容 (6) 關(guān)閉子進(jìn)程讀描述符 (7) 父進(jìn)程運(yùn)行控制語(yǔ)句 (8) 關(guān)閉父進(jìn)程的讀描述符 (9) 將數(shù)據(jù)寫入緩沖區(qū)
(10) 關(guān)閉父進(jìn)程寫描述符
2. 閱讀下面shell程序,寫出執(zhí)行結(jié)果:
#!/bin/sh
for name in Tom Jack Harry
do
echo "$name is my friend"
done
1、答:
Tom is my friend
Jack is my friend
Harry is my friend
3. 用變量a給出下面的定義
a) 一個(gè)指向整型數(shù)的指針(A pointer to an integer)
b) 一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數(shù)(A pointer to a pointer to an integer)
c) 一個(gè)有10個(gè)整型數(shù)的數(shù)組(An array of 10 integers)
d) 一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的(An array of 10 pointers to integers)
e) 一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針(A pointer to an array of 10 integers)
2、答:
a) int *a; // A pointer to an integer
b) int **a; // A pointer to a pointer to an integer
c) int a[10]; // An array of 10 integers
d) int *a[10]; // An array of 10 pointers to integers
e) int (*a)[10]; // A pointer to an array of 10 integers
4. 根據(jù)下面給出的聲明和數(shù)據(jù),對(duì)每個(gè)表達(dá)式進(jìn)行求值并寫出他的值。在每個(gè)表達(dá)式進(jìn)行求值是使用原來(lái)給出的值(也就是說(shuō),某個(gè)表達(dá)式的結(jié)果不影響后面的表達(dá)式)。假定ints數(shù)組在內(nèi)存中的起始位置是100,整型值和指針的長(zhǎng)度都是4字節(jié)。
in tints[20]={
10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
110, 120, 130, 140, 150, 160, 170, 180, 190, 200
};
(Other declarations)
int *ip=ints+3;
表達(dá)式 |
值 |
ints |
__ |
ints[4] |
__ |
ip |
__ |
ip[4] |
__ |
*(ip+4) |
__ |
答:(每項(xiàng)1分)
表達(dá)式 |
值 |
ints |
__ |
Ints[4] |
_ |
ip |
__ |
ip[4] |
__ |
*(ip+4) |
__ |
5、請(qǐng)對(duì)下列shell程序加注釋,并說(shuō)明程序的功能和調(diào)用方法:
#!/bin/sh
#
# /etc/rc.d/rc.httpd
#
# Start/stop/restart the Apache web server.
#
# To make Apache start automatically at boot, make this
# file executable: chmod 755 /etc/rc.d/rc.httpd
#
case "$1" in
'start')
/usr/sbin/apachectl start ;;
'stop')
/usr/sbin/apachectl stop ;;
'restart')
/usr/sbin/apachectl restart ;;
*)
echo "usage $0 start|stop|restart" ;;
esac
答:
1)程序注釋
#!/bin/sh 定義實(shí)用的shell
#
# /etc/rc.d/rc.httpd 注釋行,凡是以星號(hào)開始的行均為注釋行。
#
# Start/stop/restart the Apache web server.
#
# To make Apache start automatically at boot, make this
# file executable: chmod 755 /etc/rc.d/rc.httpd
#
case "$1" in #case結(jié)構(gòu)開始,判斷“位置參數(shù)”決定執(zhí)行的操作。本程序攜帶一個(gè)“位置參數(shù)”,即$1
'start') #若位置參數(shù)為start
/usr/sbin/apachectl start ;; #啟動(dòng)httpd進(jìn)程
'stop') #若位置參數(shù)為stop
/usr/sbin/apachectl stop ;; #關(guān)閉httpd進(jìn)程
'restart') #若位置參數(shù)為stop
/usr/sbin/apachectl restart ;; #重新啟動(dòng)httpd進(jìn)程
*) #若位置參數(shù)不是start、stop或restart時(shí)
echo "usage $0 start|stop|restart" ;; #顯示命令提示信息:程序的調(diào)用方法
esac #case結(jié)構(gòu)結(jié)束
(2)程序的功能是啟動(dòng),停止或重新啟動(dòng)httpd進(jìn)程
(3)程序的調(diào)用方式有三種:?jiǎn)?dòng),停止和重新啟動(dòng)。
七、應(yīng)用實(shí)踐題
1、管道是Linux中進(jìn)程通信的一種方式,以下程序在父進(jìn)程和子進(jìn)程之間創(chuàng)建了一個(gè)管道,然后建立它們之間的通信,實(shí)現(xiàn)父進(jìn)程向子進(jìn)程寫數(shù)據(jù)的功能。說(shuō)明標(biāo)號(hào)所在行代碼的功能。
#include
#include
#include
#include
#include
int main()
{
int pipe_fd[2];
pid_t pid;
char buf_r[100];
char* p_wbuf;
int r_num;
memset(buf_r,0,sizeof(buf_r)); (1)
if(pipe(pipe_fd)<0) (2)
{
printf("pipe create error\n");
return -1;
}
if((pid=fork())==0) (3)
{
printf("\n");
close(pipe_fd[1]); (4)
sleep(2);
if((r_num=read(pipe_fd[0],buf_r,100))>0) (5)
{
printf( "%d numbers read from the pipe is %s\n",r_num,buf_r);
}
close(pipe_fd[0]); (6)
exit(0);
}
else if(pid>0) (7)
{
close(pipe_fd[0]); (8)
if(write(pipe_fd[1],"Hello",5)!=-1) (9)
printf("parent write1 success!\n");
if(write(pipe_fd[1]," Pipe",5)!=-1)
printf("parent write2 success!\n");
close(pipe_fd[1]); (10)
sleep(3);
waitpid(pid,NULL,0);
exit(0);
}
}
答案要點(diǎn):(1) 將數(shù)據(jù)緩沖區(qū)清0 (2) 創(chuàng)建管道 (3) 創(chuàng)建子進(jìn)程 (4) 關(guān)閉子進(jìn)程寫描述符 (5) 子進(jìn)程讀取管道內(nèi)容 (6) 關(guān)閉子進(jìn)程讀描述符 (7) 父進(jìn)程運(yùn)行控制語(yǔ)句 (8) 關(guān)閉父進(jìn)程的讀描述符 (9) 將數(shù)據(jù)寫入緩沖區(qū)
(10) 關(guān)閉父進(jìn)程寫描述符
2、用Shell編程,判斷一文件是不是字符設(shè)備文件,如果是將其拷貝到 /dev 目錄下。
答:
#!/bin/sh
FILENAME=
echo “Input file name:”
read FILENAME
if [ -c "$FILENAME" ]
then
cp $FILENAME /dev
fi
3.下列程序?qū)崿F(xiàn)了著名的生產(chǎn)者—消費(fèi)者問(wèn)題的模型,主程序中分別啟動(dòng)了生產(chǎn)者線程和消費(fèi)者線程。生產(chǎn)者不斷順序地將0-1000的數(shù)字寫入共享的循環(huán)緩沖區(qū),同時(shí)消費(fèi)者線程不斷地從共享的循環(huán)緩沖區(qū)中讀取數(shù)據(jù)。完成如下問(wèn)題。
進(jìn)行生產(chǎn)(put) 進(jìn)行消費(fèi)(get)
1)生產(chǎn)者 寫入共享的循環(huán)緩沖區(qū)PUT函數(shù)的流程圖如下,試完成流程圖中標(biāo)號(hào)所在處的內(nèi)容。(4.5分)
(1)寫指針+1是否等于讀指針 (2)等待條件變量not full (3) 設(shè)置條件變量notempty
2)生產(chǎn)者 寫入共享的循環(huán)緩沖區(qū)PUT函數(shù)的流程圖如下,試完成流程圖中標(biāo)號(hào)所在處的內(nèi)容。(4.5分)
(4)寫指針是否等于讀指針 (5) 等待條件變量not empty (6) 設(shè)置條件變量notfull
void put(struct prodcons * b, int data)
{ pthread_mutex_lock(&b->lock);
while ((b->writepos + 1) % BUFFER_SIZE == b->readpos) {
printf("wait for not full\n");
pthread_cond_wait(&b->notfull, &b->lock);
}
b->buffer[b->writepos] = data;
b->writepos++;
if (b->writepos >= BUFFER_SIZE) b->writepos = 0;
pthread_cond_signal(&b->notempty);
pthread_mutex_unlock(&b->lock);
}
int get(struct prodcons * b)
{
int data;
pthread_mutex_lock(&b->lock);
while (b->writepos == b->readpos) {
printf("wait for not empty\n");
pthread_cond_wait(&b->notempty, &b->lock);
}
data = b->buffer[b->readpos];
b->readpos++;
if (b->readpos >= BUFFER_SIZE) b->readpos = 0;
pthread_cond_signal(&b->notfull);
pthread_mutex_unlock(&b->lock);
return data;
}
void * producer(void * data)
{ int n;
for (n = 0; n < 1000; n++) {
printf(" put-->%d\n", n);
put(&buffer, n);
}
put(&buffer, OVER);
printf("producer stopped!\n");
return NULL;
}
void * consumer(void * data)
{ int d;
while (1) {
d = get(&buffer);
if (d == OVER ) break;
printf(" %d-->get\n", d);
}
printf("consumer stopped!\n");
return NULL;
}
int main(void)
{ pthread_t th_a, th_b;
void * retval;
init(&buffer);
pthread_create(&th_a, NULL, producer, 0);
pthread_create(&th_b, NULL, consumer, 0);
pthread_join(th_a, &retval);
pthread_join(th_b, &retval);
return 0;
}
4、設(shè)計(jì)一個(gè)Shell程序,在/userdata目錄下建立50個(gè)目錄,即user1~user50,并設(shè)置每個(gè)目錄的權(quán)限,其中其他用戶的權(quán)限為:讀;文件所有者的權(quán)限為:讀、寫、執(zhí)行;文件所有者所在組的權(quán)限為:讀、執(zhí)行。
答:
#!/bin/sh
i=1
while [ i -le 50 ]
do
if [ -d /userdata ];then
mkdir -p /userdata/user$i
chmod 754 /userdata/user$i
echo "user$i"
let "i = i + 1" (或i=$(($i+1))
else
mkdir /userdata
mkdir -p /userdata/user$i
chmod 754 /userdata/user$i
echo "user$i"
let "i = i + 1" (或i=$(($i+1))
fi
done
5、用變量a給出下面的定義
f) 一個(gè)指向整型數(shù)的指針(A pointer to an integer)
g) 一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數(shù)(A pointer to a pointer to an integer)
h) 一個(gè)有10個(gè)整型數(shù)的數(shù)組(An array of 10 integers)
i) 一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的(An array of 10 pointers to integers)
j) 一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針(A pointer to an array of 10 integers)
2、答:
a) int *a; // A pointer to an integer
b) int **a; // A pointer to a pointer to an integer
c) int a[10]; // An array of 10 integers
d) int *a[10]; // An array of 10 pointers to integers
e) int (*a)[10]; // A pointer to an array of 10 integers
6.根據(jù)下面給出的聲明和數(shù)據(jù),對(duì)每個(gè)表達(dá)式進(jìn)行求值并寫出他的值。在每個(gè)表達(dá)式進(jìn)行求值是使用原來(lái)給出的值(也就是說(shuō),某個(gè)表達(dá)式的結(jié)果不影響后面的表達(dá)式)。假定ints數(shù)組在內(nèi)存中的起始位置是100,整型值和指針的長(zhǎng)度都是4字節(jié)。
in tints[20]={
10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
110, 120, 130, 140, 150, 160, 170, 180, 190, 200
};
(Other declarations)
int *ip=ints+3;
表達(dá)式 |
值 |
ints |
__ |
ints[4] |
__ |
ip |
__ |
ip[4] |
__ |
*(ip+4) |
__ |
答:(每項(xiàng)1分)
表達(dá)式 |
值 |
ints |
__ |
Ints[4] |
_ |
ip |
__ |
ip[4] |
__ |
*(ip+4) |
__ |
7、由于Boot Loader的實(shí)現(xiàn)依賴于 CPU 的體系結(jié)構(gòu),因此大多數(shù)Boot Loader都分為 stage1 和 stage2 兩大部分。依賴于 CPU 體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在 stage1 中,而且通常都用匯編語(yǔ)言來(lái)實(shí)現(xiàn),以達(dá)到短小精悍的目的。而stage2 則通常用C語(yǔ)言來(lái)實(shí)現(xiàn),這樣可以實(shí)現(xiàn)給復(fù)雜的功能,而且代碼會(huì)具有更好的可讀性和可移植性。請(qǐng)根據(jù)你對(duì)嵌入式系統(tǒng)中bootloader的理解,簡(jiǎn)要設(shè)計(jì)一下stage1和stage2需要完成的功能。
參考答案:
BootLoader 的 stage1 通常包括以下步驟(以執(zhí)行的先后順序):(3分)
基本硬件設(shè)備初始化。
為加載 Boot Loader 的 stage2 準(zhǔn)備 RAM 空間。
拷貝 Boot Loader 的 stage2 到 RAM 空間中。
設(shè)置好堆棧。
跳轉(zhuǎn)到 stage2 的C入口點(diǎn)。
BootLoader 的 stage2 通常包括以下步驟(以執(zhí)行的先后順序): (3分)
初始化本階段要使用到的硬件設(shè)備。
檢測(cè)系統(tǒng)內(nèi)存映射(memory map)。
將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中。
為內(nèi)核設(shè)置啟動(dòng)參數(shù)。
調(diào)用內(nèi)核。
8、Qt/Embedded對(duì)嵌入式GUI提供了強(qiáng)大的支持,信號(hào)和插槽機(jī)制是QT的核心機(jī)制,使用QT實(shí)現(xiàn)如下界面的登陸程序,其原代碼如下所示,請(qǐng)回答如下問(wèn)題:
1)什么是Qt中的信號(hào)插槽機(jī)制?(3分)
2)應(yīng)用程序中用到了哪些控件,列舉2個(gè)并說(shuō)明該控件的特點(diǎn)?(4分)
3)根據(jù)注釋完成程序中相應(yīng)的語(yǔ)句?(4分)
#include
#include "window.h"
CWinDlg::CWinDlg(QWidget* parent) : QDialog(parent)
{
setWindowTitle("Example");
Edit1 = new QLineEdit;
Button1 = new QPushButton("OK");
Edit1->setEchoMode(QLineEdit::Password);
QVBoxLayout* Layout1 = new QVBoxLayout;
Layout1->addWidget(Edit1);
Layout1->addWidget(Button1);
(1) ;
(2) ;
}
CWinDlg::~CWinDlg()
{
delete Edit1;
delete Button1;
}
void CWinDlg::function()
{
if(Edit1->text() == "example")
{
QMessageBox::warning(this, "warning", "Pass!", QMessageBox::Yes);
}
else
{
QMessageBox::warning(this, "warning", "Error!", QMessageBox::Yes);
}
}
#include
#include "window.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
CWinDlg dlg;
return dlg.exec();
}
答案要點(diǎn):
1)什么是Qt中的信號(hào)插槽機(jī)制?與回調(diào)函數(shù)機(jī)制有何不同?(3分)
答案要點(diǎn):回調(diào)函數(shù)機(jī)制是事先將一個(gè)回調(diào)函數(shù)指針傳遞給一個(gè)處理過(guò)程,當(dāng)這個(gè)處理過(guò)程得到執(zhí)行時(shí),回調(diào)預(yù)先定義好的回調(diào)函數(shù)以期實(shí)現(xiàn)激活其他處理程序的目的。不同與回調(diào)函數(shù)機(jī)制,Qt提供了信號(hào)和插槽機(jī)制,信號(hào)是一個(gè)特定的標(biāo)識(shí);一個(gè)槽就是一個(gè)函數(shù),與一般函數(shù)不同,槽函數(shù)既能和信號(hào)關(guān)聯(lián),當(dāng)某個(gè)事件出現(xiàn)時(shí),通過(guò)發(fā)送信號(hào),可以將與之相關(guān)聯(lián)的槽函數(shù)激活,執(zhí)行相應(yīng)代碼。
2)應(yīng)用程序中用到了哪些控件,列舉2個(gè)并說(shuō)明該控件的特點(diǎn)?(4分)
答案要點(diǎn):應(yīng)用程序中用到的控件有(1)文本框控件Edit,文本框控件主要用來(lái)顯示或接收用戶的輸入信息。(2)按鈕控件Button,按鈕控件主要響應(yīng)用戶單擊功能。
3)根據(jù)注釋完成程序中相應(yīng)的語(yǔ)句?(4分)
(1)setLayout(Layout1);
(2)connect(Button1, SIGNAL(clicked()), this, SLOT(function()));
9、 在Linux操作系統(tǒng)下,完成下列任務(wù):
1、 編程實(shí)現(xiàn)以下功能
² 主程序hello.c(打印Hello World!)
² 主程序通過(guò)頭文件hello.h調(diào)用message函數(shù)
² 頭文件hello.h(聲明message函數(shù))
² message函數(shù)由message.c定義(打印This is a message!)
1、答:
hello.c:
# include
# include
# include
# include "head.h"
int main (int argc,char *argv[])
{
printf("Hello World!\n");
message();
return 0;
}
head.h:
void message(void);
message.c:
# include
void message (void){
printf("This is a message!\n");
}
10. 用C語(yǔ)言編寫一個(gè)源程序main.c,(1)用以在打開當(dāng)前目錄下的文件“test.txt”,如果沒(méi)有創(chuàng)建該文件,并使其具有讀寫屬性,(2)編寫一個(gè)makefile實(shí)現(xiàn)自動(dòng)編譯,生成可執(zhí)行文件main。注:頭文件可忽略。
1、
(1)(5分)
Void main(void)
{
int fid;
fid = open(“./test.txt”,O_RDWR|O_CREAT);
if(fid==-1)
{
Printf(“open or create error \n”);
exit(0);
}
Close(fid);
}
(2)(5分)
objects = main.o
exec = main
all:$(objects)
gcc –o $(exec) $(objects)
main.o:main.c
gcc –c main.c
clean:
rm –r $(exec) $(objects)
11、假如你需要設(shè)計(jì)并編寫一個(gè)音頻采集程序。該程序每50ms采集一次數(shù)據(jù),大小為1480個(gè)字節(jié)。為了進(jìn)一步壓縮處理的需要,你需要建立一個(gè)能夠至少保存5次所采集數(shù)據(jù)的緩存,該緩存的大小會(huì)根據(jù)系統(tǒng)的負(fù)載情況動(dòng)態(tài)調(diào)整。請(qǐng)利用你所學(xué)的C語(yǔ)言內(nèi)存管理及相關(guān)數(shù)據(jù)結(jié)構(gòu)的知識(shí),設(shè)計(jì)一個(gè)緩存結(jié)構(gòu),包括其內(nèi)存分配的形式(如堆、棧等)及其組織結(jié)構(gòu)(如數(shù)組、鏈表等)。
參考答案:
堆適合大塊連續(xù)內(nèi)存的分配,需要自行管理(2分)
棧適合小塊局部使用內(nèi)容的分配,程序自動(dòng)管理(2分)
數(shù)組查找快,但大小固定,而鏈表正好相反。(2分)
題目需要大容量存儲(chǔ),且需要?jiǎng)討B(tài)改變大小,因此可設(shè)計(jì)為采用動(dòng)態(tài)(堆)分配的鏈表型緩存結(jié)構(gòu)。每個(gè)鏈表節(jié)點(diǎn)為1480B。(4分)
12、 假定你在目錄/home/arm下有一個(gè)C程序,他由幾個(gè)單獨(dú)的文件組成,而這幾個(gè)文件又分為包含了其他文件,如下圖所示:
文件 |
包含文件 |
main.c |
stdio.h, table.h |
list.c |
list.h |
symbol.c |
symbol.h |
table.c |
table.h |
table.h |
symbol.h, list.h |
完成下列任務(wù):
1. 編寫makefile文件,最終的目標(biāo)文件為hello(交叉編譯器為arm-linux-gcc)
2. 在目標(biāo)機(jī)上通過(guò)網(wǎng)絡(luò)文件系統(tǒng)掛載/mnt 到宿主機(jī)上的/home/arm目錄
1、答:
hello: main.o list.o symbol.o table.o
gcc -o prog main.o list.o symbol.o table.o
main.o: main.c table.h symbol.h list.h
gcc -c -o main.o main.c
list.o: list.c list.h
gcc -c -o list.o list.c
symbol.o: symbol.c symbol.h
gcc -c -o symbol.o symbol.c
table.o: table.c table.h symbol.h list.h
gcc -c -o table.o table.c
clean:
rm hello *.o
2、Mount –t nfs –o noclock 192.168.0.10:/home/armtest/hello /mnt
13、假如你需要設(shè)計(jì)一個(gè)BootLoader,在具體開發(fā)之前,你需要確定哪幾個(gè)主要問(wèn)題?
參考答案:
需要考慮的問(wèn)題:(1)與主機(jī)連接的方式(2)硬件CPU類型,如何初始化(3)內(nèi)存空間大小以及如何使用 (4)內(nèi)核運(yùn)行前需要準(zhǔn)備哪些條件(5)BootLoader需要支持幾種模式。(每點(diǎn)各2分)
14、Linux系統(tǒng)中線程的同步方式有互斥量、信號(hào)量和條件變量等。假設(shè)現(xiàn)在需要設(shè)計(jì)一個(gè)多線程的應(yīng)用程序,試分析一下以上幾種同步方式分別可在什么場(chǎng)合下使用。
參考答案:
Mutex互斥量,用于操作某個(gè)臨界資源時(shí)對(duì)該資源上鎖,以實(shí)現(xiàn)互斥地對(duì)獨(dú)占資源的使用(3分)
Semophore信號(hào)燈,信號(hào)燈內(nèi)有一計(jì)數(shù)器,可以用于對(duì)多個(gè)同類資源的分配。當(dāng)資源用完時(shí),申請(qǐng)資源的線程會(huì)在信號(hào)量上睡眠,有線程釋放資源時(shí),再將該線程喚醒繼續(xù)運(yùn)行。(3分)
Condition條件變量,條件變量用于等待信號(hào)。當(dāng)一個(gè)線程需要等待某個(gè)信號(hào)時(shí),就可到條件變量上等待,當(dāng)信號(hào)具備時(shí),系統(tǒng)會(huì)喚醒該線程繼續(xù)運(yùn)行。(4分)
15、進(jìn)程間通信的方式有多種,假設(shè)需要在Linux系統(tǒng)上設(shè)計(jì)本地運(yùn)行的兩個(gè)進(jìn)程,一個(gè)負(fù)責(zé)采集視頻,另一個(gè)負(fù)責(zé)播放。試為兩者設(shè)計(jì)一種數(shù)據(jù)的通信方式。進(jìn)一步考慮當(dāng)兩個(gè)進(jìn)程處于不同機(jī)器上時(shí),需要采用的通信方式。說(shuō)明你的設(shè)計(jì)理由。
參考答案:
本地:共享內(nèi)存+信號(hào)量, 適合于大量數(shù)據(jù)傳輸。Linux支持系統(tǒng)V和POSIX的共享內(nèi)存和信號(hào)量。(5分)
遠(yuǎn)程:Socket+應(yīng)用協(xié)議。適合于跨網(wǎng)絡(luò)的(大量)數(shù)據(jù)傳輸。Linux支持BSD的socket。應(yīng)用層協(xié)議需要自行設(shè)計(jì)。(5分)
【嵌入式軟件助理工程師認(rèn)證考試試題題庫(kù)】相關(guān)文章:
嵌入式助理工程師認(rèn)證考試題庫(kù)及答案06-21
2016年嵌入式硬件助理工程師認(rèn)證考試試題題庫(kù)06-18
IBM認(rèn)證考試題庫(kù)06-16
adobe indesign認(rèn)證考試題庫(kù)05-11
Adobe Photoshop認(rèn)證考試題庫(kù)08-24