版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、學生學號0121110680125實驗課成績武漢理工大學學生實驗報告書實驗課程名稱 開課學院 指導老師姓名 學生姓名 學生專業(yè)班級操作系統(tǒng)計算機科學與技術學院劉軍李帥軟件11012013 2014學年第一學期實驗項目名稱Linux鍵盤命令和vi實驗成績實驗者李帥專業(yè)班級軟件工1101組別同組者實驗日期第一部分:實驗分析與設計(可加頁)、實驗內容描述(問題域描述)Linux鍵盤命令和vi1要求:掌握Linux系統(tǒng)鍵盤命令的使用方法1.使用 mkdir命令建立一個子目錄subdir2. 使用cat或more命令查看filel 文件的內容。3. 將date命令的用法附加到文件filel的后面:4.
2、禾U用Is -I filel命令列出文件filel的較詳細的信息。5. 利用rm fa命令將文件fa刪除。再利用ls -l命令查看工作目錄內容。6. 運行mv file1 file_a 命令,然后用ls命令查看這兩個文件是否都還在工作目 錄中2.vi操作1. 了解vi編輯器的作用和功能2. 熟悉vi的操作環(huán)境和切換方法3. 掌握vi操作的方式(幾個常用鍵)4. 了解常用的快捷鍵二、實驗基本原理與設計(包括實驗方案設計,實驗手段的確定,試驗步驟等,用硬件邏輯或者算法描述)VI編輯器的常見命令:vi file name :打開或新建文件,并將光標置于第一行首vi +n file name:打開文件
3、,并將光標置于第 n行首vi + file name:打開文件,并將光標置于最后一行首vi +/pattern file name:打開文件,并將光標置于第一個與patter n 匹配的串處vi -r file name:在上次正用vi編輯時發(fā)生系統(tǒng)崩潰,恢復file namevi file name.file name:打開多個文件,依次進行編輯鍵盤命令:1. cat, more , less 命令2. Is命令3. cp命令4. rm命令5. mv命令VI命令:1. vi進入vi緩沖區(qū)2. vi file1 :進入文件 file13. 退出vi三、主要儀器設備及耗材Ubuntu操作體統(tǒng)Vi
4、編輯器第二部分:實驗調試與結果分析(可加頁)一、調試過程(包括調試方法描述、實驗數(shù)據(jù)記錄,實驗現(xiàn)象記錄,實驗過程發(fā)現(xiàn)的問題等)1 使用 mkdir命令建立一個子目錄 subdir2 使用cat或more命令查看filel 文件的內容。3將date命令的用法附加到文件filel的后面:4 利用ls -l file1 命令列出文件file1的較詳細的信息。5利用rm fa命令將文件fa刪除。再利用ls -l命令查看工作目錄內容。6運行mv file1 file_a 命令,然后用ls命令查看這兩個文件是否都還在工作目錄中 顯然,只有file_a 在工作目錄中,而file1 不在工作目錄中二、實驗結果
5、及分析(包括結果描述、實驗現(xiàn)象分析、影響因素討論、綜合分析和結論等)Free顯示系統(tǒng)中已用空閑內存數(shù)量t otalusedfreesharedbufferscachedMem:50923244390065332313984238244-/+ buffers/cache:191672317566Swap:134138849281335460文件日 編輯(曰 查看也)終端任)幫助舊 horizon(aharizon-desktop:freeho rizon(ahorizon-desktop:Rm :刪除文件或目錄rnorizononzon-3esId:op:文件任)編輯(E)查看 終端 幫助(旦)
6、horizon®horizon-desktop:rm file rm:無法刪除"file":沒有該文件或目錄 horizonhori;on-desktop:-$ rm DeFile horizon(?horizon-desktop|三、實驗小結、建議及體會Linux對比Windows有些不同需要時間去適應。 通過這次實驗對Linux操作系 統(tǒng)有了進一步的了解。初步掌握了一些Linux系統(tǒng)常用的命令。通過這僅一個周時間 的學習,我們只是了解了lin ux 的一些最基本知識,我會在后的學習中不斷完善和加以擴充lin ux知識的學習。實驗項目名稱Linux下C編程實驗成
7、績實驗者李帥專業(yè)班級軟件1101組別同組者實驗日期第一部分:實驗分析與設計(可加頁)、實驗內容描述(問題域描述)Linux下的C編程要求:掌握vi編輯器的使用方法;掌握Linux下C程序的源程序編輯方法; 編譯、連接和運行方法。內容:設計、編輯、編譯、連接以及運行一個C程序,其中包含鍵盤輸入和屏幕輸出語句。1、實驗基本原理與設計(包括實驗方案設計,實驗手段的確定,試驗步驟等,用硬件邏輯或 者算法描述)#in clude<iostream>using n amespace std;int mai n()int beg in, end;int temp = 0;cout<<
8、"Please en ter two nu mber:"«e ndl; cin> >begi n>>end;if(begi n>end)temp = beg in; beg in = end; end = temp;for(i nt i=beg in; i<=e nd; i+) coutvvivv""cout«e ndl;return 0;三、主要儀器設備及耗材Ubuntu操作體統(tǒng)Vi編輯器G+編譯第二部分:實驗調試與結果分析(可加頁)一、調試過程(包括調試方法描述、實驗數(shù)據(jù)記錄,實驗現(xiàn)象記錄,實驗
9、過程發(fā)現(xiàn)的問題等)(1) .先用vi JamesJi.c 建立文件(2) .在vi的插入界面輸入#include <stdio.h>int main(v oid)pri ntf("JamesJi.gcc!r n");return 0;(3) . 編譯生成 JamesJi 文件:gcc -o JamesJi JamesJi.c(4) .運行 JamesJi 文件:./JamesJi二、實驗小結、建議及體會通過這次實驗vi編輯器有了進一步的應用,同時學會了在Linux進行簡單的C語言編程,掌握Linux下C程序的源程序編輯方法;編譯、連接和運行方法。在以后 的學習中
10、會加大努力加強自己的編程能力。加深了對linux的印象,linux的兼容性很強。C/C+仍舊可以在上面編譯成功。實驗項目名稱SHELL編程和后臺批處理實驗成績第一部分:實驗分析與設計(可加頁)三、實驗內容描述(問題域描述)SHELL編程和后臺批處理 要求:掌握Linux系統(tǒng)的SHELL編程方法和后臺批處理方法。內容:(1)將編譯、連接以及運行上述 C程序各步驟用SHELL程序批處理完成, 前臺運行。(2)將上面SHELLL程序后臺運行。觀察原C程序運行時輸入輸出情況。(3)修改調試上面SHELL程序和C程序,使得在后臺批處理方式下,原鍵盤輸入 內容可以鍵盤命令行位置參數(shù)方式交互式輸入替代原鍵盤
11、輸入內容,然后輸出到屏幕。四、實驗基本原理與設計(包括實驗方案設計,實驗手段的確定,試驗步驟等,用硬件邏輯或 者算法描述)test.cpp文件如下:#in clude<iostream>using n amespace std;int mai n()int i, j;int a1010 = 0; a00 = 1;for(i=1; i<=9; i+)for(j=0; j<=i; j+)if(j=0) II (i=j) aij = 1;elseaij = ai-1j-1 + ai-1j;for(i=0; i<=9; i+)for(j=0; j<=i; j+)co
12、ut«" "<<aij;cout«e ndl;return 0;test.sh文件如下#!/bi n/bash#Program:# This program is used to compile and run a file of cpp #History#2011/06/01g+ -o test.out test.cppchmod u+x test.out./test.out三、主要儀器設備及耗材Ubuntu操作系統(tǒng)Vi編輯器第二部分:實驗調試與結果分析(可加頁)四、調試過程(包括調試方法描述、實驗數(shù)據(jù)記錄,實驗現(xiàn)象記錄,實驗過程發(fā)現(xiàn)的問題
13、等)調試過程中未發(fā)現(xiàn)任何問題五、實驗結果及分析(包括結果描述、實驗現(xiàn)象分析、影響因素討論、綜合分析和結論等)horizonhorrzon-desktop:-文件(臼編tsE)查看也)冀端任)幫助(旦) horizonhorizondesktopsh testsh11 112 113 3 11 4 6 4 11 5 10 10 5 116152915 6 117213535 21 7 118285670 56 28 81193684126 126 8436 9 1horizon(?horizon-desktop:|六、實驗小結、建議及體會通過這次實驗熟悉了 shell編程,對Linux下的編程有
14、了進一步的了解。 也對Linux系統(tǒng) 終端方式使用的編輯器 vi有進一步的認識,如何使用命令來打開文件以及在編輯器 vi里面編 寫內容等,。總之,通過這次實驗,對課本上的知識有了進一步的理解以及鞏固。實驗項目名稱Linux系統(tǒng)調用(time )實驗成績第一部分:實驗分析與設計(可加頁)一、實驗內容描述(問題域描述)學習Linux內核的系統(tǒng)調用,理解、掌握Linux系統(tǒng)調用的實現(xiàn)框架、用戶界 面、參數(shù)傳遞、進入/返回過程。閱讀Linux內核源代碼,通過添加一個簡單的系 統(tǒng)調用實驗,進一步理解Linux操作系統(tǒng)處理系統(tǒng)調用的統(tǒng)一流程。Linux系統(tǒng)調用使用方法。等Linux系統(tǒng)調用使用方法。要求:
15、掌握Linux系統(tǒng)調用使用方法。 內容:學習使用 time, ctime, sleep, exit、實驗基本原理與設計(包括實驗方案設計,實驗手段的確定,試驗步驟等,用硬件邏輯或 者算法描述)#i nclude<stdio.h>#in clude< un istd.h>#in clude<time.h>#in clude<iostream>using n amespace std;int mai n()while(1)char timebuf100;time_t t;time(&t);strftime(timebuf, sizeof(ti
16、mebuf),"%Y 年 %m 月 %d 日 %H: %M: %S",localtime(&t);coutvvtimebufvve ndl;fflush(stdout);sleep(1);return 0;在現(xiàn)有的系統(tǒng)中添加一個不用傳遞參數(shù)的系統(tǒng)調用。這個系統(tǒng)調用的功能是實現(xiàn)遍歷進程。實驗主要內容: 添加系統(tǒng)調用的名字 利用標準C庫進行包裝 添加系統(tǒng)調用號在系統(tǒng)調用表中添加相應表項 sys_mysyscall 的實現(xiàn)三、主要儀器設備及耗材Ubuntu操作系統(tǒng)Vi編輯器G+編譯器第二部分:實驗調試與結果分析(可加頁)一、調試過程(包括調試方法描述、實驗數(shù)據(jù)記錄,實驗現(xiàn)
17、象記錄,實驗過程發(fā)現(xiàn)的問題等)#in elude <li nux/uni std.h># in elude <sys/syscall.h>#defi ne _NR_ mysyscall 223int mai n()syscall(_NR_mysyscall);/* 或 syscall(223) */在此加入在屏幕輸出每個進程相關信息的代碼;用gcc編譯源程序# gcc o test test.c運行程序# ./test用shell命令查看遍歷進程輸出的信息#dmesg、實驗結果及分析(包括結果描述、實驗現(xiàn)象分析、影響因素討論、綜合分析和結論等).long sys get
18、dents64 /* 220 */Aong sys_fcntl64.long sysnisystall /* reserved for TUX */Aong sysmysyscallAong sys gEttidAong sysreadahead 嚴 225 */Aong sys setxattr.long syslsetxattr( sysx x/濫如一個系統(tǒng)謂用asulinkage int /s mysyscalltvoid)( struct task struct *ta5k=&init_task;prLntk(bl%stdtldXtdn", task->comn
19、irtask->picl( taj >state P tasik:->parent->pidj ;while(task=next_ta5k(task)!=&in2t_task);wtuen Oi|三、實驗小結、建議及體會這次實驗有點難度,但是通過查找資料和與老師的交流之后還是順利完成了實 驗,希望以后相關能力能夠得到加強。實驗課程名稱:操作系統(tǒng)實驗項目名稱Linux進程控制(fork)實驗成績實驗者李帥專業(yè)班級軟件1101組別同組者實驗日期第一部分:實驗分析與設計(可加頁)一、實驗內容描述(問題域描述)Linux系統(tǒng)進程控制 要求:掌握Linux系統(tǒng)中進程控制原
20、語fork的使用方法。 內容:設計C程序,其中主進程創(chuàng)建一個子進程,以特定次序各自執(zhí)行規(guī) 定操作后退出。二、實驗基本原理與設計(包括實驗方案設計,實驗手段的確定,試驗步驟等,用硬件邏輯或 者算法描述)#i nclude<stdlib.h>#in clude< un istd.h>#in clude<iostream>using n amespace std;int mai n() cout«"Pare nt process id:"<<getpid()<<e ndl; pid_t iRet = fork(
21、); if(iRetvO)cout«"Create child process fail!"<<e ndl;else if(iRet = 0) coutvv" I'mchild process, and id is"<<getpid()<<"ppidis:"vvgetppid()v<e ndl; elsecout<<"Create child process success child"<<"the id is:"
22、;<<iRet<<e ndl; return 0;三、主要儀器設備及耗材Ubuntu操作體統(tǒng)Vi編輯器G+編譯第二部分:實驗調試與結果分析(可加頁)一、調試過程(包括調試方法描述、實驗數(shù)據(jù)記錄,實驗現(xiàn)象記錄,實驗過程發(fā)現(xiàn)的問題等)(1)【進程的創(chuàng)建】 編寫一段程序,使用系統(tǒng)調用fork ()創(chuàng)建兩個子進程,當此進程運行時,在系統(tǒng)中有一個父進程和兩個子進程活動,讓每一個進程在屏幕上顯示一個字符,父進程顯示字符“ a”;子進程分別顯示字符“ b”和字符“ c ”,試觀察記錄屏幕上的顯 示結果,并分析原因。【源程序】:#in clude<stdio.h>int m
23、ai n()in t p1, p2;while (p1 = fork() = -1);if (p1 = 0)/第一子進程putchar('b');else while (p2 = fork() = -1);if (p2 = 0)putchar('c');/第二子進程elseputchar('a');/父進程return 0;運行多次:主要輸出有 bca,偶爾輸出cab和cba,abc,bac,acb會有如此多種不同輸出,主要是因為fork()生成的子進程和父進程是并行運行 的,所以先運行哪個進程是由系統(tǒng)的調度算法決定的,ubuntu9.04很大概
24、率系統(tǒng)會先輸出bca是因為ubuntu 9.04在fork ()運行之后很大概率先運行子進程, 再運行父進程。當然也有可能先運行父進程后子進程,再加上進程間的并發(fā)性;導致了輸出的多樣性。輸出次序帶有隨機性?!具M程的控制】修改已編寫的程序,將每個進程輸出一個字符改為每個進程輸出一句 話,在觀察程序執(zhí)行時屏幕上出現(xiàn)的現(xiàn)象,并分析原因?!驹创a】:#in clude<stdio.h>int mai n() in t p1, p2;while (p1 = fork() = -1);if (p1 = 0);第一個子進程prin tf("Child1 is runnin g!n&qu
25、ot;);else while (p2 = fork() = -1);if (p2 = 0);第二子進程prin tf("Child2 is runnin g!n");else;父進程prin tf("Father is runnin g!n"); return 0;運行多次,大部分運行后輸出:Childl is running!Child2 is running!Father is running!少數(shù)輸出:Child2 is running!Child1 is running!Father is running!Father is running!C
26、hild1 is running!Child2 is running!理論上是有6種不同的結果,還是由于系統(tǒng)的調度算法,程序的并發(fā)性影響;但由 于函數(shù)printf()在輸出字符串時不會被中斷,因此,字符串內部字符順序輸出不 變。所以與打印單字符的結果相同。創(chuàng)建進程,使用exec函數(shù)族使子進程執(zhí)行新的目標程序,觀察并分析 出現(xiàn)的現(xiàn)象。【源代碼】:#in clude <stdio.h>#in clude <uni std.h>int mai n()prin tf("=system call execl test ing =n");execlp("
27、;date","date",0);prin tf("exec error !n");return 0;輸出:=system call execl test ing =2009 年 12 月 04 日星期五 21:35:18 CST輸出結果分析:execlp 是一種exec函數(shù),當進程調用一種exec函數(shù)時,用指定的目標進程 更好進程的執(zhí)行映像。Exec調用成功后,調用進程的正文段被指定的文件的正文 段所覆蓋。調用成功時,exec不返回,從而不執(zhí)行exec以后的所有語句,所以本 例就只有輸出“ 2009年12月04日星期五21:35:18 CST
28、的情況。如果調用失 敗,返回-1,執(zhí)行剩余指令。(3)【進程信號處理】編寫程序使用系統(tǒng)調用fork()創(chuàng)建兩個子進程,再用系統(tǒng)調用singal()讓 父進程捕捉鍵盤上來的中斷信號(即按Ctrl+c 鍵);當捕捉到中斷信號后,父進程 用系統(tǒng)調用Kill() 向兩個子進程發(fā)出信號,子進程捕捉到信號后分別輸出下列信 息后終止:Child Process" is Killed by Pare nt!Child Process12 is Killed by Pare nt!父進程等待兩個子進程終止后,輸出如下的信息后終止:Pare nt Process is Killed!【源代碼】:#in
29、clude<stdio.h>#in clude<sig nal.h>int wait_mark;void wait in g()while (wait_mark = 1);void stop()wait_mark = 0;int mai n()in t p1, p2;while (p1 = fork() = -1);if (p1 = 0);第一個子進程wait_mark = 1;sig nal(SIGINT, SIGGN);sig nal(16, stop);wait in g();lockf(1, 1, 0);加鎖printf("Child Process" is Killed by Parent!n");lock
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度玻璃隔斷行業(yè)安全風險評估與控制合同3篇
- 二零二五版美容美發(fā)產(chǎn)品跨境電商銷售合作協(xié)議4篇
- 玻璃幕墻維修施工方案
- 二零二五版美容院供應鏈管理及股權投資協(xié)議4篇
- 環(huán)氧砂漿施工方案
- 2025年PDA市場拓展專用采購合同3篇
- 2025年度智能家居公司成立合作協(xié)議書正式版4篇
- 2025年度新型農業(yè)貸款合同標的特征分析3篇
- 2024版鋁單板采購合同
- 會展搭建施工方案
- 稱量與天平培訓試題及答案
- 超全的超濾與納濾概述、基本理論和應用
- 2020年醫(yī)師定期考核試題與答案(公衛(wèi)專業(yè))
- 2022年中國育齡女性生殖健康研究報告
- 各種靜脈置管固定方法
- 消防報審驗收程序及表格
- 教育金規(guī)劃ppt課件
- 呼吸機波形分析及臨床應用
- 常用緊固件選用指南
- 私人借款協(xié)議書新編整理版示范文本
- 自薦書(彩色封面)
評論
0/150
提交評論