操作系統(tǒng)實(shí)驗(yàn)報(bào)告finalEDI匯總_第1頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告finalEDI匯總_第2頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告finalEDI匯總_第3頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告finalEDI匯總_第4頁(yè)
操作系統(tǒng)實(shí)驗(yàn)報(bào)告finalEDI匯總_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

學(xué)生學(xué)號(hào)0121010680225實(shí)驗(yàn)課成績(jī)武漢理工大學(xué)實(shí)驗(yàn)課程名稱開課學(xué)院指導(dǎo)老師姓名學(xué)生姓名學(xué)生專業(yè)班級(jí)實(shí)驗(yàn)課程名稱開課學(xué)院指導(dǎo)老師姓名學(xué)生姓名學(xué)生專業(yè)班級(jí)實(shí)驗(yàn)課程名稱開課學(xué)院指導(dǎo)老師姓名學(xué)生姓名學(xué)生專業(yè)班級(jí)學(xué)生實(shí)驗(yàn)報(bào)告書實(shí)驗(yàn)課程名稱開課學(xué)院指導(dǎo)老師姓名學(xué)生姓名學(xué)生專業(yè)班級(jí)操作系統(tǒng)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院劉軍姬琪軟件工程SY10012012—2013學(xué)年第一學(xué)期實(shí)驗(yàn)項(xiàng)目名稱Linux系統(tǒng)調(diào)用(time)實(shí)驗(yàn)成績(jī)實(shí)驗(yàn)者姬琪專業(yè)班級(jí)軟件SY1001Z且另IJ同組者實(shí)驗(yàn)日期年月日第一部分:實(shí)驗(yàn)分析與設(shè)計(jì)(可加頁(yè))一、實(shí)驗(yàn)內(nèi)容描述(問題域描述)學(xué)習(xí)Linux內(nèi)核的系統(tǒng)調(diào)用,理解、掌握Linux系統(tǒng)調(diào)用的實(shí)現(xiàn)框架、用戶界面、參數(shù)傳遞、進(jìn)入/返回過程。閱讀Linux內(nèi)核源代碼,通過添加一個(gè)簡(jiǎn)單的系統(tǒng)調(diào)用實(shí)驗(yàn),進(jìn)一步理解Linux操作系統(tǒng)處理系統(tǒng)調(diào)用的統(tǒng)一流程。Linux系統(tǒng)調(diào)用使用方法。要求:掌握Linux系統(tǒng)調(diào)用使用方法。內(nèi)容:學(xué)習(xí)使用time,ctime,sleep,exit等Linux系統(tǒng)調(diào)用使用方法。二、實(shí)驗(yàn)基本原理與設(shè)計(jì)(包括實(shí)驗(yàn)方案設(shè)計(jì),實(shí)驗(yàn)手段的確定,試驗(yàn)步驟等,用硬件邏輯或者算法描述)#include<stdio.h>#include<unistd.h>#include<time.h>#include<iostream>usingnamespacestd;intmain()(while(l)(chartimebuf[100j;time11;time(&t);strftime(timebuf,sizeof(timebuf),H%Y年%m月%d日%H:%M:%SMocaltime(&t));cout?timebuf?endl;fflush(stdout);sleep(l);)return0;)在現(xiàn)有的系統(tǒng)中添加一個(gè)不用傳遞參數(shù)的系統(tǒng)調(diào)用。這個(gè)系統(tǒng)調(diào)用的功能是實(shí)現(xiàn)遍歷進(jìn)程。實(shí)驗(yàn)主要內(nèi)容:添加系統(tǒng)調(diào)用的名字利用標(biāo)準(zhǔn)C庫(kù)進(jìn)行包裝添加系統(tǒng)調(diào)用號(hào)在系統(tǒng)調(diào)用表中添加相應(yīng)表項(xiàng)sys_mysyscall的實(shí)現(xiàn)三、主要儀器設(shè)備及耗材Ubuntu操作系統(tǒng)Vi編輯器G++編譯器第二部分:實(shí)驗(yàn)調(diào)試與結(jié)果分析(可加頁(yè))一、調(diào)試過程(包括調(diào)試方法描述、實(shí)驗(yàn)數(shù)據(jù)記錄,實(shí)驗(yàn)現(xiàn)象記錄,實(shí)驗(yàn)過程發(fā)現(xiàn)的問題等)[1]下載并部署內(nèi)核源代碼此步已經(jīng)在實(shí)驗(yàn)2中完成。[2]添加系統(tǒng)調(diào)用號(hào)系統(tǒng)調(diào)用號(hào)在文件unistd.h里面定義。這個(gè)文件在ubuntulO.10下位于/usr/include/asni/imistd_32.h?,F(xiàn)在我們?cè)趗nistd.h中添加我們的系統(tǒng)調(diào)用號(hào):_NRmysyscalL如下所示:231ttdefine_NR_mysyscall223/*添加或修改為mysyscall*//*注意:不同版本的內(nèi)核系統(tǒng)調(diào)用號(hào)不一樣,您可以根據(jù)內(nèi)核版本不同對(duì)系統(tǒng)調(diào)用號(hào)進(jìn)行修改*/添加系統(tǒng)調(diào)用號(hào)之后,系統(tǒng)才能根據(jù)這個(gè)號(hào),作為索引,去找syscall_table中的相應(yīng)表項(xiàng)。[3]在系統(tǒng)調(diào)用表中添加或修改相應(yīng)表項(xiàng)我們知道,系統(tǒng)調(diào)用處理程序(system_call)會(huì)根據(jù)eax中的索引到系統(tǒng)調(diào)用表(sys_call_table)中尋找相應(yīng)的表項(xiàng)。所以,我們必須在那里添加我們自己的一個(gè)值。在2.6.36的內(nèi)核下,只需要修改arch/x86/kernel/syscal1table32.So注意,修改該文件首先要切換到root權(quán)

限,此外使用gedit打開該文件時(shí)注意它的擴(kuò)展名是大寫的So233233234235sys_readahead限,此外使用gedit打開該文件時(shí)注意它的擴(kuò)展名是大寫的So233234233234235sys_readahead233234235sys_readahead233234235sys_readahead?longsys_mysyscall.longsys_gettid233234235sys_readahead?longsys_mysyscall.longsys_gettid.long到現(xiàn)在為止,系統(tǒng)已經(jīng)能夠正確地找到并且調(diào)用sys_mysyscallo剩下的就只有一件事情,那就是sysjnysyscall的實(shí)現(xiàn)?!?】sys_mysyscall的實(shí)現(xiàn)我們把一小段程序添加在kernel/sys.c里面。在這里,我們并沒有在kernel目錄下另外添加自己的一個(gè)文件,這樣做的目的是為了簡(jiǎn)單,而且不用修改makefile,省去不必要的麻煩。mysyscall系統(tǒng)調(diào)用實(shí)現(xiàn)遍歷系統(tǒng)中的所有的進(jìn)程,并打印每個(gè)進(jìn)程的進(jìn)程名字,進(jìn)程標(biāo)識(shí)符,進(jìn)程的狀態(tài)和父進(jìn)程的標(biāo)識(shí)符。進(jìn)程名字、pid、進(jìn)程狀態(tài)、父進(jìn)程的指針在task-struct結(jié)構(gòu)的字段中。在內(nèi)核中使用printk函數(shù)打印有關(guān)變量的值。遍歷進(jìn)程可以使用next_task宏,init_task進(jìn)程為0號(hào)進(jìn)程。asmlinkageintsys_mysyscall(void)(〃在此處加入遍歷進(jìn)程的代碼;return0;}[5]重新編譯內(nèi)核一定要重新編譯內(nèi)核。內(nèi)核編譯完成后,重新啟動(dòng)編譯后的新內(nèi)核。[6]編寫用戶態(tài)程序要測(cè)試新添加的系統(tǒng)調(diào)用,需要編寫一個(gè)用戶態(tài)測(cè)試程序(test.c)調(diào)用mysyscall系統(tǒng)調(diào)用。mysyscall系統(tǒng)調(diào)用中printk函數(shù)輸出的信息在/var/log/message文件中。也可以在shell下用dmesg命令查看。用戶態(tài)測(cè)試程序可以用如下方法實(shí)現(xiàn)ttinclude<linux/unistd.h>#include<sys/syscall.h>^define_NR_mysyscall223intmain()(syscall(_NR_mysyscall);/*或syscall(223)*/〃在此加入在屏幕輸出每個(gè)進(jìn)程相關(guān)信息的代碼;}用gcc編譯源程序gcc-otesttest.c運(yùn)行程序?/test用shell命令查看遍歷進(jìn)程輸出的信息

ttdmesg二、實(shí)驗(yàn)結(jié)果及分析(包括結(jié)果描述、實(shí)驗(yàn)現(xiàn)象分析、影響因素討論、綜合分析和結(jié)論等).longsys_getdents64/?220?/.longsys_fcntl64.longsysnisyscall/?reservedforTUX?/.longsysjnysyscall.longsysgettid.longsysreadahead/?225?/.longsyssetxattr.longsyslsetxattr—sys.c〃添加一個(gè)系統(tǒng)調(diào)用asmlinkageintsysmysyscall(void){-structtaskstruct*task=&init_task;do(k-printk(,,%s\t%d\t%ld\t%d\n",task->commrtask->pid,>state,task->parent->pid);}while((task=nexttask(task))!=&init_task);return0;k-)|三、實(shí)驗(yàn)小結(jié)、建議及體會(huì)這次實(shí)驗(yàn)有點(diǎn)難度,但是通過查找資料和與老師的交流之后還是順利完成了實(shí)驗(yàn),希望以后相關(guān)能力能夠得到加強(qiáng)。實(shí)驗(yàn)項(xiàng)目名稱Linux進(jìn)程控制(fork)實(shí)驗(yàn)成績(jī)實(shí)驗(yàn)者姬琪專業(yè)班級(jí)軟件SY1001組別同組者實(shí)驗(yàn)日期年月曰第一部分:實(shí)驗(yàn)分析與設(shè)計(jì)(可加頁(yè))一、實(shí)驗(yàn)內(nèi)容描述(問題域描述)Linux系統(tǒng)進(jìn)程控制要求:掌握Linux系統(tǒng)中進(jìn)程控制原語(yǔ)fork的使用方法。內(nèi)容:設(shè)計(jì)C程序,其中主進(jìn)程創(chuàng)建一個(gè)子進(jìn)程,以特定次序各自執(zhí)行規(guī)定操作后退出。二、實(shí)驗(yàn)基本原理與設(shè)計(jì)(包括實(shí)驗(yàn)方案設(shè)計(jì),實(shí)驗(yàn)手段的確定,試驗(yàn)步驟等,用硬件邏輯或者算法描述)#include<stdlib.h>#include<unistd.h>#include<iostream>usingnamespacestd;intmain()(cout?HParentprocessid:n?getpid()?endl;pid_tiRet=fork();if(iRet<0)cout?HCreatechildprocessfail!n?endl;elseif(iRet==0)(cout?nrmchildprocess,andidisn?getpid()?nppidis:H?getppid()?endl;)else(cout?HCreatechildprocesssuccesschildn?ntheidis:n?iRet?endl;)return0;)三、主要儀器設(shè)備及耗材Ubuntu操作體統(tǒng)Vi編輯器G++編譯第二部分:實(shí)驗(yàn)調(diào)試與結(jié)果分析(可加頁(yè))一、調(diào)試過程(包括調(diào)試方法描述、實(shí)驗(yàn)數(shù)據(jù)記錄,實(shí)驗(yàn)現(xiàn)象記錄,實(shí)驗(yàn)過程發(fā)現(xiàn)的問題等)(1)【進(jìn)程的創(chuàng)建】編寫一段程序,使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個(gè)子進(jìn)程,當(dāng)此進(jìn)程運(yùn)行時(shí),在系統(tǒng)中有一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動(dòng),讓每一個(gè)進(jìn)程在屏幕上顯示一個(gè)字符,父進(jìn)程顯示字符“a”;子進(jìn)程分別顯示字符“b”和字符“c”,試觀察記錄屏幕上的顯示結(jié)果,并分析原因?!驹闯绦颉浚?include<stdio.h>intmain(){intpl,p2;while((pl二fork())二二-1);if(pl=0)〃第一子進(jìn)程putchar('b');else{while((p2=fork())==-1);if(p2二二0)putchar(?c);〃第二子進(jìn)程elseputchar('a');//父進(jìn)程)return0;運(yùn)行多次:主要輸出有bca,偶爾輸出cab和cba,abc,bac,acb…會(huì)有如此多種不同輸出,主要是因?yàn)閒ork。生成的子進(jìn)程和父進(jìn)程是并行運(yùn)行的,所以先運(yùn)行哪個(gè)進(jìn)程是由系統(tǒng)的調(diào)度算法決定的,ubuntu9.04很大概率系統(tǒng)會(huì)先輸出bca是因?yàn)閡buntu9.04在fork()運(yùn)行之后很大概率先運(yùn)行子進(jìn)程,再運(yùn)行父進(jìn)程。當(dāng)然也有可能先運(yùn)行父進(jìn)程后子進(jìn)程,再加上進(jìn)程間的并發(fā)性;導(dǎo)致了輸出的多樣性。輸出次序帶有隨機(jī)性。(2)【進(jìn)程的控制】修改已編寫的程序,將每個(gè)進(jìn)程輸出一個(gè)字符改為每個(gè)進(jìn)程輸出一句話,在觀察程序執(zhí)行時(shí)屏幕上出現(xiàn)的現(xiàn)象,并分析原因。【源代碼】:#include<stdio.h>intmain(){intpl,p2;while((pl二forkO)二二-1);if(pl==0);第一個(gè)子進(jìn)程printf("Childlisrunning!\n,/);else{while((p2=forkO)==-1);if(P2=0);第二子進(jìn)程printf(Z/Child2isrunning!\nz/);else;父進(jìn)程printf("Fatherisrunning!\n/z);}return0;運(yùn)行多次,大部分運(yùn)行后輸出:Childlisrunning!Child2isrunning!Fatherisrunning!少數(shù)輸出:Child2isrunning!Childlisrunning!Fatherisrunning!Fatherisrunning!Childlisrunning!Child2isrunning!理論上是有6種不同的結(jié)果,還是由于系統(tǒng)的調(diào)度算法,程序的并發(fā)性影響;但由于函數(shù)printf()在輸出字符串時(shí)不會(huì)被中斷,因此,字符串內(nèi)部字符順序輸出不變。所以與打印單字符的結(jié)果相同。創(chuàng)建進(jìn)程,使用exec函數(shù)族使子進(jìn)程執(zhí)行新的目標(biāo)程序,觀察并分析出現(xiàn)的現(xiàn)象?!驹创a】:ttinclude<stdio.h>ttinclude<unistd.h>intmain()(printf(zz===systemcallexecltesting二二二\n〃);execlp(〃date〃,〃date〃,0);printf(z,execerror!\n〃);return0;}輸出:二二二systemcallexecltesting二二二2009年12月04H星期五21:35:18CST輸出結(jié)果分析:execlp是一種exec函數(shù),當(dāng)進(jìn)程調(diào)用一種exec函數(shù)時(shí),用指定的目標(biāo)進(jìn)程更好進(jìn)程的執(zhí)行映像。Exec調(diào)用成功后,調(diào)用進(jìn)程的正文段被指定的文件的正文段所覆蓋。調(diào)用成功時(shí),exec不返回,從而不執(zhí)行exec以后的所有語(yǔ)句,所以本例就只有輸出“2009年12月04日星期五21:35:18CST"的情況。如果調(diào)用失敗,返回T,執(zhí)行剩余指令。(3)【進(jìn)程信號(hào)處理】編寫程序使用系統(tǒng)調(diào)用fork。創(chuàng)建兩個(gè)子進(jìn)程,再用系統(tǒng)調(diào)用singal()讓父進(jìn)程捕捉鍵盤上來的中斷信號(hào)(即按Ctrl+c鍵);當(dāng)捕捉到中斷信號(hào)后,父進(jìn)程用系統(tǒng)調(diào)用KillO向兩個(gè)子進(jìn)程發(fā)出信號(hào),子進(jìn)程捕捉到信號(hào)后分別輸出下列信息后終止:ChildProcessllisKilledbyParent!ChildProcessl2isKilledbyParent!父進(jìn)程等待兩個(gè)子進(jìn)程終止后,輸出如下的信息后終止:ParentProcessisKilled!【源代碼工#include<stdio.h>#include<signal.h>intwait_mark;voidwaiting()(while(wait_mark=1);voidstop()(wait_mark=0;intmain()(intpl,p2;while((pl=fork())==-1);if(pl==0);第一個(gè)子進(jìn)程(waitmark=1;signal(SIGINT,SIG_IGN);signal(16,stop);waiting();lockf(l,1,0);;加鎖printf(''ChildProcessllisKilledbyParent!\n,z);lockf(l,0,0);;解鎖exit(0);)Else(while((p2=forkO)==-1);if(P2=0);第二個(gè)子進(jìn)程(waitmark=1;

signal(SIGINT,SIG_IGN);signal(17,stop);waiting();lockf(l,1,0);;加鎖printf("ChildProcessl2isKilledbyParent!\n,z);lockf(l,0,0);;解鎖exit(0);)Else;父進(jìn)程(waitmark=1;signal(SIGINT,stop);waiting();kill(pl,16);kill(p2,17);wait(0);wait(0);printf(z,ParentProcessisKilled!\n,z);exit(0);輸出結(jié)果有兩種:ChildProcessllisKilledbyParent!ChildProcessl2isKilledbyParent!ParentprocessisKilled!by

byParent!Parent!by

byParent!Parent!二、實(shí)驗(yàn)結(jié)果及分析(包括結(jié)果描述、實(shí)驗(yàn)現(xiàn)象分析、影響因素討論、綜合分析和結(jié)論等)horizon@horizon-desktop:?文件(E)編輯(E)查看(Y)終端(工)幫助但)horizon(3horizon-desktop:*$g++TestFork.cpphorizon(ahorizon-desktop:*$./a.outParentprocessid:2641Createchildprocesssuccesschildtheidis:2642I'mchildprocess,andidis2642ppidis:2641horizon(ahorizon-desktop|三、實(shí)驗(yàn)小結(jié)、建議及體會(huì)通過這次實(shí)驗(yàn)掌握Linux系統(tǒng)中進(jìn)程控制原語(yǔ)fork的使用方法。同時(shí)發(fā)現(xiàn)自己對(duì)Linux有很多的不熟悉的地方,在以后會(huì)進(jìn)一步加強(qiáng)。實(shí)驗(yàn)項(xiàng)目名稱Linux鍵盤命令和vi實(shí)驗(yàn)成績(jī)實(shí)驗(yàn)者姬琪專業(yè)班級(jí)軟件工程SY1OO1組另IJ同組者實(shí)驗(yàn)日期年月日第一部分:實(shí)驗(yàn)分析與設(shè)計(jì)(可加頁(yè))一、實(shí)驗(yàn)內(nèi)容描述(問題域描述)Linux鍵盤命令和viL要求:掌握Linux系統(tǒng)鍵盤命令的使用方法.使用mkdir命令建立一個(gè)子目錄subdir.使用cat或more命令查看filei文件的內(nèi)容。.將date命令的用法附加到文件filel的后面:.利用Is-1filel命令列出文件filel的較詳細(xì)的信息。.利用rmfa命令將文件fa刪除。再利用Is-1命令查看工作目錄內(nèi)容。.運(yùn)行nivfilelfile_a命令,然后用Is命令查看這兩個(gè)文件是否都還在工作目錄中2.vi操作L了解vi編輯器的作用和功能.熟悉vi的操作環(huán)境和切換方法.掌握vi操作的方式(幾個(gè)常用鍵)4,了解常用的快捷鍵二、實(shí)驗(yàn)基本原理與設(shè)計(jì)(包括實(shí)驗(yàn)方案設(shè)計(jì),實(shí)驗(yàn)手段的確定,試驗(yàn)步驟等,用硬件邏輯或者算法描述)VI編輯器的常見命令:vifilename:打開或新建文件,并將光標(biāo)置于第一行首vi+nfilename:打開文件,并將光標(biāo)置于第n行首vi+filename:打開文件,并將光標(biāo)置于最后一行首vi+/patternfilename:打開文件,并將光標(biāo)置于第一個(gè)與pattern匹配的串處vi-rfilename:在上次正用vi編輯時(shí)發(fā)生系統(tǒng)崩潰,恢復(fù)filenamevifilename....filename:打開多個(gè)文件,依次進(jìn)行編輯鍵盤命令:cat,more,less命令I(lǐng)s命令cp命令rm命令mv命令VI命令:.vi進(jìn)入vi緩沖區(qū).vifilel:進(jìn)入文件filel3.退出vi三、主要儀器設(shè)備及耗材Ubuntu操作體統(tǒng)Vi編輯器第二部分:實(shí)驗(yàn)調(diào)試與結(jié)果分析(可加頁(yè))一、調(diào)試過程(包括調(diào)試方法描述、實(shí)驗(yàn)數(shù)據(jù)記錄,實(shí)驗(yàn)現(xiàn)象記錄,實(shí)驗(yàn)過程發(fā)現(xiàn)的問題等)1使用mkdir命令建立一個(gè)子目錄subdir$mkdirsubdir$2使用cat或more命令查看filei文件的內(nèi)容。$catfilelSatMar1721:25:14CST2012$3將date命令的用法附加到文件filel的后面:mandate>>filel$mandate>>filel$4利用Is-1filel命令列出文件filel的較詳細(xì)的信息。$Is-1filel-rw-rw-r-1ml2010ml20105690Mar1721:28filel$5利用rmfa命令將文件fa刪除。再利用IsT命令查看工作目錄內(nèi)容。$rmfa$Is-1total12-rw-rw-r—1ml2010m120105690Mar1721:28filel$6運(yùn)行mvfilelfile_a命令,然后用Is命令查看這兩個(gè)文件是否都還在工作目錄中?[ml2010@tansubdir]$mvfilelfile_a[ml2010@tansubdir]$Isfilea[ml2010@tansubdir]$顯然,只有file_a在工作目錄中,而filel不在工作目錄中vi共分為三種模式(1)命令模式:命令模式為Vi的初始模式,可以使用“上下左右”按鍵來移動(dòng)光標(biāo),您可以使用“刪除字符”或“刪除整行”來處理文檔。在編輯模式或指令列模式中按【ESC】鍵可換回命令模式。(2)編輯模式:在命令模式中按下【i,L。,0,a,A,r,R]等字母之后才會(huì)進(jìn)入編輯模式。按下上述的字母時(shí),在畫面的左下方會(huì)出現(xiàn)【一INSERT一或一插入一】的字樣,才可以做文字?jǐn)?shù)據(jù)輸入。(3)指令列模式:在命令模式當(dāng)中,輸入【:】或【/】就可以將光標(biāo)移動(dòng)到最底下那一行,進(jìn)入指令列模式。在這個(gè)模式當(dāng)中,可以存盤、結(jié)束vi、顯示行號(hào)等操作。二、實(shí)驗(yàn)結(jié)果及分析(包括結(jié)果描述、實(shí)驗(yàn)現(xiàn)象分析、影響因素討論、綜合分析和結(jié)論等)Free顯示系統(tǒng)中已用空閑內(nèi)存數(shù)量horizon@horizon-desktop:~文件(E)編輯(E)查看(V)終端(工)幫助出)horizon(ahorizon-desktop:*$freehorizon(ahorizon-desktop:*$totalusedtotalusedMem:509232443900-/+buffers/cache:191672SwapotalusedMem:509232443900-/+buffers/cache:191672Swapree65332totalusedMem:509232443900-/+buffers/cache:191672Swapree653323175601336460sharedbuffers013984cached238244Rm:刪除文件或目錄orizon@horizon-desktop文件(E)編輯(E)查看(V)終端(工)幫助出)horizon(ahorizon-desktop:*$rmfilerm:無法刪除"file":沒有該文件或目錄horizon(ahorizon-desktop:*$rmDesFilehorizon(ahorizon-desktop:-$|三、實(shí)驗(yàn)小結(jié)、建議及體會(huì)Linux對(duì)比Windows有些不同需要口寸間去適應(yīng)。通過這次實(shí)驗(yàn)對(duì)Linux操作系統(tǒng)有了進(jìn)一步的了解。初步掌握了一些Linux系統(tǒng)常用的命令。通過這僅一個(gè)周時(shí)間的學(xué)習(xí),我們只是了解了linux的一些最基本知識(shí),我會(huì)在后的學(xué)習(xí)中不斷完善和加以擴(kuò)充linux知識(shí)的學(xué)習(xí)。實(shí)驗(yàn)項(xiàng)目名稱Linux下C編程實(shí)驗(yàn)成績(jī)實(shí)驗(yàn)者姬琪專業(yè)班級(jí)軟件SY1001組別同組者實(shí)驗(yàn)日期年月曰第一部分:實(shí)驗(yàn)分析與設(shè)計(jì)(可加頁(yè))一、實(shí)驗(yàn)內(nèi)容描述(問題域描述)Linux下的C編程要求:掌握vi編輯器的使用方法;掌握Linux下C程序的源程序編輯方法;編譯、連接和運(yùn)行方法。內(nèi)容:設(shè)計(jì)、編輯、編譯、連接以及運(yùn)行一個(gè)C程序,其中包含鍵盤輸入和屏幕輸出語(yǔ)句。.掌握vi編輯器的使用方法;.掌握gcc的使用格式二、實(shí)驗(yàn)基本原理與設(shè)計(jì)(包括實(shí)驗(yàn)方案設(shè)計(jì),實(shí)驗(yàn)手段的確定,試驗(yàn)步驟等,用硬件邏輯或者算法描述)#include<iostream>usingnamespacestd;intmain(){intbegin,end;inttemp=0;cout?nPleaseentertwonumber:n?endl;cin?begin?end;if(begin>end)(temp=begin;begin二end;end=temp;)for(inti=begin;i<=end;i++)(cout?i?HH;)cout?endl;return0;三、主要儀器設(shè)備及耗材Ubuntu操作體統(tǒng)Vi編輯器G++編譯第二部分:實(shí)驗(yàn)調(diào)試與結(jié)果分析(可加頁(yè))一、調(diào)試過程(包括調(diào)試方法描述、實(shí)驗(yàn)數(shù)據(jù)記錄,實(shí)驗(yàn)現(xiàn)象記錄,實(shí)驗(yàn)過程發(fā)現(xiàn)的問題等).先用viJamesJi.c建立文件.在vi的插入界面輸入^include<stdio.h>intmain(void){printf("JamesJi.gcc!\r\n〃);return0;}.編譯生成JamesJi文件:gcc-oJamesJiJamesJi.c.運(yùn)行JamesJi文件:./JamesJi二、實(shí)驗(yàn)小結(jié)、建議及體會(huì)通過這次實(shí)驗(yàn)Vi編輯器有了進(jìn)一步的應(yīng)用,同時(shí)學(xué)會(huì)了在Linux進(jìn)行簡(jiǎn)單的C語(yǔ)言編程,掌握Linux下C程序的源程序編輯方法;編譯、連接和運(yùn)行方法。在以后的學(xué)習(xí)中會(huì)加大努力加強(qiáng)自己的編程能力。加深了對(duì)linux的印象,linux的兼容性很強(qiáng)。C/C++仍舊可以在上面編譯成功。實(shí)驗(yàn)項(xiàng)目名稱SHELL編程和后臺(tái)批處理實(shí)驗(yàn)成績(jī)實(shí)驗(yàn)者姬琪專業(yè)班級(jí)軟件SY1001組別同組者實(shí)驗(yàn)日期年月曰第一部分:實(shí)驗(yàn)分析與設(shè)計(jì)(可加頁(yè))三、實(shí)驗(yàn)內(nèi)容描述(問題域描述)SHELL編程和后臺(tái)批處理要求:掌握Linux系統(tǒng)的SHELL編程方法和后臺(tái)批處理方法。內(nèi)容:(1)將編譯、連接

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論