linux考試復(fù)習(xí)題OK_第1頁
linux考試復(fù)習(xí)題OK_第2頁
linux考試復(fù)習(xí)題OK_第3頁
linux考試復(fù)習(xí)題OK_第4頁
linux考試復(fù)習(xí)題OK_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第一章1什么是嵌入式系統(tǒng)?它由哪幾部分組成?嵌入式系統(tǒng)是一應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),切軟硬件可裁減,對功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。3個主要的組成部分:硬件、實(shí)時操作系統(tǒng)以及應(yīng)用軟件。硬件:包括處理器、存儲器(ROM、RAM)、輸入輸出設(shè)備、其他部分輔助系統(tǒng)等。實(shí)時操作系統(tǒng):用于管理應(yīng)用軟件,并提供一種機(jī)制,使得處理器分時地執(zhí)行各個任務(wù)并完成一定的時限要求 。應(yīng)用軟件:實(shí)現(xiàn)具體業(yè)務(wù)邏輯功能2嵌入式系統(tǒng)的三要素是什么?嵌入式系統(tǒng)的三要素是嵌入、專用、計(jì)算機(jī)。其中嵌入性指的是嵌入到對象體系中,有對象環(huán)境要求;專用性是指軟、硬件按對象要求裁減;計(jì)算機(jī)指實(shí)現(xiàn)對象的智能

2、化功能。3列出5中以上的嵌入式實(shí)時操作系統(tǒng)。嵌入式實(shí)時操作系統(tǒng)是指操作系統(tǒng)本身要能在一個固定時限內(nèi)對程序調(diào)用(或外部事件)做出正確的反應(yīng)亦即對時序與穩(wěn)定性的要求十分嚴(yán)格4嵌入式系統(tǒng)一般由幾層組成?簡單介紹其作用。嵌入式系統(tǒng)一般由硬件層、中間層、軟件層和功能層組成。:(1)硬件層 :由嵌入式微處理器、外圍電路和外設(shè)組成。(2)中間層 :硬件層與軟件層之間為中間層.作用:將系統(tǒng)軟件與底層硬件部分隔離,使得系統(tǒng)的底層設(shè)備驅(qū)動程序與硬件無關(guān)。(3)軟件層 :主要是操作系統(tǒng),有的還包括文件系統(tǒng)、圖形用戶接口和網(wǎng)絡(luò)系統(tǒng)等。作用:操作系統(tǒng)是一個標(biāo)準(zhǔn)的內(nèi)核將中斷、I/O、定時器等資源都封裝起來,以方便用戶使用

3、。(4)功能層 :由基于操作系統(tǒng)開發(fā)的應(yīng)用程序組成,用來完成對被控對象的控制功能。作用:功能層是面向被控對象和用戶的,為了方便用戶操作,往往需要具有友好的人機(jī)界面。5簡述嵌入式系統(tǒng)中非占先式與占先式調(diào)度法的區(qū)別。非占先式調(diào)度法也稱作合作型多任務(wù),各個任務(wù)彼此合作共享一個CPU。中斷服務(wù)可以使一個高優(yōu)先級的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。但中斷服務(wù)以后控制權(quán)還是回到原來被中斷了的那個任務(wù),直到該任務(wù)主動放棄CPU 的使用權(quán)時,那個高優(yōu)先級的任務(wù)才能獲得CPU 的使用權(quán)。當(dāng)系統(tǒng)響應(yīng)時間很重要時,要使用占先式(preemptive)內(nèi)核。最高優(yōu)先級的任務(wù)一旦就緒總能得到CPU 的控制權(quán)。當(dāng)一個運(yùn)行著的任

4、務(wù)使一個比它優(yōu)先級高的任務(wù)進(jìn)入了就緒態(tài),當(dāng)前任務(wù)的CPU 使用權(quán)就被剝奪了,或者說被掛起了,那個高優(yōu)先級的任務(wù)立刻得到了CPU 的控制權(quán)。6簡述什么是硬實(shí)時操作系統(tǒng)、軟實(shí)時操作系統(tǒng)以及兩者的區(qū)別。在實(shí)時系統(tǒng)中,如果系統(tǒng)在指定的時間內(nèi)未能實(shí)現(xiàn)某個確定的任務(wù),會導(dǎo)致系統(tǒng)的全面失敗,這樣的系統(tǒng)被稱為強(qiáng)實(shí)時系統(tǒng)或硬實(shí)時系統(tǒng)。強(qiáng)實(shí)時系統(tǒng)響應(yīng)時間一般在毫秒或微秒級。在弱實(shí)時系統(tǒng)中,雖然響應(yīng)時間同樣重要,但是超時卻不會發(fā)生致命的錯誤。其系統(tǒng)響應(yīng)時間在毫秒至秒的數(shù)量級上,其實(shí)時性的要求比強(qiáng)實(shí)時系統(tǒng)要差一些。7嵌入式系統(tǒng)的設(shè)計(jì)步驟有哪些?各部分主要工作是什么?嵌入式系統(tǒng)的設(shè)計(jì)步驟及各部分的主要工作如下。(1)需

5、求分析階段,羅列出用戶的需求。(2)體系結(jié)構(gòu)設(shè)計(jì)階段,描述系統(tǒng)的功能如何實(shí)現(xiàn)。3)詳細(xì)設(shè)計(jì)階段,進(jìn)行硬件系統(tǒng)與軟件系統(tǒng)的分類劃分,以決定哪些功能用硬件實(shí)現(xiàn),哪些用軟件實(shí)現(xiàn)。(4)系統(tǒng)集成把系統(tǒng)的軟件、硬件和執(zhí)行裝置集成在一起,進(jìn)行調(diào)試,發(fā)現(xiàn)并改進(jìn)在設(shè)計(jì)過程中的錯誤。5)系統(tǒng)測試對設(shè)計(jì)好的系統(tǒng)進(jìn)行測試看其是否滿足給定的要求。8.Linux作為嵌入式操作系統(tǒng)的優(yōu)勢有哪些?(1)可應(yīng)用于多種硬件平臺。Linux 已經(jīng)被移植到多種硬件平臺,這對于經(jīng)費(fèi)、時間受限制的研究與開發(fā)項(xiàng)目是很有吸引力的。原型可以在標(biāo)準(zhǔn)平臺上開發(fā)后移植到 具體的硬件。(2)Linux 的高度模塊化使添加部件非常容易。本身內(nèi)置網(wǎng)絡(luò)支

6、持,而目前嵌入式系統(tǒng)對網(wǎng)絡(luò)支持要求越來越高。(3)Linux 是一個和Unix 相似、以內(nèi)核為基礎(chǔ)的、具有完全的內(nèi)存訪問控制,支持大量硬件等特性的一種通用操作系統(tǒng)。(4)Linux 可以隨意地配置,不需要任何的許可證或商家的合作關(guān)系。其程序源碼全部公開,這樣開發(fā)人員可以對操作系統(tǒng)進(jìn)行定制,適應(yīng)其特殊需要。(5)Linux 帶有Unix 用戶熟悉的完善的開發(fā)工具不但成熟完善,9簡述Linux需要進(jìn)行進(jìn)程調(diào)度的時機(jī)。Linux 執(zhí)行進(jìn)程調(diào)度一般是在以下情況發(fā)生的:(1)正在執(zhí)行的進(jìn)程運(yùn)行完畢。(2)正在執(zhí)行的進(jìn)程調(diào)用阻塞原語將自己阻塞起來進(jìn)入等待狀態(tài)。(3)正在執(zhí)行的進(jìn)程調(diào)用了P 原語操作從而因資

7、源不足而被阻塞,或調(diào)用了V 原語操作激活了等待資源的進(jìn)程隊(duì)列。(4)執(zhí)行中的進(jìn)程提出I/O 請求后被阻塞。(5)系統(tǒng)分配的時間片已經(jīng)用完。以上都是CPU 為不可剝奪方式下的引起進(jìn)程調(diào)度的原因。在CPU 方式是可剝奪時還有下面的原因:(6)就緒隊(duì)列中的某個進(jìn)程的優(yōu)先級變得高于當(dāng)前運(yùn)行進(jìn)程的優(yōu)先級,從而也將引起進(jìn)程調(diào)度。第三章二、綜合應(yīng)用題1、已知C語言程序有主要程序模塊prog.c、proc.h,其中調(diào)用了另一模塊subr.c、subr.h中的功能。試寫出一個可將這兩個模塊編譯成可執(zhí)行文件pr1的Makefile。pr1:prog.o subr.ogcc o pr1 prog.o subr.op

8、rog.o:prog.c prog.hgcc c o prog.o prog.csubr.o:subr.c subr.hgcc c o subr.o subr.c2、假定目錄/home/arm下有一個C語言程序,它由幾個單獨(dú)的文件組成,而這幾個文件又分別包含了其他文件,如下表所示。完成下列任務(wù)(1) 編寫Makefile文件,最終的目標(biāo)文件為hello,交叉編譯器為arm-linux-gcc。hello:main.o list.o symbol.o table.oarm-linux-gcc o hello main.o list.o symbol.o table.omain.o:main.c

9、stdio.h table.h symbol.h list.harm-linux-gcc -c o main.o main.clist.o:list.c list.harm-linux-gcc c o list.o list.csymbol.o:symbol.c symbol.h arm-linux-gcc c o symbol.o symbol.ctable.o:table.c table.h symbol.h list.harm-linux-gcc c o table.o table.cclear:rm f hello *.o(2) 在目標(biāo)機(jī)上通過網(wǎng)絡(luò)文件系統(tǒng)掛載/mnt到宿主機(jī)上的/ho

10、me/arm目錄。mount t nfs o nolock IP地址:/home/arm /mnt3.在Linux操作系統(tǒng)下,編程實(shí)現(xiàn)以下功能。(1)主程序hello.c(打印“hello world!”)。(2)主程序通過頭文件hello.h調(diào)用message函數(shù)。(3)message函數(shù)有message.c定義(打印“This is a message!”)。/hello.h#ifndef HELLO_H#define HELLO_Hvoid message();#endif/message.c#include#include”hello.h”void message() printf(“

11、this is a message!”); /hello.c#include#include#include#include”hello.h”void main(int argc,char *argv)printf(“hello world!n”);message(); return 0; 第六章一簡答題1、 何為虛擬內(nèi)存?虛擬內(nèi)存的管理有何作用?使用虛擬地址尋址整個系統(tǒng)的主存和輔存的方式在現(xiàn)代操作系統(tǒng)中被稱為虛擬內(nèi)存。MMU 便是實(shí)現(xiàn)虛擬內(nèi)存的必要條件。嵌入式處理器如果存在MMU ,由于在MMU 具備內(nèi)存地址映射和尋址功能,操作系統(tǒng)會使用它完成從虛擬地址到物理地址的轉(zhuǎn)換, 所有的應(yīng)用程序只需

12、要使用虛擬地址尋址數(shù)據(jù)。虛擬內(nèi)存的管理方法使系統(tǒng)既可以運(yùn)行體積比物理內(nèi)存還要大的應(yīng)用程序,也可以實(shí)現(xiàn)“按需調(diào)頁”策略,既滿足了程序的運(yùn)行速度,又節(jié)約了物理內(nèi)存空間。2、 進(jìn)程內(nèi)存區(qū)域涉及哪幾種數(shù)據(jù)段?進(jìn)程內(nèi)存區(qū)域涉及到5 種數(shù)據(jù)段,即: 碼段:代碼段是用來存放可執(zhí)行文件的操作指令,也就是說是它是可執(zhí)行程序在內(nèi)存中的鏡像。數(shù)據(jù)段:數(shù)據(jù)段用來存放可執(zhí)行文件中已初始化全局變量,換句話說就是存放程序靜態(tài)分配的變量和全局變量。BSS 段:BSS 段包含了程序中未初始化的全局變量,在內(nèi)存中 BSS 段全部置零。堆:堆是用于存放進(jìn)程運(yùn)行中被動態(tài)分配的內(nèi)存段,它的大小并不固定,可動態(tài)擴(kuò)張或縮減。棧:棧是用戶存

13、放程序臨時創(chuàng)建的局部變量,也就是說函數(shù)括弧“”中定義的變量除此以外,在函數(shù)被調(diào)用時,其參數(shù)也會被壓入發(fā)起調(diào)用的進(jìn)程棧中,并且待到調(diào)用結(jié)束后,函數(shù)的返回值也會被存放回棧中。3、 簡述內(nèi)核空間和用戶空間的區(qū)別。在Linux 系統(tǒng)中,內(nèi)核在最高級執(zhí)行,也稱為“系統(tǒng)態(tài)”,在這一級任何操作都可以執(zhí)行。而應(yīng)用程序則執(zhí)行在最低級,即所謂的“用戶態(tài)”。在這一級處理器禁止對硬件的直接訪問和對內(nèi)存的未授權(quán)訪問。模塊是在所謂的“內(nèi)核空間”中運(yùn)行的,而應(yīng)用程序則是在“用戶空間”中運(yùn)行的。它們分別引用不同的內(nèi)存映射,也就是程序代碼使用不同的“地址空間”。4、簡述共享內(nèi)存的作用?共享內(nèi)存區(qū)域是被多個進(jìn)程共享的一部分物理內(nèi)

14、存。如果多個進(jìn)程都把該內(nèi)存區(qū)域映射到自己的虛擬地址空間,則這些進(jìn)程就都可以直接訪問該共享內(nèi)存區(qū)域,從而可以通過該區(qū)域進(jìn)行通信。共享內(nèi)存是進(jìn)程間共享數(shù)據(jù)的一種最快的方法,一個進(jìn)程向共享內(nèi)存區(qū)域?qū)懭肓藬?shù)據(jù),共享這個內(nèi)存區(qū)域的所有進(jìn)程就可以立刻看到其中的內(nèi)容。這塊共享虛擬內(nèi)存的頁面,出現(xiàn)在每一個共享該頁面的進(jìn)程的頁表中。但是它不需要在所有進(jìn)程的虛擬內(nèi)存中都有相同的虛擬地址。5、簡述內(nèi)存管理與虛擬文件系統(tǒng)之間的關(guān)系。 內(nèi)存管理利用虛擬文件系統(tǒng)支持交換,交換進(jìn)程(swapd)定期由調(diào)度程序調(diào)度,這也是內(nèi)存管理依賴于進(jìn)程調(diào)度的唯一原因。當(dāng)一個進(jìn)程存取的內(nèi)存映射被換出時,內(nèi)存管理向文件系統(tǒng)發(fā)出請求,同時掛起

15、當(dāng)前正在運(yùn)行的進(jìn)程。第七章二、編程題1、用C語言編寫一個源程序main.c,實(shí)現(xiàn)以下功能。(1)打開當(dāng)前目錄下的文件“test.txt”,如果沒有則創(chuàng)建該文件,并使其具體讀寫屬性。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)編寫一個makefile實(shí)現(xiàn)自動編譯,生成可執(zhí)行文件 main。objects = main.oexec = mainall:$(objects)gcc o

16、$(exec) $(objects)main.o:main.cgcc c main.cclean:rm r $(exec) $(objects)2、編寫一個程序?qū)崿F(xiàn)把一個文件內(nèi)容復(fù)制到另一個文件中。2.參考程序:#include #include #include #include #include #include #define BUFFER_SIZE 1024int main(int argc,char *argv)int from_fd,to_fd;int bytes_read,bytes_write;char bufferBUFFER_SIZE;char *ptr;if(argc!=

17、3) fprintf(stderr,Usage:%s fromfile tofilena,argv0);exit(1);/* 打開源文件 */if(from_fd=open(argv1,O_RDONLY)=-1) fprintf(stderr,Open %s Error:%sn,argv1,strerror(errno);exit(1); /* 創(chuàng)建目的文件 */if(to_fd=open(argv2,O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR)=-1)fprintf(stderr,Open %s Error:%sn,argv2,strerror(errno);exit(

18、1);/* 以下代碼是一個經(jīng)典的拷貝文件的代碼 */while(bytes_read=read(from_fd,buffer,BUFFER_SIZE)if(bytes_read=-1)&(errno!=EINTR) break; /*發(fā)生讀錯誤,退出循環(huán)*/else if(bytes_read0)ptr=buffer;while(bytes_write=write(to_fd,ptr,bytes_read)if(bytes_write=-1)&(errno!=EINTR)break; /*若寫錯誤,退出循環(huán)*/* 寫完了所有讀的字節(jié) */else if(bytes_write=bytes_re

19、ad) break;/*讀寫字節(jié)不等退出循環(huán)*/else if(bytes_write0) /* 只寫了一部分,繼續(xù)寫 */ptr+=bytes_write;bytes_read-=bytes_write; if(bytes_write=-1)break; /* 寫的時候發(fā)生的致命錯誤 */ close(from_fd);close(to_fd); exit(0);4、 從鍵盤上輸入兩個學(xué)生的基本信息,然后寫入一個到文件中,最后讀出這兩個學(xué)生的數(shù)據(jù),并顯示在屏幕上。#include struct student char name10;int age; ;int main() FILE *fp

20、;int i;struct student boya2, boyb2, *pp, *qq;if(fp = fopen(7-6.txt,w+)= NULL) /打開文件printf(Can not open file, exit .n);return -1; pp = boya;qq = boyb;printf(please input data:n); /輸入學(xué)生信息for (i = 0; i name, &pp-age);pp = boya;fwrite(pp, sizeof(struct student), 2, fp); /把學(xué)生信息寫入文件rewind(fp); /重定位文件fread

21、(qq, sizeof(struct student), 2, fp); /從文件中讀取學(xué)生信息printf(namettagen);for(i = 0; i name, qq-age);fclose(fp);return 0;4、編寫一個對文件加寫入鎖的程序。寫入鎖是互斥鎖,一個時刻只能有一個寫入鎖存在。并在兩個終端分別運(yùn)行,驗(yàn)證先運(yùn)行的那個終端能成功上鎖,后運(yùn)行的那個無效。 /*fcntl_write.c 測試文件寫入鎖主函數(shù)部分*/#i nclude unistd.h#i nclude sys/file.h#i nclude sys/types.h#i nclude sys/stat.h

22、#i nclude stdio.h#i nclude stdlib.h/*lock_set 函數(shù)*/void lock_set(int fd, int type)struct flock lock;lock.l_whence = SEEK_SET;/賦值lock 結(jié)構(gòu)體lock.l_start = 0;lock.l_len =0;while(1)lock.l_type = type;/*根據(jù)不同的type 值給文件上鎖或解鎖*/if(fcntl(fd, F_SETLK, &lock) = 0)if( lock.l_type = F_RDLCK )printf(read lock set by

23、%d/n,getpid();else if( lock.l_type = F_WRLCK )printf(write lock set by %d/n,getpid();else if( lock.l_type = F_UNLCK )printf(release lock by %d/n,getpid();return;/*判斷文件是否可以上鎖*/fcntl(fd, F_GETLK,&lock);/*判斷文件不能上鎖的原因*/if(lock.l_type != F_UNLCK)/*/該文件已有寫入鎖*/if( lock.l_type = F_RDLCK )printf(read lock al

24、ready set by %d/n,lock.l_pid);/*該文件已有讀取鎖*/else if( lock.l_type = F_WRLCK )printf(write lock already set by %d/n,lock.l_pid);getchar(); int main(void) int fd;/*首先打開文件*/fd=open(hello,O_RDWR | O_CREAT, 0666);if(fd 0)perror(open);exit(1);/*給文件上寫入鎖*/lock_set(fd, F_WRLCK);getchar();/*給文件接鎖*/lock_set(fd, F

25、_UNLCK);getchar();close(fd);exit(0); 第八章三、編程題1、編程創(chuàng)建一個特定的IPC結(jié)構(gòu)的關(guān)鍵字和一個信號量,建立此信號量的索引,修改索引指向的信號量的值,最后清除信號量(注:利用函數(shù)frok生成上文所說的唯一IPC關(guān)鍵字。)void main() key_t unique_key; /* 定義一個IPC 關(guān)鍵字*/int id;struct sembuf lock_it;union semun options;int i;unique_key = ftok(., a); /* 生成關(guān)鍵字字符a是一個隨機(jī)種子*/* 創(chuàng)建一個新的信號量集合*/id = semg

26、et(unique_key, 1, IPC_CREAT | IPC_EXCL | 0666);printf(semaphore id=%dn, id);options.val = 1; /*設(shè)置變量值*/semctl(id, 0, SETVAL, options); /*設(shè)置索引0 的信號量*/*打印出信號量的值*/i = semctl(id, 0, GETVAL, 0);printf(value of semaphore at index 0 is %dn, i);/*下面重新設(shè)置信號量*/lock_it.sem_num = 0; /*設(shè)置哪個信號量*/lock_it.sem_op = -1

27、; /*定義操作*/lock_it.sem_flg = IPC_NOWAIT; /*操作方式*/if (semop(id, &lock_it, 1) = -1) printf(can not lock semaphore.n);exit(1);i = semctl(id, 0, GETVAL, 0);printf(value of semaphore at index 0 is %dn, i);/*清除信號量*/semctl(id, 0, IPC_RMID, 0);2、守護(hù)進(jìn)程編程。守護(hù)進(jìn)程實(shí)例包括兩部分:主程序test.c和初始化程序init.c。主程序每隔一分鐘向/temp目錄的日志tes

28、t.log報告運(yùn)行狀態(tài);初始化程序中的init_daemon函數(shù)負(fù)責(zé)生成守護(hù)進(jìn)程??梢岳胕nit_daemon函數(shù)生成自己的守護(hù)進(jìn)程。void init_daemon(void)int pid; int i; if (pid=fork() exit(0);/是父進(jìn)程,結(jié)束父進(jìn)程 else if (pid 0) exit(1);/fork失敗,退出 setsid(); if (pid=fork() exit(0);/是第一子進(jìn)程,結(jié)束第一子進(jìn)程 else if (pid 0) exit(1);/fork失敗,退出 for (i=0;i NOFILE;+i)/關(guān)閉打開的文件描述符 close(i

29、); chdir(/tmp);/改變工作目錄到/tmp umask(0);/重設(shè)文件創(chuàng)建掩模 return; 2 test.c清單#include #include void init_daemon(void);/守護(hù)進(jìn)程初始化函數(shù)main() FILE *fp; time_t t; init_daemon();/初始化為Daemon while (1)/每隔一分鐘向test.log報告運(yùn)行狀態(tài) sleep(60);/睡眠一分鐘 if (fp=fopen(test.log,a) =0) t=time(0); fprintf(fp,Im here at %sn,asctime(localtime

30、(&t) ); fclose(fp); 3、編程實(shí)現(xiàn)父進(jìn)程和子進(jìn)程間的通信。程序包括:創(chuàng)建無名管道、子進(jìn)程向父進(jìn)程寫數(shù)據(jù)及關(guān)閉管道的讀端、父進(jìn)程從管道讀取子進(jìn)程寫的數(shù)據(jù)及關(guān)閉管道的寫端、讀有名管道和寫有名管道。void main() int file_descriptors2;/*定義子進(jìn)程號 */pid_t pid;char buf256;int returned_count;/*創(chuàng)建無名管道*/pipe(file_descriptors);/*創(chuàng)建子進(jìn)程*/if(pid = fork() = -1) printf(Error in forkn);exit(1);/*執(zhí)行子進(jìn)程*/if(pi

31、d = 0) printf(in the spawned (child) process.n);/*子進(jìn)程向父進(jìn)程寫數(shù)據(jù)關(guān)閉管道的讀端*/close(file_descriptorsINPUT);write(file_descriptorsOUTPUT, test data, strlen(test data);exit(0); else /*執(zhí)行父進(jìn)程*/printf(in the spawning (parent) process.n);/*父進(jìn)程從管道讀取子進(jìn)程寫的數(shù)據(jù)關(guān)閉管道的寫端*/close(file_descriptorsOUTPUT);returned_count = read

32、(file_descriptorsINPUT, buf, sizeof(buf);printf(%d bytes of data received from spawned process: %sn,returned_count, buf);在Linux 系統(tǒng)下,有名管道可由兩種方式創(chuàng)建,命令行方式mknod 系統(tǒng)調(diào)用和函數(shù)mkfifo。下面的兩種途徑都在當(dāng)前目錄下生成了一個名為myfifo 的有名管道,方式一,mkfifo(myfifo,rw);方式二,mknod myfifo p生成了有名管道后,就可以使用一般的文件I/O 函數(shù)如open、close、read、write 等來對它進(jìn)行操作

33、。下面即是一個簡單的例子,假設(shè)我們已經(jīng)創(chuàng)建了一個名為myfifo 的有名管道。/* 進(jìn)程一,讀有名管道*/#define INPUT 0#define OUTPUT void main() FILE * in_file;int count = 1;char buf80;in_file = fopen(mypipe, r);if (in_file = NULL) printf(Error in fdopen.n);exit(1);while (count = fread(buf, 1, 80, in_file) 0)printf(received from pipe: %sn, buf);fcl

34、ose(in_file);/* 進(jìn)程二,寫有名管道*/#include#includevoid main() FILE * out_file;int count = 1;char buf80;out_file = fopen(mypipe, w);if (out_file = NULL) printf(Error opening pipe.);exit(1);sprintf(buf,this is test data for the named pipe examplen);fwrite(buf, 1, 80, out_file);fclose(out_file);第十章3預(yù)處理、編譯、匯編和

35、連接4. step next1、下列提法中,屬于ifconfig命令作用范圍的是(B)B、配置網(wǎng)卡的IP地址 2、在FTP協(xié)議中,控制連接是由(B)主動建立的。B、客戶端 3、當(dāng)與某遠(yuǎn)程網(wǎng)絡(luò)連接不上時,需要跟蹤路由查看,以便了解在網(wǎng)絡(luò)的什么位置出現(xiàn)了問題,滿足該目的命令是(traceroute)。5、局域網(wǎng)的網(wǎng)絡(luò)地址/24,局域網(wǎng)絡(luò)連接其它網(wǎng)絡(luò)的網(wǎng)關(guān)地址是。主機(jī)0訪問/24網(wǎng)絡(luò)時,其路由設(shè)置正確的是( B )。B) route add net gw netmask

36、 55 metric 15、 如果想配置一臺匿名FTP服務(wù)器,應(yīng)修改(/etc/ftpusers)。6、 要配置NFS服務(wù)器,在服務(wù)器端主要配置(/etc/exports)文件。7、 在TCP/IP模型中,應(yīng)用層包含了所有的高層協(xié)議,在下列的一些應(yīng)用協(xié)議中,(B)能夠?qū)崿F(xiàn)本地與遠(yuǎn)程主機(jī)之間的文件傳輸工作。 B、Ftp 8、 DNS域名系統(tǒng)主要負(fù)責(zé)主機(jī)名和(IP地址)之間的解析。10、請選擇正確的命令( B),完成加載 NFS Server 的 /home/nfs 到 /home2。B.、mount -t -s nfs svr.server.

37、net /home/nfs /home2三、選擇題1、一般可以用(make)實(shí)現(xiàn)自動編譯。2假使當(dāng)前目錄下有文件Makefile,其內(nèi)容如下。現(xiàn)在執(zhí)行命令make clear,實(shí)際執(zhí)行的命令是(rm f pr1 *.o)。3、嵌入式系統(tǒng)應(yīng)用軟件一般在宿主機(jī)上開發(fā),在目標(biāo)機(jī)上運(yùn)行,因此需要的一個(交叉編譯)環(huán)境。4、假設(shè)用vi編輯器編寫了一個腳本文件shell.sh,現(xiàn)想將該文件名稱修改為shell2.sh,(mv shell.sh shell2.sh)命令可以實(shí)現(xiàn)。5、在使用GCC編輯器的過程中,(-o)選項(xiàng)可用來指定生成的目標(biāo)文件名。6、假設(shè)當(dāng)前目錄下有文件Makefile,其內(nèi)容如下。現(xiàn)在

38、執(zhí)行命令make subr.o,實(shí)際執(zhí)行的命令是(gcc c o subr.o subr.c)。7、為了使生成的目標(biāo)文件能夠用于GDB調(diào)試,在編譯時GCC應(yīng)使用(-g)選項(xiàng)。8、存盤并退出vi的指令是(wq)。9、在Linux下使用GCC編譯器時,有命令gcc g test.c o test,其中參數(shù)-g的作用是(生成文件包含調(diào)試信息)。10、fstab文件存放在(/ect)目錄中。11、init啟動進(jìn)程需要讀取(/etc/inittab)配置文件。第四章1. LINUX支持網(wǎng)絡(luò)文件系統(tǒng)NFS, (mount -t nfs :/opt/sirnfs /mnt/sirnfs

39、)命令實(shí)現(xiàn)了將位于 機(jī)器上的 /opt/sirnfs 目錄掛載到本機(jī)/mnt/sirnfs下。2、以下敘述中正確的是(C)C、在嵌入式系統(tǒng)開發(fā)中,通常采用的是交叉編譯器。3、以下做法不利于嵌入式應(yīng)用軟件的移植的是 D 。D) 在數(shù)據(jù)類型上,盡量直接使用C語言的數(shù)據(jù)類型4. 如果Boot Loader、內(nèi)核、啟動參數(shù)以及其他的系統(tǒng)映像四部分在固態(tài)存儲設(shè)備上分別獨(dú)立存放,則其存儲結(jié)構(gòu)的分配順序應(yīng)當(dāng)是(Bootloader、啟動參數(shù)、內(nèi)核、文件系統(tǒng))。 5. Boot Loader 的stage2通常使用C語言實(shí)現(xiàn),以完成復(fù)雜的功能,并增加可讀性和可移植性,以下哪一步驟屬于stage2的內(nèi)容:(D) D . 將 kernel 映像和根文件系統(tǒng)映像從 flash 上讀到 RAM 空間中6、在Linux 2.4或者2.6內(nèi)核中,和ARM體系結(jié)構(gòu)相關(guān)的中斷處理程序的C代碼在源碼樹的(arch/arm/kernel/irq.c)文件中7、下面對于BootLoader的描述不正確的是(C)C、BootLoader的兩種模式對開發(fā)人員沒有意義8、(make menuconfig

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論