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

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)五 進(jìn)程管理子系統(tǒng)進(jìn)程控制實(shí)驗(yàn)類別:設(shè)計(jì)型 實(shí)驗(yàn)時(shí)數(shù):6學(xué)時(shí)開課單位:電腦學(xué)院 實(shí)驗(yàn)地點(diǎn):健翔校區(qū)計(jì)算中心一、實(shí)驗(yàn)?zāi)康膗 掌握進(jìn)程的概念,深入理解進(jìn)程的含義。認(rèn)識并理解并發(fā)環(huán)境中進(jìn)程執(zhí)行的實(shí)質(zhì)問題,了解構(gòu)成并發(fā)機(jī)制的進(jìn)程創(chuàng)建過程。能夠使用系統(tǒng)調(diào)用完成進(jìn)程創(chuàng)建,形成多個(gè)進(jìn)程并發(fā)的環(huán)境。u 了解在進(jìn)程創(chuàng)建后通過對進(jìn)程控制的系統(tǒng)調(diào)用,可實(shí)現(xiàn)對進(jìn)程的有效控制。掌握在進(jìn)程執(zhí)行中對進(jìn)程進(jìn)行睡眠、同步、撤銷等控制方法。u 進(jìn)一步認(rèn)識并發(fā)執(zhí)行的實(shí)質(zhì),分析進(jìn)程競爭資源的現(xiàn)象,學(xué)習(xí)解決進(jìn)程互斥的方法。二、實(shí)驗(yàn)環(huán)境操作系統(tǒng):任何Unix/Linux及Sun Solaris 或 windows 系列應(yīng)用系統(tǒng):gc

2、c編譯器。假設(shè)OS為windows系列,則還需相應(yīng)的模擬環(huán)境三、預(yù)備知識1、 LINUX系統(tǒng)中進(jìn)程的含義在LINUX中,進(jìn)程既是一個(gè)獨(dú)立擁有資源的基本單位,又是一個(gè)獨(dú)立調(diào)度的基本單位。進(jìn)程是并發(fā)環(huán)境中的實(shí)體,每個(gè)進(jìn)程用一個(gè)task_struct的數(shù)據(jù)結(jié)構(gòu)來表示,用來管理系統(tǒng)中的進(jìn)程,因而task_struct就是LINUX系統(tǒng)中的PCB。另外,系統(tǒng)內(nèi)核中還有一個(gè)task向量表,是指向系統(tǒng)中每一個(gè)task_struct數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組,因而task向量表就是LINUX系統(tǒng)中的PCB表。2、 LINUX中的進(jìn)程創(chuàng)建除了init進(jìn)程外,LINUX中的所有進(jìn)程都是由其他進(jìn)程創(chuàng)建的。LINUX中提供

3、了系統(tǒng)調(diào)用fork和clone,可被進(jìn)程用來創(chuàng)建子進(jìn)程。但系統(tǒng)調(diào)用fork和clone其實(shí)都是調(diào)用內(nèi)核函數(shù)do_fork(),通過克隆當(dāng)前進(jìn)程來創(chuàng)建子進(jìn)程的。四、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)要求在LINUX/UNIX環(huán)境下用C語言編寫三個(gè)多進(jìn)程并發(fā)執(zhí)行的程序,基本涉及了LINUX/UNIX進(jìn)程管理子系統(tǒng)中較為常用的有關(guān)進(jìn)程控制的系統(tǒng)調(diào)用。實(shí)驗(yàn)內(nèi)容如下:(1) 使用fork()系統(tǒng)調(diào)用創(chuàng)建進(jìn)程,使父、子進(jìn)程分別運(yùn)行不同的代碼要求子進(jìn)程在父進(jìn)程之前運(yùn)行: 子進(jìn)程:以長格式顯示當(dāng)前目錄的情況;分屏顯示file1的內(nèi)容。 父進(jìn)程:對1100之間的自然數(shù)求和;分屏顯示file2的內(nèi)容。程序可能涉及到的系統(tǒng)調(diào)用:for

4、k(), exec(), wait()#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>#include <sys/wait.h>int main()int p1,p2;int i,n=0;p1 = fork();if(p1 = 0)/system("more -dc file1");execl("/bin/ls","ls","-l",0);exit(

5、1);else if(p1 > 0)wait(NULL);/system("more -dc file2");p2 = fork();if(p2 = 0)execl("/bin/cat","cat","file1",0);else if(p2 > 0)wait(NULL);for(i = 1 ; i <= 100 ; i+)n = n + i ;printf("the add of 1-100 is:%dn",n);execl("/bin/cat",&quo

6、t;cat","file2",0);exit(1);elseprintf("fork failed.n");return 0;(2) 編程實(shí)現(xiàn)三個(gè)進(jìn)程的并發(fā)執(zhí)行即父進(jìn)程同其分別創(chuàng)建的兩個(gè)子進(jìn)程同時(shí)運(yùn)行,此程序運(yùn)行使系統(tǒng)中有三個(gè)活動進(jìn)程存在??刂谱屆總€(gè)進(jìn)程在屏幕上顯示一個(gè)字符串為了便于理解,可以是有意義的一句話。比方子進(jìn)程顯示”daughter”及”son”,父進(jìn)程顯示”parent”。試觀察屏幕上的顯示結(jié)果,并對輸出結(jié)果進(jìn)行分析。 程序可能涉及到的系統(tǒng)調(diào)用及函數(shù):fork(), printf()#include<unistd.h>#

7、include<stdio.h>int main()int p1,p2;p1 = fork();if(p1 = 0)printf("子進(jìn)程:sonn"); else if(p1 > 0)p2 = fork();if(p2 = 0)printf("子進(jìn)程:daughtern");else if(p2 > 0)printf("父進(jìn)程:parentn"); elseprintf("fork failed.n");return 0;(3) 編程實(shí)現(xiàn)并發(fā)執(zhí)行的父子進(jìn)程通過管道實(shí)現(xiàn)通信。要求父進(jìn)程通過讀

8、標(biāo)準(zhǔn)輸入,將讀入的內(nèi)容寫入管道;子進(jìn)程通過讀管道,將讀取的內(nèi)容寫到標(biāo)準(zhǔn)輸出。 程序可能涉及到的系統(tǒng)調(diào)用及函數(shù):fork(),pipe(),read(),write(),close()#include <unistd.h>#include <sys/types.h>#include <sys/wait.h>#include <stdio.h>#include <string.h>/char parent="A message to pipe'communication.n"int main()int pid,

9、fd2;char buf100;char parent100;pipe(fd);pid=fork();read(STDIN_FILENO,parent,100);if(pid > 0)close(fd0);printf("parent process sends a message to child.n");write(fd1,parent,sizeof(parent);close(fd1);printf("parent process waits the child to terminate.n");wait(0);printf("parent process terminate.n");else if(pid = 0)close(fd1);read(fd0,buf,100);printf("The message read by child proc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論