嵌入式操作系統(tǒng)應(yīng)用開(kāi)發(fā)復(fù)習(xí)題及復(fù)習(xí)資料_第1頁(yè)
嵌入式操作系統(tǒng)應(yīng)用開(kāi)發(fā)復(fù)習(xí)題及復(fù)習(xí)資料_第2頁(yè)
嵌入式操作系統(tǒng)應(yīng)用開(kāi)發(fā)復(fù)習(xí)題及復(fù)習(xí)資料_第3頁(yè)
嵌入式操作系統(tǒng)應(yīng)用開(kāi)發(fā)復(fù)習(xí)題及復(fù)習(xí)資料_第4頁(yè)
嵌入式操作系統(tǒng)應(yīng)用開(kāi)發(fā)復(fù)習(xí)題及復(fù)習(xí)資料_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

千里之行,始于足下讓知識(shí)帶有溫度。第第2頁(yè)/共2頁(yè)精品文檔推薦嵌入式操作系統(tǒng)應(yīng)用開(kāi)發(fā)復(fù)習(xí)題及復(fù)習(xí)資料1、簡(jiǎn)述Linux操作系統(tǒng)具有的特點(diǎn)。

答:開(kāi)放的源代碼,良好的兼容性,完備的協(xié)助手冊(cè)頁(yè),優(yōu)秀的網(wǎng)絡(luò)支持

支持多用戶多任務(wù)多處理器

支持多種文件系統(tǒng),獨(dú)特的掛載方式確保數(shù)據(jù)的平安性

將應(yīng)用程序的核心實(shí)現(xiàn)為庫(kù),可重用性良好

采納模塊化分層的程序設(shè)計(jì)辦法,牢靠易維護(hù)

將設(shè)備等一切都看做是文件,提供統(tǒng)一的文件操作接口對(duì)設(shè)備等舉行操作

2、解釋POSIX。

答:POSIX表示可移植操作系統(tǒng)接口,可以提高UNIX環(huán)境下應(yīng)用程序的可移植性。POSIX標(biāo)準(zhǔn)定義了標(biāo)準(zhǔn)的API,只要是符合這一標(biāo)準(zhǔn)的應(yīng)用程序,就能夠在多種操作系統(tǒng)中運(yùn)行。

3、解釋通用公共許可證GPL。

答:GPL保證軟件對(duì)全部用戶來(lái)說(shuō)是自由的。遵循GPL的軟件提供應(yīng)用戶時(shí)必需提供源碼,一旦用戶得到遵循GPL的軟件,就能夠?qū)ζ潆S意地改寫,修改之后假如要提供應(yīng)其他人也必需遵循GPL,并開(kāi)放源碼,允許被修改。

4、Linux系統(tǒng)下,常用的在線協(xié)助文件有哪些?

答:1、man手冊(cè)2、info手冊(cè)3、How-To文件。

5、Linux系統(tǒng)下舉行C程序開(kāi)發(fā)的主要兩個(gè)標(biāo)準(zhǔn)。

答:1、ANSIC標(biāo)準(zhǔn)2、POSIX標(biāo)準(zhǔn)。

6、普通Linux系統(tǒng)調(diào)用函數(shù),假如執(zhí)行勝利將返回什么值?假如執(zhí)行失敗將返回什么值?并對(duì)哪個(gè)系統(tǒng)全局變量舉行賦值,以指示詳細(xì)的錯(cuò)誤狀況。

答:勝利時(shí)返回為0,不勝利時(shí)普通返回-1,也可能返回一些非0值。失敗時(shí)將會(huì)在全局變量errno中賦值指示錯(cuò)誤類型

7、畫(huà)出Linux函數(shù)庫(kù)調(diào)用和系統(tǒng)調(diào)用的暗示圖,容易說(shuō)明系統(tǒng)調(diào)用(API)函數(shù)的作用。

答:

應(yīng)用程序

庫(kù)函數(shù)

系統(tǒng)調(diào)用

內(nèi)核硬件設(shè)備

API是操作系統(tǒng)和用戶程序之間的接口,應(yīng)用程序通過(guò)API與操作系統(tǒng)舉行通信,使用操作系統(tǒng)提供的服務(wù)。API同時(shí)保證了操作系統(tǒng)數(shù)據(jù)和程序的平安性。

因此,API提供應(yīng)用戶平安地使用操作系統(tǒng)提供的服務(wù)。

8、容易說(shuō)明在Linux程序開(kāi)發(fā)過(guò)程中,利用GCC工具將C語(yǔ)言程序編譯成一個(gè)可執(zhí)行程序文件的四

個(gè)步驟。

答:1、預(yù)處理2、編譯3、匯編4、銜接

9、解釋gcc工具的o、c、I、L、l等5個(gè)參數(shù)的功能作用。

答:o:把文件輸出到output_,c:只編譯,不銜接I:L:在庫(kù)文件的搜尋路徑列表中添加dirname名目l:-ofile指定輸出文件為file

-c預(yù)處理,編譯,匯編源文件,但是不做銜接,產(chǎn)生.o(OBJ)文件

-Idirname在頭文件的搜尋路徑列表中添加dirname名目

-Ldirname在“-I”的搜尋名目中添加dirname名目,在銜接庫(kù)文件時(shí)候使用

-lname假如一個(gè)庫(kù)文件的名稱為“l(fā)ibname.a”,程序執(zhí)行時(shí)若要銜接這個(gè)庫(kù)文件,就要使用該選項(xiàng)舉行銜接,省略庫(kù)名中的前綴“l(fā)ib”和后綴“.a”

10、可執(zhí)行程序文件在存儲(chǔ)時(shí)(沒(méi)有調(diào)入到內(nèi)存)分為幾部分,說(shuō)明各段的主要內(nèi)容。

答:1、可執(zhí)行代碼區(qū)(text):存放CPU執(zhí)行的機(jī)器指令。2、已初始化數(shù)據(jù)區(qū)(data):包含了在程序中已經(jīng)被初始化的全局變量和靜態(tài)變量。3、未初始化數(shù)據(jù)區(qū)(bss):未初始化的全局變量和靜態(tài)變量,在程序開(kāi)頭執(zhí)行之前被內(nèi)核初始化為0或空指針。

11、可執(zhí)行程序文件調(diào)入到內(nèi)存產(chǎn)生進(jìn)程后,分為幾個(gè)存儲(chǔ)區(qū)域,說(shuō)明各區(qū)域的主要內(nèi)容與作用。

答:前三個(gè)與10中內(nèi)容相同4、堆區(qū):用于動(dòng)態(tài)內(nèi)存分配5、棧區(qū)(heap):由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值、返回值、局部變量等。。

12、Linux系統(tǒng)下,用C語(yǔ)言編程,舉行文件管理,有哪兩類函數(shù)可用?試比較兩類函數(shù)的優(yōu)缺點(diǎn)。答:

ANSIC優(yōu)點(diǎn):1.具有豐盛的函數(shù)可供使用。2.直接對(duì)內(nèi)存緩沖區(qū)舉行操作,可以高效的寫隨意長(zhǎng)度的數(shù)據(jù)塊,在數(shù)據(jù)長(zhǎng)度滿足要求時(shí)支配底層系統(tǒng)調(diào)用,降低的系統(tǒng)的開(kāi)銷且沒(méi)有數(shù)據(jù)塊大小的限制,整體的效率要比直接對(duì)硬件操作的系統(tǒng)調(diào)用高3.具有更好的兼容性

缺點(diǎn):對(duì)系統(tǒng)調(diào)用舉行封裝,因此使用時(shí)會(huì)在庫(kù)函數(shù)中再調(diào)用系統(tǒng)調(diào)用,就一次讀寫相同的數(shù)據(jù)來(lái)說(shuō),效率比系統(tǒng)調(diào)用要低

POSIX優(yōu)點(diǎn):在類UNIX等系統(tǒng)中有很好的可移植性,可以直接設(shè)置對(duì)硬件的控制

缺點(diǎn):1.使用時(shí)會(huì)影響系統(tǒng)性能,假如一次只存取很少的內(nèi)容,效率會(huì)很低2.硬件會(huì)限制對(duì)底層系統(tǒng)調(diào)用一次能讀寫的數(shù)據(jù)塊大小,假如數(shù)據(jù)很小,會(huì)留下空隙。3.兼容性不是很好

13、Linux系統(tǒng)中,系統(tǒng)默認(rèn)為每個(gè)進(jìn)程打開(kāi)了幾個(gè)個(gè)文件?即每個(gè)進(jìn)程可以直接操作哪幾個(gè)流?

答:3個(gè),STDIN_FILENO標(biāo)準(zhǔn)輸入文件,STDOUT_FILENO標(biāo)準(zhǔn)輸出文件,STDOUT_FILENO標(biāo)準(zhǔn)錯(cuò)誤文件。每個(gè)進(jìn)程可以直接操作STDIN:標(biāo)準(zhǔn)輸入流,STDOUT標(biāo)準(zhǔn)輸出流,STDERR:標(biāo)準(zhǔn)錯(cuò)誤輸出流。

14、標(biāo)準(zhǔn)輸入輸出設(shè)備的文件描述符和文件流指針?lè)蛛x是什么?文件流指針與文件描述符有什么區(qū)分?答:使用系統(tǒng)調(diào)用open()勝利返回一個(gè)文件描述符,文件描述符是任何打開(kāi)的文件都被分配一個(gè)唯一非負(fù)整數(shù)用于表示該打開(kāi)的文件,內(nèi)核通過(guò)文件描述符對(duì)文件舉行操作。

文件流指針:在操作一個(gè)文件時(shí)要打開(kāi)該文件使用ANSIC庫(kù)函數(shù)fopen打開(kāi)一個(gè)文件后返回一個(gè)文件流指針與該文件關(guān)聯(lián),全部對(duì)該文件的讀寫操作都可以通過(guò)該指針流完成。在Linux中,文件流指針中封裝了文件描述符,才干使通過(guò)文件流指針對(duì)文件操作成為可能。

15、Linux文件類型,在shell應(yīng)用層面用ls-l查看命令不同類型的文件分離顯示什么內(nèi)容?

答:文件的類型,文件權(quán)限,應(yīng)銜接個(gè)數(shù),擁有者,擁有者所在組,文件大小,最后一次修改時(shí)光。

文件類型標(biāo)識(shí):

名目文件d,一般文件f,字符設(shè)備文件c,塊設(shè)備文件b,管道文件p,鏈接文件l,socket文件s

16、在Linux某個(gè)文件系統(tǒng)下,文件屬性中惟一標(biāo)識(shí)某個(gè)文件的是什么?惟一標(biāo)識(shí)一個(gè)打開(kāi)的文件是什么?

答:索引節(jié)點(diǎn),文件描述符。

17、ls–lc,-lu,-lt分離列出的是什么時(shí)光?

答:–lc:最后一次修改i結(jié)點(diǎn)時(shí)光.-lu:最后一次拜訪時(shí)光.-lt:最后一次修改內(nèi)容時(shí)光

18、一個(gè)文件設(shè)置了setuid位,該可執(zhí)行文件在執(zhí)行時(shí)有什么主要的影響。

答:會(huì)使得擁有執(zhí)行該文件權(quán)限的用戶執(zhí)行該文件時(shí),即使不是文件全部者也會(huì)使用文件全部者的權(quán)限。

19、一個(gè)常規(guī)文件的大小可以為0(st_size字段定義),那么名目和符號(hào)銜接的長(zhǎng)度是否可以為0?

答:不為0.由于每當(dāng)名目文件創(chuàng)建時(shí),會(huì)自動(dòng)產(chǎn)生兩個(gè)“.”開(kāi)始的隱含文件,符號(hào)鏈接,文件包含著另一個(gè)文件的路徑名。

20、Linux系統(tǒng)下,進(jìn)程結(jié)束的辦法有哪幾種?

答:1.在本進(jìn)程或者其它進(jìn)程中使用kill()調(diào)用發(fā)送SIGKILL信號(hào)。2.進(jìn)程運(yùn)行過(guò)程中碰到內(nèi)存段矛盾,非法指令等錯(cuò)誤,由操作系統(tǒng)發(fā)送相應(yīng)的信號(hào)終止進(jìn)程。3.進(jìn)程執(zhí)行到return或者調(diào)用exit()或者運(yùn)行到最后自然結(jié)束。4.執(zhí)行exec類函數(shù)執(zhí)行新的進(jìn)程

21、Linux系統(tǒng)下,線程結(jié)束的辦法有哪幾種?

答:1、調(diào)用pthread_exit()退出。2、調(diào)用pthread_cancel函數(shù)取消該線程。3、創(chuàng)建線程的進(jìn)程退出或者囫圇函數(shù)結(jié)束。4、其中的一個(gè)線程執(zhí)行了exec類函數(shù)執(zhí)行新的進(jìn)程。5.線程調(diào)用pthread_exit()或者執(zhí)行到return或者執(zhí)行完畢自然終止。6.線程執(zhí)行中出錯(cuò)由系統(tǒng)終止

22、線程間通信的機(jī)制有哪幾種?

答:1.信號(hào)量2.互斥量3.分享全局變量

23、進(jìn)程間通信的機(jī)制有哪幾種?

答:本地主機(jī)通信:1.信號(hào)2.信號(hào)量,消息隊(duì)列,分享內(nèi)存3.管道(包括出名管道和無(wú)名管道)4.分享內(nèi)存

網(wǎng)絡(luò)通信:1.socket2.rpc

24、畫(huà)出面對(duì)銜接的(TCP)socket通信模型,并解釋說(shuō)明其中主要的socket函數(shù)。

答:

socket():創(chuàng)建一個(gè)socket,作為通信的一個(gè)端點(diǎn)

bind():為socket命名,若是創(chuàng)建的AF_INET套接字將其關(guān)聯(lián)到一個(gè)IP端口號(hào),若是AF_UNIX套接字將其關(guān)聯(lián)到一個(gè)文件系統(tǒng)的路徑名

listen():創(chuàng)建一個(gè)隊(duì)列用來(lái)保存等待處理的銜接

accept():堵塞等待銜接哀求,在有銜接哀求時(shí)創(chuàng)建一個(gè)新的socket來(lái)與客戶舉行通信recv()/read():接收數(shù)據(jù)send()/write():發(fā)送數(shù)據(jù)

connect():用戶通過(guò)在一個(gè)命名的或者未命名的socket和服務(wù)器的socket建立銜接25、畫(huà)出面對(duì)非銜接的(UDP)socket通信模型,并解釋說(shuō)明其中主要的socket函數(shù)。

read/recvwrite/send

write/sendread/recv

socket,bind

26、Linux系統(tǒng)IO操作有哪幾種方式?

答:1、堵塞I/O2、非堵塞I/O3、多路挑選I/O4、信號(hào)驅(qū)動(dòng)I/O27、字節(jié)羅列挨次有幾種方式?答:大端方式,小端方式

采納大端方式將高位存放在低地址,小端方式將低位存放在低地址。采納大端方式舉行數(shù)據(jù)存放符合人類的正常思維,而采納小端方式舉行數(shù)據(jù)存放利于計(jì)算機(jī)處理。

28、POSIX標(biāo)準(zhǔn)下,文件管理的基本操作函數(shù)有哪些?

recvfromsendto

sendtorecvfrom

答:open打開(kāi)文件close關(guān)閉文件read()從文件或設(shè)備中讀讀數(shù)據(jù)write()向文件或者設(shè)備中寫數(shù)據(jù)fcntl():傳遞控制信息到設(shè)備驅(qū)動(dòng)程序

編程

29、如何使用ANSIC標(biāo)準(zhǔn)庫(kù),實(shí)現(xiàn)文件拷貝操作。

答:如果要從文件中拷貝數(shù)據(jù)到中

#include

#include

intmain()

{

intc;

FILE*in,*out;//定義兩個(gè)文件流指針

in=fopen("","r");//in與文件關(guān)聯(lián),使用只讀方式打開(kāi)

out=fopen("","w");//out與文件關(guān)聯(lián),用只寫方式打開(kāi)

while((c=fgetc(in))!=EOF)

fputc(c,out);//每次循環(huán)從中用fgetc()讀出一個(gè)字符放到c中,再?gòu)腸中寫入到。假如沒(méi)有讀到文件尾(EOF),就繼續(xù)下一次循環(huán)

exit(0);

}

30、如何使用POSIXIO庫(kù),實(shí)現(xiàn)文件拷貝操作。

答:

#include

#include

#include

#include

#include

intmain()

{

intc[50];//暫存從中讀出的字符

intin,out;

intnread;//存放read()返回值,即勝利讀取的字符數(shù)

in=open("",O_RDONLY);//以只讀方式打開(kāi)

out=open("",O_CREAT|O_WRONLY,S_IRUSR|S_IWRUSR);//以只寫方式打開(kāi),假如該文件不存在,就使用全部者可讀可寫的方式創(chuàng)建它

while((nread==read(in,c,50))>0)//哀求從中讀取50個(gè)字符放入c中,并返回實(shí)際讀取的字符數(shù)放入nread中

write(out,c,nread);//將c中的有效字符寫入,假如還有字符未讀出,循環(huán),假如返回值為0(即已經(jīng)讀完了全部字符),退出循環(huán)

if(nread

#include

#include

#include

#include

#include

#include

#include

#include

#include

#defineBUFSIZE1024

#definePERMS0666

#defineDUMMY0

intcp*source_*target_file)

{

intsource,target,num;

chariobuffer[BUFSIZE];

if((source=open(source_))==-1)

{

printf("Sourceerror!\n");

return1;

}

if((target=open(target_))==-1)

{

printf("Targeterror!\n");

return2;

}

while((num=read(source,iobuffer,BUFSIZE))>0)if(write(target,iobuffer,num)!=num)

{

printf("Targeterror!\n");

return3;

}

close(source);

close(target);

return0;

}

intcpdir(char*source_dir,char*target_dir){

DIR*source=NULL;

DIR*target=NULL;

structdirent*ent=NULL;

charname1[100],name2[100];

source=opendir(source_dir);

mkdir(target_dir,S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH);

target=opendir(target_dir);

if(source!=NULL

strcat(name1,source_dir);

strcat(name1,"/");

strcat(name1,ent->d_name);

strcpy(name2,"\0");

strcat(name2,target_dir);

strcat(name2,"/");

strcat(name2,ent->d_name);

if(ent->d_type==4)

cpdir(name1,name2);

if(ent->d_type==8)

cp);

}

}

closedir(source);

closedir(target);

}

return0;

}

intmain(intargc,char*argv[])

{

cpdir(*(argv+1),*(argv+2));

return0;

}寫一創(chuàng)建(fork)新進(jìn)程的程序,利用管道機(jī)制,實(shí)現(xiàn)在子進(jìn)程中寫入數(shù)據(jù),在父進(jìn)程中讀出數(shù)據(jù)。

答:

#include

#include

#include

#include

intmain()

{

intdata_processed;

int[2];//管道的描述符

constcharsome_data[]="123";//存放將要傳輸?shù)臄?shù)據(jù)

charbuffer[BUFSIZ+1];//stdio.h中已經(jīng)定義的BUFSIZ大小為8K

pid_tfork_result;

memset(buffer,'\0',sizeof(buffer));//buffer空間初始化‘\0’

if(pipe()==0){

fork_result=fork();

if(fork_result==-1){

fprintf(stderr,"Forkfailure");

exit(EXIT_FAILURE);

}

//子進(jìn)程從管道中讀出數(shù)據(jù)放到bufferr中

if(fork_result==0){

data_processed=read([0],buffer,BUFSIZ);

printf("Read%dbytes:%s\n",data_processed,buffer);

exit(EXIT_SUCCESS);

}

//父進(jìn)程往管道中寫入數(shù)據(jù)

else{

data_processed=write([1],some_data,strlen(some_data));

printf("Wrote%dbytes\n",data_processed);

}

}

exit(EXIT_SUCCESS);

}

32、編程實(shí)現(xiàn)who|sort

答:#include

#include

#include

#include

#include

#include

intmain(intargc,char*argv[])

{

intfds[2];

if(pipe(fds)==-1)

{

perror("pipe");

exit(EXIT_FAILURE);

}

if(fork()==0)

{

charbuf[128];

dup2(fds[0],0);

close(fds[1]);//mustinclude,orblock

execlp("sort","sort",(char*)0);

//execlp("cat","cat",(char*)0);

}

else

{

if(fork()==0)

{

dup2(fds[1],1);

close(fds[0]);

execlp("who","who",(char*)0);

}

else

{

close(fds[0]);

close(fds[1]);

wait(NULL);

wait(NULL);

}

}

return0;

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論