

下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、凌陽教育嵌入式培訓系統編程部分測試試題注:考試為閉卷,程序題需上機操作運行出結果,考試時間為120 分鐘一:選擇題(本題共 4 小題,每題 3 分共 12 分)1) 下列不是 Linux 系統進程類型的是(D )A 交互進程 B 批處理進程 C 守護進程 D 就緒進程(進程狀態)2)以下對信號的理解不正確的是(B )A 信號是一種異步通信方式B 信號只用在用戶空間進程通信,不能和內核空間交互C 信號是可以被屏蔽的D 信號是通過軟中斷實現的3)進程有三種狀態(C)A 準備態、執行態和退出態B 精確態、模糊態和隨機態C 運行態、就緒態和等待態D 手工態、自動態和自由態4)不是進程和程序的區別(B)
2、A 程序是一組有序的靜態指令,進程是一次程序的執行過程B 程序只能在前臺運行,而進程可以在前臺或后臺運行C 程序可以長期保存,進程是暫時的D 程序沒有狀態,而進程是有狀態的二:填空題(本題共 6 小題,2)、3)兩題每空四分,其余每空一分。共23 分)1) 列舉八種常見的進程間通信方式無名管道、有名管道、消息隊列、信號量、共享內存、信號、套接字網絡上兩個主機的進程間通信方式為套接字2) 命名管道比無名管道的優勢提供了一個可以訪問的路徑名,實現沒親緣關系的進程 間通信3) 消息隊列比命名管道和無名管道的優勢可以按類型實現消息的隨機查詢,沒必要先進先出4) 按照邏輯結構不同進行數據庫劃分,Sqli
3、te 數據庫屬于哪一類 關系型數據庫5) 在 C 語言中操作sqlite 數據庫,常用的2 中方式是 sqlite exec( 回調)、sqlite_gettable(勻非回調)6)列舉四種進程調度算法 先來先調度(FCFS)、短進程優先調度(SPF)、高優先級調度(HPF)、時間片輪轉調度三:問答題(本題共 7 題,每題 5 分,共 35 分)1) 什么是系統調用?系統調用是通過什么方式陷入內核態的?請寫出你對系統調用的理解。什么是文件 I/O 和標準 I/O 庫?文件 I/O 和標準 I/O 庫的區別?系統調用是指操作系統提供給用戶程序調用的一組特殊接口,用戶程序可以通過這組接口獲得操作系
4、統內核提供的服務。系統調用是通過軟件中斷方式陷入內核的linux 的文件 I/O 是由操作系統提供的基本IO 服務,標準 I/O 庫通過封裝系統調用,提供了一個到底層 I/O 的接口。標準 I/O 默認采用了緩沖機制, 還創建了一個包含文件和緩沖區相關數據的數據結構;文件 I/O 一般沒有采用緩沖模式,需要自己創建緩沖區。一種是標準庫封裝系統調用而成, 更高級,一種是系統提供的,比較低級;標準I / O 可移植性高、文件 I/O 可移植性低。2) 什么是進程?用 fork()創建一個子進程時,系統會做什么工作進程是具有獨立功能的程序關于某個數據集合上的一次運行活動,是系統進行資源分配的單位,不
5、僅是系統內部獨立運行的實體也是獨立競爭資源的實體。用 fork ()時系統會分配子進程一個ID 號然后繼承父進程的地址空間,包括進程上下文 進程堆棧 打開的文件描述符等等,他就是父進程的一個復制品。3) 進程和線程有什么區別?每個獨立的進程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在進程程中,由進程提供多個線程執行的控制。進程是系統進行資源分配和調度的一個獨立單位線程是進程的一個實體,是 CPU 調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源但是它可與同屬一個進程的其他的線程共享進
6、程所擁有的全部資源一個線程可以創建和撤銷另一個線程;同一個進程中的多個線程之間可以并發執行。4) 什么是線程的互斥和同步,程序應怎樣寫才能達到互斥或同步?互斥:是指某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。同步:是指在互斥的基礎上(大多數情況),通過其它機制實現訪問者對資源的有序訪問。在大多數情況下,同步已經實現了互斥,特別是所有寫入資源的情況必定是互斥的。少數情況是指可以允許多個訪問者同時訪問資源。在寫程序時可以用互斥鎖和信號量實現線程同步,一個線程訪問共享資源時給這個資源上鎖其他線程就不能訪問了直到上鎖的進程釋放互斥
7、鎖為止。5) 什么是僵尸進程?孤兒進程?守護進程?僵尸進程:僵尸進程是指它的父進程已經退出(父進程沒有等待(調用 wait/waitpid)它),而該進程 dead 之后沒有進程接受,就成為僵尸進程,也就是(zombie)進程。孤兒進程:一個父進程退出,而它的一個或多個子進程還在運行,那么那些子進程將成為孤兒進程。孤兒進程將被in it 進程(進程號為 1)所收養,并由 init 進程對它們完成狀態收集工作。守護進程:是指在 UNIX 或其他多任務操作系統中在后臺執行的電腦程序,并不會接受電腦用戶的直接操控。此類程序會被以進程的形式初始化。守護進程程序的名稱通常以字母“d”結尾:例如,sysl
8、ogd 就是指管理系統日志的守護進程。通常,守護進程沒 有任何存在的父進程(即 PPID=1),且在 UNIX 系統進程層級中直接位于init 之下。守護進程程序通常通過如下方法使自己成為守護進程:對一個子進程調用fork,然后使其父進程立即終止,使得這個子進程能在in it 下運行。這種方法通常被稱為“脫殼”6) 有 3 個線程:A、B、C,現要求 A 先執行,然后 B 再執行,最后 C 再執行,之后 A-B-C循環執行,請說出大體的思路?創建 3 個信號量 sem_A sem_B sem_C 分別用來給 A、B C 3 個線程,啟動 sem_A 信 號量的初始值為 1,其余 2 個信號量初
9、始值為 0,當主線程創建 3 個子線程后,因為 sem_A 的值大于 0,所以只有 A 線程執行相關的代碼,B、C 線程堵塞在對 sem_B sem_C 信號量的p 操作;當 A 線程執行完相應的代碼后,給sem_B 信號量加 1,之后 B 線程開始執行相關操作,在此時 A 線程堵塞在對 sem_A 信號量的 p 操作,C 線程繼續堵塞;當 B 線程執行完畢相關操 作后,給 sem_C 進行 V 操作,B 線程堵塞,C 線程執行相關操作;以上是從 A-B-C 線程執行的流程7) exit()、_exit()和 return ()的區別?exit ():結束當前的進程,并且會刷新緩存區,關閉沒有
10、關閉的文件等_exit ():結束當前的進程,不對緩存區刷新return :1:在 main 函數中會結束當前進程2:在子函數中,會返回調用當前函數的調用位置,進程從下個C 語句開始執行四:程序題(本小題共 3 題,每題 10 分 共 30 分)1)用多線程、信號量實現生產者和消費者的模擬,倉庫容量為10,倉庫中開始有 3件產品,消費者每 3 秒消費一件產品,生產者每兩秒生產一個產品,生產者和消費者不能同時進入倉庫(需要互斥)信號量-線程間通信/ “生產者消費者”問題#i nclude#i nclude#in clude#in clude#i nclude#define msleep(x)us
11、leep(x*1000)#defi ne PRODUCT_SPEED3#defi ne CONSUM_SPEED1/生產速度/消費速度#defi ne INIT_NUM#defi ne TOTAL_NUMsem_t p_sem, c_sem, sh_sem;int nu m=INIT_NUM;void product(void)sleep(PRODUCT_SPEED);int add_to_lib()nu m+; 倉庫中的產品增加一個msleep(500);return num;void con sum()sleep(CONSUM_SPEED);int sub_from_lib()num-;I
12、I倉庫中的產品數量減一msleep(500);return num;void *productor(void *arg)while(1)3倉庫原有產品數10倉庫容量 生產產品II 添加產品到倉庫消費 從倉庫中取出產品II 生產者線程sem_wait(&p_sem); 生產信號量減一product();II 生產延時sem_wait(&sh_sem);這個信號量是用來互斥的prin tf(push into! tatol_num=%dn,add_to_lib(); sem_post(&sh_sem);sem_post(&c_sem); II 消費信號量加一void
13、 *con sumer(void *arg)/ 消費者線程while(1)sem_wait(&c_sem); /消費者信號量減一sem_wait(&sh_sem);prin tf(pop out! tatol_ num=%dn,sub_from_lib();sem_post(&sh_sem);sem_post(&p_sem);生產者信號量加一con sum();消費延時int mai n()pthread_t tid1,tid2;semni t(&p_sem,0,TOTAL_NUM-INIT_NUM);semn it(&c_sem,O,INIT_
14、NUM);semni t(&sh_sem,0,1);pthread_create(&tid1,NULL,productor,NULL);pthread_create(&tid2,NULL,co nsumer,NULL);pthread _joi n(tid1,NULL);pthread _joi n(tid2,NULL);return 0;2)編寫一個多線程的程序:要求:1、 創建 2 個子線程,主進程要傳遞 3 個參數給線程 1,傳遞另一個參數給線程2 ;2、 線程 1、線程 2 中對每個傳給線程的參數加1,等線程都執行完畢后,進程打印出四個參數的值。3、傳給線程 1
15、 參數的值必需要能夠改變,傳給線程#i nclude #in elude #i nclude typedef structint A;int B;int C;DATA;/*傳參方法 1*/void *thread_1(void *arg)DATA *rec;sleep(1);rec = (DATA *)arg;rec-A += 1;rec-B += 1;rec-C += 1;return NULL;/*傳參方法 2*/void *thread_2(void * arg)2 參數的值必需不能改變int rec = 0;sleep(1);rec = (int )(arg);rec +;return
16、 NULL;int main (i nt argc, char *argv)pthread_t tid1,tid2;DATA test;int D = 100;test.A = 100;test.B = 100;test.C = 100;/*創建兩個線程*/pthread_create(&tid1, NULL, (void *)thread_1, (void *)( &test);pthread_create(&tid2, NULL, (void *)thread_2, (void *)D);pthreadoi n( tid1, NULL);pthreadoin (ti
17、d2, NULL);prin tf(A=%dn, test.A);prin tf(B=%dn, test.B);prin tf(C=%dn, test.C);prin tf(D=%dn, D);return 0;3)編制一段程序,實現進程的管道通信:使用系統調用 pipe()建立一條管道線,2 個子進程分別向管道各寫一句話:Child process 1 is sending a message!Child process 2 is sending a message!而父進程則從管道中讀出來自于2 個子進程的信息,顯示在屏幕上。要求:父進程先接收子進程P1 發來的消息,然后再接收子進程P2 發來的消息。#i nclude #in clude #in clude #i nclude int main (i nt argc, char *argv)int fd2;pid_t pid;pid_t pid_sec;char buf7;pipe(fd);if(pid = fork()0)prin tf(fork error!); exit(1);else if(pid = 0)close(fd0);write(fd1,first1,7);close(fd1); exit
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業管理人員安全培訓考試試題黃金題型
- 2024-2025新員工崗前安全培訓考試試題含答案【黃金題型】
- 2025年廠級員工安全培訓考試試題答案
- 2025管理人員崗前安全培訓考試試題附答案【基礎題】
- 2025年崗位安全培訓考試試題典型題
- 2025安全培訓考試試題及答案考試直接用
- 2025公司員工安全培訓考試試題1套
- 2025年新入職員工安全培訓考試試題附答案【綜合題】
- 2025年安全管理人員安全培訓考試試題一套
- 2025-2030年中國PVC糊樹脂市場需求動態及未來發展趨勢研究報告
- Unit 4 Scientists Who Changed the World 單詞講義-高中英語牛津譯林版(2020)必修第三冊
- GB/T 28726-2012氣體分析氦離子化氣相色譜法
- GB 11984-1989氯氣安全規程
- 兒科病歷書寫規范-課件
- 湯姆索亞歷險記閱讀選擇題課件
- 快餐店管理系統的設計與實現畢業設計
- 府谷縣大昌汗鄉張三溝煤礦煤炭資源整合項目(重大變動)環評報告書
- 電動給水泵技術規范
- 高一家長會課件(原創)(共44張PPT)
- 2021版模板作業安全防護技術措施
- 三年級下冊數學教案 《平行與相交》 青島版(五四學制)
評論
0/150
提交評論