1 / 13
文档名称:

操作系统实验指导1.pdf

格式:pdf   大小:1,008KB   页数:13页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统实验指导1.pdf

上传人:小屁孩 2024/9/17 文件大小:1008 KB

下载得到文件列表

操作系统实验指导1.pdf

相关文档

文档介绍

文档介绍:该【操作系统实验指导1 】是由【小屁孩】上传分享,文档一共【13】页,该文档可以免费在线阅读,需要了解更多关于【操作系统实验指导1 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..操作系统实验指导1--第1页楚雄师范学院计算机科学系操作系统课程组2011-9-20操作系统上机指导Linux操作系统环境:RedHatEnterpriseLinuxESrelease3(TaroonUpdate1)(-)(HOT)()登录到系统RedFlagLinuxRedHatLinux启启动动GrubGrub在GRUB中选择在GRUB中选择RedHatEnterpriseLinuxES(-)RedFlagLinux(ConsoleMode)/*命令行模式*/**登密用录码户界:名面computer:rootPassword:登录意成密功码没有回显Lastlogin:webOct2015:35:17tty1[******@localhostroot]#常用命令练习:用root账号(超级用户)注册,口令为jkxroot(注意大小写)。注册成功出现#号(超级用户系统提示符,普通用户的系统提示符为$)。1操作系统实验指导1--第1页:..操作系统实验指导1--(注意Linux命令区分大小写。)使用ls查看当前目录内容;使用ls查看指定目录内容,如/目录,/etc目录使用lsall查看当前目录内容;..回到上层目录;cd/;mkdir/home/s2001/:rmdir;:::more(分页显示);:cat文件名建立文件:cat>文件名,ctrl+d结束输入使用编辑器vi编辑文件进入linux的文本模式之后,。下面作一些简单的解释:首先vi命令是打开vi编辑器。,;当然,vi编辑器功能很强,可以用它来编辑其它格式的文件,比如汇编文件,;也可以直接用vi打开一个新的未命名的文件,当保存的时候再给它命名,只是这样做不很方便。最基本的命令I:当进入刚打开的文件时,不能写入信息,这时按一下键盘上的I键(insert),插入的意思,就可以进入编辑模式了。如下图所示:a与i是相同的用法当文件编辑完后,需要保存退出,这时需要经过以下几个步骤:1)按一下键盘上的Esc键;2)键入冒号(:),紧跟在冒号后面是wq(意思是保存并退出)。如果不想保存退出,则第二步键入冒号之后,键入q!(不带w,机尾部保存)。如下图所示:2操作系统实验指导1--第2页:..操作系统实验指导1--第3页vi编辑器的编辑模式之后,要对刚才编写的程序进行编译。编译的命令是:[-],是c的编译器。参数:,outputfilename表示输出文件名称,中括号表示括号内部的内容可输入也可以不输入(中括号本身不再命令行中出现)。,。最后一步是运行程序,方法如下:./、修改文件属性添加新用户(在root下,按默认值回答)adduser用户名;如addusers2001;:chown用户名文件名改变文件权限:chmodg+w文件名;chmodo-r文件名或使用数字方式修改:如chmod644文件名;chmod755文件名u(user用户),g(group组),o(other其他);w写访问权限,r读访问权限,:::whoamiTip:与文件链接的数Unix文件目录的属性显示格式:如:-rw-rw-rw-1steveusers138Apr519:34readmedrwxrwxrwx3steveusers80Apr519:43dir1文件或目录名文件的拥有者文件的访问权限最后修改的日期和时间用户所在的组3操作系统实验指导1--第3页:..操作系统实验指导1--第4页ownergroupothers第二部分操作系统实验实验1Linux基本环境1、实验目的(1)熟悉Linux下的基本操作,学会使用各种Shell命令去操作Linux,对Linux有一个感性认识。(2)学会使用vi编辑器编辑简单的C语言程序,并能对其编译和调试。2、实验预备内容(1)参阅相关Linux操作系统的安装手册,熟悉Linux的基本安装和配置;(2)参阅相关Linux的命令参考手册,熟悉Linux下的操作命令。3、实验内容以root用户身份登陆,并使用“ls”,“cat”“cd等命令来实现基本的文件操作并观察Linux文件系统的特点;使用vi编辑器编写一C程序,命令进行编译和链接,。4、思考(1)Linux系统在用户登陆和操作界面以及文件系统上有哪些特点?实验2进程控制1、实验目的(1)加深对进程概念的理解,明确进程和程序的区别。(2)进一步认识并发执行的实质。(3)分析进程竞争资源现象,学习解决进程互斥的方法。(4)了解Linux系统中进程通信的基本原理。2、实验预备内容(1),加深对进程管理概念的理解。(2),分析进程的创建过程。3、实验内容(1)进程的创建编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察纪录屏幕上的显示结果,并分析原因。(2)进程的控制修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。4操作系统实验指导1--第4页:..操作系统实验指导1--第5页3)①编写一段程序,使其现实进程的软中断通信。要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:ChildProcessllisKilledbyParent!ChildProcessl2isKilledbyParent!父进程等待两个子进程终止后,输出如下的信息后终止ParentProcessisKilled!②在上面的程序中增加语句signal(SIGNAL,SIG-IGN)和signal(SIGQUIT,SIG-IGN),观察执行结果,并分析原因。(4)进程的管道通信编制一段程序,实现进程的管理通信。使用系统调用pipe()建立一条管道线;两个子进程P1和P2分别向管道中写一句话:Child1issendingamessage!Child2issendingamessage!而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。4、思考(1)系统是怎样创建进程的?(2)可执行文件加载时进行了哪些处理?(3)当首次调用新创建进程时,其入口在哪里?(4)进程通信有什么特点?参考【实验目的】1、掌握进程的概念,明确进程和程序的区别。2、认识和了解并发执行的实质。3、分析进程争用资源的现象,学习解决进程互斥的方法。【实验内容】1、进程的创建(必做题)编写一段程序,使用系统调用fork()创建两个子进程,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。<参考程序>#include<>main(){intp1,p2;while((p1=fork())==-1);if(p1==0)putchar(‘b’);else5操作系统实验指导1--第5页:..操作系统实验指导1--第6页if(p2==0)elseputchar(‘a’);}}2、修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。(必做题)<参考程序>#include<>main(){intp1,p2,i;while((p1=fork())==-1);if(p1==0)for(i=0;i<500;i++)printf(“child%dn”,i);else{while((p2=fork())==-1);If(p2==0)for(i=0;i<500;i++)printf(“son%dn”,i);elsefor(i=0;i<500;i++)printf(“daughter%dn”,i);}}3、编写程序创建进程树如图1和图2所示,在每个进程中显示当前进程识别码和父进程识别码。(必做题)6操作系统实验指导1--第6页:..操作系统实验指导1--第7页a父进程abbd子进程cced图1进程树图2进程树1、系统是怎样创建进程的?2、当首次调用新创建进程时,其入口在哪里?3、当前运行的程序(主进程)的父进程是什么?【实验报告】1、列出调试通过程序的清单,分析运行结果。2、给出必要的程序设计思路和方法(或列出流程图)。3、回答思考题。4、总结上机调试过程中所遇到的问题和解决方法及感想。【实验相关资料】一、,进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。一个进程实体由若干个区(段)组成,包括程序区、数据区、栈区、共享存储区等。每个区又分为若干页,每个进程配置有唯一的进程控制块PCB,用于控制和管理进程。PCB的数据结构如下:⑴进程表项(ProcessTableEntry)。包括一些最常用的核心数据,如:进程标识符PID、用户标识符UID、进程状态、事件描述符、进程和U区在内存或外存的地址、软中断信号、计时域、进程的大小、偏置值nice、指向就绪队列中下一个PCB的指针P_Link、指向U区进程正文、数据及栈在内存区域的指针。⑵U区(UArea)。用于存放进程表项的一些扩充信息。每一个进程都有一个私用的U区,其中含有:进程表项指针、真正用户标识符u-ruid(readuserID)、有效用户标识符u-euid(effectiveuserID)、用户文件描述符表、计时器、内部I/O参数、限制字段、差错字段、返回值、信号处理数组。由于UNIX系统采用段页式存储管理,为了把段的起始虚地址变换为段在系统中的物理地址,便于实现区的共享,所以还有:⑶系统区表项。以存放各个段在物理存储器中的位置等信息。系统把一个进程的虚地址空间划分为若干7操作系统实验指导1--第7页:..操作系统实验指导1--第8页进程可共享一个区。为了对区进行管理,核心中设置一个系统区表,各表项中记录了以下有关描述活动区的信息:区的类型和大小、区的状态、区在物理存储器中的位置、引用计数、指向文件索引结点的指针。⑷进程区表系统为每个进程配置了一张进程区表。表中,每一项记录一个区的起始虚地址及指向系统区表中对应的区表项。核心通过查找进程区表和系统区表,便可将区的逻辑地址变换为物理地址。,进程是进程映像的执行过程,也就是正在执行的进程实体。它由三部分组成:⑴用户级上、下文。主要成分是用户程序;⑵寄存器上、下文。由CPU中的一些寄存器的内容组成,如PC,PSW,SP及通用寄存器等;⑶系统级上、下文。包括OS为管理进程所用的信息,有静态和动态之分。,只有0进程是在系统引导时被创建的,在系统初启时由0进程创建1进程,以后0进程变成对换进程,1进程成为系统中的始祖进程。UNIX利用fork()为每个终端创建一个子进程为用户服务,如等待用户登录、执行SHELL命令解释程序等,每个终端进程又可利用fork()来创建其子进程,从而形成一棵进程树。可以说,系统中除0进程外的所有进程都是用fork()创建的。二、所涉及的中断调用1、fork()创建一个新的子进程。其子进程会复制父进程的数据与堆栈空间,并继承父进程的用户代码、组代码、环境变量、已打开的文件代码、工作目录和资源限制。系统调用格式:intfork()如果Fork成功则在父进程会返回新建立的子进程代码(PID),而在新建立的子进程中则返回0。如果fork失败则直接返回-1。2、wait()等待子进程运行结束。如果子进程没有完成,父进程一直等待。wait()将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。如果在wait()前已有子进程暂停或终止,则调用进程做适当处理后便返回。系统调用格式:intwait(status)int*status;其中,status是用户空间的地址。它的低8位反应子进程状态,为0表示子进程正常结束,非0则表示出现了各种各样的问题;高8位则带回了exit()的返回值。exit()返回值由系统给出。核心对wait()作以下处理:(1)首先查找调用进程是否有子进程,若无,则返回出错码;(2)若找到一处于“僵死状态”的子进程,则将子进程的执行时间加到父进程的执行时间上,并释放子进程的进程表项;8操作系统实验指导1--第8页:..操作系统实验指导1--第9页)若未找到处于“僵死状态”的子进程,则调用进程便在可被中断的优先级上睡眠,等待其子进程发来软中断信号时被唤醒。3、exit()终止进程的执行。系统调用格式:voidexit(status)intstatus;其中,status是返回给父进程的一个整数,以备查考。为了及时回收进程所占用的资源并减少父进程的干预,UNIX/LINUX利用exit()来实现进程的自我终止,通常父进程在创建子进程时,应在进程的末尾安排一条exit(),使子进程自我终止。exit(0)表示进程正常终止,exit(1)表示进程运行有错,异常终止。如果调用进程在执行exit()时,其父进程正在等待它的终止,则父进程可立即得到其返回的整数。核心须为exit()完成以下操作:(1)关闭软中断(2)回收资源(3)写记帐信息(4)置进程为“僵死状态实验参考【实验目的】1、掌握进程的概念,明确进程和程序的区别。2、认识和了解并发执行的实质。3、分析进程争用资源的现象,学习解决进程互斥的方法。【实验内容】1、进程的创建(必做题)编写一段程序,使用系统调用fork()创建两个子进程,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。<参考程序>#include<>main(){intp1,p2;while((p1=fork())==-1);if(p1==0)putchar(‘b’);else{while((p2=fork())==-1);if(p2==0)putchar(‘c’);else9操作系统实验指导1--第9页:..操作系统实验指导1--第10页}}2、修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。(必做题)<参考程序>#include<>main(){intp1,p2,i;while((p1=fork())==-1);if(p1==0)for(i=0;i<500;i++)printf(“child%dn”,i);else{while((p2=fork())==-1);If(p2==0)for(i=0;i<500;i++)printf(“son%dn”,i);elsefor(i=0;i<500;i++)printf(“daughter%dn”,i);}}3、编写程序创建进程树如图1和图2所示,在每个进程中显示当前进程识别码和父进程识别码。(必做题)a父进程abbd子进程cced图1进程树图2进程树10操作系统实验指导1--第10页:..操作系统实验指导1--第11页1、系统是怎样创建进程的?2、当首次调用新创建进程时,其入口在哪里?3、当前运行的程序(主进程)的父进程是什么?【实验报告】1、列出调试通过程序的清单,分析运行结果。2、给出必要的程序设计思路和方法(或列出流程图)。3、回答思考题。4、总结上机调试过程中所遇到的问题和解决方法及感想。【实验相关资料】一、,进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。一个进程实体由若干个区(段)组成,包括程序区、数据区、栈区、共享存储区等。每个区又分为若干页,每个进程配置有唯一的进程控制块PCB,用于控制和管理进程。PCB的数据结构如下:⑴进程表项(ProcessTableEntry)。包括一些最常用的核心数据,如:进程标识符PID、用户标识符UID、进程状态、事件描述符、进程和U区在内存或外存的地址、软中断信号、计时域、进程的大小、偏置值nice、指向就绪队列中下一个PCB的指针P_Link、指向U区进程正文、数据及栈在内存区域的指针。⑵U区(UArea)。用于存放进程表项的一些扩充信息。每一个进程都有一个私用的U区,其中含有:进程表项指针、真正用户标识符u-ruid(readuserID)、有效用户标识符u-euid(effectiveuserID)、用户文件描述符表、计时器、内部I/O参数、限制字段、差错字段、返回值、信号处理数组。由于UNIX系统采用段页式存储管理,为了把段的起始虚地址变换为段在系统中的物理地址,便于实现区的共享,所以还有:⑶系统区表项。以存放各个段在物理存储器中的位置等信息。系统把一个进程的虚地址空间划分为若干个连续的逻辑区,有正文区、数据区、栈区等。这些区是可被共享和保护的独立实体,多个进程可共享一个区。为了对区进行管理,核心中设置一个系统区表,各表项中记录了以下有关描述活动区的信息:区的类型和大小、区的状态、区在物理存储器中的位置、引用计数、指向文件索引结点的指针。⑷进程区表系统为每个进程配置了一张进程区表。表中,每一项记录一个区的起始虚地址及指向系统区表中对应的区表项。核心通过查找进程区表和系统区表,便可将区的逻辑地址变换为物理地址。,进程是进程映像的执行过程,也就是正在执行的进程实体。它由三部分11操作系统实验指导1--第11页:..操作系统实验指导1--第12页⑴用户级上、下文。主要成分是用户程序;⑵寄存器上、下文。由CPU中的一些寄存器的内容组成,如PC,PSW,SP及通用寄存器等;⑶系统级上、下文。包括OS为管理进程所用的信息,有静态和动态之分。,只有0进程是在系统引导时被创建的,在系统初启时由0进程创建1进程,以后0进程变成对换进程,1进程成为系统中的始祖进程。UNIX利用fork()为每个终端创建一个子进程为用户服务,如等待用户登录、执行SHELL命令解释程序等,每个终端进程又可利用fork()来创建其子进程,从而形成一棵进程树。可以说,系统中除0进程外的所有进程都是用fork()创建的。二、所涉及的中断调用1、fork()创建一个新的子进程。其子进程会复制父进程的数据与堆栈空间,并继承父进程的用户代码、组代码、环境变量、已打开的文件代码、工作目录和资源限制。系统调用格式:intfork()如果Fork成功则在父进程会返回新建立的子进程代码(PID),而在新建立的子进程中则返回0。如果fork失败则直接返回-1。2、wait()等待子进程运行结束。如果子进程没有完成,父进程一直等待。wait()将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。如果在wait()前已有子进程暂停或终止,则调用进程做适当处理后便返回。系统调用格式:intwait(status)int*status;其中,status是用户空间的地址。它的低8位反应子进程状态,为0表示子进程正常结束,非0则表示出现了各种各样的问题;高8位则带回了exit()的返回值。exit()返回值由系统给出。核心对wait()作以下处理:(1)首先查找调用进程是否有子进程,若无,则返回出错码;(2)若找到一处于“僵死状态”的子进程,则将子进程的执行时间加到父进程的执行时间上,并释放子进程的进程表项;(3)若未找到处于“僵死状态”的子进程,则调用进程便在可被中断的优先级上睡眠,等待其子进程发来软中断信号时被唤醒。3、exit()终止进程的执行。系统调用格式:voidexit(status)intstatus;其中,status是返回给父进程的一个整数,以备查考。为了及时回收进程所占用的资源并减少父进程的干预,UNIX/LINUX利用exit()来实现进程的自我终止,通常父进程在创建子进程时,应在进程的末尾安排一条exit(),使子进程自我终止。exit(0)表示进程正12操作系统实验指导1--第12页:..操作系统实验指导1--第13页表示进程运行有错,异常终止。如果调用进程在执行exit()时,其父进程正在等待它的终止,则父进程可立即得到其返回的整数。核心须为exit()完成以下操作:(1)关闭软中断(2)回收资源(3)写记帐信息(4)置进程为“僵死状态实验13操作系统实验指导1--第13页