激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

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

時(shí)間:2024-10-26 21:25:59 嵌入式培訓 我要投稿
  • 相關(guān)推薦

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

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

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

  一、單項選擇題

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

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

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

  A. 串行口 B. 硬盤(pán) C. 虛擬終端 D. 打印機

  3、下面哪個(gè)命令行可用來(lái)馬上重新啟動(dòng)正在運行的Linux系統?( D )

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

  C. halt -p D. shutdown -r now

  4、在Linux系統,默認的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è)用戶(hù),這個(gè)用戶(hù)的主目錄是什么( A )

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

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

  8、Linux文件權限一共10位長(cháng)度,分成四段,第三段表示的內容是( D )

  A.文件類(lèi)型 B.文件所有者的權限

  C.文件所有者所在組的權限 D.其他用戶(hù)的權限

  9、在A(yíng)RM系統結構中,MMU映射最小的單元空間是_D___

  A、64KB B、16KB C、4KB D、1KB

  10、某文件的組外成員的權限為只讀;所有者有全部權限;組內的權限為讀與寫(xiě),則該文件的權限為( D )

  A.467 B.674 C.476 D.764

  11、不是shell具有的功能和特點(diǎn)的是 ( A )

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

  C.執行后臺進(jìn)程 D.處理程序命令

  12、在A(yíng)RM處理器的各種工作模式中,( A )模式無(wú)法訪(fǎng)問(wèn)一些被保護的系統資源。20100626年徐遠超

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

  13、如何從當前系統中卸載一個(gè)已裝載的文件系統( A )

  A. umount B. dismount

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

  14、你用vi編輯器編寫(xiě)了一個(gè)腳本文件shell.sh,你想將改文件名稱(chēng)修改為shell2.sh,下列命令( B )可以實(shí)現。

  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í)現在后臺執行命令,此命令將file文件中的內容輸出到file.copy文件中。

  A. cat file >file.copy B. cat file file.copy

  C. &cat file file.copy D. &cat file >file.copy

  16、字符設備文件類(lèi)型的標志是 ( B )

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

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

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

  18、( B )命令可更改一個(gè)文件的權限設置?

  A. attrib B. chmod C. change D. file

  19、用命令ls -al顯示出文件ff的描述如下所示,由此可知文件ff的類(lèi)型為( A )。

  -rwxr-xr-- 1 root root 599 Cec 10 17:12 ff

  A. 普通文件 B. 硬鏈接 C. 目錄 D. 符號鏈接

  20、系統中有用戶(hù)user1和user2,同屬于users組。在user1用戶(hù)目錄下有一文件file1,它擁有644的權限,如果user2用戶(hù)想修改user1用戶(hù)目錄下的file1文件,應擁有( B )權限。

  A. 744 B. 664 C. 646 D. 746

  21、在指令系統的各種尋址方式中,獲取操作數最快的方式是( 1 -B );若操作數的地址包含在指令中,則屬于( 2-A )方式。

  (1) A、直接尋址 B、立即尋址 C、寄存器尋址 D、間接尋址

  (2) A、直接尋址 B、立即尋址 C、寄存器尋址 D、間接尋址

  22、在CPU和物理內存之間進(jìn)行地址轉換時(shí),( B )將地址從虛擬(邏輯)地址空間映射到物理地址空間。

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

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

  A. 目錄 B. 軟鏈接

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

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

  A. 如果光盤(pán)未經(jīng)卸載,光驅是打不開(kāi)的

  B. 安裝文件系統的安裝點(diǎn)只能是/mnt下

  C. 不管光驅中是否有光盤(pán),系統都可以安裝CD-ROM設備

  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使用了多少內存

  A.cat /proc/meminfo B. cat /bin/meminfo

  C.vi /proc/meminfo D.vi /user/local/meminfo

  27、下列(D)設備是字符設備。

  A. hdc B. fd0 C. hda1 D. tty1

  28、下列說(shuō)法正確的是(D)

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

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

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

  D. rm命令可以用來(lái)刪除目錄

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

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

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

  C. 當條件滿(mǎn)足f1的時(shí)候,執行真正的拷貝

  D. 拷貝的過(guò)程中,不轉化文件

  30、為了查找出當前用戶(hù)運行的所有進(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)程,應對( 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的訪(fǎng)問(wèn)權限為rw-r--r--,現要增加所有用戶(hù)的執行權限和同組用戶(hù)的寫(xiě)權限,下列命令正確的是( A )。

  A 、chmod a+x g+w exer1 B 、chmod 765 exer1

  C 、chmod o+x exer1 D 、chmod g+w exer1

  33、刪除當前目錄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、在安裝開(kāi)始前,用光盤(pán)啟動(dòng)系統,想要進(jìn)入字符界面安裝,需要輸入的命令是( C )

  a.linux doc b.linux c.linux text d.linux note

  36、要給文件file1加上其他人可執行屬性的命令是( 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命令中,當用( B )參數時(shí),表示bash是交互的。

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

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

  A、輸出追加 B、輸入追加 C、輸出重定向,原來(lái)的文件會(huì )被改寫(xiě) D、管道

  40、linux系統能夠直接讀取的分區類(lèi)型是( D )

  a.ntfs b.fat16 c.fat32 d.ext3

  41、 下列提法中,屬于ifconfig命令作用范圍的是( B )。

  A、編譯源程序 B、配置網(wǎng)卡的IP地址

  C、配置系統內核 D、加載網(wǎng)卡到內核中

  42、下列對shell變量FRUIT操作,正確的是( C )

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

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

  43、一般可以用( C )實(shí)現自動(dòng)編譯。

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

  44、處理機主要由處理器、存儲器和總線(xiàn)組成,總線(xiàn)包括( D )。

  A、數據總線(xiàn)、串行總線(xiàn)、邏輯總線(xiàn)、物理總線(xiàn)

  B、并行總線(xiàn)、地址總線(xiàn)、邏輯總線(xiàn)、物理總線(xiàn)

  C、并行總線(xiàn)、串行總線(xiàn)、全雙工總線(xiàn)

  D、數據總線(xiàn)、地址總線(xiàn)、控制總線(xiàn)

  45、假設當前目錄下有文件Makefile,下面是其內容:

  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

  現在執行命令make clear,實(shí)際執行的命令是( A ):

  A. rm –f pr1*.o

  B. gcc –c –l prog.o prog.c

  C. gcc –c –o subr.o subr.c

  D. 都執行

  46、可加載模塊一般位于系統的(B)目錄下:

  A. /lib/modules

  B. /lib/modules/x.y.z(x.y.z是內核的版本號)

  C. /usr/lib

  D. /usr/local/lib

  47、Linux分區默認的文件系統的類(lèi)型是:( B )

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

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

  A. 等同于文件復制操作

  B. 類(lèi)似于文件復制,但新的鏈接文件并不占用文件磁盤(pán)存儲空間

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

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

  49. 下面哪一個(gè)選項不是linux系統的進(jìn)程類(lèi)型(D)

  A. 交互進(jìn)程

  B. 批處理進(jìn)程

  C. 守護進(jìn)程

  D. 就緒進(jìn)程

  50、下面( B )特性不符合嵌入式操作系統特點(diǎn)。

  A、實(shí)時(shí)性 B、不可定制

  C、微型化 D、易移植

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

  A、總是從第一個(gè)定義的函數開(kāi)始執行

  B、要調用的函數必須在main()函數中定義

  C、總是從main()函數開(kāi)始執行

  D、main()函數必須放在程序的開(kāi)始

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

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

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

  53、嵌入式系統由硬件部分和軟件部分構成,以下不屬于嵌入式系統軟件的是C。

  A) 系統內核 B) 驅動(dòng)程序 C) FPGA編程軟件 D)嵌入式中

  54、當我們與某遠程網(wǎng)絡(luò )連接不上時(shí),就需要跟蹤路由查看,以便了解在網(wǎng)絡(luò )的什么位置出現了問(wèn)題,滿(mǎn)足該目的的命令是( C )。

  A、ping B、ifconfig

  C、traceroute D、netstat

  55. 下列哪種文件系統的寫(xiě)入是LINUX所不支持的:D

  A. FAT B. UFS C. JFS D. NTFS

  56. LINUX支持網(wǎng)絡(luò )文件系統NFS,下列哪個(gè)命令實(shí)現了將位于 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、采用固定長(cháng)度的指令格式,指令規整、簡(jiǎn)單、基本尋址方式有2~3種。

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

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

  D、RISC處理器都采用哈佛結構

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

  A、系統模式(System)、

  B、終止模式(Abort)

  C、中斷模式(IRQ)

  D、快中斷模式(FIQ)

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

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

  60、在A(yíng)RM體系結構中,_C___寄存器作為連接寄存器,當進(jìn)入子程序時(shí)或者處理器響應異常的時(shí)候,用來(lái)保存PC的返回值;_C___寄存器作為處理器的程序計數器指針。

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

  61、在A(yíng)RM體系結構中,要從主動(dòng)用戶(hù)模式(User)切換到超級用戶(hù)模式(Supervisor),應采用何種方法?C

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

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

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

  D、讓處理器執行未定義指令

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

  A、MMU是內存管理單元Memory Management Unit的縮寫(xiě)

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

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

  D、Linux系統正是利用MMU,才能使得各個(gè)進(jìn)程有獨立的尋址空間

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

  A、IP地址 B、MAC地址

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

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

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

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

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

  C 、運行態(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、文件系統的主要功能是( A )。

  A、實(shí)現對文件的按名存取 B、實(shí)現虛擬存儲

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

  68、在A(yíng)RM Linux體系中,用來(lái)處理外設中斷的異常模式是__C____

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

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

  69、在Linux系統中,驅動(dòng)程序注冊中斷處理程序的函數是_B____

  A、trap_init B、request_irq

  C、enable_irq D、register_irq

  70、在A(yíng)RM Linux系統中,中斷處理程序進(jìn)入C代碼以后,ARM的處于__A__工作模式

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

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

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

  A、當中斷處理程序結束以后,才可以清除

  B、進(jìn)入相應的中斷處理程序,即可以清除

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

  D、任何時(shí)候都可以清除

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

  A、可林斯系統 B、斯普林系統

  C、圖靈機系統 D、虛擬存儲系統

  73、通過(guò)修改下面文件哪個(gè)文件 ,可以設定開(kāi)機時(shí)候自動(dòng)安裝的文件系統(C )

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

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

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

  A. 操作系統的外殼

  B. 用戶(hù)與Linux內核之間的接口程序

  C. 一個(gè)命令語(yǔ)言解釋器

  D. 一種和C類(lèi)似的程序語(yǔ)言

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

  A./etc B./boot

  C./sbin D./root

  76、假設root用戶(hù)執行“init 0”命令,系統將會(huì )( B )。

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

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

  A、交互操作系統 B、交叉編譯

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

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

  union data

  { int i;

  char ch;

  float f;

  } data1;

  則變量data1所占的內存存儲空間可表示為。

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

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

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

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

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

  80、實(shí)時(shí)操作系統(RTOS)內核與應用程序之間的接口稱(chēng)為( C )。

  A、輸入/輸出接口 B、文件系統

  C、API D、圖形用戶(hù)接口

  81、在操作系統中,除賦初值外,對信號量?jì)H能操作的兩種原語(yǔ)是( C )。

  A、存操作、取操作 B、讀操作、寫(xiě)操作

  C、P操作、V操作 D、輸入操作、輸出操作

  82、在下列ARM處理器的各種模式中,只有__A___模式不可以自由地改變處理器的工作模式。

  A、用戶(hù)模式(User) B、系統模式(System)

  C、終止模式(Abort) D、中斷模式(IRQ)

  83、32位體系結構的ARM處理器有_B___種不同的處理器工作模式,和__B__個(gè)主要用來(lái)標識CPU的工作狀態(tài)和程序的運行狀態(tài)的狀態(tài)寄存器。

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

  84、已知Linux系統中的唯一一塊硬盤(pán)是第一個(gè)IDE接口的master設備,該硬盤(pán)按順序有3個(gè)主分區和一個(gè)擴展分區,這個(gè)擴展分區又劃分了3個(gè)邏輯分區,則該硬盤(pán)上的第二個(gè)邏輯分區在Linux中的設備名稱(chēng)是( 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、某文件的組外成員的權限為只寫(xiě);所有者有讀寫(xiě)權限;組內的權限為只讀,則該文件的權限為( B )

  A 467 B 642 C 476 D 764

  87、關(guān)閉linux系統(不重新啟動(dòng))可使用命令 B 。

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

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

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

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

  A、輸出追加 B、輸入追加 C、輸出重定向,原來(lái)的文件被改寫(xiě) D、管道

  90、WWW服務(wù)器是在Internet上使用最為廣泛,它采用的是 B 結構。

  A) 服務(wù)器/工作站 B) B/S C) 集中式 D )分布式

  91、NFS是 C 系統。

  A) 文件 B) 磁盤(pán) C) 網(wǎng)絡(luò )文件 D) 操作

  92、在日常管理中,通常CPU會(huì )影響系統性能的情況是: A 。

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

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

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

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

  94、下面哪一個(gè)選項不是linux系統的調度策略(D)

  A. SCHED_NORMAL

  B. SCHED_FIFO

  C. SCHED_RR

  D. SCHED_LRU

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

  A.-c B.-w C.-g D.-o

  96、存盤(pán)并退出vi的指令是( D )。

  A、q B、q! C、w D、wq

  97. 下列關(guān)于/etc/fstab文件描述,正確的是( D )。

  A. fstab文件只能描述屬于linux的文件系統

  B. CD_ROM和軟盤(pán)必須是自動(dòng)加載的

  C. fstab文件中描述的文件系統不能被卸載

  D 啟動(dòng)時(shí)按fstab文件描述內容加載文件系統

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

  A 執行 B 譯碼 C 取指 D 都不是

  99. ARM系統處理16-bit數據時(shí),對應的數據類(lèi)型是( B )。

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

  100. 實(shí)時(shí)系統是指( B )

  A 響應快的系統 B 時(shí)間約束的系統 C 單任務(wù)系統 D 內核小的系統

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

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

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

  C 寄存器的初始化

  D 堆棧的初始化

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

  102.下列幾種流行的嵌入式GUI中,沒(méi)有采用分層設計的一種是: 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,其中參數-g的作用是(D)

  A .生成目標文件test.o B.生成匯編文件test.s C .進(jìn)行預編譯 D .包含調試信息

  105、下列提法中,不屬于ifconfig命令作用范圍的是 D 。

  A) 配置本地回環(huán)地址 B) 配置網(wǎng)卡的IP地址

  C) 激活網(wǎng)絡(luò )適配器 D) 加載網(wǎng)卡到內核中

  106、為了得到所有的命令行輸入的參數,我們可以使用變量: B

  A) $# B) $@ C) $0 D) $!

  107、32位數0x12345678用小端格式表示,則在A(yíng)XD調試器下觀(guān)察數據在內存中分布的情況是(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 復雜指令計算機 B 并行機 C 精簡(jiǎn)指令計算機 D 多處理器計算機

  109、NFS服務(wù)器通過(guò)調用/etc/rc.d/init.d中的portmap和nfs腳本啟動(dòng),啟動(dòng)后它將通過(guò)尋找本地服務(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實(shí)現的功能是(C)

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

  112、嵌入式系統的開(kāi)發(fā)通常是在交叉開(kāi)發(fā)環(huán)境實(shí)現的,交叉開(kāi)發(fā)環(huán)境是指( A )

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

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

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

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

  114、在A(yíng)RM Linux啟動(dòng)的過(guò)程中,開(kāi)啟MMU的時(shí)候,如何實(shí)現從實(shí)地址空間到虛擬地址空間的過(guò)度?D

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

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

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

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

  115、在A(yíng)RM體系中,MMU的第一級描述符有___項,每個(gè)描述符占用____字節

  A、1024,32 B、4096,4

  C、4096,4 D、1024,32

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

  116、在A(yíng)RM體系中,下面MMU的一級描述符中,是節描述符的是_A___

  A、0xA0000C0E B、0xA0000C0F

  C、0x00000000 D、0xC0000C01

  117、init進(jìn)程是內核在完成核內引導以后加載的,它是系統所有進(jìn)程的起點(diǎn),進(jìn)程號為1,在執行過(guò)程中,首先會(huì )讀取( C )文件。20100626徐遠超

  A. /etc/init B. /etc/fstab

  C. /etc/inittab D. /etc/rc.sysinit

  118 、指令ADD 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]對源操作數的尋址方式是( A )

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

  121、在Linux 2.4或者2.6內核中,和ARM體系結構相關(guān)的中斷處理程序的C代碼在源碼樹(shù)的__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. 負責在系統啟動(dòng)的時(shí)候運行一系列程序和腳本文件

  123、哈佛結構和馮諾依曼結構的區別是( A)

  A 指令和數據分開(kāi)存儲 B 不需要程序計數器 C 統一編址 D 單一數據總線(xiàn)

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

  A./etc B./boot

  C./sbin D./root

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

  A.單用戶(hù)字符模式 B.多用戶(hù)字符模式

  C.單用戶(hù)圖形模式 D.多用戶(hù)圖形模式

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

  A.文件類(lèi)型 B .文件所有者的權限

  C. 文件所有者所在組的權限 D. 其他用戶(hù)的權限

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

  A.加載內核 B.檢測內存

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

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

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

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

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

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

  C.-f 選項用于輸出文件,通常是 JFFS2 文件系統映像

  D.一旦創(chuàng )建了 JFFS2 文件系統,它就被裝入閃存中適當的位置(引導裝載程序告知內核查找文件系統的地址)以便內核能掛裝它。

  130、波特率9600bps是指數據每秒傳輸( B )

  A 9600個(gè)字節 B 9600個(gè)比特 C 9600個(gè)字 D 9600個(gè)字符

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

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

  C ARM9帶有Cache功能 D ARM9是哈佛結構

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

  A. 只與一個(gè)任意的字符匹配

  B. 只與一個(gè)任意的字母匹配

  C. 只與一個(gè)任意的數字匹配

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

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

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

  134、當系統工作負載增加時(shí),CPU的 A 將占很大比重

  A) 用戶(hù)時(shí)間 B)系統時(shí)間 C)空閑時(shí)間、 D) 進(jìn)程時(shí)間

  135、fsck對文件系統的檢查最先是從文件系統的 C 開(kāi)始的

  A) MBR B) 磁盤(pán)塊 C) 超級塊 D) 塊鏈表

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

  A、指令條數多 B、指令長(cháng)度固定

  C、指令格式種類(lèi)少 D、尋址方式種類(lèi)少

  137、對ARM7微處理器說(shuō)法不正確的是( D )。

  A、兼容16位的Thumb指令集 B、集成式RISC內核

  C、集成了ICE-RT邏輯 D、哈佛體系結構

  138、在寄存器間接尋址方式中,指定寄存器中存放的是 ( B )。

  A、操作數 B、操作數地址

  C、轉移地址 D、地址偏移量

  139、Samba服務(wù)器的進(jìn)程由B 兩部分組成 。

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

  140、如果數據的存儲格式是大端模式,32bit寬的數0x12345678在大端模式下的CPU內存中的存放(假設從地址0x4000開(kāi)始)。內存地址為0x4001的內容是(A )。

  A、 0x34 B、0x56

  C、 0x23 D、0x78

  141、在配置代理服務(wù)器時(shí),若設置代理服務(wù)器的工作緩存為64MB,配置行應為 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)題和保護網(wǎng)絡(luò )用戶(hù)及網(wǎng)絡(luò )管理對象問(wèn)題。 C 屬于安全管理的內容。

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

  C) 控制和維護訪(fǎng)問(wèn)權限 D) 監測故障

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

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

  144、下列哪個(gè)命令以文本菜單方式界面配置內核選項: A

  A Make menuconfig B make xconfig C make config D make mrproper

  145、切換用戶(hù)登錄的命令是: ( 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]);

  }

  那么,輸出結果為(B )

  A、該程序不可執行,無(wú)輸出結果 B、 5

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

  147、終止一個(gè)前臺進(jìn)程可能用到的命令和操作是(B )。

  A、kill B、+c

  C、shut down D、halt

  148、 B 目錄存放著(zhù)Linux的源代碼。

  A) /etc B) /usr/src C) /usr D) /home

  149、如果要將文件名file1修改為file2,下列命令( B )可以實(shí)現。

  A. cp file1 file2

  B. mv file1 file2

  C. ls file1 >file2

  D. ll file1 >file2

  150、不存盤(pán)退出vi的指令是( B )。

  A、q B、q! C、w D、wq

  151、有關(guān)歸檔和壓縮命令,下面描述正確的是 C 。

  A) 用uncompress命令解壓縮由compress命令生成的后綴為.zip的壓縮文件

  B) unzip命令和gzip命令可以解壓縮相同類(lèi)型的文件

  C) tar歸檔且壓縮的文件可以由gzip命令解壓縮

  D) tar命令歸檔后的文件也是一種壓縮文件

  152、未定義指令異常的C處理函數在(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、僅當前一個(gè)命令執行出錯時(shí)才執行后一條命令,需要采取的操作是:(C)

  A. command1 && command2

  B. command1 XOR command2

  C. command1 || command2

  D. command1 << command2

  154、具有很多C語(yǔ)言的功能,又稱(chēng)過(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。主機192.168.1.20訪(fǎng)問(wèn)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、不需要編譯內核的情況是 D 。

  A) 刪除系統不用的設備驅動(dòng)程序時(shí) B) 升級內核時(shí) C) 添加新硬件時(shí) D)將網(wǎng)卡激活

  157、 內核不包括的子系統是 D 。

  A) 進(jìn)程管理系統 B) 內存管理系統 C) I/O管理系統 D)硬件管理系統

  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)加載的模塊清單,會(huì )把當前插入的所有內核模塊都列出來(lái)。

  A、insmod B、rmmod

  C、dmesg D、lsmod

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

  A、是上電后運行的第一個(gè)程序 B、改變系統時(shí)鐘

  C、Bootloader的兩種模式對開(kāi)發(fā)人員沒(méi)有意義 D、向內核傳遞啟動(dòng)參數

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

  A、輸出追加 B、輸入追加 C、輸出重定向,原來(lái)的文件被改寫(xiě) D、管道

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

  A) 地址總線(xiàn)的寬度為32位     B) 處理的數據長(cháng)度只能為32位

  C) CPU 字長(cháng)為32位      D) 通用寄存器數目為32個(gè)

  163、在32位處理器上,假設棧頂指針寄存器的當前值為0x00FFFFE8,那么在執行完指令“push eax”(eax為32位寄存器)后,棧指針的當前值應為A

  A) 0x00FFFFE4 B) 0x00FFFFE6 C) 0x00FFFFEA D) 0x00FFFFEC

  164、有若干并發(fā)進(jìn)程均將一個(gè)共享變量count 中的值加1 一次,那么有關(guān)count 中的值說(shuō)法正確的是:______ 。(C )

  A、肯定有不正確的結果

  B、肯定有正確的結果

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

  D、A,B,C 均不對

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

  A、0 B、$

  C、G D、GG

  166、已知某用戶(hù)stud1,其用戶(hù)目錄為/home/stud1。如果當前目錄為/home,進(jìn)入目錄/home/stud1/test的命令是 ()。

  A 、cd test B、cd /stud1/test

  C、 cd stud1/test D、cd home

  167.如果想配置一臺匿名ftp服務(wù)器,應修改 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í)現,以完成復雜的功能,并增加可讀性和可移植性,以下哪一步驟屬于stage2的內容:__D____

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

  B . 設置好堆棧

  C . 硬件設備初始化

  D . 將 kernel 映像和根文件系統映像從 flash 上讀到 RAM 空間中

  170、執行以下程序段

  MOV SP, #3AH

  MOV A, #20H

  MOV B, #30H

  PUSH ACC

  PUSH B

  POP ACC

  POP B

  后,A和B的內容是(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í),為了跨越不同的文件系統,需要使用(B )。

  A.普通鏈接 B.硬鏈接

  C.特殊鏈接 D.軟鏈接

  173、( B )不是進(jìn)程和程序的區別。

  A. 程序是一組有序的靜態(tài)指令,進(jìn)程是一次程序的執行過(guò)程

  B. 程序只能在前臺運行,而進(jìn)程可以在前臺或后臺運行

  C. 程序可以長(cháng)期保存,進(jìn)程是暫時(shí)的

  D. 程序沒(méi)有狀態(tài),而進(jìn)程是有狀態(tài)的

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

  A、臨界區 B、進(jìn)程

  C、緩沖區 D、信號量

  175.在TCP/IP模型中,應用層包含了所有的高層協(xié)議,在下列的一些應用協(xié)議中, B 是能夠實(shí)現本地與遠程主機之間的文件傳輸工作。

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

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

  A、中斷斷點(diǎn)的地址 B、中斷向量表起始地址

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

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

  A . 文件系統、內核、啟動(dòng)參數、Bootloader

  B . 啟動(dòng)參數、Bootloader、內核、文件系統

  C . Bootloader、內核、啟動(dòng)參數、文件系統

  D . Bootloader、啟動(dòng)參數、內核、文件系統

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

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

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

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

  A、 + Z B、 + C

  C、 + P D、&

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

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

  C、不需要一個(gè)復雜的編譯器 D、尋址方式種類(lèi)少

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

  A) /usr/sbin/smbd B) /usr/sbin/nmbd C) rc.samba D) /etc/inetd.conf

  182、Linux系統中的設備可分為三類(lèi):字符設備、塊設備和網(wǎng)絡(luò )設備,其中不是基于文件系統訪(fǎng)問(wèn)的設備是 ( C) 。

  A. 字符設備 B. 塊設備

  C. 網(wǎng)絡(luò )設備 D. 字符和塊設備

  183、Samba服務(wù)器的配置文件是 D 。

  A) httpd.conf B) inetd.conf C) rc.samba D) smb.conf

  184、在給定文件中查找與設定條件相符字符串命令為(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) 在嵌入式系統中,調試器與被調試程序一般位于同一臺機器上

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

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

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

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

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

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

  B) 在軟件體系結構上,在操作系統和應用軟件之間引入一個(gè)虛擬機層,把一些通用的、共性的操作系統API接口函數封裝起來(lái)

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

  D) 在數據類(lèi)型上,盡量直接使用C語(yǔ)言的數據類(lèi)型

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

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

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

  C、只有Load/Store指令可以訪(fǎng)問(wèn)存儲器

  D、尋址方式多而復雜

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

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

  C、功耗低 D、成本高

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

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

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

  192.在某嵌入式操作系統中,若P、V操作的信號量S的初值為2,當前值為-1,則表示等待信號量S的任務(wù)個(gè)數為B 。

  A ) 0       B) 1       C) 2       D) 3

  193、在字符界面環(huán)境下注銷(xiāo)LINUX,可用( C )命令。

  A. exit或quit

  B. quit或ctrl+D

  C. exit或ctrl+D

  D. 以上都可

  194、Linux文件權限一共10位長(cháng)度,分成四段,第一段表示的內容是( A )

  A 文件類(lèi)型 B 文件所有者的權限

  C 文件所有者所在組的權限 D 其他用戶(hù)的權限

  195、對于所有用戶(hù)具有讀的文件權限,而文件主同時(shí)具有執行權限的文件權限是( 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、操作系統中同時(shí)存在著(zhù)多個(gè)進(jìn)程,它們(C )

  A、不能共享系統資源 B、不能調用同一段程序代碼

  C、可以共享所有的系統資源 D、可以共享允許共享的系統資源

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

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

  B、程序計數器內容+形式地址

  C、基址寄存器內容+形式地址

  D、堆棧指示器內容+形式地址

  199、下列文件系統中,采用了inode來(lái)標識文件的是( D )

  a.ntfs

  b.fat16

  c.fat32

  d.ext3

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

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

  二、多項選擇題

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

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

  2. linux操作系統支持的文件系統有( A B C D E )

  A、EXT2 B、VFAT C、NFS D、ISO9660  E、JFFS

  3. Linux系統中的設備文件通常有如下分類(lèi)(B C D )

  A、虛擬設備 B、字符設備 C、網(wǎng)絡(luò )設備 D、塊設備 E、存儲設備

  4. 片內總線(xiàn)是大規模集成電路(Large Scale Integrated Circuit:LSI)和超大規模集成電路(VLSI)內部各寄存器或功能單元之間的信息交換通道,它由生產(chǎn)廠(chǎng)家決定,下列屬于片內總線(xiàn)的有(A B D )。

  A、AHB總線(xiàn) B、APB總線(xiàn) C、USB總線(xiàn) D、ASB 總線(xiàn)  E、1394總線(xiàn)

  5. 下列能改變ARM處理器工作狀態(tài)的指令有( C D)

  A、B指令 B、SUB指令 C、BX指令 D、BLX指令 E、BL指令

  6. 常用的軟件開(kāi)發(fā)模型有(B C D )

  A、結構型 B、 原型模型 C、 迭代型 D、瀑布型 E、綜合型

  7. ARM處理器的工作模式中屬于異常模式的有( C D E )

  A、用戶(hù)模式usr B、系統模式sys C、 外部中斷模式irq D、中止模式abt E、快速中斷模式fiq

  8. 芯片總線(xiàn)又稱(chēng)元件級總線(xiàn),它是指系統內或插件板內各元件之間所使用的總線(xiàn),下列屬于芯片總線(xiàn)的有( A C D )

  A、I2C總線(xiàn) B、ISA總線(xiàn) C、SPI總線(xiàn) D、SCI總線(xiàn)  E、PCI總線(xiàn)

  9. 在A(yíng)RM匯編語(yǔ)言程序設計中主程序和子程序參數的傳遞需要滿(mǎn)足ATPCS規則,ATPCS規則中用來(lái)傳遞參數的寄存器是(A B C D )

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

  三、填空題

  1、 在linux系統中,以 文件 方式訪(fǎng)問(wèn)設備 。

  2、 前臺起動(dòng)的進(jìn)程使用 ctrl+c 終止。

  3、 安裝linux系統對硬盤(pán)分區時(shí),必須有兩種分區類(lèi)型: 文件系統分區 和 交換分區 。

  4、 利用gdb進(jìn)行調試時(shí),可通過(guò)step或next命令進(jìn)行單步執行。

  5、 DHCP可以實(shí)現動(dòng)態(tài) IP 地址分配。

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

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

  8、 在使用ls命令時(shí),用八進(jìn)制形式顯示非打印字符應使用參數 -b 。

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

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

  11、 編寫(xiě)的shell程序運行前必須賦予該腳本文件 執行 權限。

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

  13、 結束后臺進(jìn)程的命令是 kill 。

  14、 進(jìn)行遠程登錄的命令是 telnet 。

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

  16、 在Linux系統下,第二個(gè)IDE通道的硬盤(pán)(從盤(pán))被標識為 hdb 。

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

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

  19、 利用gdb進(jìn)行調試時(shí),可通過(guò)step或next命令進(jìn)行單步執行。

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

  21、 gcc的編譯可分為_(kāi)_預處理____、編譯、匯編和___鏈接___等四個(gè)階段。

  22、 在Linux多線(xiàn)程編程時(shí),需要包含頭文件___pthread.h___。

  23、 卸載Linux內核模塊使用命令___rmmod___。

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

  25、 ARM處理器的中斷有兩種處理模式,分別為_(kāi)__快速中斷___模式和的___外部中斷___模式。

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

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

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

  29、 在shell編程時(shí),要把一個(gè)用戶(hù)的輸入賦值給一個(gè)變量,使用__read_______命令。

  30、 Qt/Embedded使用___信號___和___插槽___的機制實(shí)現函數的回調。

  31、 加載Linux內核模塊使用命令___insmod___。

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

  33、 Linux系統在啟動(dòng)init進(jìn)程時(shí)使用的配置文件是_/etc/inittab_____。

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

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

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

  37、 在linux系統中,以 文件 方式訪(fǎng)問(wèn)設備 。

  38、 利用gdb進(jìn)行調試時(shí),可通過(guò)step或 next 命令進(jìn)行單步執行。

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

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

  41、 編寫(xiě)的shell程序運行前必須賦予該腳本文件 執行 權限 。

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

  43、 內核分為 進(jìn)程管理系統 、 內存管理系統 、 IO管理系統 和文件管理系統 等四個(gè)子系統。

  44、 嵌入式系統中按照總線(xiàn)所傳送的信息類(lèi)型,可以分為數據總線(xiàn)、地址總線(xiàn)和 控制總線(xiàn) 等幾種。

  45、 嵌入式linux系統中,設備類(lèi)型分為字符設備、塊設備 和 網(wǎng)絡(luò )設備 等三種。

  46、 Linux中所有用戶(hù)的信息保存于__ /etc/passwd _和__/etc/shadow __文件。

  47、 鏈接分為_(kāi)_軟連接 __和__硬鏈接 ____鏈接 。

  48、

  49、 某文件的權限位:d-rw-_r--_r--,用數值形式表示該權限,則該八進(jìn)制數為_(kāi)644 ,該文件屬性是__目錄 _。

  50、 嵌入式Linux系統從軟件的角度看通?梢苑譃樗膫(gè)層次:引導加載程序、__ Linux內核___、__文件系統_、用戶(hù)應用程序。

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

  四、判斷題

  1、 在gdb調試過(guò)程中,不退出gdb也可以執行UNIX shell命令。(對)

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

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

  4、 命令fdisk /mbr的作用是安裝系統引導程序到主分區。(錯)

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

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

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

  8、 uCOS-II操作系統屬于順序執行系統 。(錯 )

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

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

  11、 基于A(yíng)RM架構的指令都是32位的。(錯)

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

  13、 可用ctrl+C強行結束后臺進(jìn)程。(錯 )

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

  15、

  16、 文件系統的主要功能是實(shí)現虛擬存儲。(錯)

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

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

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

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

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

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

  23、 在重新啟動(dòng)Linux系統的同時(shí)把內存中的信息寫(xiě)入硬盤(pán),應使用shutdown –r now命令實(shí)現。(對)

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

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

  26、 從后臺啟動(dòng)進(jìn)程,應在命令的結尾加上符號@。(錯)

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

  28、 函數的標量參數通過(guò)傳值的方式進(jìn)行傳遞,而數組名參數則具有傳址調用的語(yǔ)義。( √ )

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

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

  31、 (V)在2.6內核中加入的搶占點(diǎn)提高了Linux的可搶占性,但Linux仍不能看作實(shí)時(shí)系統。

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

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

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

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

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

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

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

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

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

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

  42、 在嵌入式系統中,整個(gè)系統的加載啟動(dòng)任務(wù)就完全由 Boot Loader 來(lái)完成。( √ )

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

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

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

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

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

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

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

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

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

  52、 (X)根文件系統是系統啟動(dòng)時(shí)首先加載的文件系統,因此需要快速加載的內容應放置于其中,以加快系統的運行速度。

  53、 (X)線(xiàn)程切換成本小于進(jìn)程,因此Linux系統中的多線(xiàn)程程序的調度開(kāi)銷(xiāo)要小于多進(jìn)程程序。

  54、 (X)守護進(jìn)程的主要任務(wù)是完成與用戶(hù)的交互,以保證系統的響應性能。

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

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

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

  58、 (V)一個(gè)shell腳本的第一行是:#! /bin/csh它的作用是注釋?zhuān)硎鞠旅婺_本是csh腳本。

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

  60、 (V)Linux允許內核以NFS的形式連接根文件系統

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

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

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

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

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

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

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

  68、 VHDL是一種硬件描述語(yǔ)言,用于設計硬件電子系統。(√)

  69、 二極管具有單向導通性。(√)

  70、 CISC機器多采用Load/Store結構(×)

  71、 GDB是一個(gè)用來(lái)調試C和C++程序的調試器。(√)

  72、 DSP是專(zhuān)門(mén)用于數字信號處理方面的處理器。(√)

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

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

  五、簡(jiǎn)答題

  1、簡(jiǎn)述嵌入式系統中非占先式與占先式調度法的區別有哪些。

  答:

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

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

  2、什么是硬實(shí)時(shí)操作系統、軟實(shí)時(shí)操作系統以及二者的區別?

  答:

  在實(shí)時(shí)系統中,如果系統在指定的時(shí)間內未能實(shí)現某個(gè)確定的任務(wù),會(huì )導致系統的全面失敗,這樣的系統被稱(chēng)為強實(shí)時(shí)系統或硬實(shí)時(shí)系統。(1分)強實(shí)時(shí)系統響應時(shí)間一般在毫秒或微秒級。(1分)

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

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

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

  答:

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

  (2)體系結構設計階段,描述系統的功能如何實(shí)現;(1分)

  (3)詳細設計階段,進(jìn)行硬件系統與軟件系統的分類(lèi)劃分,以決定哪些功能用硬件實(shí)現,哪些用軟件實(shí)現;(1分)

  (4)系統集成,把系統的軟件、硬件和執行裝置集成在一起,(1分)進(jìn)行調試,發(fā)現并改進(jìn)在設計過(guò)程中的錯誤;(1分)

  (5)系統測試,對設計好的系統進(jìn)行測試,看其是否滿(mǎn)足給定的要求。(1分)

  4、ARM支持哪兩種數據存儲格式,簡(jiǎn)單描述各自特點(diǎn)。

  答:

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

  大端格式:被存放字數據的高字節存儲在存儲系統的低地址中,而被存放的字數據的低字節則存放在存儲系統的高地址中。(2分)

  小端格式:與大端存儲格式相反,在小端存儲格式中,存儲系統的低地址中存放的是被放字數據中的低字節內容,存儲系統的高地址存放的是被存字數據中的高字節內容。(2分)

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

  答:

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

  分為啟動(dòng)加載模式和下載模式。

  (1) 啟動(dòng)加載模式

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

  (2) 下載模式

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

  6、 簡(jiǎn)述Bootloader有何作用?

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

  7、 程序、進(jìn)程、線(xiàn)程有何區別?

  答案要點(diǎn):程序是編譯后形成的可執行代碼,是靜止的。進(jìn)程是程序的一次執行,是活動(dòng)的。線(xiàn)程是進(jìn)程的可執行單元,同一進(jìn)程的不同線(xiàn)程共享進(jìn)程的資源和地址空間。

  8、 簡(jiǎn)述嵌入式系統的幾個(gè)重要特征?

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

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

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

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

  答:

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

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

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

  3. Linux是一個(gè)和Unix相似、以?xún)群藶榛A的、具有完全的內存訪(fǎng)問(wèn)控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等現有的大 部分芯片)等特性的一種通用操作系統。(1分)

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

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

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

  答:

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

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

  答:

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

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

  13、簡(jiǎn)述嵌入式系統設計過(guò)程。

  答;每條1分

  (1)需求分析 (4)設計硬件構件和軟件構件

  (2)規格說(shuō)明 (5)系統集成

  (3)體系結構設計 (6)系統測試

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

  答:每條1分

  中斷向量表

  初始化存儲器系統

  初始化堆棧

  初始化有特殊要求的斷口,設備

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

  改變處理器模式

  呼叫主應用程序

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

  答:

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

  符號鏈接可以建立對于文件和目錄的鏈接。符號鏈接可以跨文件系統,即可以跨磁盤(pán)分區。符號鏈接的文件類(lèi)型位是l,鏈接文件具有新的i節點(diǎn)。

  硬鏈接不可以跨文件系統。它只能建立對文件的鏈接,硬鏈接的文件類(lèi)型位是-,且硬鏈接文件的i節點(diǎn)同被鏈接文件的i節點(diǎn)相同。

  16、進(jìn)程的查看和調度分別使用什么命令?

  答:

  進(jìn)程查看的命令是ps和top。

  進(jìn)程調度的命令有at,crontab,batch,kill。

  17、簡(jiǎn)述嵌入式系統中非占先式與占先式調度法的區別有哪些。

  答:

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

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

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

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

  不同的嵌入式系統其Boot Loader一般是不同的。從操作系統的角度來(lái)看, Boot Loader的總目標就是正確地調用內核來(lái)執行。

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

  19、什么是硬實(shí)時(shí)操作系統、軟實(shí)時(shí)操作系統以及二者的區別?

  答:

  在實(shí)時(shí)系統中,如果系統在指定的時(shí)間內未能實(shí)現某個(gè)確定的任務(wù),會(huì )導致系統的全面失敗,這樣的系統被稱(chēng)為強實(shí)時(shí)系統或硬實(shí)時(shí)系統。(1分)強實(shí)時(shí)系統響應時(shí)間一般在毫秒或微秒級。(1分)

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

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

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

  答:

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

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

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

  答:

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

  (2)體系結構設計階段,描述系統的功能如何實(shí)現;(1分)

  (3)詳細設計階段,進(jìn)行硬件系統與軟件系統的分類(lèi)劃分,以決定哪些功能用硬件實(shí)現,哪些用軟件實(shí)現;(1分)

  (4)系統集成,把系統的軟件、硬件和執行裝置集成在一起,(1分)進(jìn)行調試,發(fā)現并改進(jìn)在設計過(guò)程中的錯誤;(1分)

  (5)系統測試,對設計好的系統進(jìn)行測試,看其是否滿(mǎn)足給定的要求。(1分)

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

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

  請解釋其含義。

  答:

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

  (2)第二列:該文件系統的安裝點(diǎn);

  (3)第三列:文件系統的類(lèi)型;

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

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

  (6)第六列:在系統引導時(shí)檢測文件系統的順序。

  23、ARM支持哪兩種數據存儲格式,簡(jiǎn)單描述各自特點(diǎn)。

  答:

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

  大端格式:被存放字數據的高字節存儲在存儲系統的低地址中,而被存放的字數據的低字節則存放在存儲系統的高地址中。(2分)

  小端格式:與大端存儲格式相反,在小端存儲格式中,存儲系統的低地址中存放的是被放字數據中的低字節內容,存儲系統的高地址存放的是被存字數據中的高字節內容。(2分)

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

  答:

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

  分為啟動(dòng)加載模式和下載模式。

  (3) 啟動(dòng)加載模式

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

  (4) 下載模式

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

  26、簡(jiǎn)述進(jìn)程的啟動(dòng)方式。

  答:

  在Linux中啟動(dòng)一個(gè)進(jìn)程有手工啟動(dòng)和調度啟動(dòng)兩種方式:

  (1)手工啟動(dòng)

  用戶(hù)在輸入端發(fā)出命令,直接啟動(dòng)一個(gè)進(jìn)程的啟動(dòng)方式?梢苑譃椋

 、偾芭_啟動(dòng):直接在SHELL中輸入命令進(jìn)行啟動(dòng)。

 、诤笈_啟動(dòng):?jiǎn)?dòng)一個(gè)目前并不緊急的進(jìn)程,如打印進(jìn)程。

  (2)調度啟動(dòng)

  系統管理員根據系統資源和進(jìn)程占用資源的情況,事先進(jìn)行調度安排,指定任務(wù)運行的時(shí)間和場(chǎng)合,到時(shí)候系統會(huì )自動(dòng)完成該任務(wù)。

  27、簡(jiǎn)述Bootloader有何作用?

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

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

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

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

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

  復位、FIQ、IRQ。

  29、程序、進(jìn)程、線(xiàn)程有何區別?

  答案要點(diǎn):程序是編譯后形成的可執行代碼,是靜止的。進(jìn)程是程序的一次執行,是活動(dòng)的。線(xiàn)程是進(jìn)程的可執行單元,同一進(jìn)程的不同線(xiàn)程共享進(jìn)程的資源和地址空間。

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

  參考答案:

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

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

  Condition條件變量,條件變量用于等待信號。當一個(gè)線(xiàn)程需要等待某個(gè)信號時(shí),就可到條件變量上等待,當信號具備時(shí),系統會(huì )喚醒該線(xiàn)程繼續運行。(2分)

  31、簡(jiǎn)述嵌入式系統的幾個(gè)重要特征?

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

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

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

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

  參考答案:Busybox是通過(guò)一個(gè)程序去實(shí)現原來(lái)Linux的眾多命令程序。這樣可使原來(lái)3.5MB左右的工具包壓縮大約200KB大小一個(gè)程序,這對嵌入式系統非常重要(2分)。

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

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

  答:

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

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

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

  3. Linux是一個(gè)和Unix相似、以?xún)群藶榛A的、具有完全的內存訪(fǎng)問(wèn)控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等現有的大 部分芯片)等特性的一種通用操作系統。(1分)

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

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

  35、簡(jiǎn)述Linux需要進(jìn)行進(jìn)程調度的時(shí)機(6分)

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

  Linux執行進(jìn)程調度一般是在以下情況發(fā)生的:

  (1)正在執行的進(jìn)程運行完畢;

  (2)正在執行的進(jìn)程調用阻塞原語(yǔ)將自己阻塞起來(lái)進(jìn)入等待狀態(tài);

  (3)正在執行的進(jìn)程調用了P原語(yǔ)操作,從而因資源不足而被阻塞;或調用了V原語(yǔ)操作激活了等待資源的進(jìn)程隊列;

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

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

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

  (6)就緒隊列中的某個(gè)進(jìn)程的優(yōu)先級變得高于當前運行進(jìn)程的優(yōu)先級,從而也將引起進(jìn)程調度。

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

  參考答案:

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

  符號鏈接可以建立對于文件和目錄的鏈接。符號鏈接可以跨文件系統,即可以跨磁盤(pán)分區。符號鏈接的文件類(lèi)型位是l,鏈接文件具有新的i節點(diǎn)。(3分)

  硬鏈接不可以跨文件系統。它只能建立對文件的鏈接,硬鏈接的文件類(lèi)型位是-,且硬鏈接文件的i節點(diǎn)同被鏈接文件的i節點(diǎn)相同。(3分)

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

  答:

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

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

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

  參考答案:

  主要區別為:

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

  (2)模塊程序沒(méi)有main函數,而是通過(guò)init_module函數在加載后初始化。(2分)

  (3)模塊程序內可直接調用內核函數,而普通程序則只能通過(guò)系統調用使用內核函數。(2分)

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

  41、 已知C語(yǔ)言程序有主程序模塊prog.c,prog.h,其中調用了另一模塊subr.c, subr.h中的功能。試寫(xiě)出一個(gè)可將這兩個(gè)模塊編譯成可執行文件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機制及其特點(diǎn)?(5分)

  參考答案:

  VFS是一種抽象的文件機制,內核中對文件系統的相關(guān)操作系統實(shí)際上都通過(guò)操作VFS實(shí)現,也就是說(shuō)VFS是對各具體文件系統的抽象。(3分)

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

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

  參考答案:

  主要區別為:

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

  (2)模塊程序沒(méi)有main函數,而是通過(guò)init_module函數在加載后初始化。(2分)

  (3)模塊程序內可直接調用內核函數,而普通程序則只能通過(guò)系統調用使用內核函數。(2分)

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

  參考答案:?jiǎn)?dòng)加載模式和下模式(2分)。前者“自主”,不需要用戶(hù)干預,后者可響應用戶(hù)的交互請求。(3分)

  46、簡(jiǎn)述嵌入式系統調試有哪幾種方式(5分)

  參考答案:

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

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

  參考答案:

  是一個(gè)專(zhuān)門(mén)為嵌入式系統設計的圖形用戶(hù)界面的工具包(1分)。支持UNIX和Windows平臺(1分)。采用面向對象的思想開(kāi)發(fā)(1分),開(kāi)發(fā)接口與桌面的Qt相同,因此桌面應用程序可方便的移植到Qt/E(1分)。不分層的架構使得其他運行速度很快(1分)。

  48、簡(jiǎn)述嵌入式系統的開(kāi)發(fā)流程。

  參考答案:

  需求分析階段(1分)

  體系結構設計(1分)

  硬件/軟件設計(1分)

  系統集成(1分)

  代碼固化(1分)

  49、簡(jiǎn)述C語(yǔ)言中數組和指針的異同點(diǎn)。

  參考答案:

  相同點(diǎn):(1)表達式中的數組名被編譯器當作一個(gè)指向該數組第一個(gè)元素的指針(1分)

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

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

  不同點(diǎn):(1)指針用于保存數據的地址,而數組用于保存數據(1分)

  (2)指針是間接訪(fǎng)問(wèn)而數組是直接訪(fǎng)問(wèn)方式(1分)

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

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

  。

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

  參考答案:

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

  符號鏈接可以建立對于文件和目錄的鏈接。符號鏈接可以跨文件系統,即可以跨磁盤(pán)分區。符號鏈接的文件類(lèi)型位是l,鏈接文件具有新的i節點(diǎn)。(3分)

  硬鏈接不可以跨文件系統。它只能建立對文件的鏈接,硬鏈接的文件類(lèi)型位是-,且硬鏈接文件的i節點(diǎn)同被鏈接文件的i節點(diǎn)相同。(2分)

  52、簡(jiǎn)述Boot Loader的主要功能。

  參考答案:

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

  設置好堆棧。 (1分)

  檢測系統內存映射(memory map)。 (1分)

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

  為內核設置啟動(dòng)參數,調用內核。(1分)

  53、嵌入式Linux系統的根文件系統通常應該包括哪個(gè)內容?

  參考答案:

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

  54、

  55、回答下面問(wèn)題:

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

  b) 在A(yíng)RM系統中,函數調用的時(shí)候,參數是通過(guò)哪種方式傳遞的?

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

  答:

  a) 0x12345678

  little endian big endian 剛好反過(guò)來(lái)

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

  0x34 0x34

  0x56 0x56

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

  b)

  答:應用程序中使用中間寄存器及數據棧來(lái)傳遞參數。

  在arm匯編中,如果第1~4個(gè)參數通過(guò)r0 -r3寄存器來(lái)傳遞,超過(guò)4個(gè)的使用數據棧進(jìn)行傳遞,輸出函數由r0傳遞。

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

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

  56、某Linux主機的/etc/rc.d/rc.inet1文件中有如下語(yǔ)句,請修正錯誤,并解釋其內容。

  /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應改為小寫(xiě):route;(2)netmask 255.255.0.0應改為:netmask 255.255.255.0;

  (3)缺省路由的子網(wǎng)掩碼應改為:netmask 0.0.0.0;

  (4)缺省路由必須在最后設定,否則其后的路由將無(wú)效。

  解釋內容:

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

  (3)-net 192.168.1.0:到達一個(gè)目標網(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)過(guò)的路由器數(跳數)。

  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.簡(jiǎn)述2.4與2.6內核模塊機制的改變對編寫(xiě)設備驅動(dòng)程序的影響?

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

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

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

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

  57、論述一下問(wèn)題

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

  (2) 在A(yíng)RM體系中,異常中斷向量表的大小是多少,其中每個(gè)異常中斷占據多少字節

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

  答:(1)原因主要:

  a.指令執行引起的異常

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

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

  復位、FIQ、IRQ。

  (2)在A(yíng)RM體系中,異常中斷向量表的大小為32字節,其中每個(gè)異常中斷占據4個(gè)字節大小,保留了4個(gè)字節空間。

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

  ARM處理器從異常中斷程序中返回的過(guò)程:首先恢復被中斷程序的處理器狀態(tài),也就是將SPSR_mode 內容復制到CPSR。然后返回到發(fā)生異常中斷指令的下一條指令處執行,即將LR_mode(R14_mode)寄存器的內容復制到PC中。

  58、在linux中如何編譯C程序,使之成為可執行文件(3分)?如何調試(3分)?

  答案:

  [問(wèn)題1](3分)

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

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

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

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

  [問(wèn)題2](3分)

  調試:在編譯時(shí)使用-g參數,就可以使用gdb進(jìn)行調試。

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

  參考答案:

  [問(wèn)題1](3分)

  在輪轉法中,時(shí)間片長(cháng)度的選取非常重要,將直接影響系統開(kāi)銷(xiāo)和響應時(shí)間。如果時(shí)間片長(cháng)度很小,則調度程序剝奪處理機的次數頻繁,加重系統開(kāi)銷(xiāo);反之,如果時(shí)間片長(cháng)度選擇過(guò)長(cháng),比方說(shuō)一個(gè)時(shí)間片就能保證就緒隊列中所有進(jìn)程都執行完畢,則輪轉法就退化成先進(jìn)先出算法。

  [問(wèn)題2](3分)

  影響時(shí)間片大小的主要因素有:系統響應時(shí)間、就緒進(jìn)程數目和計算機處理能力

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

  參考答案:

  主要區別為:

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

  (2)模塊程序沒(méi)有main函數,而是通過(guò)init_module函數在加載后初始化。(2分)

  (3)模塊程序內可直接調用內核函數,而普通程序則只能通過(guò)系統調用使用內核函數。(2分)

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

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

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

  62、簡(jiǎn)述嵌入式Linux系統的初始化過(guò)程(5分)

  參考答案:

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

  六、閱讀程序題

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

  #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) 將數據緩沖區清0 (2) 創(chuàng )建管道 (3) 創(chuàng )建子進(jìn)程 (4) 關(guān)閉子進(jìn)程寫(xiě)描述符 (5) 子進(jìn)程讀取管道內容 (6) 關(guān)閉子進(jìn)程讀描述符 (7) 父進(jìn)程運行控制語(yǔ)句 (8) 關(guān)閉父進(jìn)程的讀描述符 (9) 將數據寫(xiě)入緩沖區

  (10) 關(guān)閉父進(jìn)程寫(xiě)描述符

  2. 閱讀下面shell程序,寫(xiě)出執行結果:

  #!/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è)指向整型數的指針(A pointer to an integer)

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

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

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

  e) 一個(gè)指向有10個(gè)整型數數組的指針(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. 根據下面給出的聲明和數據,對每個(gè)表達式進(jìn)行求值并寫(xiě)出他的值。在每個(gè)表達式進(jìn)行求值是使用原來(lái)給出的值(也就是說(shuō),某個(gè)表達式的結果不影響后面的表達式)。假定ints數組在內存中的起始位置是100,整型值和指針的長(cháng)度都是4字節。

  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程序加注釋?zhuān)⒄f(shuō)明程序的功能和調用方法:

  #!/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 注釋行,凡是以星號開(kāi)始的行均為注釋行。

  #

  # 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結構開(kāi)始,判斷“位置參數”決定執行的操作。本程序攜帶一個(gè)“位置參數”,即$1

  'start') #若位置參數為start

  /usr/sbin/apachectl start ;; #啟動(dòng)httpd進(jìn)程

  'stop') #若位置參數為stop

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

  'restart') #若位置參數為stop

  /usr/sbin/apachectl restart ;; #重新啟動(dòng)httpd進(jìn)程

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

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

  esac #case結構結束

  (2)程序的功能是啟動(dòng),停止或重新啟動(dòng)httpd進(jìn)程

  (3)程序的調用方式有三種:?jiǎn)?dòng),停止和重新啟動(dòng)。

  七、應用實(shí)踐題

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

  #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) 將數據緩沖區清0 (2) 創(chuàng )建管道 (3) 創(chuàng )建子進(jìn)程 (4) 關(guān)閉子進(jìn)程寫(xiě)描述符 (5) 子進(jìn)程讀取管道內容 (6) 關(guān)閉子進(jìn)程讀描述符 (7) 父進(jìn)程運行控制語(yǔ)句 (8) 關(guān)閉父進(jìn)程的讀描述符 (9) 將數據寫(xiě)入緩沖區

  (10) 關(guān)閉父進(jìn)程寫(xiě)描述符

  2、用Shell編程,判斷一文件是不是字符設備文件,如果是將其拷貝到 /dev 目錄下。

  答:

  #!/bin/sh

  FILENAME=

  echo “Input file name:”

  read FILENAME

  if [ -c "$FILENAME" ]

  then

  cp $FILENAME /dev

  fi

  3.下列程序實(shí)現了著(zhù)名的生產(chǎn)者—消費者問(wèn)題的模型,主程序中分別啟動(dòng)了生產(chǎn)者線(xiàn)程和消費者線(xiàn)程。生產(chǎn)者不斷順序地將0-1000的數字寫(xiě)入共享的循環(huán)緩沖區,同時(shí)消費者線(xiàn)程不斷地從共享的循環(huán)緩沖區中讀取數據。完成如下問(wèn)題。

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

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

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

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

  (4)寫(xiě)指針是否等于讀指針 (5) 等待條件變量not empty (6) 設置條件變量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、設計一個(gè)Shell程序,在/userdata目錄下建立50個(gè)目錄,即user1~user50,并設置每個(gè)目錄的權限,其中其他用戶(hù)的權限為:讀;文件所有者的權限為:讀、寫(xiě)、執行;文件所有者所在組的權限為:讀、執行。

  答:

  #!/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è)指向整型數的指針(A pointer to an integer)

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

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

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

  j) 一個(gè)指向有10個(gè)整型數數組的指針(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.根據下面給出的聲明和數據,對每個(gè)表達式進(jìn)行求值并寫(xiě)出他的值。在每個(gè)表達式進(jìn)行求值是使用原來(lái)給出的值(也就是說(shuō),某個(gè)表達式的結果不影響后面的表達式)。假定ints數組在內存中的起始位置是100,整型值和指針的長(cháng)度都是4字節。

  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的實(shí)現依賴(lài)于 CPU 的體系結構,因此大多數Boot Loader都分為 stage1 和 stage2 兩大部分。依賴(lài)于 CPU 體系結構的代碼,比如設備初始化代碼等,通常都放在 stage1 中,而且通常都用匯編語(yǔ)言來(lái)實(shí)現,以達到短小精悍的目的。而stage2 則通常用C語(yǔ)言來(lái)實(shí)現,這樣可以實(shí)現給復雜的功能,而且代碼會(huì )具有更好的可讀性和可移植性。請根據你對嵌入式系統中bootloader的理解,簡(jiǎn)要設計一下stage1和stage2需要完成的功能。

  參考答案:

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

  基本硬件設備初始化。

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

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

  設置好堆棧。

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

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

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

  檢測系統內存映射(memory map)。

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

  為內核設置啟動(dòng)參數。

  調用內核。

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

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

  2)應用程序中用到了哪些控件,列舉2個(gè)并說(shuō)明該控件的特點(diǎn)?(4分)

  3)根據注釋完成程序中相應的語(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中的信號插槽機制?與回調函數機制有何不同?(3分)

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

  2)應用程序中用到了哪些控件,列舉2個(gè)并說(shuō)明該控件的特點(diǎn)?(4分)

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

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

  (1)setLayout(Layout1);

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

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

  1、 編程實(shí)現以下功能

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

  ² 主程序通過(guò)頭文件hello.h調用message函數

  ² 頭文件hello.h(聲明message函數)

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

  參考答案:

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

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

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

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

  12、 假定你在目錄/home/arm下有一個(gè)C程序,他由幾個(gè)單獨的文件組成,而這幾個(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. 編寫(xiě)makefile文件,最終的目標文件為hello(交叉編譯器為arm-linux-gcc)

  2. 在目標機上通過(guò)網(wǎng)絡(luò )文件系統掛載/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、假如你需要設計一個(gè)BootLoader,在具體開(kāi)發(fā)之前,你需要確定哪幾個(gè)主要問(wèn)題?

  參考答案:

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

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

  參考答案:

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

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

  Condition條件變量,條件變量用于等待信號。當一個(gè)線(xiàn)程需要等待某個(gè)信號時(shí),就可到條件變量上等待,當信號具備時(shí),系統會(huì )喚醒該線(xiàn)程繼續運行。(4分)

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

  參考答案:

  本地:共享內存+信號量, 適合于大量數據傳輸。Linux支持系統V和POSIX的共享內存和信號量。(5分)

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

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

嵌入式助理工程師認證考試題庫01-23

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

2016年嵌入式硬件助理工程師認證考試試題題庫01-21

Photoshop認證考試題庫11-02

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

Oracle OCP認證考試題庫12-31

Adobe Photoshop認證考試題庫06-09

Adobe Illustrator認證考試題庫10-25

Linux認證考試題庫及答案10-26

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频