亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

嵌入式培訓(xùn)

嵌入式軟件助理工程師認證考試試題題庫

時間:2024-08-27 09:31:23 嵌入式培訓(xùn) 我要投稿
  • 相關(guān)推薦

2016年嵌入式軟件助理工程師認證考試試題題庫

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

2016年嵌入式軟件助理工程師認證考試試題題庫

  一、單項選擇題

  1、如下哪一個命令可以幫助你知道shell命令的用法( A )

  A. man B. pwd C. help D. more

  2、在大多數(shù)Linux發(fā)行版本中,以下哪個屬于塊設(shè)備 ( B )

  A. 串行口 B. 硬盤 C. 虛擬終端 D. 打印機

  3、下面哪個命令行可用來馬上重新啟動正在運行的Linux系統(tǒng)?( D )

  A. restart --delay=0 B. reboot -w

  C. halt -p D. shutdown -r now

  4、在Linux系統(tǒng),默認的shell是什么( A )

  A.bash B.ash C.csh D.gnush

  5、下面哪條命令可用來確保文件“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”命令添加一個用戶,這個用戶的主目錄是什么( A )

  A./home/jerry B./bin/jerry

  C./var/jerry D./etc/jerry

  8、Linux文件權(quán)限一共10位長度,分成四段,第三段表示的內(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具有的功能和特點的是 ( A )

  A.管道 B.輸入輸出重定向

  C.執(zhí)行后臺進程 D.處理程序命令

  12、在ARM處理器的各種工作模式中,( A )模式無法訪問一些被保護的系統(tǒng)資源。20100626年徐遠超

  A. 用戶模式(user) B.系統(tǒng)模式(system) C. 中斷模式(IRQ) D.終止模式(Abort)

  13、如何從當(dāng)前系統(tǒng)中卸載一個已裝載的文件系統(tǒng)( A )

  A. umount B. dismount

  C. mount –u D. 從 /etc/fstab 中刪除這個文件系統(tǒng)項

  14、你用vi編輯器編寫了一個腳本文件shell.sh,你想將改文件名稱修改為shell2.sh,下列命令( B )可以實現(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 )可實現(xiàn)在后臺執(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è)備文件類型的標志是 ( B )

  A. p B. c C. s D. l

  17、刪除文件命令為( D )

  A. mkdir B. rmdir C. mv D. rm

  18、( B )命令可更改一個文件的權(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. 符號鏈接

  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)存之間進行地址轉(zhuǎn)換時,( B )將地址從虛擬(邏輯)地址空間映射到物理地址空間。

  A、TCB B、MMU C、CACHE D、DMA

  23、Linux將存儲設(shè)備和輸入/輸出設(shè)備均看做文件來操作,(C)不是以文件的形式出現(xiàn)。

  A. 目錄 B. 軟鏈接

  C. i節(jié)點表 D. 網(wǎng)絡(luò)適配器

  24、關(guān)于文件系統(tǒng)的安裝和卸載,下面描述正確的是(A)。

  A. 如果光盤未經(jīng)卸載,光驅(qū)是打不開的

  B. 安裝文件系統(tǒng)的安裝點只能是/mnt下

  C. 不管光驅(qū)中是否有光盤,系統(tǒng)都可以安裝CD-ROM設(shè)備

  D. mount /dev/fd0 /floppy 此命令中目錄/floppy是自動生成的

  25、為了查看Linux啟動信息,可以用(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、下列說法正確的是(D)

  A. ln -s a.txt b.txt,作用是制作文件b.txt的符號鏈接,其名稱為a.txt

  B. df命令可以查看當(dāng)前目錄占用磁盤空間的大小

  C. comm命令打印兩個文本文件中的相同的內(nèi)容

  D. rm命令可以用來刪除目錄

  29、有如下的命令:$dd if=f1 of=f2。其中if=f1表示(A)

  A. 以f1作為源文件,代替標準輸入

  B. 以f1作為目標文件,代替標準輸出

  C. 當(dāng)條件滿足f1的時候,執(zhí)行真正的拷貝

  D. 拷貝的過程中,不轉(zhuǎn)化文件

  30、為了查找出當(dāng)前用戶運行的所有進程的信息,我們可以使用(B)命令:

  A. ps -a B. ps -u C. ls -a D. ls –l

  31、為保證在啟動服務(wù)器時自動啟動DHCP進程,應(yīng)對( B )文件進行編輯。

  A、 /etc/rc.d/rc.inet2 B、/etc/rc.d/rc.inet1

  C、/etc/dhcpd.conf D、/etc/rc.d/rc.S

  32、文件exer1的訪問權(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以及下面的所有子目錄和文件,并不要求提示任何確認信息的命令是(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、在安裝開始前,用光盤啟動系統(tǒng),想要進入字符界面安裝,需要輸入的命令是( 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、怎樣新建一個新文件:( A )

  a.touch hello.c b.mk hello.c c.rm hello.c d.new hello.c

  38、在bash命令中,當(dāng)用( B )參數(shù)時,表示bash是交互的。

  A、-c B、-i C、-s D、-d

  39、重定向的符號“>"表示:( C )

  A、輸出追加 B、輸入追加 C、輸出重定向,原來的文件會被改寫 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、下列對shell變量FRUIT操作,正確的是( C )

  A、為變量賦值:$FRUIT=apple    B、顯示變量的值:fruit=apple

  C、顯示變量的值:echo $FRUIT   D、判斷變量是否有值:[ -f “$FRUIT” ]

  43、一般可以用( C )實現(xiàn)自動編譯。

  A、gcc B、gdb * C、make D、 vi

  44、處理機主要由處理器、存儲器和總線組成,總線包括( 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,實際執(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)核的版本號)

  C. /usr/lib

  D. /usr/local/lib

  47、Linux分區(qū)默認的文件系統(tǒng)的類型是:( B )

  A. vfat B. ext2/ext3 C. swap D. dos

  48. 文件之間可以建立兩種鏈接關(guān)系:軟鏈接和硬鏈接,硬鏈接的特點是(C)

  A. 等同于文件復(fù)制操作

  B. 類似于文件復(fù)制,但新的鏈接文件并不占用文件磁盤存儲空間

  C. 刪除源文件,將使其他鏈接文件失效

  D. 可以對目錄文件名建立硬鏈接

  49. 下面哪一個選項不是linux系統(tǒng)的進程類型(D)

  A. 交互進程

  B. 批處理進程

  C. 守護進程

  D. 就緒進程

  50、下面( B )特性不符合嵌入式操作系統(tǒng)特點。

  A、實時性 B、不可定制

  C、微型化 D、易移植

  51、下面關(guān)于C語言程序的描述,正確的是(  C  )。

  A、總是從第一個定義的函數(shù)開始執(zhí)行

  B、要調(diào)用的函數(shù)必須在main()函數(shù)中定義

  C、總是從main()函數(shù)開始執(zhí)行

  D、main()函數(shù)必須放在程序的開始

  52、在FTP協(xié)議中,控制連接是由( B )主動建立的。

  A、服務(wù)器端 B、客戶端

  C、操作系統(tǒng) D、服務(wù)提供商

  53、嵌入式系統(tǒng)由硬件部分和軟件部分構(gòu)成,以下不屬于嵌入式系統(tǒng)軟件的是C。

  A) 系統(tǒng)內(nèi)核 B) 驅(qū)動程序 C) FPGA編程軟件 D)嵌入式中

  54、當(dāng)我們與某遠程網(wǎng)絡(luò)連接不上時,就需要跟蹤路由查看,以便了解在網(wǎng)絡(luò)的什么位置出現(xià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,下列哪個命令實現(xiàn)了將位于 192.168.1.4機器上的 /opt/sirnfs 目錄掛載到本機/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相比,下面哪一項不屬于RISC處理器的特征_ D

  A、采用固定長度的指令格式,指令規(guī)整、簡單、基本尋址方式有2~3種。

  B、減少指令數(shù)和尋址方式,使控制部件簡化,加快執(zhí)行速度。

  C、數(shù)據(jù)處理指令只對寄存器進行操作,只有加載/存儲指令可以訪問存儲器,以提高指令的執(zhí)行效率,同時簡化處理器的設(shè)計。

  D、RISC處理器都采用哈佛結(jié)構(gòu)

  58、在下列ARM處理器的各種模式中,__D___模式有自己獨立的R8-R14寄存器。

  A、系統(tǒng)模式(System)、

  B、終止模式(Abort)

  C、中斷模式(IRQ)

  D、快中斷模式(FIQ)

  59、按照ARM過程調(diào)用標準(APCS),棧指針使用_B___寄存器,

  A、R0 B、R13 C、R14 D、R15

  60、在ARM體系結(jié)構(gòu)中,_C___寄存器作為連接寄存器,當(dāng)進入子程序時或者處理器響應(yīng)異常的時候,用來保存PC的返回值;_C___寄存器作為處理器的程序計數(shù)器指針。

  A、R0,R14 B、R13,R15 C、R14,R15 D、R14,R0

  61、在ARM體系結(jié)構(gòu)中,要從主動用戶模式(User)切換到超級用戶模式(Supervisor),應(yīng)采用何種方法?C

  A、直接修改CPU狀態(tài)寄存器(CPSR)對應(yīng)的模式

  B、先修改程序狀態(tài)備份寄存器(SPSR)到對應(yīng)的模式,再更新CPU狀態(tài)

  C、使用軟件中斷指令(SWI)

  D、讓處理器執(zhí)行未定義指令

  62、下面關(guān)于MMU和Linux描述錯誤的是:C

  A、MMU是內(nèi)存管理單元Memory Management Unit的縮寫

  B、uClinux可以運行在有MMU的處理器上

  C、Linux內(nèi)核功能強大,內(nèi)存管理功能豐富,即使在沒有MMU的處理器上,也可以通過軟件實現(xiàn)地址映射。

  D、Linux系統(tǒng)正是利用MMU,才能使得各個進程有獨立的尋址空間

  63、DNS域名系統(tǒng)主要負責(zé)主機名和( A )之間的解析。

  A、IP地址 B、MAC地址

  C、網(wǎng)絡(luò)地址 D、主機別名

  64、在vi編輯器中的命令模式下,重復(fù)上一次對編輯的文本進行的操作,可使用( C )命令。

  A、上箭頭 B、下箭頭 C、<.> D、<*>

  65、進程有三種狀態(tài):( C )。

  A 、準備態(tài)、執(zhí)行態(tài)和退出態(tài) B 、精確態(tài)、模糊態(tài)和隨機態(tài)

  C 、運行態(tài)、就緒態(tài)和等待態(tài) D 、手工態(tài)、自動態(tài)和自由態(tài)

  66、下列變量名中有效的shell變量名是( C )。

  A、-1-time B、_2$3

  C、bo_chuang_1 D、2009file

  67、文件系統(tǒng)的主要功能是( A )。

  A、實現(xiàn)對文件的按名存取 B、實現(xiàn)虛擬存儲

  C、 提高外存的讀寫速度 D、用于保存系統(tǒng)文檔

  68、在ARM Linux體系中,用來處理外設(shè)中斷的異常模式是__C____

  A、軟件中斷(SWI) B、未定義的指令異常

  C、中斷請求(IRQ) D、快速中斷請求(FIQ)

  69、在Linux系統(tǒng)中,驅(qū)動程序注冊中斷處理程序的函數(shù)是_B____

  A、trap_init B、request_irq

  C、enable_irq D、register_irq

  70、在ARM Linux系統(tǒng)中,中斷處理程序進入C代碼以后,ARM的處于__A__工作模式

  A、超級用戶(SVC) B、中斷(IRQ)

  C、快速中斷(IRQ) D、和進入中斷之前的狀態(tài)有關(guān)系

  71、在ARM體系構(gòu)建的嵌入式系統(tǒng)中,由電平模式觸發(fā)的中斷,其對應(yīng)的中斷標準應(yīng)該在何時被清除?A

  A、當(dāng)中斷處理程序結(jié)束以后,才可以清除

  B、進入相應(yīng)的中斷處理程序,即可以清除

  C、產(chǎn)生IRQ中斷的時候,處理器自動清除

  D、任何時候都可以清除

  72、在操作系統(tǒng)中,Spooling技術(shù)是用一類物理設(shè)備模擬另一類物理設(shè)備的技術(shù),實現(xiàn)這種技術(shù)的功能模塊稱做( B )。

  A、可林斯系統(tǒng) B、斯普林系統(tǒng)

  C、圖靈機系統(tǒng) D、虛擬存儲系統(tǒng)

  73、通過修改下面文件哪個文件 ,可以設(shè)定開機時候自動安裝的文件系統(tǒng)(C )

  A. /etc/mta B. /etc/fastboot

  C. /etc/fstab D. /etc/inetd.conf

  74、下面關(guān)于Shell的說法,不正確的是: (D)

  A. 操作系統(tǒng)的外殼

  B. 用戶與Linux內(nèi)核之間的接口程序

  C. 一個命令語言解釋器

  D. 一種和C類似的程序語言

  75、init可執(zhí)行文件通常存放在( C )目錄中。

  A./etc B./boot

  C./sbin D./root

  76、假設(shè)root用戶執(zhí)行“init 0”命令,系統(tǒng)將會( B )。

  A.暫停 B.關(guān)機 C.重新啟動 D.初始化

  77、嵌入式系統(tǒng)應(yīng)用軟件一般在宿主機上開發(fā),在目標機上運行,因此需要一個( B )環(huán)境。

  A、交互操作系統(tǒng) B、交叉編譯

  C、交互平臺 D、分布式計算

  78、已知有變量data1定義如下:C

  union data

  { int i;

  char ch;

  float f;

  } data1;

  則變量data1所占的內(nèi)存存儲空間可表示為。

  A、sizeof(int) B、sizeof(char)

  C、sizeof(float) D、sizeof(int)+sizeof(char)+sizeof(float)

  79、軟件開發(fā)模型給出了軟件開發(fā)活動各階段之間的關(guān)系,( D )不是軟件開發(fā)模型。

  A、瀑布模型 B、螺旋模型

  C、原型模型 D、程序模型

  80、實時操作系統(tǒng)(RTOS)內(nèi)核與應(yīng)用程序之間的接口稱為( C )。

  A、輸入/輸出接口 B、文件系統(tǒng)

  C、API D、圖形用戶接口

  81、在操作系統(tǒng)中,除賦初值外,對信號量僅能操作的兩種原語是( 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__個主要用來標識CPU的工作狀態(tài)和程序的運行狀態(tài)的狀態(tài)寄存器。

  A、7、7 B、7、6 C、6、6 D、6、7

  84、已知Linux系統(tǒng)中的唯一一塊硬盤是第一個IDE接口的master設(shè)備,該硬盤按順序有3個主分區(qū)和一個擴展分區(qū),這個擴展分區(qū)又劃分了3個邏輯分區(qū),則該硬盤上的第二個邏輯分區(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)(不重新啟動)可使用命令 B 。

  A) Ctrl+Alt+Del B) halt C) shutdown -r now D) reboot

  88、在vi編輯器中的命令模式下,鍵入 B 可在光標當(dāng)前所在行下添加一新行。

  A) “a” B) “o” C) “I” D) A

  89、重定向的符號“>>"表示:( A )

  A、輸出追加 B、輸入追加 C、輸出重定向,原來的文件被改寫 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會影響系統(tǒng)性能的情況是: A 。

  A) CPU已滿負荷地運轉(zhuǎn) B) CPU的運行效率為30%

  C) CPU的運行效率為50% D) CPU的運行效率為80%

  93、在使用GCC編譯器的過程中,以下(B)選項可用來指定生成的目標文件名

  A.-c B.-o C.-S D.-E

  94、下面哪一個選項不是linux系統(tǒng)的調(diào)度策略(D)

  A. SCHED_NORMAL

  B. SCHED_FIFO

  C. SCHED_RR

  D. SCHED_LRU

  95、為了使用生成的目標文件能夠用于gdb調(diào)試,在編譯時GCC應(yīng)使用(C)選項。

  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和軟盤必須是自動加載的

  C. fstab文件中描述的文件系統(tǒng)不能被卸載

  D 啟動時按fstab文件描述內(nèi)容加載文件系統(tǒng)

  98. ARM嵌入式系統(tǒng)中,PC指向的是正在(C )的指令地址。

  A 執(zhí)行 B 譯碼 C 取指 D 都不是

  99. ARM系統(tǒng)處理16-bit數(shù)據(jù)時,對應(yīng)的數(shù)據(jù)類型是( B )。

  A Byte B Halfword C Word D 三者都不是

  100. 實時系統(tǒng)是指( B )

  A 響應(yīng)快的系統(tǒng) B 時間約束的系統(tǒng) C 單任務(wù)系統(tǒng) D 內(nèi)核小的系統(tǒng)

  101. 下面屬于blob運行過程第一階段的是(C)

  A 外圍的硬件初始化(串口,USB等);

  B 根據(jù)用戶選擇,進入命令行模塊或啟動kernel。

  C 寄存器的初始化

  D 堆棧的初始化

  答案:C第一階段的代碼在start.s中定義,大小為1KB,它包括從系統(tǒng)上電后在0x00000000地址開始執(zhí)行的部分。這部分代碼運行在Flash中,它包括對S3C44B0的一些寄存器的初始化和將Blob第二階段代碼從Flash拷貝到SDRAM中。

  102.下列幾種流行的嵌入式GUI中,沒有采用分層設(shè)計的一種是: 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編譯器時有如下命令:Gcc–g test.c –o test,其中參數(shù)-g的作用是(D)

  A .生成目標文件test.o B.生成匯編文件test.s C .進行預(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ù)雜指令計算機 B 并行機 C 精簡指令計算機 D 多處理器計算機

  109、NFS服務(wù)器通過調(diào)用/etc/rc.d/init.d中的portmap和nfs腳本啟動,啟動后它將通過尋找本地服務(wù)器的 D文件,向網(wǎng)絡(luò)上的子機提供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、表達式A⊕B實現(xiàn)的功能是(C)

  A 邏輯與 B 邏輯非 C 邏輯異或 D邏輯或

  112、嵌入式系統(tǒng)的開發(fā)通常是在交叉開發(fā)環(huán)境實現(xiàn)的,交叉開發(fā)環(huán)境是指( A )

  A 在宿主機上開發(fā),在目標機上運行 B在目標機上開發(fā),在宿主機上運行

  C 在宿主機上開發(fā),在宿主機上運行 D在目標機上開發(fā),在目標機上運行

  113、對于所有用戶都只能讀的文件權(quán)限是( B )

  a.777 b.444 c.644 d.640

  114、在ARM Linux啟動的過程中,開啟MMU的時候,如何實現(xiàn)從實地址空間到虛擬地址空間的過度?D

  A、開啟MMU,在內(nèi)存中創(chuàng)建頁表(映射內(nèi)核到3G以上的虛擬地址空間)并繼續(xù)運行。

  B、開啟MMU,在內(nèi)存中創(chuàng)建頁表(映射內(nèi)核到3G以上的虛擬地址空間),跳轉(zhuǎn)到虛擬地址空間繼續(xù)運行。

  C、在內(nèi)存中創(chuàng)建頁表(映射內(nèi)核到3G以上的虛擬地址空間),開啟MMU,跳轉(zhuǎn)到虛擬地址空間繼續(xù)運行。

  D、在內(nèi)存中創(chuàng)建頁表(映射內(nèi)核到3G以上的虛擬地址空間,同時把內(nèi)核所在的前1MB空間到和其實地址相同的虛擬地址空間),開啟MMU,跳轉(zhuǎn)到虛擬地址空間繼續(xù)運行。

  115、在ARM體系中,MMU的第一級描述符有___項,每個描述符占用____字節(jié)

  A、1024,32 B、4096,4

  C、4096,4 D、1024,32

  答案:C(B和C一樣的,A和D是一樣的)

  116、在ARM體系中,下面MMU的一級描述符中,是節(jié)描述符的是_A___

  A、0xA0000C0E B、0xA0000C0F

  C、0x00000000 D、0xC0000C01

  117、init進程是內(nèi)核在完成核內(nèi)引導(dǎo)以后加載的,它是系統(tǒng)所有進程的起點,進程號為1,在執(zhí)行過程中,首先會讀取( C )文件。20100626徐遠超

  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)先級最高的是(D )。

  A Data abort B FIQ C IRQ D Reset

  120、指令LDR R0,[R4]對源操作數(shù)的尋址方式是( A )

  A 寄存器間接尋址 B寄存器尋址 C立即數(shù)尋址 D 相對尋址

  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進程,描述不正確的是:(A)

  A. 一個通用進程

  B. 可以產(chǎn)生新的進程

  C. 在某些程序退出的時候能重起它們

  D. 負責(zé)在系統(tǒng)啟動的時候運行一系列程序和腳本文件

  123、哈佛結(jié)構(gòu)和馮諾依曼結(jié)構(gòu)的區(qū)別是( A)

  A 指令和數(shù)據(jù)分開存儲 B 不需要程序計數(shù)器 C 統(tǒng)一編址 D 單一數(shù)據(jù)總線

  124、fstab文件存放在(A)目錄中。

  A./etc B./boot

  C./sbin D./root

  125、Linux系統(tǒng)運行級別5工作在(D)狀態(tài)。

  A.單用戶字符模式 B.多用戶字符模式

  C.單用戶圖形模式 D.多用戶圖形模式

  126、Linux文件權(quán)限一共10位長度,分成四段,第二段表示的內(nèi)容是( B )

  A.文件類型 B .文件所有者的權(quán)限

  C. 文件所有者所在組的權(quán)限 D. 其他用戶的權(quán)限

  127、啟動init進程前,不需要經(jīng)過(D)步驟。

  A.加載內(nèi)核 B.檢測內(nèi)存

  C.加載文件系統(tǒng) D.啟動網(wǎng)絡(luò)支持

  128、哪條命令可以顯示文件系統(tǒng)使用硬盤空間的情況?(B)20100616徐遠超

  A.ls   B.df C.du   D.Mount

  129、能在Linux下,用mkfs.jffs2命令創(chuàng)建JFFS2文件系統(tǒng)(基本上是使用JFFS2的Ramdisk),關(guān)于mkfs.jffs2下列說法錯誤的是: (C)

  A.-e 選項確定閃存的擦除扇區(qū)大小(通常是 64 千字節(jié))

  B.-p 選項用來在映像的剩余空間用零填充。

  C.-f 選項用于輸出文件,通常是 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個字節(jié) B 9600個比特 C 9600個字 D 9600個字符

  131、ARM9和ARM7的重要區(qū)別是(A )

  A ARM9帶有MMU功能 B ARM9支持Thumb指令集

  C ARM9帶有Cache功能 D ARM9是哈佛結(jié)構(gòu)

  132、在使用文件通配符對文件名操作時?號表示(A)

  A. 只與一個任意的字符匹配

  B. 只與一個任意的字母匹配

  C. 只與一個任意的數(shù)字匹配

  D. 匹配于任意字符的組合

  133、 在安裝Linux的過程中的第五步是讓用戶選擇安裝方式,如果用戶希望安裝部分組件(軟件程序),并在選擇好后讓系統(tǒng)自動安裝,應(yīng)該選擇的選項是 D 。

  A) full B) expert C) newbie D) menu

  134、當(dāng)系統(tǒng)工作負載增加時,CPU的 A 將占很大比重

  A) 用戶時間 B)系統(tǒng)時間 C)空閑時間、 D) 進程時間

  135、fsck對文件系統(tǒng)的檢查最先是從文件系統(tǒng)的 C 開始的

  A) MBR B) 磁盤塊 C) 超級塊 D) 塊鏈表

  136、關(guān)于RISC指令系統(tǒng)描述不正確的是( A )。

  A、指令條數(shù)多 B、指令長度固定

  C、指令格式種類少 D、尋址方式種類少

  137、對ARM7微處理器說法不正確的是( 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ù)器的進程由B 兩部分組成 。

  A) named和sendmail B) smbd和nmbd C) bootp和dhcpd D) httpd和squid

  140、如果數(shù)據(jù)的存儲格式是大端模式,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è)置代理服務(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ǎng)絡(luò)管理工作可靠進行的安全問題和保護網(wǎng)絡(luò)用戶及網(wǎng)絡(luò)管理對象問題。 C 屬于安全管理的內(nèi)容。

  A) 配置設(shè)備的工作參數(shù) B) 收集與網(wǎng)絡(luò)性能有關(guān)的數(shù)據(jù)

  C) 控制和維護訪問權(quán)限 D) 監(jiān)測故障

  143、 B 命令是在vi編輯器中執(zhí)行存盤退出。

  A ) q B ) wq C) q! D) WQ

  144、下列哪個命令以文本菜單方式界面配置內(nèi)核選項: 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í)行,無輸出結(jié)果 B、 5

  C、1 D、不確定的隨機值

  147、終止一個前臺進程可能用到的命令和操作是(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 )可以實現(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)前一個命令執(zhí)行出錯時才執(zhí)行后一條命令,需要采取的操作是:(C)

  A. command1 && command2

  B. command1 XOR command2

  C. command1 || command2

  D. command1 << command2

  154、具有很多C語言的功能,又稱過濾器的是 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。主機192.168.1.20訪問172.16.1.0/24網(wǎng)絡(luò)時,其路由設(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ū)動程序時 B) 升級內(nèi)核時 C) 添加新硬件時 D)將網(wǎng)卡激活

  157、 內(nèi)核不包括的子系統(tǒng)是 D 。

  A) 進程管理系統(tǒng) B) 內(nèi)存管理系統(tǒng) C) I/O管理系統(tǒng) D)硬件管理系統(tǒng)

  158、請選擇正確的命令( 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)前動態(tài)加載的模塊清單,會把當(dāng)前插入的所有內(nèi)核模塊都列出來。

  A、insmod B、rmmod

  C、dmesg D、lsmod

  160、下面對于Bootloader的描述不正確的是(C)

  A、是上電后運行的第一個程序 B、改變系統(tǒng)時鐘

  C、Bootloader的兩種模式對開發(fā)人員沒有意義 D、向內(nèi)核傳遞啟動參數(shù)

  161、符號“|"在shell命令中表示:( D )

  A、輸出追加 B、輸入追加 C、輸出重定向,原來的文件被改寫 D、管道

  162、通常所說的32位微處理器是指 C 。

  A) 地址總線的寬度為32位     B) 處理的數(shù)據(jù)長度只能為32位

  C) CPU 字長為32位      D) 通用寄存器數(shù)目為32個

  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ā)進程均將一個共享變量count 中的值加1 一次,那么有關(guān)count 中的值說法正確的是:______ 。(C )

  A、肯定有不正確的結(jié)果

  B、肯定有正確的結(jié)果

  C、若控制這些并發(fā)進程互斥執(zhí)行count 加1 操作,count 中的值正確

  D、A,B,C 均不對

  165、使用Vim作為文本編輯器,在指令模式下要將光標移動到文檔的最后一行的命令是(C)。

  A、0 B、$

  C、G D、GG

  166、已知某用戶stud1,其用戶目錄為/home/stud1。如果當(dāng)前目錄為/home,進入目錄/home/stud1/test的命令是 ()。

  A 、cd test B、cd /stud1/test

  C、 cd stud1/test D、cd home

  167.如果想配置一臺匿名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語言實現(xiàn),以完成復(fù)雜的功能,并增加可讀性和可移植性,以下哪一步驟屬于stage2的內(nèi)容:__D____

  A . 為加載 Boot Loader 的 stage2 準備 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、一個文件名字為rr.Z,可以用來解壓縮的命令是: D 。

  A) tar B) gzip C) compress D) uncompress

  172、在使用ln建立鏈接時,為了跨越不同的文件系統(tǒng),需要使用(B )。

  A.普通鏈接 B.硬鏈接

  C.特殊鏈接 D.軟鏈接

  173、( B )不是進程和程序的區(qū)別。

  A. 程序是一組有序的靜態(tài)指令,進程是一次程序的執(zhí)行過程

  B. 程序只能在前臺運行,而進程可以在前臺或后臺運行

  C. 程序可以長期保存,進程是暫時的

  D. 程序沒有狀態(tài),而進程是有狀態(tài)的

  174、PV操作是在(D )上的操作。

  A、臨界區(qū) B、進程

  C、緩沖區(qū) D、信號量

  175.在TCP/IP模型中,應(yīng)用層包含了所有的高層協(xié)議,在下列的一些應(yīng)用協(xié)議中, B 是能夠?qū)崿F(xiàn)本地與遠程主機之間的文件傳輸工作。

  A) telnet B) FTP C) SNMP D) NFS

  176、中斷向量是指(C ) 。

  A、中斷斷點的地址 B、中斷向量表起始地址

  C、中斷處理程序入口地址 D、中斷返回地址

  177、 如果Boot Loader、內(nèi)核、啟動參數(shù)以及其他的系統(tǒng)映像四部分在固態(tài)存儲設(shè)備上分別獨立存放,則其存儲結(jié)構(gòu)的分配順序應(yīng)當(dāng)是:_D____。

  A . 文件系統(tǒng)、內(nèi)核、啟動參數(shù)、Bootloader

  B . 啟動參數(shù)、Bootloader、內(nèi)核、文件系統(tǒng)

  C . Bootloader、內(nèi)核、啟動參數(shù)、文件系統(tǒng)

  D . Bootloader、啟動參數(shù)、內(nèi)核、文件系統(tǒng)

  178、關(guān)于Qt說法不正確的是(C )

  A、是跨平臺的C++圖形用戶界面庫 B、Qt Embedded(Qtopia)基于Framebuffer

  C、Qt的各元件通信是基于callback的 D、可以同幾種Java虛擬機集成

  179、暫停當(dāng)前(前臺)任務(wù)并放到后臺去的命令是(A)。

  A、 + Z B、 + C

  C、 + P D、&

  180、關(guān)于RISC指令系統(tǒng)描述不正確的是( C )。

  A、優(yōu)先選取使用頻率最高的一些指令 B、避免使用復(fù)雜指令

  C、不需要一個復(fù)雜的編譯器 D、尋址方式種類少

  181、啟動samba服務(wù)器進程,可以有兩種方式:獨立啟動方式和父進程啟動方式,其中前者是在 C 文件中以獨立進程方式啟動。

  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)訪問的設(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) 宿主機與目標機之間只需要建立邏輯連接即可

  B) 在嵌入式系統(tǒng)中,調(diào)試器與被調(diào)試程序一般位于同一臺機器上

  C) 在嵌入式系統(tǒng)開發(fā)中,通常采用的是交叉編譯器

  D) 宿主機與目標機之間的通信方式只有串口和并口兩種

  187、在使用GCC編譯器的過程中,如果只想生成目標文件而不進行連接,需要使用選項( C )

  A.-S B.-o C.-c D.-E

  188、以下做法不利于嵌入式應(yīng)用軟件的移植的是 D 。

  A) 在軟件設(shè)計上,采用層次化設(shè)計和模塊化設(shè)計

  B) 在軟件體系結(jié)構(gòu)上,在操作系統(tǒng)和應(yīng)用軟件之間引入一個虛擬機層,把一些通用的、共性的操作系統(tǒng)API接口函數(shù)封裝起來

  C) 將不可移植的部分局域化,集中在某幾個特定的文件之中

  D) 在數(shù)據(jù)類型上,盡量直接使用C語言的數(shù)據(jù)類型

  189、對ARM處理器說法不正確的是( D )。

  A、小體積、低功耗、低成本、高性能

  B、支持Thumb(16位)/ARM(32位)雙指令集

  C、只有Load/Store指令可以訪問存儲器

  D、尋址方式多而復(fù)雜

  190、嵌入式微控制器相比嵌入式微處理器的的最大特點(B )。

  A、體積大大減小 B、單片化

  C、功耗低 D、成本高

  191.c-shell中變量名ignoreeof表示 C

  A)執(zhí)行之前顯示每一條命令 B)使文件名結(jié)束

  C)必須用logout注銷而不是^D D)禁止文件名擴展

  192.在某嵌入式操作系統(tǒng)中,若P、V操作的信號量S的初值為2,當(dāng)前值為-1,則表示等待信號量S的任務(wù)個數(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位長度,分成四段,第一段表示的內(nèi)容是( A )

  A 文件類型 B 文件所有者的權(quán)限

  C 文件所有者所在組的權(quán)限 D 其他用戶的權(quán)限

  195、對于所有用戶具有讀的文件權(quán)限,而文件主同時具有執(zhí)行權(quán)限的文件權(quán)限是( B )

  a.655 b.544 c.644 d.540

  196、下面哪條命令可用來確保文件“file1”存在( B )

  A. cp file1 /dev/null

  B. touch file1

  C. create file1

  D. mkfile file1

  197、操作系統(tǒng)中同時存在著多個進程,它們(C )

  A、不能共享系統(tǒng)資源 B、不能調(diào)用同一段程序代碼

  C、可以共享所有的系統(tǒng)資源 D、可以共享允許共享的系統(tǒng)資源

  198、在變址尋址方式中,操作數(shù)的有效地址等于(C)

  A、變址寄存器內(nèi)容+形式地址(位移量)

  B、程序計數(shù)器內(nèi)容+形式地址

  C、基址寄存器內(nèi)容+形式地址

  D、堆棧指示器內(nèi)容+形式地址

  199、下列文件系統(tǒng)中,采用了inode來標識文件的是( D )

  a.ntfs

  b.fat16

  c.fat32

  d.ext3

  200、如果我們需要設(shè)置一個文件,使它們作為可執(zhí)行文件運行時,該進程是作為文件所有者的權(quán)限,此時我們需要額外設(shè)置該文件的 C

  A ) seg-GID位 B ) 粘滯位 C) set-UID位 D) UMASK

  二、多項選擇題

  1. 嵌入式操作系統(tǒng)不同于通用操作系統(tǒng)的功能是( B C )

  A、任務(wù)調(diào)度 B、可裁減性 C、 強實時 D、設(shè)備管理  E、存儲器管理

  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、存儲設(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. 芯片總線又稱元件級總線,它是指系統(tǒng)內(nèi)或插件板內(nèi)各元件之間所使用的總線,下列屬于芯片總線的有( A C D )

  A、I2C總線 B、ISA總線 C、SPI總線 D、SCI總線  E、PCI總線

  9. 在ARM匯編語言程序設(shè)計中主程序和子程序參數(shù)的傳遞需要滿足ATPCS規(guī)則,ATPCS規(guī)則中用來傳遞參數(shù)的寄存器是(A B C D )

  A、R0 B、R1 C、R2 D、R3 E、R4

  三、填空題

  1、 在linux系統(tǒng)中,以 文件 方式訪問設(shè)備 。

  2、 前臺起動的進程使用 ctrl+c 終止。

  3、 安裝linux系統(tǒng)對硬盤分區(qū)時,必須有兩種分區(qū)類型: 文件系統(tǒng)分區(qū) 和 交換分區(qū) 。

  4、 利用gdb進行調(diào)試時,可通過step或next命令進行單步執(zhí)行。

  5、 DHCP可以實現(xiàn)動態(tài) IP 地址分配。

  6、 Ping命令可以測試網(wǎng)絡(luò)中本機系統(tǒng)是否能到達一臺遠程主機 ,所以常常用于測試網(wǎng)絡(luò)的 連通性 。

  7、 vi編輯器具有兩種工作模式: 命令模式 和 輸入模式 。

  8、 在使用ls命令時,用八進制形式顯示非打印字符應(yīng)使用參數(shù) -b 。

  9、 在shell編程時,使用方括號表示測試條件的規(guī)則是:方括號兩邊必須有 空格 。

  10、 在Windows9.x環(huán)境下共享Unix/Linux中的用戶目錄的一個工具是 Samba服務(wù)器。

  11、 編寫的shell程序運行前必須賦予該腳本文件 執(zhí)行 權(quán)限。

  12、 在Linux系統(tǒng)中,用來存放系統(tǒng)所需要的配置文件和子目錄的目錄是 /etc 。

  13、 結(jié)束后臺進程的命令是 kill 。

  14、 進行遠程登錄的命令是 telnet 。

  15、 在用vi編輯文件時,將文件內(nèi)容存入test.txt文件中,應(yīng)在命令模式下鍵入 :w test.txt 。

  16、 在Linux系統(tǒng)下,第二個IDE通道的硬盤(從盤)被標識為 hdb 。

  17、 在CPU和物理內(nèi)存之間進行地址轉(zhuǎn)換時,MMU將地址從虛擬(邏輯)地址空間映射到 物理地址空間 。

  18、 使用gcc編譯c程序生成可執(zhí)行文件有時似乎是一步完成的,但實際要經(jīng)歷如下四步: 預(yù)處理、編譯、匯編和連接 。

  19、 利用gdb進行調(diào)試時,可通過step或next命令進行單步執(zhí)行。

  20、 內(nèi)核分為 進程管理系統(tǒng) 、 內(nèi)存管理系統(tǒng) 、 i/o管理系統(tǒng) 和文件管理系統(tǒng)等四個子系統(tǒng)。

  21、 gcc的編譯可分為__預(yù)處理____、編譯、匯編和___鏈接___等四個階段。

  22、 在Linux多線程編程時,需要包含頭文件___pthread.h___。

  23、 卸載Linux內(nèi)核模塊使用命令___rmmod___。

  24、 ARM處理器有多種運行模式,用戶程序運行在其中的___用戶___模式。

  25、 ARM處理器的中斷有兩種處理模式,分別為___快速中斷___模式和的___外部中斷___模式。

  26、 Linux系統(tǒng)中,普通用戶使用的命令通常保存在___/bin___目錄中。

  27、 setenv命令的功能是___設(shè)置環(huán)境變量___。

  28、 Linux文件的鏈接可分為符號鏈接和___硬鏈接___兩種。

  29、 在shell編程時,要把一個用戶的輸入賦值給一個變量,使用__read_______命令。

  30、 Qt/Embedded使用___信號___和___插槽___的機制實現(xiàn)函數(shù)的回調(diào)。

  31、 加載Linux內(nèi)核模塊使用命令___insmod___。

  32、 ARM處理器有多種運行模式,用戶程序運行在其中的___用戶___模式。

  33、 Linux系統(tǒng)在啟動init進程時使用的配置文件是_/etc/inittab_____。

  34、 VI編輯器有三種工作模式:命令模式、插入模式和___末行模式___。

  35、 交叉編譯是指___在一個平臺上生成可以在另一個平臺上執(zhí)行的代碼___。

  36、 setenv命令的功能是___設(shè)置環(huán)境變量___。

  37、 在linux系統(tǒng)中,以 文件 方式訪問設(shè)備 。

  38、 利用gdb進行調(diào)試時,可通過step或 next 命令進行單步執(zhí)行。

  39、 Qt/Embedded的底層圖形引擎基于 FrameBuffer 接口技術(shù)。

  40、 Linux操作系統(tǒng)的系統(tǒng)管理員(也就是超級用戶)帳號是root 。

  41、 編寫的shell程序運行前必須賦予該腳本文件 執(zhí)行 權(quán)限 。

  42、 使用gcc編譯c程序生成可執(zhí)行文件有時似乎是一步完成的,但實際要經(jīng)歷如下四步:預(yù)處理、編譯、 匯編 和連接。

  43、 內(nèi)核分為 進程管理系統(tǒng) 、 內(nèi)存管理系統(tǒng) 、 IO管理系統(tǒng) 和文件管理系統(tǒng) 等四個子系統(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)限,則該八進制數(shù)為_644 ,該文件屬性是__目錄 _。

  50、 嵌入式Linux系統(tǒng)從軟件的角度看通?梢苑譃樗膫層次:引導(dǎo)加載程序、__ Linux內(nèi)核___、__文件系統(tǒng)_、用戶應(yīng)用程序。

  51、 進程從產(chǎn)生到終止進程可以具有的基本狀態(tài)為: _運行態(tài)__ 、 _就緒態(tài)__ 和 等待態(tài)(阻塞態(tài))。

  四、判斷題

  1、 在gdb調(diào)試過程中,不退出gdb也可以執(zhí)行UNIX shell命令。(對)

  2、 退出交互模式的shell,應(yīng)鍵入quit。(錯)

  3、 Linux文件系統(tǒng)的文件都按其作用分門別類地放在相關(guān)的目錄中,對于外部設(shè)備文件,一般應(yīng)將其放在/etc目錄中。(錯)

  4、 命令fdisk /mbr的作用是安裝系統(tǒng)引導(dǎo)程序到主分區(qū)。(錯)

  5、 在Linux系統(tǒng)中,測試DNS服務(wù)器是否能夠正確解析域名的的客戶端命令,使用命令 nslookup 。(對)

  6、 命令mount /dev/hdc /mnt/cdrom是將光盤CD-ROM(hdc)安裝到文件系統(tǒng)的/mnt/cdrom目錄下。(對)

  7、 /home/src目錄存放著Linux的源代碼。( 錯)

  8、 uCOS-II操作系統(tǒng)屬于順序執(zhí)行系統(tǒng) 。(錯 )

  9、 Linux 文件名的長度不得超256個字符。(對 )

  10、 在vi編輯器中的命令模式下,刪除當(dāng)前光標處的字符使用d命令。( 錯 )

  11、 基于ARM架構(gòu)的指令都是32位的。(錯)

  12、 激活網(wǎng)卡需要編譯內(nèi)核。( 錯)

  13、 可用ctrl+C強行結(jié)束后臺進程。(錯 )

  14、 寫回Cache是指CPU在執(zhí)行寫操作時,必須把數(shù)據(jù)同時寫入Cache和主存。(×)

  15、

  16、 文件系統(tǒng)的主要功能是實現(xiàn)虛擬存儲。(錯)

  17、 進程有三種狀態(tài)是準備態(tài)、執(zhí)行態(tài)和退出態(tài)。(錯)

  18、 Samba服務(wù)器的進程由smbd和nmbd兩部分組成。(對)

  19、 shell命令的第一個按鍵必須是字符、數(shù)字或者空格(錯)

  20、 Linux 文件名的長度不得超256個字符。(對)

  21、 在gdb調(diào)試過程中,用make命令可以不用退出gdb就可以重新產(chǎn)生可執(zhí)行文件。(對)

  22、 若一臺計算機的內(nèi)存為128MB,則交換分區(qū)的大小通常是64M。(錯)

  23、 在重新啟動Linux系統(tǒng)的同時把內(nèi)存中的信息寫入硬盤,應(yīng)使用shutdown –r now命令實現(xiàn)。(對)

  24、 在vi編輯器中的命令模式下,刪除當(dāng)前光標處的字符使用d命令。(錯)

  25、 Samba服務(wù)器的進程由smbd和nmbd兩部分組成。(對)

  26、 從后臺啟動進程,應(yīng)在命令的結(jié)尾加上符號@。(錯)

  27、 網(wǎng)絡(luò)管理的重要任務(wù)是: 控制 和 監(jiān)控 。(對)

  28、 函數(shù)的標量參數(shù)通過傳值的方式進行傳遞,而數(shù)組名參數(shù)則具有傳址調(diào)用的語義。( √ )

  29、 (X)根文件系統(tǒng)是具有操作系統(tǒng)的嵌入式系統(tǒng)必須的組成部分。

  30、 (V)一個shell腳本運行時可以看成是一個Linux作業(yè),它可能由多個進程完成。

  31、 (V)在2.6內(nèi)核中加入的搶占點提高了Linux的可搶占性,但Linux仍不能看作實時系統(tǒng)。

  32、 (X)目前的ARM處理器采用的是哈佛體系結(jié)構(gòu)。

  33、 (V)ARM處理器的運行模式可通過中斷或異常處理改變。

  34、 (X)C語言中的棧的壓入和彈出是由操作系統(tǒng)管理的。

  35、 (X)BootLoader屬于嵌入式操作系統(tǒng)的一部分。

  36、 (X)chmod命令可用來修改處理器的運行模式。

  37、 (X)CGI程序由Web服務(wù)器解釋運行。

  38、 (V)Linux系統(tǒng)中的目錄可以看作是一種特殊的文件。

  39、 (X)shell環(huán)境變量主要用于腳本的執(zhí)行過程,不會作用于腳本之外的程序。

  40、 (V)Busybox常用于替代桌面系統(tǒng)中的init和shell等程序,為嵌入式用戶提供使用環(huán)境。

  41、 (V)LINUX是一個真正的多用戶、多任務(wù)操作系統(tǒng),允許多個用戶在相同的機器上一次運行很多程序,并能保證相互之間的共享和安全。

  42、 在嵌入式系統(tǒng)中,整個系統(tǒng)的加載啟動任務(wù)就完全由 Boot Loader 來完成。( √ )

  43、 在LINUX系統(tǒng)中,所有的內(nèi)容被表示成文件,組織文件的各種方法便稱為不同的文件系統(tǒng)。( √ )

  44、 Linux系統(tǒng)是一個多用戶多任務(wù)的分時操作系統(tǒng),允許多個用戶在相同的機器上一次運行很多程序。( √ )

  45、 Linux 中的 ls 命令的功能是變換工作目錄到目標指定目錄。( × )

  46、 ARM包含32個通用寄存器。( × )

  47、 Qt Embedded的API同Qt/X11和Qt/Windows的相同,但它并不是基于X11庫。( √ )

  48、 kmalloc和vmalloc的區(qū)別在于,前者申請到的是物理地址連續(xù)的內(nèi)存空間,而后者則是虛擬地址連續(xù)的內(nèi)存空間,不能用在中斷時間。( √ )

  49、 LINUX是一個真正的多任務(wù)和分時操作系統(tǒng),允許多個用戶在相同的機器上一次運行很多程序。( √ )

  50、 (X)Linux采用線程調(diào)度程序選擇線程占用CPU運行。

  51、 (V)在單機系統(tǒng)中可采用關(guān)中斷的方式保證操作的原子性。

  52、 (X)根文件系統(tǒng)是系統(tǒng)啟動時首先加載的文件系統(tǒng),因此需要快速加載的內(nèi)容應(yīng)放置于其中,以加快系統(tǒng)的運行速度。

  53、 (X)線程切換成本小于進程,因此Linux系統(tǒng)中的多線程程序的調(diào)度開銷要小于多進程程序。

  54、 (X)守護進程的主要任務(wù)是完成與用戶的交互,以保證系統(tǒng)的響應(yīng)性能。

  55、 (X)Linux內(nèi)存管理采用了Slab機制,因此,無需硬件支持,Linux能夠很好地支持虛擬存儲。

  56、 (X)模塊程序運行于內(nèi)核模式,因此,它們能夠訪問內(nèi)核中的所有函數(shù)。

  57、 (X)根文件系統(tǒng)所在的分區(qū)越大約好,因為根分區(qū)越大,Linux啟動速度越快。

  58、 (V)一個shell腳本的第一行是:#! /bin/csh它的作用是注釋,表示下面腳本是csh腳本。

  59、 (X)目前Linux平臺上的各種線程庫使得Linux能夠在內(nèi)核空間能夠支持多線程。

  60、 (V)Linux允許內(nèi)核以NFS的形式連接根文件系統(tǒng)

  61、 (V)EXT3文件系統(tǒng)是一種日志型的文件系統(tǒng)。

  62、 (V)BootLoader是嵌入式系統(tǒng)運行的第一個程序。

  63、 (X)自旋鎖可以用在單機系統(tǒng)中來保證內(nèi)核相關(guān)操作的原子性。

  64、 (X)Samba服務(wù)器在Linux平臺上常用作Web服務(wù)器。

  65、 在vi編輯器中的命令模式下,重復(fù)上一次對編輯的文本進行的操作,可使用下箭頭命令。(錯 )

  66、 進程有三種狀態(tài)是準備態(tài)、執(zhí)行態(tài)和退出態(tài)。( 錯 )

  67、 觸摸屏是一種輸入設(shè)備。(√)

  68、 VHDL是一種硬件描述語言,用于設(shè)計硬件電子系統(tǒng)。(√)

  69、 二極管具有單向?qū)ㄐ浴?√)

  70、 CISC機器多采用Load/Store結(jié)構(gòu)(×)

  71、 GDB是一個用來調(diào)試C和C++程序的調(diào)試器。(√)

  72、 DSP是專門用于數(shù)字信號處理方面的處理器。(√)

  73、 Nand Flash的特點是應(yīng)用程序可以直接在閃存中運行,不需要把代碼讀到系統(tǒng)RAM中。(×)

  74、 LCD是一種輸出設(shè)備。(√)

  五、簡答題

  1、簡述嵌入式系統(tǒng)中非占先式與占先式調(diào)度法的區(qū)別有哪些。

  答:

  非占先式調(diào)度法也稱作合作型多任務(wù)(cooperative multitasking),各個任務(wù)彼此合作共享一個CPU。中斷服務(wù)可以使一個高優(yōu)先級的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。(1分)但中斷服務(wù)以后控制權(quán)還是回到原來被中斷了的那個任務(wù),直到該任務(wù)主動放棄CPU的使用權(quán)時,那個高優(yōu)先級的任務(wù)才能獲得CPU的使用權(quán)。(2分)

  當(dāng)系統(tǒng)響應(yīng)時間很重要時,要使用占先式(preemptive)內(nèi)核。(1分)最高優(yōu)先級的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個運行著的任務(wù)使一個比它優(yōu)先級高的任務(wù)進入了就緒態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說被掛起了,那個高優(yōu)先級的任務(wù)立刻得到了CPU的控制權(quán)。(2分)

  2、什么是硬實時操作系統(tǒng)、軟實時操作系統(tǒng)以及二者的區(qū)別?

  答:

  在實時系統(tǒng)中,如果系統(tǒng)在指定的時間內(nèi)未能實現(xiàn)某個確定的任務(wù),會導(dǎo)致系統(tǒng)的全面失敗,這樣的系統(tǒng)被稱為強實時系統(tǒng)或硬實時系統(tǒng)。(1分)強實時系統(tǒng)響應(yīng)時間一般在毫秒或微秒級。(1分)

  在弱實時系統(tǒng)中,雖然響應(yīng)時間同樣重要,但是超時卻不會發(fā)生致命的錯誤。(1分)

  其系統(tǒng)響應(yīng)時間在毫秒至秒的數(shù)量級上,(1分)其實時性的要求比強實時系統(tǒng)要差一些。(2分)

  3、介紹一下嵌入式系統(tǒng)的設(shè)計步驟有哪些?各部分主要工作是什么?

  答:

  (1)需求分析階段,羅列出用戶的需求;(1分)

  (2)體系結(jié)構(gòu)設(shè)計階段,描述系統(tǒng)的功能如何實現(xiàn);(1分)

  (3)詳細設(shè)計階段,進行硬件系統(tǒng)與軟件系統(tǒng)的分類劃分,以決定哪些功能用硬件實現(xiàn),哪些用軟件實現(xiàn);(1分)

  (4)系統(tǒng)集成,把系統(tǒng)的軟件、硬件和執(zhí)行裝置集成在一起,(1分)進行調(diào)試,發(fā)現(xiàn)并改進在設(shè)計過程中的錯誤;(1分)

  (5)系統(tǒng)測試,對設(shè)計好的系統(tǒng)進行測試,看其是否滿足給定的要求。(1分)

  4、ARM支持哪兩種數(shù)據(jù)存儲格式,簡單描述各自特點。

  答:

  分為大端格式和小端格式。(2分)

  大端格式:被存放字數(shù)據(jù)的高字節(jié)存儲在存儲系統(tǒng)的低地址中,而被存放的字數(shù)據(jù)的低字節(jié)則存放在存儲系統(tǒng)的高地址中。(2分)

  小端格式:與大端存儲格式相反,在小端存儲格式中,存儲系統(tǒng)的低地址中存放的是被放字數(shù)據(jù)中的低字節(jié)內(nèi)容,存儲系統(tǒng)的高地址存放的是被存字數(shù)據(jù)中的高字節(jié)內(nèi)容。(2分)

  5、什么是BootLoader?主要有幾種工作模式及主要功能是什么?

  答:

  簡單說來,Bootloader就是操作系統(tǒng)內(nèi)核運行的一段小程序,完成進行初始化系統(tǒng)硬件設(shè)置的任務(wù),包括CPU、SDRRAM、Flash、串口等初始化,時鐘的設(shè)置、存儲器的映射。(2分)

  分為啟動加載模式和下載模式。

  (1) 啟動加載模式

  啟動加載(Boot laoding)模式又稱為“自主”(Autonomous)模式,是指 Bootloader 從目標機上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到 RAM 中運行,整個過程并沒有用戶的介入。(2分)

  (2) 下載模式

  在下載模式下,目標機上的 Bootloader 將先通過串口連接或網(wǎng)絡(luò)連接等通信手段從宿主機下載文件。(2分)

  6、 簡述Bootloader有何作用?

  答案要點:(1)首先,bootloader是在特定硬件平臺運行的程序,嚴重依賴于硬件平臺,需要移植;(2)是系統(tǒng)上電之后,第一個運行的程序,系統(tǒng)在上電或復(fù)位時通常都從地址 0x0 處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的 Boot Loader 程序;(3)bootloader程序的設(shè)計目標是啟動嵌入式操作系統(tǒng),嵌入式操作系統(tǒng)的啟動需要一定的條件,這些條件由bootloader來滿足;(4)Bootloader一般具有對存儲器和網(wǎng)絡(luò)接口操作的功能;如擦除、讀寫Flash,通過USB、串口下載文件等

  7、 程序、進程、線程有何區(qū)別?

  答案要點:程序是編譯后形成的可執(zhí)行代碼,是靜止的。進程是程序的一次執(zhí)行,是活動的。線程是進程的可執(zhí)行單元,同一進程的不同線程共享進程的資源和地址空間。

  8、 簡述嵌入式系統(tǒng)的幾個重要特征?

  答案要點:系統(tǒng)內(nèi)核小 ;專用性強 ;系統(tǒng)精簡 ;高實時性的系統(tǒng)軟件;多任務(wù)的操作系統(tǒng) ;需要專用的開發(fā)工具和環(huán)境。 答出上述4個并適當(dāng)闡述的即可給滿分。

  9、 什么是程序的局部性原理?

  答案要點:程序的局部性原理是指程序在執(zhí)行過程中的一個較短時期內(nèi),它所執(zhí)行的指令和訪問的存儲空間分別局限在一定的區(qū)域內(nèi)。具體表現(xiàn)在時間局部性和空間局部性。時間局部性是指一條指令的一次執(zhí)行和下一次執(zhí)行、一個數(shù)據(jù)的一次訪問和下一次訪問,都集中在一個較短的時間內(nèi)。空間局部性是指程序執(zhí)行了某條指令,則它相鄰的幾條指令也可能馬上執(zhí)行。

  10、Linux作為嵌入式操作系統(tǒng)的優(yōu)勢?

  答:

  Linux作為嵌入式操作系統(tǒng)的優(yōu)勢主要有以下幾點:

  1. 可應(yīng)用于多種硬件平臺。Linux已經(jīng)被移植到多種硬件平臺,這對于經(jīng)費,時間受限制的研究與開發(fā)項目是很有吸引力的。原型可以在標準平臺上開發(fā)后移植到具體的硬件上,加快了軟件與硬件的開發(fā)過程。Linux采用一個統(tǒng)一的框架對硬件進行管理,從一個硬件平臺到另一個硬件平臺的改動與上層應(yīng)用無關(guān)。(1分)

  2. Linux的高度模塊化使添加部件非常容易。本身內(nèi)置網(wǎng)絡(luò)支持,而目前嵌入式系統(tǒng)對網(wǎng)絡(luò)支持要求越來越高。(1分)

  3. Linux是一個和Unix相似、以內(nèi)核為基礎(chǔ)的、具有完全的內(nèi)存訪問控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等現(xiàn)有的大 部分芯片)等特性的一種通用操作系統(tǒng)。(1分)

  4. Linux可以隨意地配置,不需要任何的許可證或商家的合作關(guān)系。其程序源碼全部公開,任何人可以修改并在GUN通用公共許可證(GNU General Public License)下發(fā)行。這樣,開發(fā)人員可以對操作系統(tǒng)進行定制,適應(yīng)其特殊需要。(1分)

  5. Linux帶有Unix用戶熟悉的完善的開發(fā)工具,幾乎所有的Unix系統(tǒng)的應(yīng)用軟件都已移植到了Linux上。其強大的語言編譯器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。(分)

  11、簡述網(wǎng)絡(luò)文件系統(tǒng)NFS,并說明其作用。

  答:

  NFS即網(wǎng)絡(luò)文件系統(tǒng),是主機通過網(wǎng)絡(luò)進行文件共享的協(xié)議(2分)。通常用于UNIX或類UNIX系統(tǒng)中。NFS服務(wù)器的共享目錄可以被NFS客戶端作為文件系統(tǒng)掛載到本地中(1分)。它的作用是通常用于局域網(wǎng)中用于文件共享(1分)。它的特點是不想http和ftp要把文件下載到本地才能夠被訪問,NFS不需要下載到本地即可訪問(1分)。

  12、簡述Boot Loader 的兩種操作模式 (Operation Mode)?

  答:

  啟動加載(Boot loading)模式:這種模式也稱為"自主"(Autonomous)模式。也即 Boot Loader 從目標機上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到 RAM 中運行,整個過程并沒有用戶的介入。這種模式是 Boot Loader 的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時侯,Boot Loader 顯然必須工作在這種模式下。 (2.5分)

  下載(Downloading)模式:在這種模式下,目標機上的 Boot Loader 將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(Host)下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機下載的文件通常首先被 Boot Loader 保存到目標機的 RAM 中,然后再被 Boot Loader 寫到目標機上的FLASH 類固態(tài)存儲設(shè)備中。Boot Loader 的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時被使用;此外,以后的系統(tǒng)更新也會使用 Boot Loader 的這種工作模式。工作于這種模式下的 Boot Loader 通常都會向它的終端用戶提供一個簡單的命令行接口。(2.5分)

  13、簡述嵌入式系統(tǒng)設(shè)計過程。

  答;每條1分

  (1)需求分析 (4)設(shè)計硬件構(gòu)件和軟件構(gòu)件

  (2)規(guī)格說明 (5)系統(tǒng)集成

  (3)體系結(jié)構(gòu)設(shè)計 (6)系統(tǒng)測試

  14、ARM啟動代碼是系統(tǒng)加電后運行的第一段軟件代碼,由于這類代碼直接面對處理器內(nèi)核和硬件控制器進行編程,一般都是用匯編語言。一般通用的內(nèi)容主要包括?

  答:每條1分

  中斷向量表

  初始化存儲器系統(tǒng)

  初始化堆棧

  初始化有特殊要求的斷口,設(shè)備

  初始化用戶程序執(zhí)行環(huán)境

  改變處理器模式

  呼叫主應(yīng)用程序

  15、什么是符號鏈接,什么是硬鏈接?符號鏈接與硬鏈接的區(qū)別是什么?

  答:

  鏈接分硬鏈接和符號鏈接。

  符號鏈接可以建立對于文件和目錄的鏈接。符號鏈接可以跨文件系統(tǒng),即可以跨磁盤分區(qū)。符號鏈接的文件類型位是l,鏈接文件具有新的i節(jié)點。

  硬鏈接不可以跨文件系統(tǒng)。它只能建立對文件的鏈接,硬鏈接的文件類型位是-,且硬鏈接文件的i節(jié)點同被鏈接文件的i節(jié)點相同。

  16、進程的查看和調(diào)度分別使用什么命令?

  答:

  進程查看的命令是ps和top。

  進程調(diào)度的命令有at,crontab,batch,kill。

  17、簡述嵌入式系統(tǒng)中非占先式與占先式調(diào)度法的區(qū)別有哪些。

  答:

  非占先式調(diào)度法也稱作合作型多任務(wù)(cooperative multitasking),各個任務(wù)彼此合作共享一個CPU。中斷服務(wù)可以使一個高優(yōu)先級的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。(1分)但中斷服務(wù)以后控制權(quán)還是回到原來被中斷了的那個任務(wù),直到該任務(wù)主動放棄CPU的使用權(quán)時,那個高優(yōu)先級的任務(wù)才能獲得CPU的使用權(quán)。(2分)

  當(dāng)系統(tǒng)響應(yīng)時間很重要時,要使用占先式(preemptive)內(nèi)核。(1分)最高優(yōu)先級的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個運行著的任務(wù)使一個比它優(yōu)先級高的任務(wù)進入了就緒態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了,或者說被掛起了,那個高優(yōu)先級的任務(wù)立刻得到了CPU的控制權(quán)。(2分)

  18、什么是BootLoader,其主要功能是什么?

  答:Boot Loader相當(dāng)于普通pc機的BIOS,是在系統(tǒng)復(fù)位后執(zhí)行的第一段代碼。因此,整個系統(tǒng)的加載啟動任務(wù)就完全由Boot Loader來完成。它首先完成系統(tǒng)硬件的初始化,包括時鐘的設(shè)置、存儲器的映射等。并設(shè)置堆棧指針,然后跳轉(zhuǎn)到操作系統(tǒng)內(nèi)核入口,如系統(tǒng)在加電或復(fù)位時通常從地址0x00000000處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的Boot Loader程序。這樣,將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境。在此之后,系統(tǒng)的運行在操作系統(tǒng)的控制下了。通常,Boot Loader 是嚴重地依賴于硬件而實現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的 Boot Loader 幾乎是不可能的。盡管如此,我們?nèi)匀豢梢詫?Boot Loader 歸納出一些通用的概念來,以指導(dǎo)用戶特定的 Boot Loader 設(shè)計與實現(xiàn)。

  不同的嵌入式系統(tǒng)其Boot Loader一般是不同的。從操作系統(tǒng)的角度來看, Boot Loader的總目標就是正確地調(diào)用內(nèi)核來執(zhí)行。

  另外,由于大多數(shù)Boot Loader都分為階段1和階段2兩部分。依賴于CPU的體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在階段1中,而且通常用匯編語言來實現(xiàn),以達到短小精悍的目的。而階段2通常用C語言來實現(xiàn),這樣可以實現(xiàn)一些復(fù)雜的功能,而且代碼會具有更好的可讀性和移植性。

  19、什么是硬實時操作系統(tǒng)、軟實時操作系統(tǒng)以及二者的區(qū)別?

  答:

  在實時系統(tǒng)中,如果系統(tǒng)在指定的時間內(nèi)未能實現(xiàn)某個確定的任務(wù),會導(dǎo)致系統(tǒng)的全面失敗,這樣的系統(tǒng)被稱為強實時系統(tǒng)或硬實時系統(tǒng)。(1分)強實時系統(tǒng)響應(yīng)時間一般在毫秒或微秒級。(1分)

  在弱實時系統(tǒng)中,雖然響應(yīng)時間同樣重要,但是超時卻不會發(fā)生致命的錯誤。(1分)

  其系統(tǒng)響應(yīng)時間在毫秒至秒的數(shù)量級上,(1分)其實時性的要求比強實時系統(tǒng)要差一些。(2分)

  20、多線程有幾種實現(xiàn)方法,線程間同步有幾種實現(xiàn)方法,都是什么?

  答:

  兩種實現(xiàn)方法,一種是繼承Thread,另外一種是實現(xiàn)接口Runnable。

  同步的實現(xiàn)方法有兩種,分別是synchronized, wait與notify。用synchronized可以對一段代碼、一個對象及一個方法進行加鎖。用wait與notify可以使對象處于等待及喚醒方式導(dǎo)致同步,因為每個對象都直接或間接的繼承了Object類。

  21、介紹一下嵌入式系統(tǒng)的設(shè)計步驟有哪些?各部分主要工作是什么?

  答:

  (1)需求分析階段,羅列出用戶的需求;(1分)

  (2)體系結(jié)構(gòu)設(shè)計階段,描述系統(tǒng)的功能如何實現(xiàn);(1分)

  (3)詳細設(shè)計階段,進行硬件系統(tǒng)與軟件系統(tǒng)的分類劃分,以決定哪些功能用硬件實現(xiàn),哪些用軟件實現(xiàn);(1分)

  (4)系統(tǒng)集成,把系統(tǒng)的軟件、硬件和執(zhí)行裝置集成在一起,(1分)進行調(diào)試,發(fā)現(xiàn)并改進在設(shè)計過程中的錯誤;(1分)

  (5)系統(tǒng)測試,對設(shè)計好的系統(tǒng)進行測試,看其是否滿足給定的要求。(1分)

  22、某/etc/fstab文件中的某行如下:

  /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2

  請解釋其含義。

  答:

  (1)第一列:將被加載的文件系統(tǒng)名;

  (2)第二列:該文件系統(tǒng)的安裝點;

  (3)第三列:文件系統(tǒng)的類型;

  (4)第四列:設(shè)置參數(shù);

  (5)第五列:供備份程序確定上次備份距現(xiàn)在的天數(shù);

  (6)第六列:在系統(tǒng)引導(dǎo)時檢測文件系統(tǒng)的順序。

  23、ARM支持哪兩種數(shù)據(jù)存儲格式,簡單描述各自特點。

  答:

  分為大端格式和小端格式。(2分)

  大端格式:被存放字數(shù)據(jù)的高字節(jié)存儲在存儲系統(tǒng)的低地址中,而被存放的字數(shù)據(jù)的低字節(jié)則存放在存儲系統(tǒng)的高地址中。(2分)

  小端格式:與大端存儲格式相反,在小端存儲格式中,存儲系統(tǒng)的低地址中存放的是被放字數(shù)據(jù)中的低字節(jié)內(nèi)容,存儲系統(tǒng)的高地址存放的是被存字數(shù)據(jù)中的高字節(jié)內(nèi)容。(2分)

  25、什么是BootLoader?主要有幾種工作模式及主要功能是什么?

  答:

  簡單說來,Bootloader就是操作系統(tǒng)內(nèi)核運行的一段小程序,完成進行初始化系統(tǒng)硬件設(shè)置的任務(wù),包括CPU、SDRRAM、Flash、串口等初始化,時鐘的設(shè)置、存儲器的映射。(2分)

  分為啟動加載模式和下載模式。

  (3) 啟動加載模式

  啟動加載(Boot laoding)模式又稱為“自主”(Autonomous)模式,是指 Bootloader 從目標機上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到 RAM 中運行,整個過程并沒有用戶的介入。(2分)

  (4) 下載模式

  在下載模式下,目標機上的 Bootloader 將先通過串口連接或網(wǎng)絡(luò)連接等通信手段從宿主機下載文件。(2分)

  26、簡述進程的啟動方式。

  答:

  在Linux中啟動一個進程有手工啟動和調(diào)度啟動兩種方式:

  (1)手工啟動

  用戶在輸入端發(fā)出命令,直接啟動一個進程的啟動方式。可以分為:

 、偾芭_啟動:直接在SHELL中輸入命令進行啟動。

 、诤笈_啟動:啟動一個目前并不緊急的進程,如打印進程。

  (2)調(diào)度啟動

  系統(tǒng)管理員根據(jù)系統(tǒng)資源和進程占用資源的情況,事先進行調(diào)度安排,指定任務(wù)運行的時間和場合,到時候系統(tǒng)會自動完成該任務(wù)。

  27、簡述Bootloader有何作用?

  答案要點:(1)首先,bootloader是在特定硬件平臺運行的程序,嚴重依賴于硬件平臺,需要移植;(2)是系統(tǒng)上電之后,第一個運行的程序,系統(tǒng)在上電或復(fù)位時通常都從地址 0x0 處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的 Boot Loader 程序;(3)bootloader程序的設(shè)計目標是啟動嵌入式操作系統(tǒng),嵌入式操作系統(tǒng)的啟動需要一定的條件,這些條件由bootloader來滿足;(4)Bootloader一般具有對存儲器和網(wǎng)絡(luò)接口操作的功能;如擦除、讀寫Flash,通過USB、串口下載文件等

  28、ARM處理器中,引起異常的原因是什么?

  答:(1)、指令執(zhí)行引起的異常

  軟件中斷、未定義指令(包括所要求的協(xié)處理器不存在是的協(xié)處理器指令)、預(yù)取址中止(存儲器故障)、數(shù)據(jù)中止。

  (2)、外部產(chǎn)生的中斷

  復(fù)位、FIQ、IRQ。

  29、程序、進程、線程有何區(qū)別?

  答案要點:程序是編譯后形成的可執(zhí)行代碼,是靜止的。進程是程序的一次執(zhí)行,是活動的。線程是進程的可執(zhí)行單元,同一進程的不同線程共享進程的資源和地址空間。

  30、Linux系統(tǒng)中線程的同步方式有互斥量、信號量和條件變量等。假設(shè)現(xiàn)在需要設(shè)計一個多線程的應(yīng)用程序,試分析一下以上幾種同步方式分別可在什么場合下使用(6分)。

  參考答案:

  Mutex互斥量,用于操作某個臨界資源時對該資源上鎖,以實現(xiàn)互斥地對獨占資源的使用(2分)

  Semophore信號燈,信號燈內(nèi)有一計數(shù)器,可以用于對多個同類資源的分配。當(dāng)資源用完時,申請資源的線程會在信號量上睡眠,有線程釋放資源時,再將該線程喚醒繼續(xù)運行。(2分)

  Condition條件變量,條件變量用于等待信號。當(dāng)一個線程需要等待某個信號時,就可到條件變量上等待,當(dāng)信號具備時,系統(tǒng)會喚醒該線程繼續(xù)運行。(2分)

  31、簡述嵌入式系統(tǒng)的幾個重要特征?

  答案要點:系統(tǒng)內(nèi)核小;專用性強 ;系統(tǒng)精簡 ;高實時性的系統(tǒng)軟件 ;多任務(wù)的操作系統(tǒng) ;需要專用的開發(fā)工具和環(huán)境。 答出上述4個并適當(dāng)闡述的即可給滿分。

  32、什么是程序的局部性原理?

  答案要點:程序的局部性原理是指程序在執(zhí)行過程中的一個較短時期內(nèi),它所執(zhí)行的指令和訪問的存儲空間分別局限在一定的區(qū)域內(nèi)。具體表現(xiàn)在時間局部性和空間局部性。時間局部性是指一條指令的一次執(zhí)行和下一次執(zhí)行、一個數(shù)據(jù)的一次訪問和下一次訪問,都集中在一個較短的時間內(nèi)。空間局部性是指程序執(zhí)行了某條指令,則它相鄰的幾條指令也可能馬上執(zhí)行。

  33、簡述Busybox的工作原理。(4分)

  參考答案:Busybox是通過一個程序去實現(xiàn)原來Linux的眾多命令程序。這樣可使原來3.5MB左右的工具包壓縮大約200KB大小一個程序,這對嵌入式系統(tǒng)非常重要(2分)。

  為了使用的方便,Busybox通過創(chuàng)建其原文件的符號連接來達到傳遞具體執(zhí)行命令的目的。例如,創(chuàng)建一個mv的符號連接,當(dāng)用戶鍵入mv后,mv實際上會以C語言中的argv[0]傳遞給Busybox的主程序。這樣Busybox就可據(jù)此跳轉(zhuǎn)到相應(yīng)的代碼去執(zhí)行。(2分)

  34、Linux作為嵌入式操作系統(tǒng)的優(yōu)勢?

  答:

  Linux作為嵌入式操作系統(tǒng)的優(yōu)勢主要有以下幾點:

  1. 可應(yīng)用于多種硬件平臺。Linux已經(jīng)被移植到多種硬件平臺,這對于經(jīng)費,時間受限制的研究與開發(fā)項目是很有吸引力的。原型可以在標準平臺上開發(fā)后移植到具體的硬件上,加快了軟件與硬件的開發(fā)過程。Linux采用一個統(tǒng)一的框架對硬件進行管理,從一個硬件平臺到另一個硬件平臺的改動與上層應(yīng)用無關(guān)。(1分)

  2. Linux的高度模塊化使添加部件非常容易。本身內(nèi)置網(wǎng)絡(luò)支持,而目前嵌入式系統(tǒng)對網(wǎng)絡(luò)支持要求越來越高。(1分)

  3. Linux是一個和Unix相似、以內(nèi)核為基礎(chǔ)的、具有完全的內(nèi)存訪問控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等現(xiàn)有的大 部分芯片)等特性的一種通用操作系統(tǒng)。(1分)

  4. Linux可以隨意地配置,不需要任何的許可證或商家的合作關(guān)系。其程序源碼全部公開,任何人可以修改并在GUN通用公共許可證(GNU General Public License)下發(fā)行。這樣,開發(fā)人員可以對操作系統(tǒng)進行定制,適應(yīng)其特殊需要。(1分)

  5. Linux帶有Unix用戶熟悉的完善的開發(fā)工具,幾乎所有的Unix系統(tǒng)的應(yīng)用軟件都已移植到了Linux上。其強大的語言編譯器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。(分)

  35、簡述Linux需要進行進程調(diào)度的時機(6分)

  參考答案:(每小點1分)

  Linux執(zhí)行進程調(diào)度一般是在以下情況發(fā)生的:

  (1)正在執(zhí)行的進程運行完畢;

  (2)正在執(zhí)行的進程調(diào)用阻塞原語將自己阻塞起來進入等待狀態(tài);

  (3)正在執(zhí)行的進程調(diào)用了P原語操作,從而因資源不足而被阻塞;或調(diào)用了V原語操作激活了等待資源的進程隊列;

  (4)執(zhí)行中的進程提出I/O請求后被阻塞;

  (5)系統(tǒng)分配的時間片已經(jīng)用完;

  以上都是CPU為不可剝奪方式下的引起進程調(diào)度的原因。在CPU方式是可剝奪時,還有下面的原因:

  (6)就緒隊列中的某個進程的優(yōu)先級變得高于當(dāng)前運行進程的優(yōu)先級,從而也將引起進程調(diào)度。

  37、什么是符號鏈接,什么是硬鏈接?符號鏈接與硬鏈接的區(qū)別是什么?(6分)

  參考答案:

  鏈接分硬鏈接和符號鏈接。

  符號鏈接可以建立對于文件和目錄的鏈接。符號鏈接可以跨文件系統(tǒng),即可以跨磁盤分區(qū)。符號鏈接的文件類型位是l,鏈接文件具有新的i節(jié)點。(3分)

  硬鏈接不可以跨文件系統(tǒng)。它只能建立對文件的鏈接,硬鏈接的文件類型位是-,且硬鏈接文件的i節(jié)點同被鏈接文件的i節(jié)點相同。(3分)

  38、簡述Boot Loader 的兩種操作模式 (Operation Mode)?

  答:

  啟動加載(Boot loading)模式:這種模式也稱為"自主"(Autonomous)模式。也即 Boot Loader 從目標機上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到 RAM 中運行,整個過程并沒有用戶的介入。這種模式是 Boot Loader 的正常工作模式,因此在嵌入式產(chǎn)品發(fā)布的時侯,Boot Loader 顯然必須工作在這種模式下。 (2.5分)

  下載(Downloading)模式:在這種模式下,目標機上的 Boot Loader 將通過串口連接或網(wǎng)絡(luò)連接等通信手段從主機(Host)下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。從主機下載的文件通常首先被 Boot Loader 保存到目標機的 RAM 中,然后再被 Boot Loader 寫到目標機上的FLASH 類固態(tài)存儲設(shè)備中。Boot Loader 的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時被使用;此外,以后的系統(tǒng)更新也會使用 Boot Loader 的這種工作模式。工作于這種模式下的 Boot Loader 通常都會向它的終端用戶提供一個簡單的命令行接口。(2.5分)

  39、模塊的編程和普通程序的編程有哪些區(qū)別?(6分)

  參考答案:

  主要區(qū)別為:

  (1)因為內(nèi)核模塊運行在內(nèi)核態(tài),所以包含的頭文件是內(nèi)核程序相關(guān)的頭文件,而普通程序則包含的是glibc的頭文件(1分)

  (2)模塊程序沒有main函數(shù),而是通過init_module函數(shù)在加載后初始化。(2分)

  (3)模塊程序內(nèi)可直接調(diào)用內(nèi)核函數(shù),而普通程序則只能通過系統(tǒng)調(diào)用使用內(nèi)核函數(shù)。(2分)

  (4)普通用戶程序可運行多次,而內(nèi)核函數(shù)通常則只能加載1次(1分)。

  41、 已知C語言程序有主程序模塊prog.c,prog.h,其中調(diào)用了另一模塊subr.c, subr.h中的功能。試寫出一個可將這兩個模塊編譯成可執(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、簡述Linux的VFS機制及其特點?(5分)

  參考答案:

  VFS是一種抽象的文件機制,內(nèi)核中對文件系統(tǒng)的相關(guān)操作系統(tǒng)實際上都通過操作VFS實現(xiàn),也就是說VFS是對各具體文件系統(tǒng)的抽象。(3分)

  VFS使得內(nèi)核其他部分無須關(guān)心不同文件系統(tǒng)之間的差異,使得Linux可以支持多種類型的文件系統(tǒng)。當(dāng)然,因為增加了抽象層,會有類型轉(zhuǎn)換的開銷。(2分)

  44、模塊的編程和普通程序的編程有哪些區(qū)別?(5分)

  參考答案:

  主要區(qū)別為:

  (1)因為內(nèi)核模塊運行在內(nèi)核態(tài),所以包含的頭文件是內(nèi)核程序相關(guān)的頭文件,而普通程序則包含的是glibc的頭文件(1分)

  (2)模塊程序沒有main函數(shù),而是通過init_module函數(shù)在加載后初始化。(2分)

  (3)模塊程序內(nèi)可直接調(diào)用內(nèi)核函數(shù),而普通程序則只能通過系統(tǒng)調(diào)用使用內(nèi)核函數(shù)。(2分)

  45、BootLoader有哪幾種工作模式?各有什么特點(5分)

  參考答案:啟動加載模式和下模式(2分)。前者“自主”,不需要用戶干預(yù),后者可響應(yīng)用戶的交互請求。(3分)

  46、簡述嵌入式系統(tǒng)調(diào)試有哪幾種方式(5分)

  參考答案:

  模擬器方式(1分)、在線仿真器方式(1分)、監(jiān)控器方式(1分)、在線調(diào)試器方式,如JTAG(2分)。

  47、Qt/Embedded的主要特點是什么?(5分)

  參考答案:

  是一個專門為嵌入式系統(tǒng)設(shè)計的圖形用戶界面的工具包(1分)。支持UNIX和Windows平臺(1分)。采用面向?qū)ο蟮乃枷腴_發(fā)(1分),開發(fā)接口與桌面的Qt相同,因此桌面應(yīng)用程序可方便的移植到Qt/E(1分)。不分層的架構(gòu)使得其他運行速度很快(1分)。

  48、簡述嵌入式系統(tǒng)的開發(fā)流程。

  參考答案:

  需求分析階段(1分)

  體系結(jié)構(gòu)設(shè)計(1分)

  硬件/軟件設(shè)計(1分)

  系統(tǒng)集成(1分)

  代碼固化(1分)

  49、簡述C語言中數(shù)組和指針的異同點。

  參考答案:

  相同點:(1)表達式中的數(shù)組名被編譯器當(dāng)作一個指向該數(shù)組第一個元素的指針(1分)

  (2)下標總是與指針偏移量相同(1分)

  (3)在函數(shù)參數(shù)的聲明中,數(shù)組被編譯器當(dāng)作一個指向該數(shù)組第一個元素的指針(1分)

  不同點:(1)指針用于保存數(shù)據(jù)的地址,而數(shù)組用于保存數(shù)據(jù)(1分)

  (2)指針是間接訪問而數(shù)組是直接訪問方式(1分)

  50、什么是交叉編譯?為什么要采用交叉編譯(5分)

  參考答案:所謂交叉編譯,是指在一個平臺上編譯生成在另一個平臺上運行的可執(zhí)行程序。(3分)。之所以采用交叉編譯,是因為目標平臺上不具備直接運行開發(fā)環(huán)境的條件。(2分)

  。

  51、什么是符號鏈接,什么是硬鏈接?符號鏈接與硬鏈接的區(qū)別是什么?

  參考答案:

  鏈接分硬鏈接和符號鏈接。

  符號鏈接可以建立對于文件和目錄的鏈接。符號鏈接可以跨文件系統(tǒng),即可以跨磁盤分區(qū)。符號鏈接的文件類型位是l,鏈接文件具有新的i節(jié)點。(3分)

  硬鏈接不可以跨文件系統(tǒng)。它只能建立對文件的鏈接,硬鏈接的文件類型位是-,且硬鏈接文件的i節(jié)點同被鏈接文件的i節(jié)點相同。(2分)

  52、簡述Boot Loader的主要功能。

  參考答案:

  基本硬件設(shè)備初始化。(1分)

  設(shè)置好堆棧。 (1分)

  檢測系統(tǒng)內(nèi)存映射(memory map)。 (1分)

  將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中。(1分)

  為內(nèi)核設(shè)置啟動參數(shù),調(diào)用內(nèi)核。(1分)

  53、嵌入式Linux系統(tǒng)的根文件系統(tǒng)通常應(yīng)該包括哪個內(nèi)容?

  參考答案:

  通常包括:init、libc庫、驅(qū)動模塊、必需的應(yīng)用程序和系統(tǒng)配置腳本。(各1分)

  54、

  55、回答下面問題:

  a) 對于整形變量A=0x12345678,請畫出在little endian及big endian的方式下在內(nèi)存中是如何存儲的。

  b) 在ARM系統(tǒng)中,函數(shù)調(diào)用的時候,參數(shù)是通過哪種方式傳遞的?

  c) 中斷(interrupt,如鍵盤中斷)與異常(exception,如除零異常)有何區(qū)別?

  答:

  a) 0x12345678

  little endian big endian 剛好反過來

  高地址--〉 0x12 低地址--〉 0x12

  0x34 0x34

  0x56 0x56

  低地址--〉 0x78 高地址--〉 0x78

  b)

  答:應(yīng)用程序中使用中間寄存器及數(shù)據(jù)棧來傳遞參數(shù)。

  在arm匯編中,如果第1~4個參數(shù)通過r0 -r3寄存器來傳遞,超過4個的使用數(shù)據(jù)棧進行傳遞,輸出函數(shù)由r0傳遞。

  c)所謂中斷應(yīng)該是指外部硬件產(chǎn)生的一個電信號,從cpu的中斷引腳進入,打斷cpu當(dāng)前的運行;

  所謂異常,是指軟件運行中發(fā)生了一些必須作出處理的事件,cpu自動產(chǎn)生一個陷入來打斷當(dāng)前運行,轉(zhuǎn)入異常處理流程。

  56、某Linux主機的/etc/rc.d/rc.inet1文件中有如下語句,請修正錯誤,并解釋其內(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

  答:修正錯誤:

  (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è)定,否則其后的路由將無效。

  解釋內(nèi)容:

  (1)route:建立靜態(tài)路由表的命令;(2)add:增加一條新路由;

  (3)-net 192.168.1.0:到達一個目標網(wǎng)絡(luò)的網(wǎng)絡(luò)地址;

  (4)default:建立一條缺省路由;(5)gw 192.168.0.101:網(wǎng)關(guān)地址;

  (6)metric 1:到達目標網(wǎng)絡(luò)經(jīng)過的路由器數(shù)(跳數(shù))。

  6.下述代碼取自u-boot,請對其加以逐行注釋和分析。

  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.簡述2.4與2.6內(nèi)核模塊機制的改變對編寫設(shè)備驅(qū)動程序的影響?

  答:2.4內(nèi)核中,模塊的編譯只需內(nèi)核源碼頭文件;需要在包含linux/modules.h之前定義MODULE;編譯、連接后生成的內(nèi)核模塊后綴為.o。2.6內(nèi)核中,模塊的編譯需要配置過的內(nèi)核源碼;編譯、連接后生成的內(nèi)核模塊后綴為.ko;

  在2.6 內(nèi)核中,內(nèi)核模塊必須調(diào)用宏module_init 與module_exit() 去注冊初始化與退 出函數(shù)。在2.4內(nèi)核中,如果初始化函數(shù)命名為init_module()、退出函數(shù)命名為cleanup_module()。

  2.4內(nèi)核中,模塊自身通過MOD_INC_USE_COUNT、MOD_DEC_USE_COUNT宏來管理自己被使用的計數(shù)。2.6內(nèi)核提供了更健壯、靈活的模塊計數(shù)管理接口try_module_get(&module)及module_put (& module)取代2.4中的模塊使用計數(shù)管理宏;模塊的使用計數(shù)不必由自身管理,而且在管理模塊使用計數(shù)時考慮到SMP與 PREEMPT機制的影響。

  2.4 內(nèi)核下,缺省情況時模塊中的非靜態(tài)全局變量及函數(shù)在模塊加載后會輸出到內(nèi)核空間。2.6內(nèi)核下,缺省情況時模塊中的非靜態(tài)全局變量及函數(shù)在模塊加載后不會輸出到內(nèi)核空間,需要顯式調(diào)用宏EXPORT_SYMBOL。

  57、論述一下問題

  (1) ARM中引起異常的原因

  (2) 在ARM體系中,異常中斷向量表的大小是多少,其中每個異常中斷占據(jù)多少字節(jié)

  (3) 異常中斷的處理、返回過程。

  答:(1)原因主要:

  a.指令執(zhí)行引起的異常

  軟件中斷、未定義指令(包括所要求的協(xié)處理器不存在是的協(xié)處理器指令)、預(yù)取址中止(存儲器故障)、數(shù)據(jù)中止。

  b.外部產(chǎn)生的中斷

  復(fù)位、FIQ、IRQ。

  (2)在ARM體系中,異常中斷向量表的大小為32字節(jié),其中每個異常中斷占據(jù)4個字節(jié)大小,保留了4個字節(jié)空間。

  (3)ARM處理器對異常中斷的響應(yīng)過程是首先保存處理器當(dāng)前狀態(tài)、中斷屏蔽位及CPSR寄存器中的各個條件標志位。這是通過將當(dāng)前程序狀態(tài)寄存器CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷對應(yīng)的SPSR寄存器中實現(xiàn)的。其次設(shè)置當(dāng)前程序狀態(tài)寄存器CPSR中相應(yīng)的位。再次將寄存器LR_mode(R14_mode)設(shè)置成返回地址。最后將PC設(shè)置成該異常中斷的中斷向量地址,從而跳轉(zhuǎn)到對應(yīng)的中斷處理程序處執(zhí)行。

  ARM處理器從異常中斷程序中返回的過程:首先恢復(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分)?

  答案:

  [問題1](3分)

  1)檢查程序中.h文件所在的目錄,將其加入系統(tǒng)PATH中;

  2)執(zhí)行C編譯:#gcc [源文件名] -o [目標文件名]

  3)改變目標文件為可執(zhí)行文件:#chmod +x [目標文件名]

  4)如需將多個可執(zhí)行文件連續(xù)執(zhí)行,可用vi生成批處理文件,最后記得將該批處理文件屬性改為可執(zhí)行(同上一步)

  [問題2](3分)

  調(diào)試:在編譯時使用-g參數(shù),就可以使用gdb進行調(diào)試。

  59、時間片的大小對系統(tǒng)有什么影響?(3分)在選取時間片是應(yīng)考慮哪些因素?(3分)

  參考答案:

  [問題1](3分)

  在輪轉(zhuǎn)法中,時間片長度的選取非常重要,將直接影響系統(tǒng)開銷和響應(yīng)時間。如果時間片長度很小,則調(diào)度程序剝奪處理機的次數(shù)頻繁,加重系統(tǒng)開銷;反之,如果時間片長度選擇過長,比方說一個時間片就能保證就緒隊列中所有進程都執(zhí)行完畢,則輪轉(zhuǎn)法就退化成先進先出算法。

  [問題2](3分)

  影響時間片大小的主要因素有:系統(tǒng)響應(yīng)時間、就緒進程數(shù)目和計算機處理能力

  60、模塊的編程和普通程序的編程有哪些區(qū)別?(6分)

  參考答案:

  主要區(qū)別為:

  (1)因為內(nèi)核模塊運行在內(nèi)核態(tài),所以包含的頭文件是內(nèi)核程序相關(guān)的頭文件,而普通程序則包含的是glibc的頭文件(1分)

  (2)模塊程序沒有main函數(shù),而是通過init_module函數(shù)在加載后初始化。(2分)

  (3)模塊程序內(nèi)可直接調(diào)用內(nèi)核函數(shù),而普通程序則只能通過系統(tǒng)調(diào)用使用內(nèi)核函數(shù)。(2分)

  (4)普通用戶程序可運行多次,而內(nèi)核函數(shù)通常則只能加載1次(1分)。

  61、什么是交叉編譯?為什么要采用交叉編譯(5分)

  參考答案:所謂交叉編譯,是指在一個平臺上編譯生成在另一個平臺上運行的可執(zhí)行程序。(3分)。之所以采用交叉編譯,是因為目標平臺上不具備直接運行開發(fā)環(huán)境的條件。(2分)

  62、簡述嵌入式Linux系統(tǒng)的初始化過程(5分)

  參考答案:

  嵌入式Linux系統(tǒng)開機首先運行BootLoader,然后由BootLoader引導(dǎo)啟動內(nèi)核,由內(nèi)核檢查和初始化硬件設(shè)備,載入設(shè)備的驅(qū)動程序模塊,安裝root文件系統(tǒng),然后內(nèi)核將啟動一個名為init的進程(2分)。在init運行完成并啟動其它必要的后續(xù)進程后,系統(tǒng)開始運行,引導(dǎo)過程結(jié)束。init進程啟動時需要讀取inittab配置文件,該文件確定init在系統(tǒng)啟動和關(guān)機時的工作特性。(3分)

  六、閱讀程序題

  1. 管道是Linux中進程通信的一種方式,以下程序在父進程和子進程之間創(chuàng)建了一個管道,然后建立它們之間的通信,實現(xiàn)父進程向子進程寫數(shù)據(jù)的功能。說明標號所在行代碼的功能。

  #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);

  }

  }

  答案要點:(1) 將數(shù)據(jù)緩沖區(qū)清0 (2) 創(chuàng)建管道 (3) 創(chuàng)建子進程 (4) 關(guān)閉子進程寫描述符 (5) 子進程讀取管道內(nèi)容 (6) 關(guān)閉子進程讀描述符 (7) 父進程運行控制語句 (8) 關(guān)閉父進程的讀描述符 (9) 將數(shù)據(jù)寫入緩沖區(qū)

  (10) 關(guā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) 一個指向整型數(shù)的指針(A pointer to an integer)

  b) 一個指向指針的的指針,它指向的指針是指向一個整型數(shù)(A pointer to a pointer to an integer)

  c) 一個有10個整型數(shù)的數(shù)組(An array of 10 integers)

  d) 一個有10個指針的數(shù)組,該指針是指向一個整型數(shù)的(An array of 10 pointers to integers)

  e) 一個指向有10個整型數(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ù),對每個表達式進行求值并寫出他的值。在每個表達式進行求值是使用原來給出的值(也就是說,某個表達式的結(jié)果不影響后面的表達式)。假定ints數(shù)組在內(nèi)存中的起始位置是100,整型值和指針的長度都是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;

表達式

ints

__   ____

ints[4]

__   ____

ip

__   ____

ip[4]

__   ____

*(ip+4)

__   ____

  答:(每項1分)

表達式

ints

__     100   ____

Ints[4]

    50   ____

ip

__  112 ____

ip[4]

__  80 ____

*(ip+4)

__   80____

  5、請對下列shell程序加注釋,并說明程序的功能和調(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 定義實用的shell

  #

  # /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 #case結(jié)構(gòu)開始,判斷“位置參數(shù)”決定執(zhí)行的操作。本程序攜帶一個“位置參數(shù)”,即$1

  'start') #若位置參數(shù)為start

  /usr/sbin/apachectl start ;; #啟動httpd進程

  'stop') #若位置參數(shù)為stop

  /usr/sbin/apachectl stop ;; #關(guān)閉httpd進程

  'restart') #若位置參數(shù)為stop

  /usr/sbin/apachectl restart ;; #重新啟動httpd進程

  *) #若位置參數(shù)不是start、stop或restart時

  echo "usage $0 start|stop|restart" ;; #顯示命令提示信息:程序的調(diào)用方法

  esac #case結(jié)構(gòu)結(jié)束

  (2)程序的功能是啟動,停止或重新啟動httpd進程

  (3)程序的調(diào)用方式有三種:啟動,停止和重新啟動。

  七、應(yīng)用實踐題

  1、管道是Linux中進程通信的一種方式,以下程序在父進程和子進程之間創(chuàng)建了一個管道,然后建立它們之間的通信,實現(xiàn)父進程向子進程寫數(shù)據(jù)的功能。說明標號所在行代碼的功能。

  #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);

  }

  }

  答案要點:(1) 將數(shù)據(jù)緩沖區(qū)清0 (2) 創(chuàng)建管道 (3) 創(chuàng)建子進程 (4) 關(guān)閉子進程寫描述符 (5) 子進程讀取管道內(nèi)容 (6) 關(guān)閉子進程讀描述符 (7) 父進程運行控制語句 (8) 關(guān)閉父進程的讀描述符 (9) 將數(shù)據(jù)寫入緩沖區(qū)

  (10) 關(guā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)者—消費者問題的模型,主程序中分別啟動了生產(chǎn)者線程和消費者線程。生產(chǎn)者不斷順序地將0-1000的數(shù)字寫入共享的循環(huán)緩沖區(qū),同時消費者線程不斷地從共享的循環(huán)緩沖區(qū)中讀取數(shù)據(jù)。完成如下問題。

  進行生產(chǎn)(put) 進行消費(get)

  1)生產(chǎn)者 寫入共享的循環(huán)緩沖區(qū)PUT函數(shù)的流程圖如下,試完成流程圖中標號所在處的內(nèi)容。(4.5分)

  (1)寫指針+1是否等于讀指針 (2)等待條件變量not full (3) 設(shè)置條件變量notempty

  2)生產(chǎn)者 寫入共享的循環(huán)緩沖區(qū)PUT函數(shù)的流程圖如下,試完成流程圖中標號所在處的內(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è)計一個Shell程序,在/userdata目錄下建立50個目錄,即user1~user50,并設(shè)置每個目錄的權(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) 一個指向整型數(shù)的指針(A pointer to an integer)

  g) 一個指向指針的的指針,它指向的指針是指向一個整型數(shù)(A pointer to a pointer to an integer)

  h) 一個有10個整型數(shù)的數(shù)組(An array of 10 integers)

  i) 一個有10個指針的數(shù)組,該指針是指向一個整型數(shù)的(An array of 10 pointers to integers)

  j) 一個指向有10個整型數(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ù),對每個表達式進行求值并寫出他的值。在每個表達式進行求值是使用原來給出的值(也就是說,某個表達式的結(jié)果不影響后面的表達式)。假定ints數(shù)組在內(nèi)存中的起始位置是100,整型值和指針的長度都是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;

表達式

ints

__   ____

ints[4]

__   ____

ip

__   ____

ip[4]

__   ____

*(ip+4)

__   ____

  答:(每項1分)

表達式

ints

__     100   ____

Ints[4]

    50   ____

ip

__  112 ____

ip[4]

__  80 ____

*(ip+4)

__   80____

  7、由于Boot Loader的實現(xiàn)依賴于 CPU 的體系結(jié)構(gòu),因此大多數(shù)Boot Loader都分為 stage1 和 stage2 兩大部分。依賴于 CPU 體系結(jié)構(gòu)的代碼,比如設(shè)備初始化代碼等,通常都放在 stage1 中,而且通常都用匯編語言來實現(xiàn),以達到短小精悍的目的。而stage2 則通常用C語言來實現(xiàn),這樣可以實現(xiàn)給復(fù)雜的功能,而且代碼會具有更好的可讀性和可移植性。請根據(jù)你對嵌入式系統(tǒng)中bootloader的理解,簡要設(shè)計一下stage1和stage2需要完成的功能。

  參考答案:

  BootLoader 的 stage1 通常包括以下步驟(以執(zhí)行的先后順序):(3分)

  基本硬件設(shè)備初始化。

  為加載 Boot Loader 的 stage2 準備 RAM 空間。

  拷貝 Boot Loader 的 stage2 到 RAM 空間中。

  設(shè)置好堆棧。

  跳轉(zhuǎn)到 stage2 的C入口點。

  BootLoader 的 stage2 通常包括以下步驟(以執(zhí)行的先后順序): (3分)

  初始化本階段要使用到的硬件設(shè)備。

  檢測系統(tǒng)內(nèi)存映射(memory map)。

  將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中。

  為內(nèi)核設(shè)置啟動參數(shù)。

  調(diào)用內(nèi)核。

  8、Qt/Embedded對嵌入式GUI提供了強大的支持,信號和插槽機制是QT的核心機制,使用QT實現(xiàn)如下界面的登陸程序,其原代碼如下所示,請回答如下問題:

  1)什么是Qt中的信號插槽機制?(3分)

  2)應(yīng)用程序中用到了哪些控件,列舉2個并說明該控件的特點?(4分)

  3)根據(jù)注釋完成程序中相應(yīng)的語句?(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();

  }

  答案要點:

  1)什么是Qt中的信號插槽機制?與回調(diào)函數(shù)機制有何不同?(3分)

  答案要點:回調(diào)函數(shù)機制是事先將一個回調(diào)函數(shù)指針傳遞給一個處理過程,當(dāng)這個處理過程得到執(zhí)行時,回調(diào)預(yù)先定義好的回調(diào)函數(shù)以期實現(xiàn)激活其他處理程序的目的。不同與回調(diào)函數(shù)機制,Qt提供了信號和插槽機制,信號是一個特定的標識;一個槽就是一個函數(shù),與一般函數(shù)不同,槽函數(shù)既能和信號關(guān)聯(lián),當(dāng)某個事件出現(xiàn)時,通過發(fā)送信號,可以將與之相關(guān)聯(lián)的槽函數(shù)激活,執(zhí)行相應(yīng)代碼。

  2)應(yīng)用程序中用到了哪些控件,列舉2個并說明該控件的特點?(4分)

  答案要點:應(yīng)用程序中用到的控件有(1)文本框控件Edit,文本框控件主要用來顯示或接收用戶的輸入信息。(2)按鈕控件Button,按鈕控件主要響應(yīng)用戶單擊功能。

  3)根據(jù)注釋完成程序中相應(yīng)的語句?(4分)

  (1)setLayout(Layout1);

  (2)connect(Button1, SIGNAL(clicked()), this, SLOT(function()));

  9、 在Linux操作系統(tǒng)下,完成下列任務(wù):

  1、 編程實現(xiàn)以下功能

  ² 主程序hello.c(打印Hello World!)

  ² 主程序通過頭文件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語言編寫一個源程序main.c,(1)用以在打開當(dāng)前目錄下的文件“test.txt”,如果沒有創(chuàng)建該文件,并使其具有讀寫屬性,(2)編寫一個makefile實現(xiàn)自動編譯,生成可執(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è)計并編寫一個音頻采集程序。該程序每50ms采集一次數(shù)據(jù),大小為1480個字節(jié)。為了進一步壓縮處理的需要,你需要建立一個能夠至少保存5次所采集數(shù)據(jù)的緩存,該緩存的大小會根據(jù)系統(tǒng)的負載情況動態(tài)調(diào)整。請利用你所學(xué)的C語言內(nèi)存管理及相關(guān)數(shù)據(jù)結(jié)構(gòu)的知識,設(shè)計一個緩存結(jié)構(gòu),包括其內(nèi)存分配的形式(如堆、棧等)及其組織結(jié)構(gòu)(如數(shù)組、鏈表等)。

  參考答案:

  堆適合大塊連續(xù)內(nèi)存的分配,需要自行管理(2分)

  棧適合小塊局部使用內(nèi)容的分配,程序自動管理(2分)

  數(shù)組查找快,但大小固定,而鏈表正好相反。(2分)

  題目需要大容量存儲,且需要動態(tài)改變大小,因此可設(shè)計為采用動態(tài)(堆)分配的鏈表型緩存結(jié)構(gòu)。每個鏈表節(jié)點為1480B。(4分)

  12、 假定你在目錄/home/arm下有一個C程序,他由幾個單獨的文件組成,而這幾個文件又分為包含了其他文件,如下圖所示:

文件

包含文件

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文件,最終的目標文件為hello(交叉編譯器為arm-linux-gcc)

  2. 在目標機上通過網(wǎng)絡(luò)文件系統(tǒng)掛載/mnt 到宿主機上的/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è)計一個BootLoader,在具體開發(fā)之前,你需要確定哪幾個主要問題?

  參考答案:

  需要考慮的問題:(1)與主機連接的方式(2)硬件CPU類型,如何初始化(3)內(nèi)存空間大小以及如何使用 (4)內(nèi)核運行前需要準備哪些條件(5)BootLoader需要支持幾種模式。(每點各2分)

  14、Linux系統(tǒng)中線程的同步方式有互斥量、信號量和條件變量等。假設(shè)現(xiàn)在需要設(shè)計一個多線程的應(yīng)用程序,試分析一下以上幾種同步方式分別可在什么場合下使用。

  參考答案:

  Mutex互斥量,用于操作某個臨界資源時對該資源上鎖,以實現(xiàn)互斥地對獨占資源的使用(3分)

  Semophore信號燈,信號燈內(nèi)有一計數(shù)器,可以用于對多個同類資源的分配。當(dāng)資源用完時,申請資源的線程會在信號量上睡眠,有線程釋放資源時,再將該線程喚醒繼續(xù)運行。(3分)

  Condition條件變量,條件變量用于等待信號。當(dāng)一個線程需要等待某個信號時,就可到條件變量上等待,當(dāng)信號具備時,系統(tǒng)會喚醒該線程繼續(xù)運行。(4分)

  15、進程間通信的方式有多種,假設(shè)需要在Linux系統(tǒng)上設(shè)計本地運行的兩個進程,一個負責(zé)采集視頻,另一個負責(zé)播放。試為兩者設(shè)計一種數(shù)據(jù)的通信方式。進一步考慮當(dāng)兩個進程處于不同機器上時,需要采用的通信方式。說明你的設(shè)計理由。

  參考答案:

  本地:共享內(nèi)存+信號量, 適合于大量數(shù)據(jù)傳輸。Linux支持系統(tǒng)V和POSIX的共享內(nèi)存和信號量。(5分)

  遠程:Socket+應(yīng)用協(xié)議。適合于跨網(wǎng)絡(luò)的(大量)數(shù)據(jù)傳輸。Linux支持BSD的socket。應(yīng)用層協(xié)議需要自行設(shè)計。(5分)

【嵌入式軟件助理工程師認證考試試題題庫】相關(guān)文章:

嵌入式助理工程師認證考試題庫10-20

嵌入式助理工程師認證考試題庫及答案05-29

初級嵌入式軟件工程師認證考試試題07-28

sun java認證考試題庫09-04

Oracle認證考試題庫下載10-20

2017年adobe認證考試題庫試題08-14

關(guān)于Photoshop認證試題題庫06-15

2017年adobe認證考試題庫09-17

2017年Oracle認證考試題庫07-18

2017年思科認證考試題庫10-29