山东大学操作系统OS作业1-5分析复习进程
2022年山东大学软件工程专业《操作系统》科目期末试卷A(有答案)
2022年山东大学软件工程专业《操作系统》科目期末试卷A(有答案)一、选择题1、假设5个进程P0、P1、P2、P3、P4共享3类资源R1、R2、R3.这些资源总数分别为18、6、22。
T0时刻的资源分配情况(见表),此时存在的一个安全序列是()。
A. P0, P2, P4, P1, P3B. P1, P0, P3, P4, P2C. P2, P1, P0, P3, P4D. P3, P4, P2, P1, P02、用户程序在口态下使用特权指令引起的中断属于()。
A.硬件故障中断B.程序中断C.外部中断D.访管中断3、一个进程被唤醒意味着()。
A.该进程可以重新占用CPUB.优先级变为最大C.PCB移到就绪队列之首D.进程变为运行态4、下列进程调度算法中,综合考虑进程等待时间和执行时间的是()A.时间片轮转调度算法B.短进程优先调度算法C.先来先服务调度算法D.高响应比优先调度算法5、进程和程序的本质区别是()A.前者分时使用CPU,后者独占CPUB.前者存储在内存,后者存储在外存C.前者在一个文件中,后者在多个文件中D.前者为动态的,后者为静态的6、采用SPOOLing技术后,使得系统资源利用率()。
A.提高了B.有时提高,有时降低C.降低了D.提高了,但出错的可能性增人了7、某计算机按字节编址,其动态分区内存管理采用最佳适应算法每次分配和回收内存后都对空闲分区链重新排序。
当前空闲分区信息见表3-12。
回收起始地址为60K、大小为140KB的分区后,系统中空闲分区的数量、空闲分区链第一个分区的起始地址和大小分别是()。
A.3,20K,380KBB.3,500K,80KBC.4,20K,180KBD.4,500K,80KB8、考虑一个文件存放在100个数据块中。
文件控制块、索引块或索引信息都驻留内存。
那么如果().不需要做任何磁盘I/O操作。
A.采用连续分配策略,将最后一个数据块搬到文件头部,B.采用单级索引分配策略,将最后一个数据块插入文件头部C.采用隐式链接分配策略,将最后一个数据块插入文件头部D.采用隐式链接分配策略,将第一个数据块插入文件尾部,9、在文件系统中,若文件的物理结构采用连续结构,则文件控制块FCB中有关文件的物理位置的信息包括(),I.首块地址 II.文件长度 III.索引表地址A.只有IIIB. I和IIC. II和IIID. I和III10、在分页虚拟存储管理中,“二次机会”调度策略和“时钟”调度策略在决定淘汰哪一页时,都用到了()。
山东大学操作系统实验二
软件学院操作系统实验报告实验题目:实验二、线程和进程/线程管道通信实验学号: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 函数的替代函数,通过更多的控制父子进程共享哪些资源而实现了线程。
山东大学操作系统期末试题回忆
2017年6月山东大学计算机学院计算机网络期末考试试题回顾
一、名词解释,每题五分
抢占
RAID
虚拟机
spooling
虚拟文件系统
二、每题十分
1.什么是颠簸,利用工作集合模型限制颠簸的原理
2.画图说明在分页内存管理中是如何分享页面的,并说明分享代码与分享数据需要注意什么问题
3.
4. (1)用户给出文件名,文件系统如何找到它的FCB
(2)写出三种磁盘分配方法下FCB是如何找到文件的物理地址的
三、每题十分
1.给出类似于课本的两个进程,问是否会发生死锁,如果会发生死锁,修改代码并说明原因
2.结合你所学的计算机知识,简述保护的概念(从硬件执行、文件管理、存储管理、设备管理、进程同步等方面回答)
3.信号量问题。
假设操场上共有22个名额,有两个体育活动A和B,规定当在操场上的人数不大于22时可以参与活动,否则需要等待。
如果A的人数比B的人数多5人以上,参加A活动的需要等待;同理,如果B的人数比A的人数多5人以上,参加B活动的需要等待。
参加A和B活动的可随时退出。
根据“参与A”“退出A”“参与B”“退出B”和相应的信号量写出伪代码。
4.给出一段代码,父进程创建子进程,子进程创建两个线程,分析3个输出语句应该输出的值并说明原因。
试题凭记忆回顾,难免有错误,请见谅
by LYK。
山东大学操作系统实验报告3进程调度算法实验
计算机科学与技术学院实验报告
3) 输入make命令编译连接生成可执行的
psched程序$gmake
gcc -g -c experime nt3.c
gcc psched.o -o psched
4)
执行psched程序
分析:
根据以上示例程序和独立实验程序中观察和记录的信息,说明它们反映出操作系统教材中讲解的哪些进程调度调度策略和功能?在真实的操作系统中它是怎样实现教材中讲解的进程调度效果的。
先进先出算法
算法总是把处理机分配给最先进入就绪队列的进程,一个进程一旦分得处理机,便一直执行下去,直到该进程完成或阻塞时,才释放处理机。
最高优先权(FPF)优先调度算法
该算法总是把处理机分配给就绪队列中具有最高优先权的进程。
常用以下两种方法来确定进程的优先权:
轮转法
前几种算法主要用于批处理系统中,不能作为分时系统中的主调度算法,在分时系统中,都采用时间片轮转法。
体会:
1. 实验中定义的函数一定要考虑好函数的参数问题,这样才不会出现一些不必要的错误;
2. 对于一些要忽略的信号要忽略掉,免得影响后面的响应过程。
山东大学操作系统复习题计算题
操作系统计算题(2)对于上述算法,各个作业的周转时间是多少?平均周转时间是多少?(3)对于上述算法,各个作业的带权周转时间是多少?平均带权周转时间是多少二、有两个程序,A程序按顺序使用CPU 10S,使用设备甲5S,使用CPU 5S,使用设备乙10S,最后使用CPU 10S。
B程序按顺序使用设备甲10S,使用CPU 10S,使用设备乙5S,使用CPU 5S,使用设备乙10S。
在顺序环境下先执行A程序再执行B程序,CPU的利用率是多少?提示:CPU利用率=CPU 运行时间/程序运行时间。
三、在单机系统中,系统中各个进程到达就绪队列的时刻、执行时间和优先级如下表所示。
假设进程的调度时间忽略不计。
请分别给出采用下面不同的进程调度算法时各个进程的调度次序,画出执行时(1)先来先服务调度算法;(2)时间片轮换调度算法(时间片为1ms);(3)抢占式短进程优先调度算法;(4)抢占式优先级调度算法;(5)非抢占式优先级调度算法。
(2)用一个执行时间图描述在RR算法时(不考虑优先级),执行这些作业的情况(时间片为1单位)。
五、设系统中只有一台打印机,有三个用户的程序在执行过程中都要使用打印机输出计算结果。
设每个用户程序对应一个进程。
问:这三个进程间有什么样的制约关系?试用P 、V 操作写出这些进程使用打印机的算法。
六、有三个进程P1,P2和P3并发工作。
进程P1需用资源S3和S1;进程P2需用资源S1和S2;进程P3需用资源S2和S3。
回答:(1)若对资源分配不加限制,会发生什么情况?为什么?(2)为保证进程正确工作,应采用怎样的资源分配策略?为什么? 七、用信号灯及P 、V 操作来描述右图 1、说明进程的同步关系:2、设置信号灯,说明含义、初值。
3、写出程序描述( 用P 、V 操作描述 P1、P2、P3)。
主函数如下:main(){int s13=0,s23=0; cobegin p1; p2; p3; coend}八、假定系统中有4个进程P1、P2、P3、P4和3种类型的资源R1、R2、R3,数量分别为9、3、6,在t0时刻的资源分配情况如表所示。
山东大学操作系统问答题
1、操作系统:操作系统是一组控制和管理计算机硬件和软件资源、合理地对各类作业进行调度,以及方便用户的程序的集合。
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。
2、三种系统:批处理系统:用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业(jobs)之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,系统自动、依次执行每个作业。
最后由操作员将作业结果交给用户。
优点:作业流程自动化; 效率高吞吐量高缺点:无交互手段调试程序困难实时系统:实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。
分时系统:操作系统将CPU的时间划分成若干个片段,称为时间片。
操作系统以时间片为单位,在用户间快速切换,轮流为每个终端用户服务,每次服务一个时间片。
系统的快速切换使用户感到整个系统只为自己所用。
优点:多道性、同时性、独立性、及时性、交互性3、PCB系统为了管理进程设置的一个专门的数据结构,用它来记录进程的外部特征,描述进程的运动变化过程,包含与一个特定进程相关的信息:进程状态、程序计数器、cpu 寄存器、cpu 调度信息、内存管理信息、记账信息和IO 状态信息。
系统利用PCB 来控制和管理进程,所以PCB 是系统感知进程存在的唯一标志。
进程与PCB是一一对应的4、论述短期,中期和长期调度之间的区别:a.短期调度:在内存作业中选择就绪执行的作业,并为他们分配CPU。
b•中期调度:作为一种中等程度的调度程序,尤其被用于分时系统,一个交换方案的实施,将部分运行程序移出内存,之后,从中断处继续执行。
c.长期调度(作业调度程序):从进程的缓冲池中,确定哪些作业调入内存以执行它们主要的不同之处是它们的执行的频率。
短期调度必须经常调用一个新进程,由于在系统中,长期调度处理移动的作业时,并不频繁被调用,可能在进程离开系统时才被唤起。
山大操作系统实验1
操作系统原理实验报告——实验一张咪软件工程四班一、实验目的加深对于进程并发执行概念的理解。
实践并发进/线程的创建和控制方法。
观察和体验进程的动态特性。
进一步理解进程生命期期间创建、变换、撤销状态变换的过程。
掌握进程控制的方法,了解父子进程间的控制和协作关系。
练习Linux系统中进/线程创建与控制有关的系统调用的编程和调试技术。
实验要求编写一个多进程并发执行程序。
父进程每隔3秒重复建立两个子进程,首先创建的让其执行ls 命令,之后创建执行让其执行ps命令,并控制ps命令总在ls命令之前执行。
三、实验软硬件环境实验环境均为Linux操作系统,开发工具为gcc和g++。
四、实验思路调用fock()创建子进程。
创建键盘中断信号后,使用pause()可以暂停子进程执行,继续创建新的子进程。
子进程并发执行子进程可以首先通过键盘中断信号唤醒子进程。
通过exec()调用族装入一个新的执行程序。
在建立子进程2并且唤醒子进程1后子进程sleep(seconds = 5)。
这样就可以先执行ps后执行ls。
最后就是父进程的结束,程序结束。
五、实验模型六、调试排错1、首先遇到的问题是,对linux的操作不熟悉,不太明白makefile怎么使用,直接用了gcc2、在创建多个子进程上遇到了问题,在fock()后又直接跟了一个fork(),这样创建的子进程是子进程的子进程,而不是父进程创建的第二个子进程。
所以应该在else语句块后面,也就是主进程执行段继续创建。
一般情况下,fork()按如下规则编程:main(){ pid_t pid;pid=fork();if(pid<0){n",getpid());}}}}}return (EXIT_SUCCESS);}#include<sys/>#include<>#include<>#include<>#include<>#include<>typedef void(*sighandler_t)(int);void sigcat(){printf("Process continue\n");}。
山东大学操作系统实验报告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的一些行为,利用系统调用来创建共享内存区域,并设定他的长度并获取共享内存的首地址。
(完整)山东大学操作系统实验一实验报告
(完整)山东大学操作系统实验一实验报告
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)山东大学操作系统实验一实验报告)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)山东大学操作系统实验一实验报告的全部内容。
操作系统课程设计实验报告
结论分析与体会:
通过这次实验,我熟悉了操作系统实验的环境,进一步了解了Nachos的构成,对我以后顺利熟练的完成操作系统实验有很大的帮助!。
山东大学软件工程OS实验3实验报告
实验三进程调度算法实验姓名:班级:学号:1.1实验目的加深对进程调度概念的理解,体验进程调度机制的功能,了解 Linux 系统中进程调度策略的使用方法。
练习进程调度算法的编程和调试技术。
1.2试验环境:linux系统1.3实验步骤(1)在新建文件夹中建立以下名为 psched.c的C语言程序/** Filename : psched.c 独立实验*/#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <signal.h>#include <stdio.h>#include <stdlib.h>#include <sched.h>#include <sys/time.h>#include <sys/resource.h>//进程处理信号SIGTSTP的方法,将优先级减1void handler1(){setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)-1);}//进程处理信号SIGTNT的方法,将优先级加1void handler2(){setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)+1);}int main(int argc, char *argv[]){int pid; //存放进程号struct sched_param p; //设置调度策略时使用的数据结构//父进程循环报告其优先数和调度策略if((pid=fork()) >0){signal(SIGTSTP,handler1);//注册处理ctrl+z的信号量signal(SIGINT,handler2);//注册处理ctrl+c的信号量setpriority(PRIO_PROCESS,pid,10);// 设置子进程优先数setpriority(PRIO_PROCESS,getpid(),10);// 设置父进程优先数sleep(1);//不断循环输出各自进程号、优先数和调度策略while(1) {printf("Parent PID = %d priority = %d policy is %d\n",getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(getp id()));sleep(3);}}//子进程循环报告其优先数和调度策略else{signal(SIGTSTP,handler1);//注册处理ctrl+z的信号量signal(SIGINT,handler2);//注册处理ctrl+c的信号量//不断循环输出各自进程号、优先数和调度策略while(1){printf("Child PID = %d priority = %d policy is %d\n",getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(pid) );sleep(3);}exit( EXIT_SUCCESS);}return EXIT_SUCCESS;}(3)再建立程序的Makeflie文件:srcs = psched.cobjs = psched.oopts = -g -call: pschedpsched: $(objs)gcc $(objs) -o pschedpsched.o: $(srcs)gcc $(opts) $(srcs)clean:rm psched *.o(4)使用make命令编译连接生成可执行文件psched:$ gmakegcc -g -c psched.cg c c psched.o -o psched(5)改变到 root 用户$ su口令:123#(5)运行psched:# ./psched1.4实验体会(1)错误的尝试:由于自己对于C语言的了解不足,有思路但却无法实现代码。
山东大学操作系统实验报告完整版
山东大学操作系统实验报告HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】操作系统实验报告计算机科学与技术学院目录一、进程控制实验实验目的加深对于进程并发执行概念的理解。
实践并发进程的创建和控制方法。
观察和体验进程的动态特性。
进一步理解进程生命期期间创建、变换、撤销状态变换的过程。
掌握进程控制的方法,了解父子进程间的控制和协作关系。
练习 Linux 系统中进程创建与控制有关的系统调用的编程和调试技术。
示例实验实验内容以下实验示例程序应实现一个类似shell 子命令的功能,它可以从执行程序中启动另一个新的子进程并执行一个新的命令和其并发执行。
实验演示结果独立实验实验内容参考以上示例程序中建立并发进程的方法,编写一个父子协作进程,父进程创建一个子进程并控制它每隔 3 秒显示一次当前目录中的文件名列表。
实验步骤算法设计通过进程间的通讯,先创建一个父进程一个子进程,父进程沉睡3秒,子进程作为当前父进程再次创建一个他的子进程,当前子进程执行显示当前目录文件列表功能,执行execve()方法后死亡。
While(1)在死循环里无限进行当前操作。
即达到父进程创建一个子进程并控制它每隔3秒显示一次当前目录中的文件名列表的要求。
开发调试过程打开一终端命令行窗体,新建一个文件夹,在该文件夹中建立名为的C 语言程序;再建立以下名为的 C 语言头文件;建立项目管理文件 Makefile;输入 make 命令编译连接生成可执行的 pctl 程序;执行 pctl 程序;再次执行带有子进程指定执行命令的 pctl 程序。
思考与分析1.反映的进程的特征和功能,在真实的操作系统中是怎样实现和反映出教材中讲解的进程的生命期、进程的实体和进程状态控制的。
对于进程概念和并发概念有哪些新的理解和认识子进程是如何创建和执行新程序的答:进程是一个可并发执行的程序在某数据集上的一次运行,是程序的一次运行过程。
山东大学操作系统实验一
软件学院操作系统实验报告实验题目:实验一、进程控制实验学号:201100300124日期:2013年04月12日班级:5班姓名:韩俊晓Email:hanjunxiao188@实验目的:加深对于进程并发执行概念的理解。
实践并发进程的创建和控制方法。
观察和体验进程的动态特性。
进一步理解进程生命期期间创建、变换、撤销状态变换的过程。
掌握进程控制的方法,了解父子进程间的控制和协作关系。
练习Linux系统中进程创建与控制有关的系统调用的编程和调试技术。
实验要求:编写一个多进程并发执行程序。
父进程首先创建一个执行ls命令的子进程然后再创建一个执行ps命令的子进程,并控制ps命令总在ls 命令之前执行。
硬件环境:实验室计算机软件环境:Ubuntu08.4-Linux操作系统BASH_VERSION='3.2.33(1)-releasegcc 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>intexecve(const char *path, const char *argv[], const char * envp[]); path 要装入的新的执行文件的绝对路径名字符串.argv[] 要传递给新执行程序的完整的命令参数列表(可以为空). envp[] 要传递给新执行程序的完整的环境变量参数列表(可以为空). Exec执行成功后将用一个新的程序代替原进程,但进程号不变,它绝不会再返回到调用进程了。
山东大学操作系统实验5进程互斥实验
sem_id
*
输入参数:
* sem_key
信号灯数组的键值
* sem_val
信号灯数组中信号灯的个数
* sem_flag
信号等数组的存取权限
*/
int set_sem(key_t sem_key,int sem_val,int sem_flg) {
int sem_id;
Sem_uns sem_arg;
pput_key[0]=105;
buff_key[1]=106;
pput_key[1]=107;
prod_key = 201;
pmtx_key = 202;
cons_key = 301;
cmtx_key = 302;
shm_flg=IPC_CREAT|0644;
sem_flg = IPC_CREAT | 0644;
#define BUFSZ 256
int get_ipc_id(char *proc_file,key_t key);
char *set_shm(key_t shm_key,int shm_num,int shm_flag);
int set_msq(key_t msq_key,int msq_flag);
exit(EXIT_FAILURE);
}
if((shm_buf = (char *)shmat(shm_id,0,0)) < (char *)0) {
perror("get shareMemory error");
exit(EXIT_FAILURE);
}
for(i=0; i<shm_num; i++)
3、分析清楚实验要求,便开始用编程语言进行编程,将分析的思路用编程语言实现。
山大操作系统实验-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};
山东大学操作系统试验-3
软件学院实验报告实验题目:进程调度算法实验学号:20100030xxxx日期:2012-5-2班级:五班姓名:Email:实验目的:加深对进程调度概念的理解,体验进程调度机制的功能,了解Linux 系统中进程调度策略的使用方法。
练习进程调度算法的编程和调试技术。
硬件环境:IBM实验室计算机软件环境:eclipse gcc编译器Ubuntu-Linux操作系统Gnome桌面实验步骤:1.认真阅读试验指导书所给出的相关知识与示例程序,在此基础上分析独立试验要求,然后着手开始编写程序。
2.用eclipse新建一个c project。
3.新建source folder4.新建名为psched.c的C语言程序5.再建立以下名为psched.h的C语言头文件6.build项目,产生可运行的二进制文件。
7.对程序进行调试,排除bug。
8.进入终端,运行程序,结果如下图所示:源代码:#include"psched.h"int main(int argc,char*argv[]){int pid;//存放⼦进程号struct sched_param p1;//设置⼦进程调度策略时使⽤的数据结构struct sched_param p2;//设置⽗进程调度策略时使⽤的数据结构if((pid=fork())<0){perror("process not create");exit(EXIT_FAILURE);}else if(pid==0){signal(SIGTSTP,handler1);//注册⼀个处理ctrl+z的信号量,将优先级减⼀signal(SIGINT,handler3);//注册⼀个处理ctrl+c的信号量,什么也不做sleep(1);while(1){printf("Child PID=%d priority=%d policy is%d\n",getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(getpid()));sleep(3);}}else{signal(SIGINT,handler2);//注册⼀个处理ctrl+c的信号量,将优先级加⼀signal(SIGTSTP,handler4);//注册⼀个处理ctrl+z的信号量,什么也不做sched_setscheduler(pid,SCHED_OTHER,&p1);sched_setscheduler(getpid(),SCHED_OTHER,&p2);setpriority(PRIO_PROCESS,pid,10);setpriority(PRIO_PROCESS,getpid(),10);sleep(1);while(1){printf("Parent PID=%d priority=%d policy is%d\n",getpid(),getpriority(PRIO_PROCESS,0),sched_getscheduler(getpid()));sleep(3);}}return EXIT_SUCCESS;}#include<stdio.h>#include<stdlib.h>#include<sched.h>#include<sys/time.h>#include<sys/resource.h>#include<unistd.h>#include<signal.h>//⼦进程处理信号SIGTSTP的⽅法,将优先级减⼀void handler1(){setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)-1); }//⽗进程处理信号SIGINT的⽅法,将优先级加⼀void handler2(){setpriority(PRIO_PROCESS,getpid(),getpriority(PRIO_PROCESS,0)+1);}void handler3(){}void handler4(){}结论分析与体会:通过编写进程调度试验,首先,我更加熟练了如何编写多进程程序,更加了解了型号量的注册和使用方法。
山东大学操作系统作业第一次
3.1短期调度:从就绪可执行的进程中选择进程,并为其中之一分配CPU;中期调度:特别用于分时系统中作为中等程度调度程序。
能将进程移出内存,(或移出对CPU的激烈竞争),因此降低躲到程序设计的程度。
之后进程能重新被调入内存,并从中断处继续执行。
长期调度:从缓冲池中选择进程,并将它们装入内存进行执行。
它们的主要区别是执行的频率。
短期调度必须频繁的为CPU选择新进程的执行。
长期调度程序执行并不频繁,用于控制躲到程序设计的程度,即内存中进程的数量。
中期调度程序介于两者之间。
3.4当控制回到父进程的时候,他的值会保持在5,子进程将更新并拷贝这个值。
父进程的返回值为子进程的进程标识符(非零),对于子进程系统调用fork()之后返回值为0,所以pid为0时执行的为子进程,并且附近长采用系统调用wait()把自己移出就绪队列来等待子进程的终止。
4.1(1)一个计算个人报酬的程序。
任何形式的顺序程序对多线程来说都不是一个好的形式。
(2)“空壳”程序,如C-shell和korn shell。
这种程序必须密切监测其本身的工作空间。
如打开的文件,环境变量和当前工作目录。
4.4一个线程程序的线程共享堆内存和全局变量,但是每个线程都有自己的一组寄存器和栈内存。
4.7 c行输出5,p行输出0。
5.5最短工作优先调度和优先级调度算法会引起饥饿。
5.10:a.FCFS----区别短任务是因为任何在长任务后到达的短任务都将会有很长的等待时间。
b.RR-----对所有的任务都是能够相同的(给它们相同的CPU时间区间),所以,短任务可以很快的离开系统,只要它们可以先完成。
c. 多级反馈队列和RR调度算法相似——它们不会先选择短任务。
5.4(1)FCFS:11 13 14SJF:非抢占优先调度:RR:(时间片=1)(2)周转时间:(3)等待时间:(4)SJF的平均等待时间最少。
5.5最短共组偶优先调度和优先调度算法会引起饥饿。
5.10FCFS:区别短任务是因为在任何长任务后到达短任务都将会有很长的等待时间。
(完整word版)山东大学操作系统复习题计算题
操作系统计算题一、假定在单CPU条件下有下列要执行的作业:(2)对于上述算法,各个作业的周转时间是多少?平均周转时间是多少?(3)对于上述算法,各个作业的带权周转时间是多少?平均带权周转时间是多少二、有两个程序,A程序按顺序使用CPU 10S,使用设备甲5S,使用CPU 5S,使用设备乙10S,最后使用CPU 10S。
B程序按顺序使用设备甲10S,使用CPU 10S,使用设备乙5S,使用CPU 5S,使用设备乙10S。
在顺序环境下先执行A程序再执行B程序,CPU的利用率是多少?提示:CPU利用率=CPU运行时间/程序运行时间。
三、在单机系统中,系统中各个进程到达就绪队列的时刻、执行时间和优先级如下表所示。
假设进程的调度时间忽略不计。
请分别给出采用下面不同的进程调度算法时各个进程的调度次序,画出执行时间图,并计算平均周转时间、平均带权周转时间。
(1)先来先服务调度算法;(2)时间片轮换调度算法(时间片为1ms);(3)抢占式短进程优先调度算法;(4)抢占式优先级调度算法;(5)非抢占式优先级调度算法。
(2)用一个执行时间图描述在RR算法时(不考虑优先级),执行这些作业的情况(时间片为1单位)。
五、设系统中只有一台打印机,有三个用户的程序在执行过程中都要使用打印机输出计算结果。
设每个用户程序对应一个进程。
问:这三个进程间有什么样的制约关系?试用P、V操作写出这些进程使用打印机的算法。
六、有三个进程P1,P2和P3并发工作。
进程P1需用资源S3和S1;进程P2需用资源S1和S2;进程P3需用资源S2和S3。
回答:(1)若对资源分配不加限制,会发生什么情况?为什么?(2)为保证进程正确工作,应采用怎样的资源分配策略?为什么?七、用信号灯及P、V操作来描述右图1、说明进程的同步关系:2、设置信号灯,说明含义、初值。
3、写出程序描述(用P、V操作描述P1、P2、P3)。
主函数如下:main(){int s13=0,s23=0;cobeginp1;p2;p3;coend}八、假定系统中有4个进程P1、P2、P3、P4和3种类型的资源R1、R2、R3,数量分别为9、3、6,在t0时刻的资源分配情况如表所示。
2022年山东大学计算机科学与技术专业《操作系统》科目期末试卷A(有答案)
2022年山东大学计算机科学与技术专业《操作系统》科目期末试卷A(有答案)一、选择题1、下面关于文件的叙述中,错误的是()。
I.打开文件的主要操作是把指定文件复制到内存指定的区域II.对一个文件的访问,常由用户访问权限和用户优先级共同限制III.文件系统采用树形片录结构后,对于不同用户的文件,其文件名应该不同IV.为防止系统故障造成系统内文件受损,常采用存取控制矩阵方法保护文件A.仅IB. 仅I、IIIC.仅I、III、IVD.I、II、III,IV2、某文件系统物理结构采用三级索引分配方法,如果每个磁盘块的大小为1024B.每个盘块索引号占用4B,请问在该文件系统中,最大文件的大小最接近的是()A.8GBB.16GBC.32GBD.2TB3、死锁与安全状态的关系是()。
A.死锁状态有可能是安全状态B.安全状态有可能成为死锁状态C.不安全状态就是死锁状态D.死锁状态一定是不安全状态4、在单处理器的多进程系统中,进程切换时,何时占用处理器和占用多长时间取决于()A.进程响应程序段的长度B.进程总共需要运行时间的长短C.进程自身和进程调度策略D.进程完成什么功能5、某计算机系统中有8台打印机,有K个进程竞争使用,每个进,程最多需要3台打印机,该系统可能会发生死锁的K的最小值是()A.2B.3C.4D.56、操作系统中为实现多道程序并发,对内存管理可以有多种方式,其中代价最小的是()A.分区管理B.分页管理C.分段管理D.段页式管理7、假定有个请求分页存储管理系统,测得系统各相关设备的利用率为:CPU为10%,磁盘交换区为99.7%:其他1/O设备为5%。
试问:下面()措施可能改进CPU的利用率?I.增大内存的容量II.增人磁盘交换区的容量III.减少多道程序的度数IV.增加多道程序的度数V.使用更快速的磁盘交换区VI.使用更快速的CPUA.I、II、III、IVB.I、IIC.II、III、VD. II、VI8、 OS通常为用户提供4种使用接口,它们是终端命令、图标菜单、系统调用和()A.计算机高级指令B.宏命令C.类似DOS的批命令文件或UNIX的shell文件D.汇编语言9、下列指令中,不能在用户态执行的是()A.trap指令B.跳转指令C.压栈指令D.关中断指令10、用户程序发出磁盘I/O话求后,系统的处理流程是:用户程序→系统调用处理程序→设备驱动程序→中断处理程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统作业 1-5章
软件5班张** 201200301311
第一章
1.1
a.个人的程序或者数据可能遭到窃取
多人同时使用时可能造成cpu拥堵
b.不能。
所有保护机制都有可能被外人破译,所以共用系统一定没有单独使用系统安全。
1.10
(1)现代操作系统是由中断驱动的,中断可以改变对系统的控制权。
中断可以使一些需要立即响应的进程及时得到处理,并且不影响原进程的运行。
(2)陷阱即为异常,是一种软件中断,源于出错。
而中断不一定是出错,可能是来自I/O的一个命令,可能为硬件中断。
(3)用户可以有意生成陷阱。
目的是为了避免一个进程的错误影响到很多进程,如死循环发生时就可以通过陷阱避免影响。
1.12
操作系统需要在任何时刻都可被控制,故可以构建的安全的操作系统为:
所有用户程序通过软件实现。
所有的程序都有高级编程语言编写,以便所有目标代码都被编译出来
1.17
a.批处理:具有相似需求的作业被成批的集合起来,并把它们作为一个整体通过一个操作员或自动作业程序装置运行通过计算机。
通过缓冲区,线下操作,后台和多道程序,运用尝试保持 CPU 和 I/O 一直繁忙,从而使得性能被提高。
批处理系统对于运行那些需要较少互动的大型作业十分适用。
它们可以被更迟地提交或获得。
b.交互式:这种系统由许多短期交易构成,并且下一个交易的结果是无法预知的。
从用户提交到等待结果的响应时间应该是比较短的,通常为 1 秒左右。
c.分时:分时系统中,CPU通过在作业之间的切换来执行多个作业,但是由于切换的频率很高,用户可以在程序运行期间与之进行交互。
d.实时:系统能够在限定的时间内提供用户要求的服务。
e.网络:提供给操作系统一个特征,使得其进入网络,比如文件共享。
f.并行:有多个紧密通信的CPU,它们共享计算机总线,有时还有时钟,内存,外设等。
g.分布:这种系统在几个物理处理器中分布式计算,处理器不共享内存或时钟。
每个处理器都有它各自的本地存储器。
它们通过各种通信线路在进行通信,比如:一条高速的总线或一个本地的网络。
h.集群:集群系统是由两个或多个独立的系统耦合起来的,将多个CPU集中起来完成计算任务。
集群通常用来提供高可用性服务,即使
集群中的一个或多个系统出错,服务仍然继续。
i.手持:方便性与便携性极强。
但但物理内存与处理器速度都十分受限,而因缺乏物理空间对I/O也有一定限制。
第二章
2.1
(1)一组操作系统服务提供对用户很有用的函数
(2)另一组服务确保系统本身高效运行
第一组服务是针对用户,解决用户需求。
而第二组服务不是以帮助用户为目的
2.3
a.通过寄存器来传递参数
b.参数存放在内存的块或表中,并将块的地址通过寄存器来传递
c.通过程序放在或压入堆栈中,并通过操作系统弹出
2.4
(1)操作系统提供程序的时间表,以表示一个程序在某个位置或某些位置执行所花的时间。
时间表要求具有跟踪功能或定时时间中断,在每次出现定时中断时,会记录程序计数器的值。
如果有足够频繁的时间中断,就可得到程序各部分所用时间的统计。
(2)获得时间简表有助于调试程序,发现程序陷阱。
2.12
(1)优点:便于扩充操作系统,使操作系统容易从一种硬件平台设计移植到另一种硬件平台设计,提供了更好的安全性和可靠性
(2)用户程序和系统服务通过进程间通信机制进行交互,通信以信息传递形式提供。
(3)缺点:微内核必须忍受由于系统功能总开销的增加而导致系统性能的下降
2.14
(1)虚拟机可以在并行运行几个不同的执行环境(操作系统)时能够共享相同的硬件
(2)a.可以通过共享小型磁盘来共享文件,这种方案模拟了共享物理磁盘,但通过软件实现 b.可以定义一个虚拟机的网络,使每台虚拟机通过虚拟通信网络来传递消息
第三章
3.1
a.长期:从大容量存储设备的缓冲池中选择进程,并装入内存以准备执行。
执行的不频繁,控制多道程序设计的程度(内存中进程数量)。
只有当进程离开系统后,才可能调用长期调度程序。
由于每次执行时间较长,长期调度程序能使用更多时间来选择执行进程
b.中期:核心思想是能将进程从内存或从cpu竞争中移出,从而降低多道程序设计的程度。
c.短期:从准备执行的进程中选择进程,并为之分配cpu。
必需频繁的为cpu选择新进程,由于每次执行时间较短,短期调度程序必需快。
3.2
发生上下文切换时,内核会将旧进程的状态保存在其PCB中,然后装入经调度要执行的并已经保存的新进程的上下文。
3.4
当控制回到父进程时,它的值会保持在5,而子进程将更新并拷贝这个值。
3.5
a.对称和非对称通信:对称通信的影响是它允许发送者和接收者之间有一个集合点。
缺点是阻塞发送时,不需要集合点,而消息不能异步传递。
因此,消息传递系统,往往提供两种形式的同步。
b.自动和显式缓冲:自动缓冲提供了一个无限长度的队列,从而保证了发送者在复制消息时不会遇到阻塞,如何提供自动缓存的规范,一个方案也许能保存足够大的内存,但许多内存被浪费缓存明确指定缓
冲区的大小。
在这种状况下,发送者不能在等待可用空间队列中被阻塞。
然而,缓冲明确的内存不太可能被浪费。
c.复制发送和引用发送:复制发送不允许接收者改变参数的状态,引用发送是允许的。
引用发送允许的优点之一是它允许程序员写一个分布式版本的一个集中的应用程序。
Java’s RMI 公司提供两种发送,但引用传递一个参数需要声明这个参数是一个远程对象。
d.固定大小和可变大小消息:涉及的太多是有关缓冲问题,带有定长信息,一个拥有具体规模的缓冲课容纳已知数量的信息缓冲能容纳的可变信息数量是未知的。
考虑Windows 2000如何处理这种情况。
带有定长信息(<256bytes),信息从发送者的地址空间被复制至接受进程的地址空间。
更大的信息(如变长信息)使用共享内存传递信息。
第四章
4.1
多线程会使程序的执行速度降低,但是会减少用户的响应时间
多线程比单线程效率低的例子:
计算某个学生成绩的程序
空壳程序
4.2
用户线程之间的上下文切换和内核线程之间的相互转换非常相似。
但
它依赖于线程库和怎样把用户线程指给内核程序。
一般来说,用户线程之间的上下文切换涉及到用一个用户程序的轻量级进程(L和用另外一个线程来代替。
这种行为通常涉及到寄存器的节约和释放。
4.4
共享堆内存和全局变量
第五章
5.1
操作系统响应I/O请求的速度很慢,所以cpu约束程序执行时间要比I/O约束程序短很多。
如果不加以区别,那么调度算法的效率将受到很大影响,使调度程序执行效率变低。
另外,如果加以区分,cpu和I/O设备的利用率也将得到提高。
5.2
a.响应时间是从提交请求到产生第一响应的时间。
如果单方面要求响应时间提高,就需要cpu及时响应请求,即cpu应该处于相对空闲的状态。
故cpu使用率高和响应时间短一定程度上是矛盾的。
b.周转时间是从进程提交到进程完成,包括等待进入内存、在就绪队列中等待、在cpu上执行和I/O执行。
如果要满足最大等待时间,就不能得到平均周转时间,即产生了矛盾。
c.I/O的使用是由中断产生的,需要不断地进行上下文切换,这对cpu 的使用率产生一定影响,故当I/O使用率很高时cpu使用率不可能很高,反之也成立。
5.4
(1)FCFS p1 p2 p3 p4 p5
0 10 11 13 14 19
周转时间:p1.10 p2.11 p3.13 p4.14 p5.19
等待时间:p1.0 p2.10 p3.11 p4.13 p5.14
(2)SJF
(抢占) p1 p2 p4 p3 p5 p1
0 0 1 2 4 9 19
周转时间:p1.17 p2.1 p3.4 p4.2 p5.9
等待时间:p1.9 p2.0 p3.2 p4.1 p5.4
(3)非抢占优先级 p1 p2 p5 p3 p4
0 10 11 16 18 19
周转时间:p1.10 p2.11 p3.18 p4.19 p5.16
等待时间:p1.0 p2.10 p3.16 p4.18 p5.11
(4)RR p1 p2 p3 p4 p5 p1 p3 p5 p1 p5 p1p5 p1 p5 p1
周转时间:p1.19 p2.2 p3.7 p4.4 p5.14
等待时间:p1.9 p2.1 p3.5 p4.3 p5.9
d.平均等待时间最短的是抢占式的SJF
5.5
短作业优先和优先级会导致饥饿
5.10
a. FCFS:区别短任务是因为任何在长任务后到达的短任务都将会有很长的等待时间。
b. RR:对所有的任务都是能够相同的(给它们相同的CPU时间区间),所以,短任务可以很快的离开系统,只要它们可以先完成。
c.多级反馈队列和RR调度算法相似:它们不会先选择短任务。