版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、通信與信息工程學(xué)院2015 / 2016學(xué)年第 二 學(xué)期實(shí)驗(yàn)報(bào)告課程名稱:操作系統(tǒng)實(shí)驗(yàn)名稱:1、LINUX及其使用環(huán)境2、進(jìn)程管理3、進(jìn)程間通信4、文件的操作和使用班級學(xué)號 專 業(yè) 電子信息工程 學(xué)生姓名 指導(dǎo)教師 趙 建 立 實(shí)驗(yàn)名稱試驗(yàn)一 LINUX及其使用環(huán)境實(shí)驗(yàn)類型驗(yàn)證實(shí)驗(yàn)學(xué)時(shí)1實(shí)驗(yàn)時(shí)間2016.6.2一、 實(shí)驗(yàn)?zāi)康暮鸵?、 了解UNIX的命令及使用格式。2、 熟悉UNIX/LINUX的常用基本命令。3、練習(xí)并掌握UNIX提供的vi編輯器來編譯C程序。4、學(xué)會(huì)利用gcc、gdb編譯、調(diào)試C程序。二、實(shí)驗(yàn)環(huán)境Windows XP + VMWare + RedHat Enterprise
2、 Linux(RHEL) 4三、 實(shí)驗(yàn)原理及內(nèi)容1、熟悉LINUX的常用基本命令。如ls、mkdir、grep等,學(xué)會(huì)使用man、help等其它命令,掌握vi編輯器的使用。(1)顯示目錄文件 ls例:ls -al 顯示當(dāng)前目錄下的所有文件(2)建新目錄 mkdir例:mkdir test 新建一個(gè)test目錄(3)刪除目錄rmdir(4) 改變工作目錄位置 cd例:cd test 更改工作目錄至test目錄下(5)顯示當(dāng)前所在目錄pwd(6)查看目錄大小du(7)文件屬性的設(shè)置 chmod (8)命令在線幫助 man2、設(shè)計(jì)一個(gè)實(shí)現(xiàn)文件拷貝功能的shell程序。(1)在文本編輯器里輸入shel
3、l程序:#!/bin/shecho “please enter source file:”read soucecho please enter destination file:”read destcp $souc $destls $dest將程序保存在主目錄下,命名為shell.(2)打開終端,輸入ls -l,顯示目錄下所有文件的許可權(quán)、擁有者、文件大小、修改時(shí)間及名稱。輸入 ./shell,運(yùn)行shell程序。輸入源文件hello.c,目標(biāo)文件B13011206.c。(3)輸入ls -l ,當(dāng)前目錄中包含B13011206.c目標(biāo)文件。即完成從源文件拷貝至目標(biāo)文件過程。3、 LINUX 下
4、C語言程序的編譯與調(diào)試實(shí)驗(yàn)。(1)調(diào)試編譯代碼為了使gdb正常工作,必須使程序在編譯時(shí)包含調(diào)試信息。調(diào)試信息里包含程序里的每個(gè)變量的類型和在可執(zhí)行文件里的地址映射以及源代碼的行號。gdb利用這些信息使源代碼和機(jī)器碼相關(guān)聯(lián),在編譯時(shí)用 g 選項(xiàng)打開調(diào)試選項(xiàng)。(2)gdb基本命令命 令描 述file裝入欲調(diào)試的可執(zhí)行文件kill終止正在調(diào)試的程序list列出產(chǎn)生執(zhí)行文件的源代碼部分next執(zhí)行一行源代碼但不進(jìn)入函數(shù)內(nèi)部step執(zhí)行一行源代碼并進(jìn)入函數(shù)內(nèi)部run執(zhí)行當(dāng)前被調(diào)試的程序quit終止gdbwatch監(jiān)視一個(gè)變量的值而不管它何時(shí)被改變break在代碼里設(shè)置斷點(diǎn),使程序執(zhí)行到這里時(shí)被掛起mak
5、e不退出gdb就可以重新產(chǎn)生可執(zhí)行文件shell不離開gdb就執(zhí)行UNIX shell 命令(3)打開終端,輸入gcc hello.c,編譯c程序。(4)編譯無錯(cuò)后,輸入 ./a.out ,運(yùn)行程序hello.c,顯示運(yùn)行結(jié)果“hello”。四、 實(shí)驗(yàn)小結(jié) 之前沒有接觸過Linux操作系統(tǒng),剛開始用有點(diǎn)不習(xí)慣。雖然用起來磕磕絆絆,通過本次實(shí)驗(yàn)反而受益匪淺。通過這個(gè)實(shí)驗(yàn)我了解了UNIX的命令及使用格式,熟悉了UNIX/LINUX的常用基本命令,同時(shí)也了解了在LINUX系統(tǒng)下運(yùn)行C語言程序的方法,掌握了C語言程序的編譯與調(diào)試方法。實(shí)驗(yàn)名稱試驗(yàn)二 進(jìn)程管理實(shí)驗(yàn)類型驗(yàn)證實(shí)驗(yàn)學(xué)時(shí)1實(shí)驗(yàn)時(shí)間2016.6.
6、2一、 實(shí)驗(yàn)?zāi)康暮鸵?、掌握進(jìn)程的概念,明確進(jìn)程的含義2、認(rèn)識并了解并發(fā)執(zhí)行的實(shí)質(zhì)二、實(shí)驗(yàn)環(huán)境Windows XP + VMWare + RedHat Enterprise Linux(RHEL) 4三、實(shí)驗(yàn)原理及內(nèi)容1.實(shí)驗(yàn)內(nèi)容使用系統(tǒng)調(diào)用fork( )創(chuàng)建兩個(gè)子進(jìn)程。當(dāng)此程序運(yùn)行時(shí),在系統(tǒng)中有兩個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動(dòng)。每一個(gè)進(jìn)程在屏幕上顯示為:父進(jìn)程1顯示“(1)parent pid say:A”,父進(jìn)程2顯示“(2)parent pid say:A”,子進(jìn)程(1.1)顯示(1.1)pid1 say:B,子進(jìn)程(2.1)顯示“(2.1)pid2 say:C”。2、 實(shí)驗(yàn)原理 fork(
7、 ):創(chuàng)建一個(gè)新進(jìn)程。 系統(tǒng)調(diào)用格式: pid=fork( )參數(shù)定義:int fork( )fork( )返回值意義如下:0:在子進(jìn)程中,pid變量保存的fork( )返回值為0,表示當(dāng)前進(jìn)程是子進(jìn)程。>0:在父進(jìn)程中,pid變量保存的fork( )返回值為子進(jìn)程的id值(進(jìn)程唯一標(biāo)識符)。-1:創(chuàng)建失敗。如果fork( )調(diào)用成功,它向父進(jìn)程返回子進(jìn)程的PID,并向子進(jìn)程返回0,即fork( )被調(diào)用了一次,但返回了兩次。此時(shí)OS在內(nèi)存中建立一個(gè)新進(jìn)程,所建的新進(jìn)程是調(diào)用fork( )父進(jìn)程的副本,稱為子進(jìn)程。子進(jìn)程繼承了父進(jìn)程的許多特性,并具有與父進(jìn)程完全相同的用戶級上下文。父進(jìn)程
8、與子進(jìn)程并發(fā)執(zhí)行。核心為fork( )完成以下操作:(1)為新進(jìn)程分配一進(jìn)程表項(xiàng)和進(jìn)程標(biāo)識符進(jìn)入fork( )后,核心檢查系統(tǒng)是否有足夠的資源來建立一個(gè)新進(jìn)程。若資源不足,則fork( )系統(tǒng)調(diào)用失?。环駝t,核心為新進(jìn)程分配一進(jìn)程表項(xiàng)和唯一的進(jìn)程標(biāo)識符。(2)檢查同時(shí)運(yùn)行的進(jìn)程數(shù)目超過預(yù)先規(guī)定的最大數(shù)目時(shí),fork( )系統(tǒng)調(diào)用失敗。(3)拷貝進(jìn)程表項(xiàng)中的數(shù)據(jù)將父進(jìn)程的當(dāng)前目錄和所有已打開的數(shù)據(jù)拷貝到子進(jìn)程表項(xiàng)中,并置進(jìn)程的狀態(tài)為“創(chuàng)建”狀態(tài)。(4)子進(jìn)程繼承父進(jìn)程的所有文件對父進(jìn)程當(dāng)前目錄和所有已打開的文件表項(xiàng)中的引用計(jì)數(shù)加1。(5)為子進(jìn)程創(chuàng)建進(jìn)程上、下文進(jìn)程創(chuàng)建結(jié)束,設(shè)子進(jìn)程狀態(tài)為“內(nèi)存
9、中就緒”并返回子進(jìn)程的標(biāo)識符。(6)子進(jìn)程執(zhí)行雖然父進(jìn)程與子進(jìn)程程序完全相同,但每個(gè)進(jìn)程都有自己的程序計(jì)數(shù)器PC,然后根據(jù)pid變量保存的fork( )返回值的不同,執(zhí)行不同的分支語句。3. 實(shí)驗(yàn)步驟 (1)在文本編輯器輸入程序:#include<stdio.h>#include<unistd.h>int main()int temp1,temp2;int pid1,pid2;pid1=fork();temp1=pid1;if (pid1>0)printf(“n(1)parent pid %d say:A”,temp1);elseprintf(“n(1.1)pid
10、1 say:B”);pid2=fork();temp2=pid2;if (pid2>0)printf(“n(2)parent pid %d say:A”,temp2);elseprintf(“n(2.1)pid2 say:C”);將程序保存在主目錄下。(2)打開終端,使用gcc編譯程序,如果出錯(cuò),使用vi編輯器編輯程序。編輯無錯(cuò)后再次編譯。 (3)運(yùn)行程序,輸入./a.out,運(yùn)行多次后得到下圖結(jié)果。四、實(shí)驗(yàn)小結(jié)通過這次實(shí)驗(yàn),掌握了進(jìn)程的概念,明確了進(jìn)程的含義,認(rèn)識并了解了并發(fā)執(zhí)行的實(shí)質(zhì)。這次實(shí)驗(yàn)學(xué)會(huì)了用fork()函數(shù)創(chuàng)建實(shí)驗(yàn),了解到進(jìn)程與子進(jìn)程的創(chuàng)建過程。另外還掌握了LINUX系統(tǒng)中
11、輸出流重定向的使用,將程序的輸出結(jié)果輸出到文件中,而不是直接顯示在屏幕上。實(shí)驗(yàn)名稱試驗(yàn)三 進(jìn)程間通信實(shí)驗(yàn)類型綜合實(shí)驗(yàn)學(xué)時(shí)3實(shí)驗(yàn)時(shí)間2016.6.2,2016.6.9一、 實(shí)驗(yàn)?zāi)康暮鸵?、掌握進(jìn)程另外的創(chuàng)建方法。2、熟悉進(jìn)程的睡眠、同步、撤消等進(jìn)程控制方法。3、了解什么是管道。4、熟悉UNIX/LINUX支持的管道通信方式。二、實(shí)驗(yàn)環(huán)境Windows XP + VMWare + RedHat Enterprise Linux(RHEL) 4三、實(shí)驗(yàn)原理及內(nèi)容1.實(shí)驗(yàn)原理編寫程序?qū)崿F(xiàn)進(jìn)程的管道通信。用系統(tǒng)調(diào)用pipe( )建立一管道,二個(gè)子進(jìn)程P1和P2分別向管道各寫一句話: Child 1 i
12、s sending a message! Child 2 is sending a message!父進(jìn)程從管道中讀出二個(gè)來自子進(jìn)程的信息并顯示(要求先接收P1,后P2)。2.實(shí)驗(yàn)步驟 (1)在文本編輯器輸入程序:#include <unistd.h>#include <signal.h>#include <stdio.h>int pid1,pid2; main( ) int fd2;char outpipe100,inpipe100;pipe(fd); /*創(chuàng)建一個(gè)管道*/while (pid1=fork( )= =-1);if(pid1= =0) loc
13、kf(fd1,1,0); sprintf(outpipe,"child 1 process is sending message!"); /*把串放入數(shù)組outpipe中*/ write(fd1,outpipe,50); /*向管道寫長為50字節(jié)的串*/ sleep(5); /*自我阻塞5秒*/ lockf(fd1,0,0); exit(0); else while(pid2=fork( )= =-1); if(pid2= =0) lockf(fd1,1,0); /*互斥*/ sprintf(outpipe,"child 2 process is sending
14、message!"); write(fd1,outpipe,50); sleep(5); lockf(fd1,0,0); exit(0); else wait(0); /*同步*/ read(fd0,inpipe,50); /*從管道中讀長為50字節(jié)的串*/ printf("%sn",inpipe); wait(0); read(fd0,inpipe,50); printf("%sn",inpipe); exit(0); (2)在終端中,編譯程序。 (3)輸入./a.out執(zhí)行程序3、實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)輸出結(jié)果如下延遲5秒后顯示child 1 pro
15、cess is sending message! 再延遲5秒 child 2 process is sending message!四、實(shí)驗(yàn)小結(jié)(包括問題和解決方法、心得體會(huì)、意見與建議等) 通過這次實(shí)驗(yàn),熟悉了進(jìn)程的睡眠、同步、撤消等進(jìn)程控制方法,了解什么是管道,了解了UNIX/LINUX支持的管道通信方式。實(shí)驗(yàn)名稱實(shí)驗(yàn)四 文件的操作和使用實(shí)驗(yàn)類型驗(yàn)證實(shí)驗(yàn)學(xué)時(shí)1實(shí)驗(yàn)時(shí)間2016.6.9一、 實(shí)驗(yàn)?zāi)康暮鸵笫煜の募到y(tǒng)的操作和使用方法。二、實(shí)驗(yàn)環(huán)境Windows XP + VMWare + RedHat Enterprise Linux(RHEL) 4三、實(shí)驗(yàn)原理及內(nèi)容1、實(shí)驗(yàn)內(nèi)容設(shè)計(jì)一個(gè)程序
16、,通過用密碼字符串對文件內(nèi)容進(jìn)行逐字符異或操作的方法,實(shí)現(xiàn)對一個(gè)文件的加/解密。2、實(shí)驗(yàn)步驟 (1)實(shí)驗(yàn)程序:#include<stdio.h>int main(int argc,char *argv)FILE *fd1, *fd2, *fd3;int n;char jiami4;jiami0=1;jiami1=2;jiami2=3;jiami3=4; int k=0;char temp;fd1=fopen(“hello.c”,”r”); /源文件hello.cfd2=fopen(“B13011206”,”w”); /加密后文件B13011206while (n=fgetc(fd1)>0)n=njiamik;k+;if (k>=4)k=0;fputc(n,fd2);fclose(fd1);fclose(fd2); (2)打開終端,使用gcc編譯,vi編譯程序。生成可執(zhí)行文件4。 (3)輸入 ./4 hello.c aaa ,對hello.c程序加密并保存至aaa (4)使用vi指令進(jìn)入hello.c和aaa ,前者為加密前,后者為加密后程序。3、實(shí)驗(yàn)結(jié)果:B13011206中的內(nèi)容_WGWQ_AGPX_8_Q_AUW_GEV_S_;_R_>J8CFXGR_Q_m_8AQEGAZ_>L8四、實(shí)驗(yàn)小結(jié)(包括問題和解決方法、心得體會(huì)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《材料加工創(chuàng)新》教學(xué)大綱
- 《電池質(zhì)量管理B》教學(xué)大綱
- 五下語文園地七課件
- 教師的安全認(rèn)識教學(xué)課件教學(xué)課件教學(xué)
- 玉溪師范學(xué)院《小學(xué)科學(xué)課程與教學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 100句經(jīng)典勵(lì)志詩詞名句
- 文書模板-工作經(jīng)歷證明
- 國貿(mào)實(shí)務(wù)教案
- 幕墻工程質(zhì)量通病及其防治措施
- 2024年社會(huì)福利收養(yǎng)服務(wù)項(xiàng)目成效分析報(bào)告
- 2020年四川省德陽市高三一診考試地理試卷(Word版,含答案)
- 小升初學(xué)生個(gè)人簡歷模板
- UPI大學(xué)生人格問卷ABC等級評定(細(xì)則)
- 建筑工程勘探取樣技術(shù)規(guī)程
- 催眠的引導(dǎo)語最全
- ICS國際標(biāo)準(zhǔn)分類號
- 歐姆龍plc指令講解PPT課件
- 拼音轉(zhuǎn)盤游戲
- 樁基施工臺(tái)賬
- 陜西省中小學(xué)學(xué)生休學(xué)復(fù)學(xué)申請表
- 無人機(jī)概述教案
評論
0/150
提交評論