版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、指導教師: 姓 名: 學 院: 專 業(yè): 班 級: 學 號: - 25 - Linux基本環(huán)境 實驗日志指導教師 實驗時間 年 月 日學院 計算機科學與技術學院 專業(yè) 信息安全 班級 學號 姓名 實驗室 實驗題目:Linux基本環(huán)境實驗目的:1.熟悉Linux下的基本操作,學會使用 各種Shell命令去操作Linux,對Linux有一個感性的認識;2.學會使用vi編輯器編輯簡單的C語言程序,并能對其編譯和調(diào)試。實驗要求:1.參閱相關Linux操作系統(tǒng)的安裝手冊,熟悉Linux的基本安裝和配置;2.參閱相關Linux的命令參考手冊,熟悉Linux下的操作命令。實驗內(nèi)容: 以普通用戶身份登陸,并使
2、用“l(fā)s”,“cat”“cd”等命令來實現(xiàn)基本的文件操作并觀察Linux文件系統(tǒng)的特點;使用vi編輯器編寫一個C程序,并用gcc命令進行編譯和鏈接,并用a.out來進行輸出結果。實驗步驟及結果:1.到學校軟件中心下載一個名叫putty的軟件2.用putty登錄到遠程linux服務器IP:172.23.26.105 (172.23.26.10備用) 用戶名:student 密碼:student1233.進行如下常用命令練習:n 練習使用命令ls(注意Linux命令區(qū)分大小寫。)u 使用ls 查看當前目錄內(nèi)容;使用ls 查看指定目錄內(nèi)容,如/目錄,/
3、etc目錄u 使用ls all 查看當前目錄內(nèi)容;使用dir 查看當前目錄內(nèi)容n 使用cd改變當前目錄u cd . 回到上層目錄 ;cd / 回到根目錄n pwd 顯示當前路徑 n 建立目錄mkdiru mkdir 目錄名 ; mkdir /home/s2001/newdir n 刪除目錄:rmdir;n 復制文件cp: 如 cp 文件名1 文件名2n 移動文件或目錄: mv n 刪除文件 rmn 顯示文件內(nèi)容:more (分頁顯示); n 顯示文件:cat 文件名 建立文件:cat >文件名,ctrl+d結束輸入4.使用編輯器vi 編輯文件心得體會: 通過本次實驗,我熟悉了在Linux
4、下的基本操作,學會了使用各種Shell命令去操作Linux,并且對Linux有一個感性的認識;同時也學會了怎樣使用vi編輯器編輯簡單的C語言程序,并能對其編譯和調(diào)試。 進程管理(上) 實驗日志指導教師 劉銳 實驗時間:2011年10月27日學院 計算機科學與技術學院 專業(yè) 信息安全 班級0440901學號 2009211868姓名 游麗 實驗室S331實驗題目:進程管理(上)實驗目的:1.加深對進程概念的理解,明確進程和程序的區(qū)別。2.進一步認識并發(fā)執(zhí)行的實質(zhì)。實驗主要步驟及結果: 編寫一段程序,使用系統(tǒng)調(diào)用fork( )創(chuàng)建兩個子進程。當此程序運行時,在系統(tǒng)中有一個父進程和兩個子進程活動。讓
5、每一個進程在屏幕上顯示一個字符;父進程顯示字符“a”,子進程分別顯示字符“b”和“c”。試觀察記錄屏幕上的顯示結果,并分析原因。1.源程序:#include<stdio.h>#include<unistd.h>int main(void)int p1,p2;Int i;If(p1=fork() for(i=0;i<500;i+) printf("you"); wait(0); exist(0);else if(p2=fork() for(i=0;i<500;i+) printf("are"); wait(0); exi
6、st(0); else for(i=0;i<500;i+) printf("beautiful!"); exist(0); 2.實驗結果:心得體會: 通過本次實驗,我加深了對進程概念的理解,進一步認識并發(fā)執(zhí)行的實質(zhì)。并且通過編寫一段程序,使系統(tǒng)調(diào)用fork( )創(chuàng)建兩個子進程,當此程序運行時,在系統(tǒng)中有一個父進程和兩個子進程活動,讓每一個進程在屏幕上顯示一個字符;在第二個實驗中之所以會出現(xiàn)順序混亂,是由于進程并發(fā)執(zhí)行時的調(diào)度順序和父子進程的搶占處理機問題,輸出字符串的順序和先后隨著執(zhí)行的不同而發(fā)生變化。 進程管理(下) 實驗日志指導教師 劉銳 實驗時間: 2011 年
7、 11 月 3 日學院 計算機科學與技術學院 專業(yè) 信息安全 班級 04490901 學號 2009211868 姓名 游麗 實驗室 s331B 實驗題目:進程管理(下)實驗目的 1.加深對進程概念的理解,明確進程和程序的區(qū)別。 2.進一步認識并發(fā)執(zhí)行的實質(zhì)。 3.分析進程競爭資源現(xiàn)象,學習解決進程互斥的方法。 4.了解Linux系統(tǒng)中進程通信的基本原理。實驗要求 1.閱讀Linux中fork,signal,lockf等系統(tǒng)調(diào)用的功能和用法。 2.了解什么是管道,了解進程間通信的常用方法。 3.編寫一段程序,使其現(xiàn)實進程的軟中斷通信。4.編制一段程序,實現(xiàn)進程的管理通信。 實驗主要步驟及結果:
8、1. 編寫一段程序,使其現(xiàn)實進程的軟中斷通信。 要求:使用系統(tǒng)調(diào)用fork()創(chuàng)建兩個子進程,再用系統(tǒng)調(diào)用signal()讓父進程捕捉鍵盤上來的中斷信號(即按DEL鍵);當捕捉到中斷信號后,父進程用系統(tǒng)調(diào)用Kill()向兩個子進程發(fā)出信號,子進程捕捉到信號后分別輸出下列信息后終止: Child Processll is Killed by Parent! Child Processl2 is Killed by Parent! 父進程等待兩個子進程終止后,輸出如下的信息后終止 Parent Process is Killed!(1)程序:#include <stdio.h> #in
9、clude <signal.h> #include <unistd.h> #include <stdio.h> #include <sys/types.h> int wait_flag; void stop(); main() int pid1,pid2; signal(3,stop); /or signal(14,stop); while(pid1=fork()=-1); if(pid1>0) while(pid2=fork()=-1); if(pid2>0) / wait_flag=1;
10、sleep(5); kill(pid1,16); kill(pid2,17); wait(0); wait(0); printf("Parent process is killed !n"); exit(0); else / wait_flag=1; signal(17,stop); printf("Child process 2 is killed by parent !n"); exit(0); else / wait_flag=1; signal(16,stop); printf("Child process 1 is killed by
11、 parent !n"); exit(0); void stop() wait_flag=0; (2)運行結果:child process 1 is killed by parent! child process 2 is killed by parent! Parent process is killed! (3)分析: 上述程序中,實用函數(shù)signal()都放在一段程序的前面部位,而不是在其他接收信號處。這是因為signal()的執(zhí)行只是為進程指定信號量16或17的作用,以及分配相應的與 stop()過程鏈接的指針。從而signal()函數(shù)必須在程序前面部分執(zhí)行。
12、2.編制一段程序,實現(xiàn)進程的管理通信。 使用系統(tǒng)調(diào)用pipe()建立一條管道線;兩個子進程P1和P2分別向管道中寫一句話: Child 1 is sending a message! Child 2 is sending a message! 而父進程則從管道中讀出來自于兩個子進程的信息,顯示在屏幕上。 要求父進程先接收子進程P1發(fā)來的消息,然后再接收子進程P2發(fā)來的消息。(1)程序:#include<unistd.h> #include<signal.h> #include<stdio.h> int pid1,pid2; main() int fd2; c
13、har OutPipe100,InPipe100; pipe(fd); while(pid1=fork()=-1); if(pid1=0) lockf(fd1,1,0); sprintf(OutPipe,"child 1 process is sending message!"); write(fd1,OutPipe,50); sleep(5); lockf(fd1,0,0); exit(0); else while(pid2=fork()=-1); if(pid2=0) lockf(fd1,1,0); sprintf(OutPipe,"child 2 proee
14、ss is sending message!"); write(fd1,OutPipe,50); sleep(5); lockf(fd1,0,0); exit(0); else wait(0); read(fd0,InPipe,50); printf("%sn",InPipe); wait(0); read(fd0,InPipe,50); printf("%sn",InPipe); exit(0); (2)運行結果:child 1 is sending message! child 2 is sending message! 心得體會:通過本次
15、實驗,我加深了對進程概念的理解,更加明白了進程和程序之間的區(qū)別,也進一步認識并發(fā)執(zhí)行的實質(zhì)。同時我也學習到了解決進程互斥的方法。在編寫程序方面,了解了Linux中fork,signal,lockf等系統(tǒng)調(diào)用的功能和用法。在以后的學習中我會更加努力的學習操作系統(tǒng),逐步深入的了解操作系統(tǒng)。 信號量 實驗日志指導教師 劉銳 實驗時間:2011年11月10日學院 計算機科學與技術 專業(yè) 信息安全 班級 0490901 學號 2009211868姓名 游麗 實驗室 S331B 實驗題目:用信號量實現(xiàn)進程間通信實驗目的 :1.了解和熟悉Linux中信號量機制在進程間通信的作用。2.進一步熟悉在Linux環(huán)
16、境下的編程。實驗要求:1.熟讀理論教材中關于信號量的基本原理和工作方式;2.stu用戶用man命令查詢信號量機制的相關函數(shù)semget,semctl,semop的使用方法。實驗主要步驟及結果:1.分析代碼sem1.c2.在代碼中表示注釋出寫出代碼段作用。 注釋結果如下:/* 函數(shù)聲明及信號量定義 */#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/sem.
17、h>#include "semun.h"static int set_semvalue(void);static void del_semvalue(void);static int semaphore_p(void);static int semaphore_v(void);static int sem_id;int main(int argc, char *argv) int i; int pause_time; char op_char = 'O' srand(unsigned int)getpid(); sem_id = semget(key_
18、t)1234, 1, 0666 | IPC_CREAT); /*創(chuàng)建一個新的信號量*/ /*如果有參數(shù),設置信號量,修改字符*/ if (argc > 1) if (!set_semvalue() fprintf(stderr, "Failed to initialize semaphoren"); exit(EXIT_FAILURE); op_char = 'X' sleep(2); /*執(zhí)行p操作*/for(i = 0; i < 10; i+) if (!semaphore_p() exit(EXIT_FAILURE); printf(&qu
19、ot;%c", op_char);fflush(stdout); pause_time = rand() % 3; sleep(pause_time); printf("%c", op_char);fflush(stdout);/* 執(zhí)行V操作 */if (!semaphore_v() exit(EXIT_FAILURE); pause_time = rand() % 2; sleep(pause_time); printf("n%d - finishedn", getpid(); if (argc > 1) sleep(10); del
20、_semvalue(); /*刪除信號量*/ exit(EXIT_SUCCESS);/* 設置信號量 */static int set_semvalue(void) union semun sem_union; sem_union.val = 1; if (semctl(sem_id, 0, SETVAL, sem_union) = -1) return(0); return(1);/* 刪除信號量 */static void del_semvalue(void) union semun sem_union; if (semctl(sem_id, 0, IPC_RMID, sem_union)
21、 = -1) fprintf(stderr, "Failed to delete semaphoren");/* 執(zhí)行P操作 */static int semaphore_p(void) struct sembuf sem_b; sem_b.sem_num = 0; sem_b.sem_op = -1; /* P() */ sem_b.sem_flg = SEM_UNDO; if (semop(sem_id, &sem_b, 1) = -1) fprintf(stderr, "semaphore_p failedn"); return(0); r
22、eturn(1);/* 執(zhí)行V操作*/static int semaphore_v(void) struct sembuf sem_b; sem_b.sem_num = 0; sem_b.sem_op = 1; /* V() */ sem_b.sem_flg = SEM_UNDO; if (semop(sem_id, &sem_b, 1) = -1) fprintf(stderr, "semaphore_v failedn"); return(0); return(1);3.分兩次啟動這個程序,第一次啟動時加上一個參數(shù),分析程序輸出結果。運行結果:心得體會: 在這次
23、實驗之前,我在理論教材中學習了關于信號量的基本原理和工作方式,以及用man命令查詢信號量機制的相關函數(shù)semget,semctl,semop的使用方法。 通過本次實驗,我了解和熟悉了Linux中信號量機制在進程間通信的作用,并且進一步熟悉了在Linux環(huán)境下的編程,本次試驗使我收獲了很多知識! 文件系統(tǒng)(上) 實驗日志指導教師 梁峰 實驗時間: 2011年11 月14 日學院 計算及科學與技術學院 專業(yè) 信息安全 班級 0440901 學號 2009211868 姓名 游麗 實驗室 s331B 實驗題目:文件系統(tǒng)(上)實驗目的:1.理解文件系統(tǒng)2.掌握常見文件系統(tǒng)的文件目錄操作的系統(tǒng)函數(shù)實驗要
24、求:參照現(xiàn)代操作系統(tǒng)中文件系統(tǒng)章節(jié)中關于文件拷貝的代碼范例,在理解吸收的基礎上,自己編一個程序,能夠?qū)崿F(xiàn)在本用戶目錄下的跨目錄之間的拷貝:比如,實現(xiàn)把/home/stu/123456目錄下的一個文件拷貝到/home/stu/654321目錄下實驗主要步驟:(教材中的示范代碼,如下:)2.用“mkdir”命令分別創(chuàng)建目錄/home/student/youli和/home/student/youli,用“cat>hx321”創(chuàng)建一個名為you321的文件; 3.用命令cp you321 youli實現(xiàn)把/home/student/youli目錄下的文件名為you321的文件拷貝到/home/
25、student/xxhh目錄下實驗結果如下:心得體會: 通過這次實驗讓我理解了文件系統(tǒng)的操作,并且掌握常見文件系統(tǒng)的文件目錄操作的系統(tǒng)函數(shù),以及在linux環(huán)境下,cp、mkdir、cat等文件系統(tǒng)相關的一些操作命令,我深刻的體會到只有理論知識是沒有用的,只有將理論與實際相結合才能收獲更多。 內(nèi)存管理(上) 實驗日志指導教師 劉銳 實驗時間: 2011 年 11 月 17 日學院 計算機科學與技術學院 專業(yè) 信息安全 班級 04490901 學號 2009211868 姓名 游麗 實驗室 s331B 實驗題目:存儲管理(上)實驗目的: 本實驗的目的是通過存儲管理中FIFO頁面置換算法模擬設計,
26、了解虛擬存儲技術的技術特點,掌握請求頁式存儲管理的頁面置換算法。實驗要求:1.通過隨機數(shù)產(chǎn)生一個指令序列,共320條指令。指令的地址按下述原則生成: 50%的指令是順序執(zhí)行的; 50%的指令是均勻分布在前地址部分; 50%的指令是均勻分布在后地址部分。 具體的實施方法是: 在 0,319 的指令之間隨即選取一起點m; 順序執(zhí)行一條指令,即執(zhí)行地址為m+1的指令; 在前地址0,m+1中隨機選取一條指令并執(zhí)行,該指令的地址為m; 順序執(zhí)行一條指令,其地址為 m+ 1; 在后地址m+ 2,319中隨機選取一條指令并執(zhí)行; 重復上述步驟-,直到執(zhí)行320次指令。2.將指令序列變換為頁地址流設:頁面大小
27、為1k; 用戶內(nèi)存容量為4頁到32頁; 用戶虛存容量為32k。在用戶虛存中,按每k存放10條指令排在虛存地址,即320條指令在虛存中的存放方式為: 第0條-第9條指令為第0頁(對應虛存地址為0,9); 第10條-第19條指令為第一頁(對應虛存地址為10,19); 第310條第319條指令為第31頁(對應虛地址為310,319)。 按以上方式,用戶指令可組成32頁。 3.計算并輸出FIFO算法在不同內(nèi)存容量命中率。命中率=(1-頁面失效次數(shù))/頁地址流長度實驗主要步驟:一、<程序設計> 本實驗的程序設計基本上按照實驗內(nèi)容進行。即首先用Srand()和rand()函數(shù)定義和產(chǎn)生指令序列
28、,然后將指令序列變換成相應的頁地址流,并針對不同的算法計算出相應的命中率。相關定義如下: 1.數(shù)據(jù)結構 (1)頁面類型 : typedef struct int pn,pfn,counter,time; pl_type; 其中pn為頁號,pfn為面號,counter為一個周期內(nèi)訪問該頁面次數(shù),time為訪問時間。 (2)頁面控制結構 : pfc_struct int pn,pfn; struct pfc_struct *next; ; typedef struct pfc_struct pfc_type; pfc_type pfctotal_vp,*freepf_head,*busypf_he
29、ad; pfc_type *busypf_tail; 其中pfctotal_vp定義用戶進程虛頁控制結構, *freepf_head為空頁面頭的指針, *busypf_head為忙頁面頭的指針, *busypf_tail為忙頁面尾的指針。 2.函數(shù)定義 (1)void initialize():初始化函數(shù),給每個相關的頁面賦值。 (2)void FIFO():計算使用FIFO算法時的命中率。 3.變量定義 (1)int atatal_instruction:指令流數(shù)據(jù)組。 (2)int pagetotal_instruction:每條指令所屬頁號。 (3)int offsettotal_ins
30、truction:每頁裝入10條指令后取模運算頁號偏移值。 (4)int total_pf:用戶進程的內(nèi)存頁面數(shù)。 (5)int diseffect:頁面失效次數(shù)。實驗結果:1. .源代碼memory.c已經(jīng)給出部分代碼,運行試驗代碼,運行結果截圖如下,分析運行結果:從上述結果可知,在內(nèi)存頁面數(shù)較少(45頁面)時,命中率差都是50左右。在內(nèi)存頁面為725個頁面之間時, FIFO算法的訪內(nèi)命中率大致在52至87之間變化。在內(nèi)存頁面為2532個頁面時,由于用戶進程的所有指令基本上都已裝入內(nèi)存,從而命中率已增加較大。2. 在源代碼memory.c中,分析源代碼中用一連串問號所標示的語句的作用。(1)
31、srand(10*getpid():產(chǎn)生一個48位種子隨機數(shù),用來作為初始化隨機數(shù)序列的“種子”,且該隨機函數(shù)的種子參數(shù)是10*getpid()。(2)diseffect+=1:計算失效次數(shù)。(3)freepf_head->next=NULL:無空閑頁面。心得體會:通過這次的實驗,我了解了存儲管理中FIFO頁面置換算法模擬設計方法,并且了解到了虛擬存儲技術的技術特點,初步掌握了請求頁式存儲管理的頁面置換算法,此次試驗又收獲了不少!存儲管理(下)實驗日志指導教師 劉銳 實驗時間 2011 年 11 月 17 日學院 計算機科學與技術 專業(yè) 信息安全 班級 0440901 學號 200921
32、1868 姓名 游麗 實驗室 s331 實驗題目:存儲管理(下)實驗目的:1.理解虛擬內(nèi)存和物理內(nèi)存的含義2.了解gcc編譯器的-c和-o選項3.理解共享庫的含義實驗要求:1.用cat /proc/meminfo命令查看當前機器的內(nèi)存大小2.運行如下virtual_memory.c的代碼,并理解該段代碼的含義/* virtual_memory.c*/#include <stdio.h> int main() int *p = malloc(10000); printf("p's address is 0x%pn", p); free(p); return
33、 0;3.觀察把(2)的代碼運行的結果和(1)中用命令查看到的機器內(nèi)存大小,看看指針p的值是否超過機器的內(nèi)存大小?并解釋產(chǎn)生這種現(xiàn)象的原因。4.在編譯程序virtual-memory.c過程中,分別觀察源文件,obj文件,和可執(zhí)行文件的小,并解釋其中的原因。實驗主要步驟及實驗結果:1.用cat /proc/meminfo命令查看當前機器的內(nèi)存大小2.運行如下virtual_memory.c的代碼,并理解該段代碼的含義/* virtual_memory.c*/#include <stdio.h> int main() int *p = malloc(10000); printf("p's address is 0x%pn", p); free(p); return 0;3.觀察把(2)的代碼運行的結果和(1)中用命令查看到的機器內(nèi)存大小,看看指針p的值是否超過機器的內(nèi)存大?。坎⒔忉尞a(chǎn)生這種
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球非電動助殘設備行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球智能媒體芯片行業(yè)調(diào)研及趨勢分析報告
- 課件:《教育強國建設規(guī)劃綱要(2024-2035年)》學習宣講
- 進修學習合同書
- 2025深圳市建設工程施工合同(適用于招標工程固定單價施工合同)
- 工程可行性研究報告模板
- 終端設備維護服務合同
- 2025出租車輛承包合同范本
- 鋼筋綁扎勞務合同范本
- 醫(yī)院裝修合同
- 人教版《道德與法治》四年級下冊教材簡要分析課件
- 2023年MRI技術操作規(guī)范
- 辦公用品、易耗品供貨服務方案
- 自行聯(lián)系單位實習申請表
- 醫(yī)療廢物集中處置技術規(guī)范
- 媒介社會學備課
- 2023年檢驗檢測機構質(zhì)量手冊(依據(jù)2023年版評審準則編制)
- 三相分離器原理及操作
- 新教科版五年級下冊科學全冊每節(jié)課后練習+答案(共28份)
- 葫蘆島尚楚環(huán)保科技有限公司醫(yī)療廢物集中處置項目環(huán)評報告
- 全國物業(yè)管理項目經(jīng)理考試試題
評論
0/150
提交評論