山东大学操作系统实验二
- 格式:pdf
- 大小:267.88 KB
- 文档页数:7
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、在分页虚拟存储管理中,“二次机会”调度策略和“时钟”调度策略在决定淘汰哪一页时,都用到了()。
山东大学软件工程专业大二2017-2018学年操作系统期末测试1. 配置了操作系统的计算机是一台比原来的物理计算机功能更强的计算机,这样的计算机只是一台逻辑上的计算机,称为( )计算机。
[单选题] *A.并行B.真实C.虚拟(正确答案)D.共享2. 一个作业第一次执行时用了5min,而第二次执行时用了6min,这说明了操作系统的( )特点。
[单选题] *A.并发性B.共享性C.虚拟性D.异步性(正确答案)3. 按照所起的作用和需要的运行环境,操作系统属于( )。
[单选题] *A.支撑软件B.用户软件C.应用软件D.系统软件(正确答案)4. 操作系统的主要功能是存储器管理、设备管理、文件管理、用户接口和( )。
[单选题] *A.处理器管理(正确答案)B.用户管理C.信息管理D.操作系统管理5. 操作系统是对( )进行管理的软件。
[单选题] *A.软件B.硬件C.计算机资源(正确答案)D.应用程序6. 采用多道程序设计技术可以提高CPU和外部设备的( )。
[单选题] *A.稳定性B.可靠性C.利用率(正确答案)D.兼容性7. 在计算机系统中,操作系统是( )。
[单选题] *A.处于裸机之上的第一层软件(正确答案)B.处于硬件之下的底层软件C.处于应用软件之上的系统软件D.处于系统软件之上的用户软件8. 下面说法中是错误的是( )。
[单选题] *A.操作系统是一种软件B.计算机是一个资源的集合体,包括软件资源和硬件资源C.计算机硬件是操作系统工作的实体,操作系统的运行离不开硬件的支持D.操作系统是独立于计算机系统的,它不属于计算机系统(正确答案)9. 操作系统的基本类型是( )。
[单选题] *A.批处理系统、分时系统和多任务系统B.实时系统、分时系统和批处理系统(正确答案)C.单用户系统、多用户系统和批处理系统D.实时系统、分时系统和多用户系统10. 工厂的过程控制系统运行的操作系统最好是( )。
软件学院操作系统实验报告实验题目:实验一、进程控制实验学号:日期: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执行成功后将用一个新的程序代替原进程,但进程号不变,它绝不会再返回到调用进程了。
操作系统计算题一、假定在单CPU条件下有下列要执行的作业:(1)用一个执行时间图描述在采用非抢占优先级算法时执行这些作业的情况;(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)非抢占式优先级调度算法。
四、假设在单CPU条件下有下列要执行的作业:(1)用一个执行时间图描述在非抢占优先级算法时,执行这些作业的情况。
(2)用一个执行时间图描述在RR算法时(不考虑优先级),执行这些作业的情况(时间片为1单位)。
五、设系统中只有一台打印机,有三个用户的程序在执行过程中都要使用打印机输出计算结果。
设每个用户程序对应一个进程。
问:这三个进程间有什么样的制约关系?试用P、V操作写出这些进程使用打印机的算法。
六、有三个进程P1,P2和P3并发工作。
进程P1需用资源S3和S1;进程P2需用资源S1和S2;进程P3需用资源S2和S3。
回答:(1)若对资源分配不加限制,会发生什么情况?为什么?(2)为保证进程正确工作,应采用怎样的资源分配策略?为什么?七、用信号灯及P、V操作来描述右图1、说明进程的同步关系:2、设置信号灯,说明含义、初值。
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来完成,则这种数据交换方式是()。
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(有答案)一、选择题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。
软件学院操作系统实验报告
实验题目:
实验二、线程和进程/线程管道通信实验
学号: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)-release
gcc version 4.1.2
gedit 2.18.2
OpenOffice 2.3
实验步骤:
1.实验说明:
1)与线程创建、执行有关的系统调用说明
线程是在共享内存中并发执行的多道执行路径,它们共享一个进程的资源,如进程程序段、文件描述符和信号等,但有各自的执行路径和堆栈。
线程的创建无需像进程那样重新申请系统资源,线程在上下文切换时也无需像进程那样更换内存映像。
多线程的并发执行即避免了多进程并发的上下文切换的开销又可以提高并发处理的效率。
Linux 利用了特有的内核函数__clone 实现了一个叫phread 的线程库,__clone是fork 函数的替代函数,通过更多的控制父子进程共享哪些资源而实现了线程。
Pthread 是一个标准化模型,用它可把一个程序分成一组能够并发执行的多个任务。
phread 线程库是POSIX 线程标
准的实现,它提供了C 函数的线程调用接口和数据结构。
线程可能的应用场合包括:
● 在返回前阻塞的I/O 任务能够使用一个线程处理I/O,同时继续执行其他处理。
需要及时响应多个前台用户界面操作同时后台处理的多任务场合。
● 在一个或多个任务受不确定事件影响时能够处理异步事件同时继续进行正常处理。
● 如果某些程序功能比其他功能更重要,可以使用线程以保证所有功能都出现,但那些时间密集型的功能具有更高优先级。
2)下面介绍pthread 库中最基本的调用。
pthread_create 系统调用语法:
#include <pthread.h>
Int pthread_create(pthread_t *thread,pthread_attr_t *attr,void
*(*start_routine)(void *)Void *arg);
pthread_create 函数创建一个新的线程。
pthread_create 在thread 中保存新线程的标识符。
Attr 决定了线程应用那种线程属性。
使用默认可给定参数NULL; (*start_routine)是一个指向新线程中要执行的函数的指针
arg 是新线程函数携带的参数。
Pthread_create 执行成功会返回0 并在thread 中保存线程标识符。
执行失败则返回一个非0的出错代码。
pthread_exit 系统调用语法:
#include <pthread.h>
void pthread_exit(void *retval);
pthread_exit 函数使用函数pthread_cleanup_push 调用任何用于该线程的清除处理函数,然后中止当前进程的执行,返回retval。
Retval 可以由父线程或其他线程通过pthread_join 来检索。
一个线程也可以简单地通过从其初始化函数返回来终止。
pthread_join 系统调用语法:
#include <pthread.h>
int pthread_join(pthread_t th, void **thread_return);
int pthread_detach(pthread_t th);
函数pthread_join 用于挂起当前线程,直到th 指定的线程终止运行为止。
另一个线程的返回值如果不为NULL,则保存在thread_return 指向的地址中。
一个线程所使用的内存资源在对该线程应用pthread_join 调用之前不会被重新分配。
因而对于每个可切入的线程(默认的)必须调用一次pthread_join 函数。
线程必须是可切入的而不是被分离的状态,并且其他线程不能对同一线程再应用pthread_join 调用。
通过在pthread_create 调用创建一个线程时使用
PTHREAD_CREATE_DETACHED 属性或者使用pthread_detach 可以让线程处于被分离状态。
注意不像由fork 创建的进程可以使用众多wait 等待子进程退出,在pthread 多线程中似乎没有等待某个线程退出的方法。
3)管道通信机制
管道pipe 是进程间通信最基本的一种机制。
在内存中建立的管道称为无名管道,在磁盘上建立的管道称为有名管道。
无名管道随着进程的撤消而消失,有名管道则可以长久保存,shell 命令符| 建立的就是无名管道,而shell 命令mkfifo 建立的是有名管道。
两个进程可以通过管道一个在管道一端向管道发送其输出,给另一进程可以在管道的另一端从管道得到其输入.管道以半双工方式工作,即它的数据流是单方向的.因此使用一个管道一般的规则是读管道数据的进程关闭管道写入端,而写管道进程关闭其读出端。
管道既可以采用同步方式工作也可以采用异步方式工作。
pipe 系统调用的语法为:
#include <unistd.h>
int pipe(int pipe_id[2]);
pipe 建立一个无名管道,pipe_id[0]中和pipe_id[1]将放入管道两端的描述符如果pipe 执行成功返回0。
.出错返回-1.
管道读写的系统调用语法为:
#include <unistd.h>
ssize_t read(int pipe_id,const void *buf,size_t count);
ssize_t write(int pipe_id,const void *buf,size_t count);
read 和write 分别在管道的两端进行读和写。
pipe_id 是pipe 系统调用返回的管道描述符。
B uf是数据缓冲区首地址,count说明数据缓冲区以size_t 为单位的长
度。
read 和write 的返回值为它们实际读写的数据单位。
注意管道的读写默认的通信方式为同步读写方式,即如果管道读端无数据则读者阻塞直到数据到达,反之如果管道写端有数据则写者阻塞直到数据被读走。
2.实验代码设计说明:
一个父进程创建两个子进程,这两个子进程分别执行X的计算和Y的计算,然后将计算结果写回到自己的管道中,再由父进程读取子进程的管道,将数据读到父进程的管道中,从而得到最后的结果。
3.调试过程:
1)建立experiment2.c程序,将代码写到程序中;
2)建立以下项目管理文件Makefile
srcs=experiment2.c
objs=experiment2.o
opts= -g -c
all: experiment2
experiment2: $(objs)
gcc $(objs) -o experiment2
experiment2.o: $(srcs)
gcc $(opts) $(srcs)
clean:
rm experiment2 *.o
3)输入make命令编译连接生成可执行的experiment2程序
$g make gcc -g -c experiment2.c
gcc experiment2.o -o experiment2
4)执行experiment2程序
实验总结:
1.编写递归函数的时候要看明白控制条件,不要遗漏控制条件从而
使函数出错。
2.编写程序时要理清管道之间的读写关系,这样才不会在读写的过
程中出错。
3.程序的错误可以通过打印到屏幕来调试,这也是一种要掌握的调
试技能。