亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

嵌入式軟件助理工程師認(rèn)證考試試題題庫(kù)

時(shí)間:2023-01-21 09:30:41 嵌入式培訓(xùn) 我要投稿
  • 相關(guān)推薦

2016年嵌入式軟件助理工程師認(rèn)證考試試題題庫(kù)

  嵌入式系統(tǒng)無(wú)疑是當(dāng)前最熱門最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。下面一起來(lái)看看嵌入式軟件助理工程師的筆試考試題及答案吧!

2016年嵌入式軟件助理工程師認(rèn)證考試試題題庫(kù)

  一、單項(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

__     100   ____

Ints[4]

    50   ____

ip

__  112 ____

ip[4]

__  80 ____

*(ip+4)

__   80____

  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

__     100   ____

Ints[4]

    50   ____

ip

__  112 ____

ip[4]

__  80 ____

*(ip+4)

__   80____

  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

嵌入式助理工程師認(rèn)證考試題庫(kù)及答案06-21

2016年嵌入式硬件助理工程師認(rèn)證考試試題題庫(kù)06-18

Photoshop認(rèn)證考試題庫(kù)08-30

IBM認(rèn)證考試題庫(kù)06-16

adobe indesign認(rèn)證考試題庫(kù)05-11

Adobe Photoshop認(rèn)證考試題庫(kù)08-24

Adobe Illustrator認(rèn)證考試題庫(kù)08-24

Oracle OCP認(rèn)證考試題庫(kù)05-18