山东大学操作系统实验六

合集下载

山东大学操作系统实验二

山东大学操作系统实验二

软件学院操作系统实验报告实验题目:实验二、线程和进程/线程管道通信实验学号:201100300124日期:2013年04月19日班级:5班姓名:韩俊晓Email:hanjunxiao188@实验目的:通过Linux 系统中线程和管道通信机制的实验,加深对于线程控制和管道通信概念的理解,观察和体验并发进/线程间的通信和协作的效果,练习利用无名管道进行进/线程间通信的编程和调试技术。

实验要求:设有二元函数f(x,y) = f(x) + f(y)其中:f(x) = f(x-1) * x(x >1)f(x)=1(x=1)f(y) = f(y-1) + f(y-2)(y> 2)f(y)=1(y=1,2)请编程建立3个并发协作进程(或线程),它们分别完成f(x,y)、f(x)、f(y)其中由父进程(或主线程)完成:f(x,y) = f(x) + f(y)由子进程1(或线程1)完成:f(x) = f(x-1) * x(x >1)f(x)=1(x=1)由子进程2(或线程2)完成:f(y) = f(y-1) + f(y-2)(y> 2)f(y)=1(y=1,2)硬件环境:实验室计算机软件环境:Ubuntu08.4-Linux操作系统BASH_VERSION='3.2.33(1)-releasegcc version 4.1.2gedit 2.18.2OpenOffice 2.3实验步骤:1.实验说明:1)与线程创建、执行有关的系统调用说明线程是在共享内存中并发执行的多道执行路径,它们共享一个进程的资源,如进程程序段、文件描述符和信号等,但有各自的执行路径和堆栈。

线程的创建无需像进程那样重新申请系统资源,线程在上下文切换时也无需像进程那样更换内存映像。

多线程的并发执行即避免了多进程并发的上下文切换的开销又可以提高并发处理的效率。

Linux 利用了特有的内核函数__clone 实现了一个叫phread的线程库,__clone是fork 函数的替代函数,通过更多的控制父子进程共享哪些资源而实现了线程。

山大操作系统实验4

山大操作系统实验4

进程同步实验张咪软件四班一、实验要求加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互斥操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案。

了解Linux系统中IPC进程同步工具的用法,练习并发协作进程的同步与互斥操作的编程与调试技术。

二、实验目的抽烟者问题。

假设一个系统中有三个抽烟者进程,每个抽烟者不断地卷烟并抽烟。

抽烟者卷起并抽掉一颗烟需要有三种材料:烟草、纸和胶水。

一个抽烟者有烟草,一个有纸,另一个有胶水。

系统中还有两个供应者进程,它们无限地供应所有三种材料,但每次仅轮流提供三种材料中的两种。

得到缺失的两种材料的抽烟者在卷起并抽掉一颗烟后会发信号通知供应者,让它继续提供另外的两种材料。

这一过程重复进行。

请用以上介绍的IPC同步机制编程,实现该问题要求的功能。

三、实验环境实验环境均为Linux操作系统,开发工具为gcc和g++。

四、实验思路1、约束:(1)某一时刻,只能有一个供应者,放入一对物品。

(2)某一时刻,只能有一个抽烟者,且要保证这个抽烟者恰好需要的就是刚刚生产的物品。

(3)所有供应者提供这种物品之后,不论它要生产什么物品,只有等到抽烟者拿走了物品之后,才能继续生产。

供应者1 供应者2wait(empty);wait(empty);wait(mutex1);wait(mutex1);随机生产两样产品;随机生产两样产品;signal(mutex1);signal(mutex1);//有烟草的//有烟草的if(P&G)signal(s1);if(P&G)signal(s1);//有胶水的//有胶水的if(P&T)signal(s2);if(P&T)signal(s2);//有纸的//有纸的if(T&G)signal(s3);if(T&G)signal(s3);s1(有烟草的)s2(有胶水的)s3(有纸)wait(s1);wait(s2);wait(s3);wait(mutex2);wait(mutex2);wait(mutex2);取产品吸烟取产品吸烟取产品吸烟signal(mutex2);signal(mutex2);signal(mutex2);signal(empty);signal(empty);signal(empty);2、创建五个子进程,两个作为供应者,三个作为吸烟者。

山东大学操作系统实验报告3进程调度算法实验

山东大学操作系统实验报告3进程调度算法实验

计算机科学与技术学院实验报告
3) 输入make命令编译连接生成可执行的
psched程序$gmake
gcc -g -c experime nt3.c
gcc psched.o -o psched
4)
执行psched程序
分析:
根据以上示例程序和独立实验程序中观察和记录的信息,说明它们反映出操作系统教材中讲解的哪些进程调度调度策略和功能?在真实的操作系统中它是怎样实现教材中讲解的进程调度效果的。

先进先出算法
算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机。

最高优先权(FPF)优先调度算法
该算法总是把处理机分配给就绪队列中具有最高优先权的进程。

常用以下两种方法来确定进程的优先权:
轮转法
前几种算法主要用于批处理系统中,不能作为分时系统中的主调度算法,在分时系统中,都采用时间片轮转法。

体会:
1. 实验中定义的函数一定要考虑好函数的参数问题,这样才不会出现一些不必要的错误;
2. 对于一些要忽略的信号要忽略掉,免得影响后面的响应过程。

山东大学操作系统实验六完整版

山东大学操作系统实验六完整版

山东大学操作系统实验六HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】软件学院操作系统实验报告实验题目:实验六、死锁问题实验学号:0124日期:2013年05月23日班级:5班姓名:韩俊晓Email:实验目的:通过本实验观察死锁产生的现象,考虑解决死锁问题的方法。

从而进一步加深对于死锁问题的理解。

掌握解决死锁问题的几种算法的编程和调试技术。

练习怎样构造管程和条件变量,利用管程机制来避免死锁和饥俄问题的发生。

实验要求:在两个城市南北方向之间存在一条铁路,多列火车可以分别从两个城市的车站排队等待进入车道向对方城市行驶,该铁路在同一时间,只能允许在同一方向上行车,如果同时有相向的火车行驶将会撞车。

请模拟实现两个方向行车,而不会出现撞车或长时间等待的情况。

您能构造一个管程来解决这个问题吗?硬件环境:实验室计算机软件环境:-Linux操作系统gcc version实验步骤:1.实验说明:管程-Monitor管程是一种高级抽象数据类型,它支持在它的函数中隐含互斥操作。

结合条件变量和其他一些低级通信原语,管程可以解决许多仅用低级原语不能解决的同步问题。

利用管程可以提供一个不会发生死锁或饥饿现象的对象;哲学家就餐问题和Java语言中的synchronized对象都是很好的管程的例子.管程封装了并发进程或线程要互斥执行的函数。

为了让这些并发进程或线程在管程内互斥的执行,进入管程的进/线程必须获取到管程锁或二值信号量条件变量Condition Variables条件变量提供了一种对管程内并发协作进程的同步机制。

如果没有条件变量,管程就不会有很有用。

多数同步问题要求在管程中说明条件变量。

条件变量代表了管程中一些并发进程或线程可能要等待的条件。

一个条件变量管理着管程内的一个等待队列。

如果管程内某个进程或线程发现其执行条件为假,则该进程或线程就会被条件变量挂入管程内等待该条件的队列。

山东大学操作系统实验一

山东大学操作系统实验一

软件学院操作系统实验报告实验题目:实验一、进程控制实验学号:日期:2013年04月12日班级:5班姓名:韩俊晓Email:实验目的:加深对于进程并发执行概念的理解。

实践并发进程的创建和控制方法。

观察和体验进程的动态特性。

进一步理解进程生命期期间创建、变换、撤销状态变换的过程。

掌握进程控制的方法,了解父子进程间的控制和协作关系。

练习Linux系统中进程创建与控制有关的系统调用的编程和调试技术。

实验要求:编写一个多进程并发执行程序。

父进程首先创建一个执行ls命令的子进程然后再创建一个执行ps命令的子进程,并控制ps命令总在ls 命令之前执行。

硬件环境:实验室计算机软件环境:Ubuntu08.4-Linux操作系统gcc version 4.1.2gedit 2.18.2OpenOffice 2.3实验步骤:1.实验说明:1)与进程创建、执行有关的系统调用说明进程可以通过系统调用fork()创建子进程并和其子进程并发执行.子进程初始的执行映像是父进程的一个复本.子进程可以通过exec()系统调用族装入一个新的执行程序。

父进程可以使用wait()或waitpid()系统调用等待子进程的结束并负责收集和清理子进程的退出状态。

fork()系统调用语法:#include <unistd.h>pid_t fork(void);fork成功创建子进程后将返回子进程的进程号,不成功会返回-1. exec 系统调用有一组6个函数,其中示例实验中引用了execve 系统调用语法:#include <unistd.h>int execve(const char *path, const char *argv[], const char * envp[]); path 要装入的新的执行文件的绝对路径名字符串.argv[] 要传递给新执行程序的完整的命令参数列表(可以为空). envp[] 要传递给新执行程序的完整的环境变量参数列表(可以为空). Exec执行成功后将用一个新的程序代替原进程,但进程号不变,它绝不会再返回到调用进程了。

山东大学操作系统问答题

山东大学操作系统问答题

1、操作系统:操作系统是一组控制和管理计算机硬件和软件资源、合理地对各类作业进行调度,以及方便用户的程序的集合。

操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。

2、三种系统:批处理系统:用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业(jobs)之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,系统自动、依次执行每个作业。

最后由操作员将作业结果交给用户。

优点:作业流程自动化; 效率高吞吐量高缺点:无交互手段调试程序困难实时系统:实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。

分时系统:操作系统将CPU的时间划分成若干个片段,称为时间片。

操作系统以时间片为单位,在用户间快速切换,轮流为每个终端用户服务,每次服务一个时间片。

系统的快速切换使用户感到整个系统只为自己所用。

优点:多道性、同时性、独立性、及时性、交互性3、PCB系统为了管理进程设置的一个专门的数据结构,用它来记录进程的外部特征,描述进程的运动变化过程,包含与一个特定进程相关的信息:进程状态、程序计数器、cpu 寄存器、cpu 调度信息、内存管理信息、记账信息和IO 状态信息。

系统利用PCB 来控制和管理进程,所以PCB 是系统感知进程存在的唯一标志。

进程与PCB是一一对应的4、论述短期,中期和长期调度之间的区别:a.短期调度:在内存作业中选择就绪执行的作业,并为他们分配CPU。

b•中期调度:作为一种中等程度的调度程序,尤其被用于分时系统,一个交换方案的实施,将部分运行程序移出内存,之后,从中断处继续执行。

c.长期调度(作业调度程序):从进程的缓冲池中,确定哪些作业调入内存以执行它们主要的不同之处是它们的执行的频率。

短期调度必须经常调用一个新进程,由于在系统中,长期调度处理移动的作业时,并不频繁被调用,可能在进程离开系统时才被唤起。

2022年山东大学计算机科学与技术专业《操作系统》科目期末试卷B(有答案)

2022年山东大学计算机科学与技术专业《操作系统》科目期末试卷B(有答案)

2022年山东大学计算机科学与技术专业《操作系统》科目期末试卷B(有答案)一、选择题1、一个磁盘的转速为7200r/min,每个磁道有160个扇区,每个扇区为512B.那么理想情况下,其数据传输率为()。

A.7200×160KB/sB.7200KB/sC.9600KB/sD.19200KB/s2、文件系统采用多级目求结构的目的是()。

A.减少系统开销B.节约存储空间C.解决命名冲突D.缩短传送时间3、在下列操作系统的各个功能组成部分中,一定需要专门硬件配合支持的是()。

I.地址映射II.进程调度III.中断系统IV.系统调用A.IB.I、IIIC. I、III、IVD.II、II4、下面哪个不会引起进程创建()A.用户登录B.作业调度C.设备分配D.应用请求5、某系统有n台互斥使用的同类设备,3个并发进程分别需要3,4,5台设备,可确保系统不发生死锁的设备数n最小为()。

A.9B.10C.11D.126、可重入程序是通过()方法来改善系统性能的。

A.改变时间片长度B.改变用户数C.提高对换速度D.减少对换数量7、若用8个字(字长32位,H字号从0开始计数)组成的位示图管理内存,用户归还一个块号为100的内存块时,它对应位示图的位置为()(注意:位号也从0开始)。

A.字号为3,位号为5B.字号为4,位号为4C.字号为3,位号为4D.字号为4,位号为58、处理外部中断时,应该山操作系统保存的是()A.程序计数器(PC)的内容B.通用寄存器的内容C.快表(TLB)中的内容D.Cache中的内容9、设计实时操作系统时,首先应该考虑系统的()。

A.可靠性和灵活性B.实时性和可靠性C.分配性和可靠性D.灵活性和实时性10、用户程序发出磁盘I/O话求后,系统的处理流程是:用户程序→系统调用处理程序→设备驱动程序→中断处理程序。

其中,计算数据所在磁盘的柱面号、磁号、扇区号的程序是()。

A.用户程序B.系统调用处理程序C.设备驱动程序D.中断处理程序11、如果I/O设备与存储设备间的数据交换不经过CPU来完成,则这种数据交换方式是()。

山东大学计算机学院操作系统实验报告

山东大学计算机学院操作系统实验报告

操作系统课程设计报告学院:计算机科学与技术学院专业:计算机科学与技术班级:20**级*班姓名:***学号:20**********目录一实验平台 (2)二Project1建立线程系统 (2)Task1.1实现KThread.join() (2)1.要求 (2)2.分析 (2)3.方案 (3)4.实现代码 (3)Task1.2利用中断提供原子性,直接实现条件变量 (4)1.要求 (4)2.分析 (5)3.方案 (5)4.实现代码 (5)Task1.3实现waitUntil (7)1.要求 (7)2.分析 (7)3.方案 (7)4.实现代码 (8)Task1.4用条件变量,不使用信号量,实现同步发送接收消息,speak,listen (10)1.要求 (10)2.分析 (10)3.方案 (11)4.实现代码 (11)Task1.5完成PriorityScheduler实现优先级调度 (13)1.要求 (13)2.分析 (13)3.方案 (14)4.实现代码 (14)Task1.6 (17)1.要求 (17)2.分析 (18)3.方案 (19)4.实现代码 (19)三Project2多道程序设计 (27)Task2.1 (27)1.要求 (27)2.分析 (28)3.方案 (28)4.实现代码 (31)Task2.2 (36)1.要求 (36)2.分析 (36)3.方案 (36)4.实现代码 (38)Task2.3 (43)1.要求 (43)2.分析 (43)3.方案 (44)4.实现代码 (45)Task2.4 (47)1.要求 (47)2.分析 (48)3.方案 (48)4.实现代码 (48)一实验平台开发语言:Java开发工具:Eclipse Luna操作系统:Ubuntu14.04二P roject1建立线程系统Task1.1实现KThread.join()1.要求实现Implement KThread.join()函数。

山东大学操作系统实验报告4进程同步实验

山东大学操作系统实验报告4进程同步实验

山东大学操作系统实验报告4进程同步实验计算机科学与技术学院实验报告实验题目:实验四、进程同步实验学号:日期:20120409 班级:计基地12 姓名:实验目的加深对并发协作进程同步与互斥概念的理解,观察和体验并发进程同步与互操作的效果,分析与研究经典进程同步与互斥问题的实际解决方案了 Linux 系统 IPC进程同步工具的用法,练习并发协作进程的同步与互斥操作的编与调试技术实验内容抽烟者问题假设一个系统中有三个抽烟者进程每个抽烟者不断地卷烟并抽烟抽烟者卷起并抽掉一颗烟需要有三种材料烟草纸和胶水一个抽烟者有烟草一个有纸,另一个有胶水。

系统中还有两个供应者进程,它们无限地供应所有种材料但每次仅轮流提供三种材料中的两种。

得到缺失的两种材料的抽烟者卷起并抽掉一颗烟后会发信号通知供应者让它继续提供另外的两种材料。

这过程重复进行请用以上介绍 IPC同步机制编程实现该问题要求的功能硬件环境@CPUi3-2350MIntel?Cor42.30GHz MobileIntel?Sandybridgex86/MMX/SSE24G内存3操作系统:20.1 GB磁盘:软件环境:ubuntu13.04实验步骤:(1)新建定义了producer和consumer 共用的文件。

ipc.h函数原型和变量的IPC.(2)新建ipc.c文件,编写producer和consumer共用的IPC的具体相应函数。

(3)新建Producer文件,首先定义producer的一些行为,利用系统调用建立共享内存区域,设定其长度并获取共享内存的首地址。

然后设定生产者互斥与同步的信号灯,并为他们设置相应的初值。

当有生产者进程在运行而其他生产者请求时,相应的信号灯就会阻止他,当共享内存区域已满时,信号等也会提示生产者不能再往共享内存中放入内容。

(4)新建Consumer文件,定义consumer的一些行为,利用系统调用来创建共享内存区域,并设定他的长度并获取共享内存的首地址。

2022年山东大学数据科学与大数据技术专业《操作系统》科目期末试卷B(有答案)

2022年山东大学数据科学与大数据技术专业《操作系统》科目期末试卷B(有答案)

2022年山东大学数据科学与大数据技术专业《操作系统》科目期末试卷B(有答案)一、选择题1、在单处理器系统中,可并行的是()I.进程与进程II.处理器与设备III.处理器与通道IV.设备与设备A.I、II和IIIB.I、II和IVC.I、III和IVD.II、III和IV2、实时操作系统必须在()内处理完来白外部的事件。

A.一个机器周期B.被控对象规定时间C.周转时间D.时间片3、下面关于进程的叙述中,正确的是()A.进程获得CPU运行是通过调度得到的B.优先级是进程调度的重要依据,确定就不能改变,C.单CPU的系统中,任意时刻都有一个进程处于运行状念D.进程申请CPU得不到满足时,其状态变为阻塞4、在使用信号量机制实现互斥时,互斥信号量的初值一般为():而使用信号量机,制实现同步时,同步信号量的初值般为()。

A.0:1B.1:0C.不确定:1D.1:不确定5、采用资源剥夺法可以解除死锁,还可以采用()方法解除死锁。

A.执行并行操作B.撤销进程C.拒绝分配新资源D.修改信号量6、在采用SPOOLing技术的系统中,用户暂时未能打印的数据首先会被送到()存储起来。

A.磁盘固定区域B.内存固定区域C.终端D.打印机7、为了使多个进程能有效地同时处理输入和输出,最好使用()结构的缓冲技术。

A.缓冲池B.循环缓冲C.单缓冲D.双缓冲8、操作系统为了管理文件,设计了文件控制块(FCB),文件控制块的建立是().A.在调用create()时B.在调用open()时C.在调用read()时D.在调用write()9、若某文件系统索引节点(inode)中有直接地址项和间接地址项,则下列选项中,与单个文件长度无关的因素是().A.索引节点的总数B.间接地址索引的级数C.地址项的个数D.文件块大小10、设有8页的逻辑空间,每页有1024B,它们被映射到32块的物理存储区中。

那么,逻辑地址的有效位是()位,物理地址至少是()位。

2022年山东大学数据科学与大数据技术专业《操作系统》科目期末试卷A(有答案)

2022年山东大学数据科学与大数据技术专业《操作系统》科目期末试卷A(有答案)

2022年山东大学数据科学与大数据技术专业《操作系统》科目期末试卷A(有答案)一、选择题1、所谓(),是指将一个以上的作业放入内存,并且同时处于运行状态。

这些作业,共享处理器的时间和外设及其他资源。

A.多重处理B.多道程序设计C.实时处理D.并行执行2、处理外部中断时,应该山操作系统保存的是()A.程序计数器(PC)的内容B.通用寄存器的内容C.快表(TLB)中的内容D.Cache中的内容3、下列进程调度算法中,综合考虑进程等待时间和执行时间的是()A.时间片轮转调度算法B.短进程优先调度算法C.先来先服务调度算法D.高响应比优先调度算法4、下列关于银行家算法的叙述中,正确的是()A.银行家算法可以预防死锁B.当系统处于安全状态时,系统中…定无死锁进程C.当系统处于不安全状态时,系统中一定会出现死锁进程D.银行家算法破坏了产生死锁的必要条件中的“请求和保持”条件5、下列选项中,导致创建新进程的操作是()。

I.用户登录成功 II.设备分配 III.启动程序执行A.仅I和IIB.仅II和IIIC. 仅I和IIID. I,II,III6、缓存技术的缓冲池在()中。

A.内存B.外存C.ROMD.寄存器7、()是操作系统中采用的以空间换取时间的技术。

A.Spooling 技术B.虚拟存储技术C.覆盖与交换技术D.通道技术8、现代操作系统中,文件系统都有效地解决了重名(即允许不同用户的文件可以具有相同的文件名)问题。

系统是通过()来实现这一功能的。

A.重名翻译结构B.建立索引表C.树形目录结构D.建立指针9、若文件f1的硬链接为f2,两个进程分别打开fl和f2,获得对应的文件描述符为fd1和fd2,则下列叙述中,止确的是()I.fl和f2的读写指针位置保持相同II.fl和f2共享同个内存索引节点III.fdl 和fd2分别指向各自的用户打开文件表中的一项,A.仅IIB. 仅II、IIIC.仪I、IID. I、II和II10、设系统缓冲区和用户工作区均采用单缓冲,从外设读入一个数据块到系统缓冲区的时间为100,从系统缓冲区读入1个数据块到用户工作区的时间为5,对用户上作区中的1个数据块进行分析的时问为90。

山东大学计算机学院操作系统实验报告

山东大学计算机学院操作系统实验报告

操作系统课程设计报告学院:计算机科学与技术学院专业:计算机科学与技术班级:20**级*班姓名:***学号:20**********目录一实验平台 (4)二Project1建立线程系统 (4)Task1.1实现KThread.join() (4)1.要求 (4)2.分析 (4)3.方案 (4)4.实现代码 (5)Task1.2利用中断提供原子性,直接实现条件变量 (6)1.要求 (6)2.分析 (6)3.方案 (7)4.实现代码 (7)Task1.3实现waitUntil (9)1.要求 (9)2.分析 (9)3.方案 (10)4.实现代码 (10)Task1.4用条件变量,不使用信号量,实现同步发送接收消息,speak,listen (12)1.要求 (12)2.分析 (12)3.方案 (13)4.实现代码 (13)Task1.5完成PriorityScheduler实现优先级调度 (16)1.要求 (16)2.分析 (16)3.方案 (17)4.实现代码 (17)Task1.6 (20)1.要求 (20)2.分析 (21)3.方案 (22)4.实现代码 (22)三Project2多道程序设计 (31)Task2.1 (31)1.要求 (31)2.分析 (31)3.方案 (32)4.实现代码 (35)Task2.2 (40)1.要求 (40)2.分析 (40)3.方案 (41)4.实现代码 (42)Task2.3 (48)1.要求 (48)2.分析 (49)3.方案 (49)4.实现代码 (50)Task2.4 (53)1.要求 (53)2.分析 (53)3.方案 (54)4.实现代码 (54)一实验平台开发语言:Java开发工具:Eclipse Luna操作系统:Ubuntu14.04二P roject1建立线程系统Task1.1实现KThread.join()1.要求实现Implement KThread.join()函数。

山东大学操作系统实验报告完整版

山东大学操作系统实验报告完整版

山东大学操作系统实验报告HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】操作系统实验报告计算机科学与技术学院目录一、进程控制实验实验目的加深对于进程并发执行概念的理解。

实践并发进程的创建和控制方法。

观察和体验进程的动态特性。

进一步理解进程生命期期间创建、变换、撤销状态变换的过程。

掌握进程控制的方法,了解父子进程间的控制和协作关系。

练习 Linux 系统中进程创建与控制有关的系统调用的编程和调试技术。

示例实验实验内容以下实验示例程序应实现一个类似shell 子命令的功能,它可以从执行程序中启动另一个新的子进程并执行一个新的命令和其并发执行。

实验演示结果独立实验实验内容参考以上示例程序中建立并发进程的方法,编写一个父子协作进程,父进程创建一个子进程并控制它每隔 3 秒显示一次当前目录中的文件名列表。

实验步骤算法设计通过进程间的通讯,先创建一个父进程一个子进程,父进程沉睡3秒,子进程作为当前父进程再次创建一个他的子进程,当前子进程执行显示当前目录文件列表功能,执行execve()方法后死亡。

While(1)在死循环里无限进行当前操作。

即达到父进程创建一个子进程并控制它每隔3秒显示一次当前目录中的文件名列表的要求。

开发调试过程打开一终端命令行窗体,新建一个文件夹,在该文件夹中建立名为的C 语言程序;再建立以下名为的 C 语言头文件;建立项目管理文件 Makefile;输入 make 命令编译连接生成可执行的 pctl 程序;执行 pctl 程序;再次执行带有子进程指定执行命令的 pctl 程序。

思考与分析1.反映的进程的特征和功能,在真实的操作系统中是怎样实现和反映出教材中讲解的进程的生命期、进程的实体和进程状态控制的。

对于进程概念和并发概念有哪些新的理解和认识子进程是如何创建和执行新程序的答:进程是一个可并发执行的程序在某数据集上的一次运行,是程序的一次运行过程。

山东大学选课系统操作说明

山东大学选课系统操作说明

山东大学选课系统操作说明项目工作组2016年12月目录1系统概述 (3)2系统登录 (3)2.1系统登录 (3)2.2登录后主页面 (3)3网上选课 (4)3.1预选阶段 (4)3.2正选阶段 (5)3.3补退选阶段 (6)4我的课表 (7)5开课查询 (7)1 系统概述山东大学选课系统是山东大学本科生综合教务系统的其中一个子系统,选课分为三个阶段预选、正选、补退选,系统支持学生在三个阶段的选课操作。

2 系统登录2.1 系统登录登录地址: /系统支持IE9、IE10、IE11、Firefox、Chrome、Opera、Safari等业界主要的浏览器。

进入登录页面后,请使用学号和密码登录系统。

图1 登录页面2.2 登录后主页面用户登录后进入主页面,顶部四个菜单选课公告、网上选课、我的课表、开课查询,默认显示选课公告;如下图:图2 登陆后主页面3 网上选课网上选课主页面分为三个区域,第一个区域显示当前选课阶段,第二个区域显示当前已选课程,第三个阶段显示当前可选课程。

可选课程预选、正选阶段分为必修课、限选课、任选课、全部课程四个Tab页,补退选阶段多出重修课程Tab页。

图3 网上选课主页面3.1 预选阶段选课 可通过必修课、限选课选择与自己相关的课程,通过任选课查询全校任选课,也可通过全部课程查询任何一门课程;查询结果点击【选课】,如果选课成功,则已选课程区域会显示这门课,如果选课失败,会告知原因;退课→从已选课程可选择多门课程,点击【推选】,该门课程会从已选列表中消失注:预选阶段不控制课余量图4 预选阶段3.2 正选阶段选课→同预选选课;退课→同预选退课;抽签→需要抽签的课程显示抽签按钮,点击【抽签】,如果抽中,中签标志会显示中,如果未抽中,则系统会自动把当前课程从已选课程中删除。

注:仅显示抽签按钮的课程方可抽签,如果放弃抽签操作,等正选结束,该门课程会自动从已选课程中删除。

图5 正选阶段3.3 补退选阶段选课→同预选选课,已有历史成绩的课程可以进行选课;重修选课→历史不及格的课程可以进行选课退课→同预选退课;选课确认→如果已选课程确认无误,点击【选课确认】确认选课课程;注:对于已有历史成绩的课程在当前阶段可以进行选课操作;图6 补退选阶段4 我的课表我的课表页面分为两个区域,一个区域显示有时间点表的课程,一个区域显示无时间地点表课程。

山大操作系统实验-1教程文件

山大操作系统实验-1教程文件
山大操作系统实验-1
操作系统原理实验报告——实验一
张咪软件工程四班
一、实验目的
加深对于进程并发执行概念的理解。实践并发进/线程的创建和控制方法。观察和体验进程的动态特性。进一步理解进程生命期期间创建、变换、撤销状态变换的过程。掌握进程控制的方法,了解父子进程间的控制和协作关系。练习Linux系统中进/线程创建与控制有关的系统调用的编程和调试技术。
signal(SIGINT,(sighandler_t)sigcat);
int count=0;
while(count<5){
if((pid1=fork())==0){
pause();
printf("%d This is child1 running\n",getpid());
status1=execve(args1[0],args1,NULL);
printf("%d Father: Child2 finnished\n",getpid());
count++;
if(kill(pid1,SIGINT)>=0){
waitpid(pid1,&status1,0);
printf("%d Father: Child1 finished.\n",getpid());
八、代码
#include"pro.h"
int main(int argc,char *argv[])
{
int i;
int pid1,pid2;
int status1,status2;
char *args1[]={"/bin/ls","-a",NULL};

山东大学操作系统试验报告

山东大学操作系统试验报告

计算机科学与技术学院操作系统实验报告学院:专业:班级:姓名:学号:日期:Email:目录实验一进程控制实验 (4)1.1实验目的 (4)1.2实验题目 (4)1.3实验步骤 (4)1.4结论分析与体会 (5)1.5附录:本实验全部程序源代码及注释 (5)1.5.1Pctl.c (5)1.5.2pctl.h (9)1.5.3makefile (10)实验三进程调度算法实验 (10)3.1实验目的 (10)3.2实验题目 (11)3.3实验步骤 (11)3.4结论分析与体会 (12)3.5附录:本实验全部程序源代码及注释 (12)3.5.1Psched.c (12)3.5.2Psched.h (14)3.5.3Makefile (16)实验四进程同步实验 (16)4.1实验目的 (16)4.2实验题目 (16)4.3实验步骤 (17)4.4结论分析与体会 (24)4.5附录:本实验全部程序源代码及注释 (24)4.5.1Ipc.c (24)4.5.2Ipc.h (32)4.5.3Consumer (35)4.5.4Producer (41)4.5.5makefile (50)实验七内存页面置换算法实验 (51)7.1实验目的 (51)7.2实验题目 (51)7.3实验步骤 (52)7.4附录:本实验全部程序源代码及注释 (55)7.4.1Vmrp.h (55) (57)7.5.3makefile (73)实验八磁盘移臂调度算法实验 (74)7.2实验目的 (74)8.2实验题目 (74)8.3实验步骤 (75)8.4附录:本实验全部程序源代码及注释 (76)8.4.1Dask.h (76) (78)8.4.3Makefile (94)实验一进程控制实验1.1 实验目的加深对于进程并发执行概念的理解。

实践并发进程的创建和控制方法。

观察和体验进程的动态特性。

进一步理解进程生命期期间创建、变换、撤销状态变换的过程。

山东大学操作系统实验六

山东大学操作系统实验六

软件学院操作系统实验报告实验题目:实验六、死锁问题实验学号:201100300124日期:2013年05月23日班级:5班姓名:韩俊晓Email:实验目的:通过本实验观察死锁产生的现象,考虑解决死锁问题的方法。

从而进一步加深对于死锁问题的理解。

掌握解决死锁问题的几种算法的编程和调试技术。

练习怎样构造管程和条件变量,利用管程机制来避免死锁和饥俄问题的发生。

实验要求:在两个城市南北方向之间存在一条铁路,多列火车可以分别从两个城市的车站排队等待进入车道向对方城市行驶,该铁路在同一时间,只能允许在同一方向上行车,如果同时有相向的火车行驶将会撞车。

请模拟实现两个方向行车,而不会出现撞车或长时间等待的情况。

您能构造一个管程来解决这个问题吗?硬件环境:实验室计算机软件环境:Ubuntu08.4-Linux操作系统gcc version 4.1.2gedit 2.18.2OpenOffice 2.3实验步骤:1.实验说明:管程-Monitor管程是一种高级抽象数据类型,它支持在它的函数中隐含互斥操作。

结合条件变量和其他一些低级通信原语,管程可以解决许多仅用低级原语不能解决的同步问题。

利用管程可以提供一个不会发生死锁或饥饿现象的对象;哲学家就餐问题和Java语言中的synchronized对象都是很好的管程的例子.管程封装了并发进程或线程要互斥执行的函数。

为了让这些并发进程或线程在管程内互斥的执行,进入管程的进/线程必须获取到管程锁或二值信号量条件变量Condition Variables条件变量提供了一种对管程内并发协作进程的同步机制。

如果没有条件变量,管程就不会有很有用。

多数同步问题要求在管程中说明条件变量。

条件变量代表了管程中一些并发进程或线程可能要等待的条件。

一个条件变量管理着管程内的一个等待队列。

如果管程内某个进程或线程发现其执行条件为假,则该进程或线程就会被条件变量挂入管程内等待该条件的队列。

如果管程内另外的进程或线程满足了这个条件,则它会通过条件变量再次唤醒等待该条件的进程或线程,从而避免了死锁的产生。

山东大学操作系统实验6死锁问题实验

山东大学操作系统实验6死锁问题实验
sem_init(&mutex2,0,1);
sem_init(&mutex3,0,1);
sem_init(&mutex4,0,1);
t=malloc(6*sizeof(pthread_t));
printf("现在开始火车行驶问题模拟\n");
printf("---------------------------------------\n");
Rw:
#include<stdlib.h>
#include<stdio.h>
#include<pthread.h>
#include<semaphore.h>
void* read(void* tid);
void* write(void* tid);
//使用经典读写互斥解决这一问题,即当从甲地往乙地有一辆火车时,
(5)火车单行道调度试验是通过将火车单行道两端所有权表示为两种资源,一个城市想要开火车到对方城市需要同时获得单行道两端(两种资源)所有权,类似哲学家就餐问题使用条件变量表示资源是否可用。可以将哲学家问题潜移默化修改哲学家个数成2就是火车单行道问题解决方案。任意时刻只有一个进程获得管程所有权,解决了死锁问题。
举个例子,当有多个进程需要打印文件时,如果系统分配打印机的策略是最短文件优先,那么长文件的打印任务将由于短文件的源源不断到来而被无限期推迟,导致最终的饥饿甚至饿死。
而产生死锁的原因可归结为如下两点:
(1)竞争资源。当系统中供多个进程共享的资源如打印机、公用队列等,其数目不足以满足进程的需要时,会引起诸进程的竞争而产生死锁。
sleep(rate);

实验六 DNS-氨基酸的制备和鉴定

实验六   DNS-氨基酸的制备和鉴定

山东大学实验报告2011年4月13日姓名张行润系年级2009级生科4班学号200900140177 同组者于潜科目生物化学实验题目聚酰胺薄膜层析法分离氨基酸仪器编号105一、实验目的1.了解并掌握DNS-氨基酸的制备和鉴定的原理2.掌握制备Dansyl氨基酸和聚酰胺薄膜层析法的操作和方法二、实验原理荧光试剂5-二甲氨基-1-萘磺酰氯(dansyl-Cl,简称DNS-Cl)在碱性条件下与氨基酸(肽或蛋白质)的氨基结合成带有荧光的DNS-氨基酸(DNS-肽或DNS-蛋白质),DNS-氨基酸再经酸水解可释放出DNS-氨基酸,其反应式如下:图1:DNS-氨基酸生成反应机理图2:单项层析结果示意图DNS-Cl能与所有的氨基酸生成具荧光的衍生物,其中赖氨酸、组氨酸、酪氨酸、天冬酰胺等氨基酸可生成双DNS-氨基酸衍生物。

这些衍生物相当稳定,可用于蛋白质的氨基酸组成的微量分析,灵敏度可达10-10~10-9mol水平,比茚三酮法高10倍以上,比过去常用的FDNB 法高100倍。

将Edman法和DNS法结合起来(称为Edman-DNS法)应用于蛋白质结构的序列分析上作,可以提高Edman法的灵敏度及其分析速度。

DNS-Cl在pH过高时,水解产生副产物DNS-OH,即:图3:DNS-Cl在pH过高水解产生DNS-OH在DNS-Cl过量时,会产生DNS-NH2,即:图4:DNS-Cl过量产生DNS-NH2DNS-氨基酸在紫外光照射下呈现黄绿色荧光,而DNS-OH和DNS-NH2产生蓝色荧光,可彼此区分开。

DNS-氨基酸可用聚酰胺薄膜层析法进行分离和鉴定,在薄膜上检测灵敏度为0.01ug(相当于10—10mol)。

由于它具有灵敏度高,分辨力强,快速,操作方便等优点,已被广泛应用于各种化合物的分析。

层析法是利用混合物中各组分物理化学性质的差异(如吸附力、分子形状及大小、分子亲和力、分配系数等),使各组分在两相(一相为固定的,称为固定相;另一相流过固定相,称为流动相)中的分布程度不同,即各组分所受的固定相的阻力和流动相的推力影响不同,从而使各组分以不同的速度移动而达到分离的目的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件学院操作系统实验报告实验题目:实验六、死锁问题实验学号:201100300124日期:2013年05月23日班级:5班姓名:韩俊晓Email:hanjunxiao188@实验目的:通过本实验观察死锁产生的现象,考虑解决死锁问题的方法。

从而进一步加深对于死锁问题的理解。

掌握解决死锁问题的几种算法的编程和调试技术。

练习怎样构造管程和条件变量,利用管程机制来避免死锁和饥俄问题的发生。

实验要求:在两个城市南北方向之间存在一条铁路,多列火车可以分别从两个城市的车站排队等待进入车道向对方城市行驶,该铁路在同一时间,只能允许在同一方向上行车,如果同时有相向的火车行驶将会撞车。

请模拟实现两个方向行车,而不会出现撞车或长时间等待的情况。

您能构造一个管程来解决这个问题吗?硬件环境:实验室计算机软件环境:Ubuntu08.4-Linux操作系统BASH_VERSION='3.2.33(1)-releasegcc version 4.1.2gedit 2.18.2OpenOffice 2.3实验步骤:1.实验说明:管程-Monitor管程是一种高级抽象数据类型,它支持在它的函数中隐含互斥操作。

结合条件变量和其他一些低级通信原语,管程可以解决许多仅用低级原语不能解决的同步问题。

利用管程可以提供一个不会发生死锁或饥饿现象的对象;哲学家就餐问题和Java语言中的synchronized对象都是很好的管程的例子.管程封装了并发进程或线程要互斥执行的函数。

为了让这些并发进程或线程在管程内互斥的执行,进入管程的进/线程必须获取到管程锁或二值信号量条件变量Condition Variables条件变量提供了一种对管程内并发协作进程的同步机制。

如果没有条件变量,管程就不会有很有用。

多数同步问题要求在管程中说明条件变量。

条件变量代表了管程中一些并发进程或线程可能要等待的条件。

一个条件变量管理着管程内的一个等待队列。

如果管程内某个进程或线程发现其执行条件为假,则该进程或线程就会被条件变量挂入管程内等待该条件的队列。

如果管程内另外的进程或线程满足了这个条件,则它会通过条件变量再次唤醒等待该条件的进程或线程,从而避免了死锁的产生。

所以,一个条件变量C应具有两种操作C.wait()和C.signal()。

当管程内同时出现唤醒者和被唤醒者时,由于要求管程内的进程或线程必须互斥执行,因此就出现了两种样式的条件变量:Mesa Style(signal-and-continue):唤醒者进程或线程继续执行,被唤醒者进程或线程等到唤醒者进程或线程阻塞或离开管程后再执行。

Hoare Style(signal-and-wait):被唤醒者进程或线程立即执行,唤醒者进程或线程阻塞,直道被唤醒者阻塞或离开管程后再执行。

实验6单行道(过桥)问题可以通过管程很好的解决。

可以把单行道/桥封装为一个管程类,桥上通过的车辆是进入管程的进/线程,可以通过创建多个车辆进/线程并随机产生它们的行进方向,并指定桥上可同时行驶的车辆的个数来模拟该问题的各种现场随机情况。

一个正确的实验结果应能实现在各种随机现场情况下车辆进程不会逆向上桥(死锁),也不会使车少方向上的车辆无机会上桥(饥饿).在linux系统中可以利用进程间通信(interprocess communication )IPC 中的3个对象:共享内存、信号灯数组、消息队列,来解决协作并发进程间的同步与互斥的问题。

1)共享内存是OS内核为并发进程间交换数据而提供的一块内存区(段)。

如果段的权限设置恰当,每个要访问该段内存的进程都可以把它映射到自己私有的地址空间中。

如果一进程更新了段中数据,那么其他进程立即会看到这一更新。

进程创建的段也可由另一进程读写。

linux中可用命令ipcs -m 观察共享内存情况。

$ ipcs -m------SharedMemory Segments --------key shmid owner perms bytes nattch status0x00000000 327682 student 600 393216 2 dest0x00000000 360451 student 600 196608 2 dest0x00000000 393220 student 600 196608 2 destkey共享内存关键值shmid共享内存标识owner共享内存所由者(本例为student)perm共享内存使用权限(本例为student可读可写)byte共享内存字节数nattch共享内存使用计数status共享内存状态上例说明系统当前已由student建立了一些共享内存,每个都有两个进程在共享。

2)信号灯数组是OS内核控制并发进程间共享资源的一种进程同步与互斥机制。

linux中可用命令ipcs -s 观察信号灯数组的情况。

$ ipcs -s------SemaphoreArrays --------key semid owner perms nsems0000000 163844 apache 600 10x4d00f259 294920 beagleind 600 80x00000159 425995 student 644 1semid信号灯的标识号nsems信号灯的个数其他字段意义同以上共享内存所述。

上例说明当前系统中已经建立多个信号灯。

其中最后一个标号为425996是由student建立的,它的使用权限为644,信号灯数组中信号灯个数为1个。

3)消息队列是OS内核控制并发进程间共享资源的另一种进程同步机制。

linux中可用命令ipcs -q 观察消息队列的情况。

$ipcs -q------Message Queues --------key msqid owner perms used-bytes messages0x000001c8 0 root 644 8 1 msgmid消息队列的标识号used-bytes 消息的字节长度messages 消息队列中的消息条数其他字段意义与以上两种机制所述相同。

上例说明当前系统中有一条建立消息队列,标号为0,为root所建立,使用权限为644,每条消息8个字节,现有一条消息。

4) 在权限允许的情况下您可以使用ipcrm命令删除系统当前存在的IPC对象中的任一个对象。

ipcrm -m 21482删除标号为21482的共享内存。

ipcrm -s 32673删除标号为32673的信号灯数组。

ipcrm -q 18465删除标号为18465的消息队列。

5) 在linux的proc文件系统中有3个虚拟文件动态记录了由以上ipcs命令显示的当前IPC对象的信息,它们分别是:/proc/sysvipc/shm共享内存/proc/sysvipc/sem信号量/proc/sysvipc/msg消息队列我们可以利用它们在程序执行时获取有关IPC对象的当前信息。

6) IPC对象有关的系统调用函数原型都声明在以下的头文件中:#include <sys/types.h>#include <sys/ipc.h>创建一段共享内存系统调用语法:#include <sys/shm.h>int shmget(key_t key,int size,int flags);key 共享内存的键值,可以为IPC_PRIVATE,也可以用整数指定一个size 共享内存字节长度flags 共享内存权限位。

s hmget调用成功后,如果key用新整数指定,且flags中设置了IPC_CREAT位,则返回一个新建立的共享内存段标识符。

如果指定的key已存在则返回与key关联的标识符。

不成功返回-1令一段共享内存附加到调用进程中的系统调用语法:#include <sys/shm.h>char *shmat(int shmid, char *shmaddr,int flags)shmid 由shmget创建的共享内存的标识符shmaddr 总为0,表示用调用者指定的指针指向共享段flags 共享内存权限位shmat调用成功后返回附加的共享内存首地址令一段共享内存从到调用进程中分离出去的系统调用语法:#include <sys/shm.h>int shmdt(char *shmadr);shmadr进程中指向附加共享内存的指针shmdt调用成功将递减附加计数,当计数为0,将删除共享内存。

调用不成功返回-1。

创建一个信号灯数组的系统调用有语法:#include <sys/sem.h>int semget(key_t key,int nsems, int flags);key 信号灯数组的键值,可以为IPC_PRIVATE,也可以用整数指定一个nsems 信号灯数组中信号灯的个数flags 信号灯数组权限位。

如果key用整数指定,应设置IPC_CREAT 位。

semget调用成功,如果key用新整数指定,且flags中设置了IPC_CREAT 位,则返回一个新建立的信号等数组标识符。

如果指定的整数key已存在则返回与key关联的标识符。

不成功返回-1操作信号灯数组的系统调用语法:#include <sys/sem.h>int semop(int semid,struct sembuf *semop, unsigned nops);semid 由semget创建的信号灯数组的标识符semop 指向sembuf数据结构的指针nops 信号灯数组元素的个数。

semop调用成功返回0,不成功返回-1。

控制信号灯数组的系统调用语法:#include <sys/sem.h>int semctl(int semid,int semnum,int cmd, union semun arg);semid 由semget创建的信号灯数组的标识符semnum 该信号灯数组中的第几个信号灯cmd 对信号灯发出的控制命令。

例如:GETVAL 返回当前信号灯状态SETVAL 设置信号灯状态IPC_RMID删除标号为semid的信号灯arg 保存信号灯状态的联合体,信号灯的值是其中一个基本成员union semun {int val; /* value for SETVAL */......};semctl 执行不成功返回-1,否则返回指定的cmd的值。

创建消息队列的系统调用语法:#include<sys/msg.h>int msgget(key_t key,int flags)key 消息队列的键值,可以为IPC_PRIVATE,也可以用整数指定一个flags 消息队列权限位。

相关文档
最新文档