山东大学操作系统实验二

合集下载

2022年山东大学软件工程专业《操作系统》科目期末试卷A(有答案)

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、在分页虚拟存储管理中,“二次机会”调度策略和“时钟”调度策略在决定淘汰哪一页时,都用到了()。

山东大学linux实验1

山东大学linux实验1
实验一:Linux的基本操作和常见命令的使用(2学时)
实验要求:
1.熟悉Red Hat Linux 9系统的桌面。
2.掌握Linux常见的命令。
包括:date、cal、clear、echo、who、finger、mail、wall、write、talk、mesg、man
3.熟悉Linux常用的按键功能。
cal 1 1999
cal 1 99
显示结果不一样
__ 4. 列出系统中所有登陆用户.
who
__ 5. 显示你的登陆名.
who -m
__ 6. 显示你的用户信息.
finger myname
__ 7. 清屏.
clear
__ 8. 显示字符串'Out to lunch'.
常用的按键包括:<backspace>、<ctrl-C>、<Ctrl-d>、<ctrl-s>、<ctrl-q>、<ctrl-u>
实验内容:
一. 基本命令
__ 1. 显.
cal 2003
__ 3. 分别显示1999年1月份和99年1月份的日历. 1999年的和99年的是否是一个?
echo "Out to lunch"
__ 9. 使用wall命令进行系统广播:Good Evening everyone!
wall "Good Evening everyone"
__ 10.使用一个命令屏蔽所有消息.这个命令对所有用户都起作用吗?
二. Man 手册
__ 11. 使用man手册察看ls命令如何使用.

操作系统原理实验报告09

操作系统原理实验报告09
《操作系统原理》实验报告
实验序号:9实验项目名称:进程创建模拟实现
学 号
姓 名
专业、班
实验地点
指导教师
实验时间
一、实验目的及要求
(1)理解进程创建相关理论;(2)掌握进程创建方源自;(3)掌握进程相关数据结构。
二、实验设备(环境)及要求
Windows操作系统与Turbo C或者Visual C++开发环境
三、实验内容与步骤
四、实验结果与数据处理
详细记录程序在调试过程中出现的问题及解决方法。记录程序执行的结果。
五、分析与讨论
对上机实践结果进行分析,上机的心得体会。
六、教师评语
签名:
日期:
成绩

山东大学软件工程专业大二2017-2018学年操作系统期末测试

山东大学软件工程专业大二2017-2018学年操作系统期末测试

山东大学软件工程专业大二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执行成功后将用一个新的程序代替原进程,但进程号不变,它绝不会再返回到调用进程了。

山东大学计算机组成原理课程设计实验报告

山东大学计算机组成原理课程设计实验报告
运算器结构
运算器结构如下图所示。R0、R1、R2 均为 D 触发器组成的八位寄存器,在打入 脉冲 CPRi 的作用下,接收数据输入端提供的信息送入 Ri 中。
μIR23-16 为微指令寄存器的高八位,可定义为操作数。进位信号 C0、打入脉冲 CPR0、CPR1、CPR2、M、S0、S1、S2、S3 均由微指令寄存器的 μIR8 和 μIR7--μIR0 产生。
算术逻辑运算单元 ALU 的设计
该部分中算术逻辑运算单元用两片 74LS181 芯片按如下图所示结构实现八位 组间串行进位运算器。
74LS181 功能表如下图所示。
5
计算机一班 鸿武 QQ:2420430689(2 号)
ALU 的实现电路图如下。
实验调试
将设计完成的电路图下载到 FPGA 中。按照前面所给的 74LS181 功能表编写 微指令,并写入到 ROM 中,微指令从 0 地址单元开始存放。
微程序控制的存储器读写系统设计............................................... 7 设计目的................................................................. 7 设计要求................................................................. 7 结构与信号索引........................................................... 8 微指令格式及微指令编制................................................... 8
微程序控制的运算器设计详细电路图 ........................................ 22 微程序控制的存储器读写系统设计详细电路图 ................................ 24 微程序设计模型机详细电路图.............................................. 25 硬布线控制的模型机详细电路图............................................ 34

山东大学操作系统复习题计算题

山东大学操作系统复习题计算题

操作系统计算题一、假定在单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(有答案)

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来完成,则这种数据交换方式是()。

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

软件学院操作系统实验报告
实验题目:
实验二、线程和进程/线程管道通信实验
学号: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.程序的错误可以通过打印到屏幕来调试,这也是一种要掌握的调
试技能。

相关文档
最新文档