




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
僅供個(gè)人參考計(jì)算機(jī)操作系統(tǒng)linux上機(jī)實(shí)驗(yàn)上機(jī)實(shí)驗(yàn)(1-4)班級(jí):計(jì)科0801姓名:李超學(xué)號(hào):04081012(12)不得用于商業(yè)用途僅供個(gè)人參考實(shí)驗(yàn)1 掌握Linux基本命令和開發(fā)環(huán)境一、實(shí)驗(yàn)內(nèi)容1. 掌握常用的Linuxshell 命令;掌握編輯環(huán)境VIM;掌握編譯環(huán)境gcc及跟蹤調(diào)試工具gdb二.實(shí)驗(yàn)步驟通過學(xué)習(xí)課外參考書,如《linuxc編程》和《鳥哥的私房菜》。掌握一些基本的linux命令,如cd,ls,sudo,reboot,shutdown等等掌握一些基本的vim編程命令,并可以通過gcc編譯和gdb調(diào)試。三.實(shí)驗(yàn)心得通過這些基本的實(shí)驗(yàn)內(nèi)容,對linux有了一定的基本了解,可以實(shí)現(xiàn)一些linux的基本操作,對我這個(gè)初學(xué)者的幫助很大,對linux感到不再陌生。實(shí)驗(yàn)2 進(jìn)程一.實(shí)驗(yàn)內(nèi)容通過觀察、分析實(shí)驗(yàn)現(xiàn)象,深入理解進(jìn)程及進(jìn)程在調(diào)度執(zhí)行和內(nèi)存空間等方面的特點(diǎn),掌握在POSIX規(guī)范中fork和kill系統(tǒng)調(diào)用的功能和使用。二.實(shí)驗(yàn)前準(zhǔn)備學(xué)習(xí)man命令的用法,通過它查看fork和kill系統(tǒng)調(diào)用的在線幫助,并閱讀參考資料,學(xué)會(huì)fork與kill的用法。復(fù)習(xí)C語言的相關(guān)內(nèi)容。三.實(shí)驗(yàn)問題你最初認(rèn)為運(yùn)行結(jié)果會(huì)怎么樣?答:會(huì)一直輸出程序的進(jìn)程名,并輸出他的進(jìn)程號(hào)。當(dāng)輸入數(shù)字時(shí),會(huì)殺死對應(yīng)的進(jìn)程。實(shí)際的結(jié)果什么樣?有什么特點(diǎn)?試對產(chǎn)生該現(xiàn)象的原因進(jìn)行分析。答:程序會(huì)一直輸出創(chuàng)建的進(jìn)程號(hào),當(dāng)輸出數(shù)字時(shí),會(huì)殺死對應(yīng)的進(jìn)程。當(dāng)殺死完0-9進(jìn)程時(shí),程序依然沒有退出。當(dāng)輸入‘ q’程序結(jié)束。殺死完 0-9進(jìn)程,但主進(jìn)程并沒有結(jié)束,所以一直會(huì)執(zhí)行下去。直到輸入‘q’后,主線程結(jié)束。proc_number這個(gè)全局變量在各個(gè)子進(jìn)程里的值相同嗎?為什么?答:不同,每一個(gè)進(jìn)程創(chuàng)建后,proc_number就已經(jīng)復(fù)制了,并且和對應(yīng)的線程不得用于商業(yè)用途僅供個(gè)人參考一樣。各線程分時(shí)運(yùn)行,叢輸出結(jié)果可以得出結(jié)論。4.kill 命令在程序中使用了幾次?每次的作用是什么?執(zhí)行后的現(xiàn)象是什么?答:兩次 第一次為:kill(pid[ch-'0'],SIGTERM);第二次為:kill(0,SIGTERM);前者為殺死對應(yīng)號(hào)的單一進(jìn)程,后者為殺死所有的這個(gè)程序的進(jìn)程。使用kill命令可以在進(jìn)程的外部殺死進(jìn)程。進(jìn)程怎樣能主動(dòng)退出?這兩種退出方式哪種更好一些?答:沒能理解這個(gè)問題。通過psaux|grepprocess命令得到了當(dāng)前進(jìn)程的個(gè)數(shù),殺死進(jìn)程后。未發(fā)現(xiàn)進(jìn)程減少(覺得應(yīng)該減少)。四.實(shí)驗(yàn)心得通過本次實(shí)驗(yàn),了解了進(jìn)程的相關(guān)知識(shí),包括創(chuàng)建,殺死,執(zhí)行等等。以及和主線程的關(guān)系,對linux的認(rèn)識(shí)更深了一步。實(shí)驗(yàn)3 線程一.實(shí)驗(yàn)內(nèi)容通過觀察、分析實(shí)驗(yàn)現(xiàn)象,深入理解線程及線程在調(diào)度執(zhí)行和內(nèi)存空間等方面的特點(diǎn),并掌握線程與進(jìn)程的區(qū)別。掌握POSIX規(guī)范中pthread_create()函數(shù)的功能和使用方法。.實(shí)驗(yàn)前準(zhǔn)備閱讀參考資料,了解線程的創(chuàng)建等相關(guān)系統(tǒng)調(diào)用。三.實(shí)驗(yàn)問題你最初認(rèn)為前三列數(shù)會(huì)相等嗎?最后一列斜杠兩邊的數(shù)字是相等,還是大于或者小于關(guān)系?答:最初認(rèn)為會(huì)很接近。認(rèn)為后面兩個(gè)數(shù)回相等。2.最后的結(jié)果如你所料嗎?有什么特點(diǎn)?對原因進(jìn)行分析。答:結(jié)果第一個(gè)進(jìn)程數(shù)字很大,因?yàn)樗钕冉ⅲ⑶抑虚g有 1s的延時(shí)。后面兩個(gè)數(shù)sum值大于main_counter,一開始被這個(gè)問題困住了。原因是因?yàn)閙ain_counter的自加是和其他進(jìn)程共用的,有可能同一時(shí)刻3個(gè)時(shí)刻sum++但main_counter只加一次,main_counter++分3步,先給自己賦值在+1。所以sum>main_counter3.thread 的CPU占用率是多少?為什么會(huì)這樣?答:196%han63791960.026356504pts/0Sl+20:520:21./posix3不得用于商業(yè)用途僅供個(gè)人參考我認(rèn)為因?yàn)楝F(xiàn)在的電腦多為雙核2線程,只保證2個(gè)線程并發(fā)執(zhí)行,固系統(tǒng)不斷的運(yùn)行自加,是cpu的占有率增大。4.thread_worker() 內(nèi)是死循環(huán),它是怎么退出的?你認(rèn)為這樣退出好嗎?答:隨著主程序的退出而退出。不好把你的程序源代碼附到實(shí)驗(yàn)報(bào)告后。并請保留源代碼,下次實(shí)驗(yàn)需要使用。四.實(shí)驗(yàn)心得通過本次實(shí)驗(yàn),了解了線程的基本應(yīng)用和他的特點(diǎn),對線程的認(rèn)識(shí)更深了一步。實(shí)驗(yàn)4 互斥(修改第三題)一.實(shí)驗(yàn)?zāi)傅耐ㄟ^觀察、分析實(shí)驗(yàn)現(xiàn)象,深入理解理解互斥鎖的原理及特點(diǎn)掌握在POSIX規(guī)范中的互斥函數(shù)的功能及使用方法。二.實(shí)驗(yàn)前準(zhǔn)備準(zhǔn)備好上節(jié)實(shí)驗(yàn)完成的程序thread.c。閱讀參考資料,了解互斥鎖的加解鎖機(jī)制及相關(guān)的系統(tǒng)調(diào)用三.實(shí)驗(yàn)內(nèi)容找到thread.c的代碼臨界區(qū),用臨界區(qū)解決main_counter與sum不同步的問題。.實(shí)驗(yàn)問題回答下列問題,寫入實(shí)驗(yàn)報(bào)告。你預(yù)想posix3+.c的運(yùn)行結(jié)果會(huì)如何?答:sum和main_counter的值是一樣的2.posix3+.c的實(shí)際運(yùn)行結(jié)果如何?多次運(yùn)行每次的現(xiàn)象都一樣嗎?為什么會(huì)這樣?答:sum和main_counter的值很接近,有時(shí)候完全一樣。因?yàn)橹虚g的輸出還有一定的時(shí)間差,在加到for循環(huán)外面時(shí)結(jié)果就正確了。把修改后的兩個(gè)程序的源代碼附在實(shí)驗(yàn)報(bào)告后。實(shí)驗(yàn)4 互斥實(shí)驗(yàn)報(bào)告回答下列問題,寫入實(shí)驗(yàn)報(bào)告。你預(yù)想deadlock.c的運(yùn)行結(jié)果會(huì)如何?答:全都執(zhí)行完deadlock.c的實(shí)際運(yùn)行結(jié)果如何?多次運(yùn)行每次的現(xiàn)象都一樣嗎?為什么不得用于商業(yè)用途僅供個(gè)人參考會(huì)這樣?答:只有主線程能運(yùn)行完。不一樣。兩個(gè)線程產(chǎn)生了互斥條件,有的時(shí)候主線程顯得到資源,運(yùn)行完后釋放,有時(shí)候第二個(gè)線線程先得到資源運(yùn)行。這就導(dǎo)致了不一樣。實(shí)驗(yàn)心得:通過本次實(shí)驗(yàn),了解了互斥機(jī)制,對課本上死鎖的概念更加的理解,以及死鎖發(fā)生的條件和解除死鎖的方法。對問題的分析結(jié)合理論更加的清除。程序代碼:實(shí)驗(yàn)2:#include<stdio.h>#include<sys/types.h>#include<signal.h>#include<ctype.h>#include<unistd.h>#defineMAX_CHILD_NUMBER10#defineSLEEP_INTERVAL2intproc_number=0;voiddo_something();intmain(intargc,char*argv[]){intchild_proc_number=MAX_CHILD_NUMBER;inti,ch;pid_tchild_pid;pid_tpid[10]={0};if(argc>1){child_proc_number=atoi(argv[1]);child_proc_number=(child_proc_number>10)?10:child_proc_number;}printf("fork\n");for(i=0;i<child_proc_number;i++){child_pid=fork();if(child_pid>0)不得用于商業(yè)用途僅供個(gè)人參考pid[i]=child_pid;elseif(child_pid==0){proc_number=i;do_something();}elseprintf("createprcessfailed\n");}while((ch=getchar())!='q'){if(isdigit(ch)){kill(pid[ch-'0'],SIGTERM);}}sleep(2);kill(0,SIGTERM);return0;}voiddo_something(){for(;;){printf("thisisprocessNO.%d--pid=%d\n",proc_number,getpid());sleep(2);}}實(shí)驗(yàn)3:#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>#include<ctype.h>#include<pthread.h>#defineMAX_THREAD3不得用于商業(yè)用途僅供個(gè)人參考unsignedlonglongmain_counter,counter[MAX_THREAD];void*thread(void*p);intmain(intargc,char*argv[]){inti,rtn,ch;unsignedlonglongsum=0;pthread_tpthread_id[MAX_THREAD]={0};for(i=0;i<MAX_THREAD;i++){*)thread,&i);
rtn=pthread_create(&pthread_id[i],NULL,(voidif(rtn!=0){printf("creadte pthreaderror\n");exit(1);}sleep(1);}do{printf("\n");for(i=0;i<MAX_THREAD;i++){號(hào):%llu\n",counter[i]);
sum+=counter[i];printf(" 線程}printf("main=%llu/sum=%llu",main_counter,sum);sum=0;}while((ch=getchar())!='q');return0;}void*thread(void*p){intthread_num=*(int*)p;for(;;){不得用于商業(yè)用途僅供個(gè)人參考main_counter++;counter[thread_num]++;}}實(shí)驗(yàn)4:#include<stdio.h>#include<sys/types.h>#include<unistd.h>#include<signal.h>#include<ctype.h>#defineLOOP_TIME10pthread_mutex_tmutex1;pthread_mutex_tmutex2;void*thread(void*);voidcritical_section(intthread_num,inti);intmain(){intrtn,i;pthread_tpthread_id=0;rtn=pthread_create(&pthread_id,NULL,thread,NULL);if(rtn!=0){printf("pthread_createerror\n");return0;}for(i=0;i<LOOP_TIME;i++){pthread_mutex_lock(&mutex1);pthread_mutex_lock(&mutex2);critical_section(1,i);pthread_mutex_unlock(&mutex2);pthread_mutex_unlock(&mutex1);}pthread_mutex_destroy(&mutex1);pthread_mutex_destroy(&mutex2);return0;不得用于商業(yè)用途僅供個(gè)人參考}void*thread(void*p){inti;for(i=0;i<LOOP_TIME;i++){pthread_mutex_lock(&mutex1);pthread_mutex_lock(&mutex2);critical_section(2,i);pthread_mutex_unlock(&mutex2);pthread_mutex_unlock(&mutex1);}}voidcritical_section(intthread_num,inti){printf("thread%d:%d\n",thread_num,i);}實(shí)驗(yàn)3+:#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>#include<ctype.h>#include<pthread.h>#defineMAX_THREAD10pthread_mutex_tmutex1=PTHREAD_MUTEX_INITIALIZER;//pthread_mutex_tmutex2=PTHREAD_MUTEX_INITIALIZER;unsignedlonglongmain_counter,counter[MAX_THREAD];void*thread(void*p);intmain(intargc,char*argv[]){inti,rtn,ch;unsignedlonglongsum=0;pthread_mutex_init(&mutex1,NULL);pthread_tpthread_id[MAX_THREAD]={0};for(i=0;i<MAX_THREAD;i++)不得用于商業(yè)用途僅供個(gè)人參考{rtn=pthread_create(&pthread_id[i],NULL,(void*)thread,&i);if(rtn!=0){printf("creadte pthreaderror\n");exit(1);}sleep(1);}do{printf("\n");pthread_mutex_lock(&mutex1);for(i=0;i<MAX_THREAD;i++){為:%llu\n",counter[i]);
sum+=counter[i];printf(" 該線程值}printf("main=%llu/sum=%llu",main_counter,sum);pthread_mutex_unlock(&mutex1);sum=0;}while((ch=getchar())!='q');pthread_mutex_destroy(&mutex1);return0;}void*thread(void*p){intthread_num=*(int*)p;for(;;){pthread_mutex_lock(&mutex1);counter[thread_num]++;main_counter++;不得用于商業(yè)用途僅供個(gè)人參考pthread_mutex_unlock(&mutex1);}}不得用于商業(yè)用途僅供個(gè)人參考僅供個(gè)人用于學(xué)習(xí)、研究;不得用于商業(yè)用途。Forpersonaluseonlyinstudyandresearch;notforcommercialuse.Nurfürdenpers?nlichenf ürStudien,Forschung,zukommerziellenZweckenv
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全生產(chǎn)試題及答案文庫
- 智能數(shù)控機(jī)床升級(jí)路徑與效益:2025年行業(yè)創(chuàng)新與市場前景報(bào)告
- 安全技術(shù)防范試題及答案
- 食品工業(yè)技術(shù)革新:2025年傳統(tǒng)生產(chǎn)技術(shù)改造與市場拓展報(bào)告
- 周恩來人物介紹
- 周圍環(huán)境與心理健康課件
- 員工試用期管理課件
- 年終護(hù)理安全總結(jié)
- 中國制造英語課件圖片
- 留置導(dǎo)尿管的應(yīng)用與護(hù)理
- 信息用戶管理制度
- 十五五智慧校園建設(shè)發(fā)展規(guī)劃
- 河南省豫地科技集團(tuán)招聘筆試真題2024
- 兒童創(chuàng)意民族紋飾課件
- 廣東省廣州市增城區(qū)2023-2024學(xué)年八年級(jí)下學(xué)期期末數(shù)學(xué)試題(含答案)
- 廣東省廣州市番禺區(qū)2022-2023學(xué)年三年級(jí)下學(xué)期數(shù)學(xué)期末試卷(含答案)
- 養(yǎng)老項(xiàng)目商業(yè)計(jì)劃書
- 夜市項(xiàng)目的可行性報(bào)告
- 2024-2025 學(xué)年八年級(jí)英語下學(xué)期期末模擬卷 (南通專用)原卷
- 2025重慶新華出版集團(tuán)招聘18人筆試參考題庫附帶答案詳解
- 河南信息產(chǎn)業(yè)投資有限公司招聘考試真題2024
評論
0/150
提交評論