版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
凌陽教育嵌入式培訓系統(tǒng)編程部分測試試題注:考試為閉卷,程序題需上機操作運行出結(jié)果,考試時間為120分鐘一:選擇題(本題共4小題,每題3分共12分)1)下列不是Linux系統(tǒng)進程類型的是(D)
A交互進程B批處理進程C守護進程D就緒進程(進程狀態(tài))2)以下對信號的理解不正確的是(B)
A信號是一種異步通信方式B信號只用在用戶空間進程通信,不能和內(nèi)核空間交互C信號是可以被屏蔽的
D信號是通過軟中斷實現(xiàn)的3)進程有三種狀態(tài)(C)
A準備態(tài)、執(zhí)行態(tài)和退出態(tài)B精確態(tài)、模糊態(tài)和隨機態(tài)
C運行態(tài)、就緒態(tài)和等待態(tài)D手工態(tài)、自動態(tài)和自由態(tài)4)不是進程和程序的區(qū)別(B)
A程序是一組有序的靜態(tài)指令,進程是一次程序的執(zhí)行過程
B程序只能在前臺運行,而進程可以在前臺或后臺運行
C程序可以長期保存,進程是暫時的
D程序沒有狀態(tài),而進程是有狀態(tài)的二:填空題(本題共6小題,2)、3)兩題每空四分,其余每空一分。共23分)1) 列舉八種常見的進程間通信方式無名管道、有名管道、消息隊列、信號量、共享內(nèi)存、信號、套接字網(wǎng)絡(luò)上兩個主機的進程間通信方式為套接字2) 命名管道比無名管道的優(yōu)勢提供了一個可以訪問的路徑名,實現(xiàn)沒親緣關(guān)系的進程間通信3) 消息隊列比命名管道和無名管道的優(yōu)勢可以按類型實現(xiàn)消息的隨機查詢,沒必要先進先出4) 按照邏輯結(jié)構(gòu)不同進行數(shù)據(jù)庫劃分,Sqlite數(shù)據(jù)庫屬于哪一類關(guān)系型數(shù)據(jù)庫5) 在C語言中操作sqlite數(shù)據(jù)庫,常用的2中方式是sqlite_exec(回調(diào))、sqlite_gettable(非回調(diào))6) 列舉四種進程調(diào)度算法先來先調(diào)度(FCFS)、短進程優(yōu)先調(diào)度(SPF)、高優(yōu)先級調(diào)度(HPF)、時間片輪轉(zhuǎn)調(diào)度三:問答題(本題共7題,每題5分,共35分)1) 什么是系統(tǒng)調(diào)用?系統(tǒng)調(diào)用是通過什么方式陷入內(nèi)核態(tài)的?請寫出你對系統(tǒng)調(diào)用的理解。什么是文件I/O和標準I/O庫?文件I/O和標準I/O庫的區(qū)別?系統(tǒng)調(diào)用是指操作系統(tǒng)提供給用戶程序調(diào)用的一組特殊接口,用戶程序可以通過這組接口獲得操作系統(tǒng)內(nèi)核提供的服務。系統(tǒng)調(diào)用是通過軟件中斷方式陷入內(nèi)核的linux的文件I/O是由操作系統(tǒng)提供的基本IO服務,標準I/O庫通過封裝系統(tǒng)調(diào)用,提供了一個到底層I/O的接口。標準I/O默認采用了緩沖機制,還創(chuàng)建了一個包含文件和緩沖區(qū)相關(guān)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu);文件I/O一般沒有采用緩沖模式,需要自己創(chuàng)建緩沖區(qū)。一種是標準庫封裝系統(tǒng)調(diào)用而成,更高級,一種是系統(tǒng)提供的,比較低級;標準I/O可移植性高、文件I/O可移植性低。2) 什么是進程?用fork()創(chuàng)建一個子進程時,系統(tǒng)會做什么工作進程是具有獨立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運行活動,是系統(tǒng)進行資源分配的單位,不僅是系統(tǒng)內(nèi)部獨立運行的實體也是獨立競爭資源的實體。用fork()時系統(tǒng)會分配子進程一個ID號然后繼承父進程的地址空間,包括進程上下文進程堆棧打開的文件描述符等等,他就是父進程的一個復制品。3) 進程和線程有什么區(qū)別?每個獨立的進程有一個程序運行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨立執(zhí)行,必須依存在進程程中,由進程提供多個線程執(zhí)行的控制。
進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位.
線程是進程的一個實體,是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源.
一個線程可以創(chuàng)建和撤銷另一個線程;同一個進程中的多個線程之間可以并發(fā)執(zhí)行。4) 什么是線程的互斥和同步,程序應怎樣寫才能達到互斥或同步?互斥:是指某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。同步:是指在互斥的基礎(chǔ)上(大多數(shù)情況),通過其它機制實現(xiàn)訪問者對資源的有序訪問。在大多數(shù)情況下,同步已經(jīng)實現(xiàn)了互斥,特別是所有寫入資源的情況必定是互斥的。少數(shù)情況是指可以允許多個訪問者同時訪問資源。在寫程序時可以用互斥鎖和信號量實現(xiàn)線程同步,一個線程訪問共享資源時給這個資源上鎖其他線程就不能訪問了直到上鎖的進程釋放互斥鎖為止。5) 什么是僵尸進程?孤兒進程?守護進程?僵尸進程:僵尸進程是指它的父進程已經(jīng)退出(父進程沒有等待(調(diào)用wait/waitpid)它),而該進程dead之后沒有進程接受,就成為僵尸進程,也就是(zombie)進程。孤兒進程:一個父進程退出,而它的一個或多個子進程還在運行,那么那些子進程將成為孤兒進程。孤兒進程將被init進程(進程號為1)所收養(yǎng),并由init進程對它們完成狀態(tài)收集工作。守護進程:是指在UNIX或其他多任務操作系統(tǒng)中在后臺執(zhí)行的電腦程序,并不會接受電腦用戶的直接操控。此類程序會被以進程的形式初始化。守護進程程序的名稱通常以字母“d”結(jié)尾:例如,syslogd就是指管理系統(tǒng)日志的守護進程。通常,守護進程沒有任何存在的父進程(即PPID=1),且在UNIX系統(tǒng)進程層級中直接位于init之下。守護進程程序通常通過如下方法使自己成為守護進程:對一個子進程調(diào)用fork,然后使其父進程立即終止,使得這個子進程能在init下運行。這種方法通常被稱為“脫殼”6) 有3個線程:A、B、C,現(xiàn)要求A先執(zhí)行,然后B再執(zhí)行,最后C再執(zhí)行,之后A->B->C循環(huán)執(zhí)行,請說出大體的思路?創(chuàng)建3個信號量sem_A、sem_B、sem_C,分別用來給A、B、C3個線程,啟動sem_A信號量的初始值為1,其余2個信號量初始值為0,當主線程創(chuàng)建3個子線程后,因為sem_A的值大于0,所以只有A線程執(zhí)行相關(guān)的代碼,B、C線程堵塞在對sem_B、sem_C信號量的p操作;當A線程執(zhí)行完相應的代碼后,給sem_B信號量加1,之后B線程開始執(zhí)行相關(guān)操作,在此時A線程堵塞在對sem_A信號量的p操作,C線程繼續(xù)堵塞;當B線程執(zhí)行完畢相關(guān)操作后,給sem_C進行V操作,B線程堵塞,C線程執(zhí)行相關(guān)操作;以上是從A->B->C線程執(zhí)行的流程.7) exit()、_exit()和return()的區(qū)別? pthread_join(tid1,NULL); pthread_join(tid2,NULL); return0;}編寫一個多線程的程序: 要求:創(chuàng)建2個子線程,主進程要傳遞3個參數(shù)給線程1,傳遞另一個參數(shù)給線程2;線程1、線程2中對每個傳給線程的參數(shù)加1,等線程都執(zhí)行完畢后,進程打印出四個參數(shù)的值。傳給線程1參數(shù)的值必需要能夠改變,傳給線程2參數(shù)的值必需不能改變#include<stdio.h>#include<unistd.h>#include<pthread.h>typedefstruct{ intA; intB; intC;}DATA;/*傳參方法1*/void*thread_1(void*arg){ DATA*rec; sleep(1); rec=(DATA*)arg; rec->A+=1; rec->B+=1; rec->C+=1; returnNULL;}/*傳參方法2*/void*thread_2(void*arg){ intrec=0; sleep(1); rec=(int)(arg); rec++; returnNULL;}intmain(intargc,char*argv[]){ pthread_ttid1,tid2; DATAtest; intD=100; test.A=100; test.B=100; test.C=100; /*創(chuàng)建兩個線程*/ pthread_create(&tid1,NULL,(void*)thread_1,(void*)(&test)); pthread_create(&tid2,NULL,(void*)thread_2,(void*)D); pthread_join(tid1,NULL); pthread_join(tid2,NULL); printf("A=%d\n",test.A); printf("B=%d\n",test.B); printf("C=%d\n",test.C); printf("D=%d\n",D); return0;}3)編制一段程序,實現(xiàn)進程的管道通信:使用系統(tǒng)調(diào)用pipe()建立一條管道線,2個子進程分別向管道各寫一句話:Childprocess1issendingamessage!Childprocess2issendingamessage!而父進程則從管道中讀出來自于2個子進程的信息,顯示在屏幕上。要求:父進程先接收子進程P1發(fā)來的消息,然后再接收子進程P2發(fā)來的消息。#include<stdio.h>#include<unistd.h>#include<sys/types.h>#include<sys/wait.h>intmain(intargc,char*argv[]){ intfd[2]; pid_tpid; pid_tpid_sec; charbuf[7]; pipe(fd); if((pid=fork())<0) { printf("forkerror!"); exit(1); } elseif(pid==0) { close(fd[0]); write(fd[1],"first1",7); close(fd[1]); exit(0); } else { if((pid_sec=fork())<0) { printf("forkseconderror!"); exit(1); } elseif(pid_sec==0) { close(fd[0]); write(fd[1],"Child1",
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年及未來5年市場數(shù)據(jù)中國貨物包裝用袋行業(yè)市場深度分析及投資策略研究報告
- 偏癱康復案例分享與分析
- 合唱課堂教學培訓課件
- 母嬰護理培訓課程資料獲取
- 2026江西撫州市金溪縣選調(diào)事業(yè)單位人員19人考試參考題庫及答案解析
- 2026云南省煙草專賣局(公司)畢業(yè)生招聘65人備考題庫(第一批)及一套完整答案詳解
- 2026廣東湛江市坡頭區(qū)坡頭鎮(zhèn)人民政府招聘政府雇員(非編制人員)1人備考題庫完整答案詳解
- 2026山西晉城市高平市人力資源和社會保障局安置“4050”公益性崗位100人備考考試題庫及答案解析
- 2026黑龍江哈爾濱工業(yè)大學機電工程學院機器人研究所招聘備考考試試題及答案解析
- 2026上半年貴州事業(yè)單位聯(lián)考實驗中學招聘3人備考考試題庫及答案解析
- 社會心理學考試題及答案
- 門窗工程掛靠協(xié)議書
- 醫(yī)療器械經(jīng)營企業(yè)質(zhì)量管理體系文件(2025版)(全套)
- 出鐵廠鐵溝澆注施工方案
- 2025年中小學教師正高級職稱評聘答辯試題(附答案)
- 現(xiàn)代企業(yè)管理體系架構(gòu)及運作模式
- 古建筑設(shè)計工作室創(chuàng)業(yè)
- 公司酶制劑發(fā)酵工工藝技術(shù)規(guī)程
- 2025省供銷社招聘試題與答案
- 單位內(nèi)部化妝培訓大綱
- 河堤植草護坡施工方案
評論
0/150
提交評論