西北工业大学_操作系统_实验七_
设计项目0
西北工业大学 计算机学院 刘尊
环境说明 我们采用的实验环境是
GeekOS bochs Fedora7 VMware windowsXP 硬件 GeekOS GeekOS HW
GeekOS的可能运行环境
GeekOS Bochs (HW Emulation) Native OS
编辑好了以后可以进行编译,在终端上进入目录
$ cd /home/geekos-0.3.0
编译
$ make depend $ make
如果没有错误,在build目录下会生成相应的磁盘 文件,这里是fd.img。以后的项目可能还会生产 硬盘镜像文件diskc.img。
提示在此处建立新进程
西北工业大学计算机学院
HW
VMware Virtualization
Native OS HW
西北工业大学计算机学院
实验说明 实验环境已经预先设置好了 首先打开程序中的VMware,然后在VMware中打开 虚拟机,并启动该虚拟机,进入linux系统 桌面上有终端、文件浏览器和文件编辑器的快捷 方式可供大家使用 我们的工作目录是/home/geekos-0.3.0,该目录的 结构如前所示,仅根据需要添加了一个replace目 录 当要完成某项目时,首先在终端进入工作目录, 然后进入scripts目录,使用该目录中的脚本 startProject建立项目文件
该函数的主要功能是以参数startFunc指向的代码为进程 体生成一个内核进程。 startFunc是一个Thread_Start_Func类型的函数指针,其 定义在kthread.h中
西北工业大学计算机学院
GeekOS的键盘处理函数 定义在keyboard.h和keyboard.c中。 定义了功能键常量、缓冲区等,请大家自行阅读, 其公用接口有三个Init_Keyboard、Read_Key和 Wait_For_Key 键盘初始化是在Main函数中调用Init_Keyboard实 现的 Read_Key用来获取键值 Wait_For_Key用来等待键盘输入,进程若想获得 键盘输入只要调用该函数即可,该函数返回 keycode类型,是在keyboard.h中定义的一个 ushort_t
2022年西北工业大学计算机科学与技术专业《操作系统》科目期末试卷A(有答案)
2022年西北工业大学计算机科学与技术专业《操作系统》科目期末试卷A(有答案)一、选择题1、下面关于文件系统的说法正确的是()。
A.文件系统负责文件存储空间的管理,但不能实现文件名到物理地址的转换B.在多级目录结构中,对文件的访问是通过路径名和用户目录名进行的C.文件可以被划分成大小相等的若干物理块,且物理块大小也可以任意指定D.逻辑记录是对文件进行存取操作的基本单位2、下列关厂索引表的叙述中,正确的是()。
A.索引表中每个记录的索引项可以有多个B.对索引文件存取时,必须先查找索引表C.索引表中含有索引文件的数据及其物理地址D.建立索引表的i1的之,是减少存储空间,3、通常用户进程被建立后()A.使一直存在于系统中,直到被操作人员撤销B.随着作业运行正常或不正常结束而撤销C.随着时间片轮转而撤销与建立D.随着进程的阻塞或唤醒而撤销与建立4、下列选项中,导致创建新进程的操作是()。
I.用户登录成功 II.设备分配 III.启动程序执行A.仅I和IIB.仅II和IIIC. 仅I和IIID. I,II,III5、一个正在访问临界资源的进程由于申请等待1/0操作而被中断时,它()。
A.允许其他进程进入与该进程相关的临界区B.不允许其他进程进入临界区C.允许其他进程抢占处理器,但不能进入该进程的临界区D.不允许任何进程抢占处理器6、总体上说,“按需调页”(Demand-Paging)是个很好的虚拟内存管理策略。
但是,有些程序设计技术并不适合于这种环境,例如()A.堆栈B.线性搜索C.矢量运算D.分法搜索7、采用分段存储管理的系统中,若段地址用24位表示,其中8位表示段号,则允许每段的最大长度是()。
A.224BB.216BC.28BD.232 B8、下列选项中,在用户态执行的是()。
A.命令解释程序B.缺页处理程序C.进程调度程序D.时钟中断处理程序9、下列指令中,不能在用户态执行的是()A.trap指令B.跳转指令C.压栈指令D.关中断指令10、下列关于SPOOLing技术的叙述中,错误的是()A.需要外存的文持B.需要多道程序设计技术的支持C.可以让多个作业共享一台独占设备D.由用户作业控制设备与输入/输出之间的数据传送11、操作系统的I/O子系统通常由4个层次组成,每-层明确定义了与邻近层次的接口,其合理的层次组织排列顺序是()。
西北工业大学-操作系统实验报告-实验七
实验七消息及其传送机制一、实验目的(1)了解什么是消息。
(2)熟悉消息传送的机理。
二、实验内容与要求1、消息的创建、发送和接收。
使用系统调用msgget( ),msgsnd( ),msgrev( ),及msgctl( )编制一长度为256Bytes的消息发送和接收的程序,将自己的进程号传递给对方,并输出至屏幕。
2、对整个实验过程进行分析总结,给出详细步骤。
三、实验过程1、编写程序实现消息的创建、发送和接收。
将参考程序用vi编辑器录入,然后编译执行。
1、client.c#include <unistd.h>#include <stdio.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#define MSGKEY 75 /*定义一个消息关键字*/struct msgform /*定义一个结构,它是一个消息的模式,只说明结构的形式*/{ long mtype; /*消息类型*/char mtext[256]; /*消息正文数组*/};int main(){{struct msgform msg; /*定义msg是前面说明的消息结构类型的变量*/int msggid,pid,*pint;msggid=msgget(MSGKEY,0777); /*用系统调用创建一个消息队列*/pid=getpid(); /*获得当前进程的PID*/printf(“client:pid=%d\n”, pid);pint=(int*)msg.mtext; /*将消息正文的头指针赋给指针变量pint*/*pint=pid;msg.mtype=1; /*指定客户进程的消息类型为1*/msgsnd(msggid,&msg,sizeof(int),0); /*向msggid的消息队列发送消息msg*/msgrcv(msggid,&msg,256,pid,0); /*接收pid类型的消息 */printf(“client:receive from pid %d\n”,*pint);return 0;}2、server.c#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include < signal.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#define MSGKEY 75 /*定义一个消息关键字*/struct msgform /*定义一个与客户端相同的消息关键字*/{ long mtype; /*消息类型*/char mtext[256]; /*消息正文数组*/}msg; /*也可以使用这种方式说明消息结构变量*/void cleanup(int signo); /*说明一个外部函数*/int msgqid;int main(){int i,pid,*pint;for ( i=0; i<23; i++) /*对22个软中断的特殊处理*/signal(i, cleanup); /*若收到22个软中断,转向执行cleanup*/msggid=msgget(MSGKEY,0777|IPC_CREAT); /*创建一个与客户程序相同关键字的消息队列,但它的标志是0777与IPC_CREAT 做“或”操作的结果*/ printf(“server:pid=%d\n”, getpid()); /*输出服务端的进程ID*/for(;;) /*用无限循环完成下列语句*/{ msgrcv(msggid,&msg,256,1,0); /*接收来自客户进程或类型为1的消息 */ pint=(int*)msg.mtext; /*将客户端的消息正文传递给pint*/pid=*pint; /*将读出消息指针送pid,此时*pint中是客户进程的pid值*/printf(“server:receive from pid %d\n”,pid);msg.mtype=pid; /*已接受客户进程的pid为消息类型*/*pint=getpid(); /*以本进程pid作为消息构成消息传递内容*/msgsnd(msggid,&msg,sizeof(int),0); /*发送消息*/}}void cleanup(int signo){ msgctl(msggid , IPC_RMID , 0); /*删除消息队列*/exit(0);}如下图所示:client.cserver.c运行结果如下所示:2、思考题(1)单独执行client或server 有什么结果?(2)执行一个server程序,多次执行client有什么结果?(3)消息机制与管道通信的区别?在消息机制中,进程间的数据交换是以格式化的message为单位,程序员直接利用操作系统提供的一组通信命令,不仅能实现大量的数据传递,而且还是隐藏通信细节,是通信过程对用户透明,减少通信程序的复杂性。
Removed_西工大操作系统实验os2
六、实验总结:
刚开始对实验目的把握不够准确,以为只要利用fork()函数构造几个子进程尽可以,然而实验就是要按照要求来,应根据指导手册里给出的家族树来创建相
开始
创建子进程
Pid=0?Shared++i++
Pid>0?
Shared —
i++
i<4?i<4结束
ERROR
N Y Y N
六、实验总结:
由上图的实验结果可以看出当程序执行子进程时shared递减,当程序进入到副程序时shared递增,且都是从1开始,说明子进程和父进程并没有共用shared,而是在各自进程中分别为shared分配内存空间,互不干扰,如果多线程则情况不会同,因为线程公用程序的资源空间,多个。
西北工业大学-操作系统实验报告-实验八
实验八请求分页存储管理设计一、实验目的模拟存储管理常用的请求分页存储管理技术,通过本实验使学生更加深入的理解虚拟内存的思想和主要的页面淘汰算法。
二、实验内容与要求1、学习虚拟存储器的相关基础知识,了解请求分页存储管理系统的原理和具体实现过程;2、熟悉各种主要的页面调度算法;3、具体实验内容及步骤(1) 通过随机数产生一个指令行列,共320条指令,指令中的地址按下述原则生成:50%的指令是顺序执行;25%的指令均匀分布在前地址部分;25%的指令均匀分布在后地址部分。
(2) 具体实验办法是:在[0,319]之间选一起始点M;顺序执行一条指令,即第M+1条;向前地址[0,M-1]中执行一条指令M;顺序执行一条指令,即第M+1条;向后地址[M+2,319]中执行一条指令M。
如此继续,直至产生320条指令。
使用产生随机数的函数之前,首先要初始化设置RAN()产生序列的开始点,SRAND(400);然后计算随机数,产生指令序列。
例如:a[0]=1.0*rand()/32767*319+1;a[1]=a[0]+1;a[2]=1.0*rand()/32767*(a[1]-1)+1; a[3]=a[2]+1; a[4]=319-1.0*rand()/32767*(a[3]-1);其中rand()和srand()为Linux操作系统提供的函数分别进行初始化和产生随机数,多次重复使用这5条指令,产生以后的指令序列。
(3) 将指令序列变换成页面地址流:假设,页面大小为1KB;用户实存容量(内存区容量)为4页或32页;用户虚存容量(逻辑地址空间容量)为32KB;用户虚存容量32KB,每1KB中放10条指令,共320条指令序列,按其地址0~9在0页,10~19在1页,…….,310~319在31页。
(4) 使用不同的页面调度算法处理缺页中断,并计算不同实存容量下的命中率:先进先出(FIFO)算法;最近最少使用(LRU)算法;命中率的算法为:命中率 = 1 - (缺页中断次数/页地址流长度)。
西工大计算机操作系统实验报告OS1
评语: 课中检查完成的题号及题数:课后完成的题号与题数:成绩: 指导教师:实验报告一实验名称:Linux操作系统的安装及使用日期:2013-5-12一、实验目的:1. 学习Linux操作系统的安装,体会操作系统为了方便用户,不断改进的安装过程;2. 熟悉Linux系统的登录和退出,并熟悉它常用命令的操作使用方法。
二、实验内容:1. 了解磁盘分区的方式,掌握磁盘分区工具软件PQMagic或其他类似功能的软件;2. 了解Linux对硬件(CPU、内存和硬盘空间)的要求、安装过程和LILO的安装;3. 进入和退出系统的命令,特别是进入X-Windows图形界面,有关文件系统中的目录创建、修改和删除,有关文件系统中的文件建立、删除、编辑、查询、归档和压缩等和有关系统管理等。
三、项目要求及分析:1)Linux操作系统的安装(1) 收集硬件配置资料(硬盘空间大小、显卡类型、显存大小、网卡类型等基本信息);(2) 对于要安装Linux而又没有预留出自由空间,可利用Linux光盘自带的分区工具来拆分基本分区;也可以利用DOS下的调整分区程序PQMagic来拆分基本分区或逻辑分区,并将PQMagic安装在另一个分区中;(3) Linux对不同介质的安装方法(直接从光盘引导完成安装,要求CMOS和光盘都能支持光盘引导;从硬盘完成安装,可事先将Linux软件包拷入硬盘的一个分区,将Linux安装到硬盘的另一个分区;网络安装,通过网络文件系统NFS或FTP并安装到硬盘。
);(4) 使用FDISK添加Linux主分区和交换分区(swap);(5) 格式化分区;(6) 选择安装内容;(7) 设置root用户的口令;(8) 设置网卡的中断向量号、I/O地址、DNS和网络的子网掩码等;(9) 安装LILO,实现操作系统的双引导。
2)Linux操作系统的使用(1) 登录、退出和关闭系统;(2) man命令的使用;(3) –help命令的使用;(4) dir(ls)命令的使用;(5) less(more)分页浏览文件命令的使用;(6) touch命令的使用;(7) whatis命令的使用;(8) apropos命令的使用;(9) locate命令的使用;(10) whereis命令的使用;(11) find命令的使用;(12) sort命令的使用;(13) tar命令的使用;(14) 解压缩归档文件命令的使用;(15) mc程序的使用;(16)cd改变目录;(17)pwd查看当前目录;(18)mkdir创建新目录;(19)cp文件拷贝;(20)cat在屏幕上显示文件内容3)C语言程序的编译Linux环境下C语言使用gcc编译器对程序进行编译。
2009西工大操作系统考试题(答案)
1.C2.A3.C4.B5.A6.D7.A8.B9.D 10.B11.C 12.D 13.B 14.C 15.D1.并发性共享性2.程序数据集合进程控制块(PCB) 多3.34.唤醒5.信箱6.先请求先服务优先级高者优先7.58.避免9.逻辑地址10.文件命名冲突11.逻辑地址12.无结构的流式文件13. 分段存储系统动态分区系统14.315.13 151.错误就绪状态2.错误3.正确4错误5.错误1操作系统的概念:通常把操作系统定义为用以控制和管理计算机系统资源方便用户使用的程序和数据结构的集合。
临界资源:一次仅允许一个进程使用的资源称为临界资源。
地址映射将程序地址空间中使用的逻辑地址变换成主存中的地址的过程缺页中断就是要访问的页不在主存,需要操作系统将其调入主存后再进行访问。
系统调用,就是用户在程序中调用操作系统所提供的一些子功能。
2.内核级线程是操作系统内核实现、管理和调度的一种线程。
由于有操作系统管理,所以操作系统是知道线程的存在,并为其安排时间片,管理与其有关的内核对象。
因为内核级线程是由内核来管理,所以每次线程创建、切换都要执行一个模式切换例程,所以内核级线程效率比较低,而且内核级线程的调度是由操作系统的设计者来决定的,所以缺乏灵活性。
但是内核级线程有一个有点就是当一个进程的某个线程因为一个系统调用或者缺页中断而阻塞时,不会导致该进程的所有线程阻塞。
内核级线程的优点:较好的并行能力,一个进程内的线程阻塞不会影响该进程内的其他线程内核级线程的缺点:线程管理的开销过大,缺乏灵活性。
用户级线程是通过运行在用户态的运行时库来管理的,其优点是,线程的一切(包括调度、创建)都可以完全由用户自己决定,所以具有较高的灵活性。
而且由于是在用户态上进行管理,所以就省去了内核管理的开销,所以具有高效率。
但是用户级线程有一个致命的缺点:一个进程内的某一个线程阻塞将导致整个进程内的所有线程全部阻塞。
而且由于用户级线程没有时间片概念,所以每个线程必须运行一段时间后将CPU让个其他的线程使用,否则,该线程将独占CPU。
(超详细)西电软院操作系统实验报告DOC
(超详细)西电软院操作系统实验报告DOC操作系统课程设计实验报告册班级:1313012学号:...姓名:lan教师:杜军朝目录实验1 Linux(虚拟机)安装及Linux常用命令使用实验2 makefile的编写及Linux内核编译实验3 Linux的进程和线程实验4 同步与互斥实验5 文件系统重要提示:1.实验正文建议使用小四号或五号宋体。
2.若附加图形,则请直接嵌入到实验手册相应位置。
3.各实验的源程序,请按实验分目录存放,如第一个实验的源程序存放在目录lab1下,第二个实验的源程序存放在目录lab2下等等,依次类推。
4.可互相讨论,但严禁抄袭网络或同学的实验结果。
实验编号 1 题目Linux(虚拟机)安装及Linux常用命令使用实验目的1、掌握至少一种Linux系统的安装2、掌握虚拟机平台(Vmware Workstation)的使用和配置3、掌握至少一种配置Vmware中Linux系统与宿主机Windows 系统的文件交换的方法4、掌握常用的Linux命令5、了解Linux的帮助系统实验内容1、Linux(虚拟机)安装及Linux常用命令使用报告1、目录操作命令正文2、文件操作命令3、文本文件查看命令4、用户系统命令5、网络相关命令6、U盘的使用方法7、用户管理命令8、用户组账号管理9、文件权限设置10、设置文件属主和属组实验编号 2 题目makefile的编写及Linux内核编译实验目的1、掌握Linux中makefile文件的编写2、理解Linux内核的Makefile3、掌握至少一个版本Linux内核的编译步骤4、了解Linux内核的配置过程实验内容1、准备工作:相关软件的获取与安装(源代码,软件包)2、编译工作:配置,编译3、修改启动配置文件:修改grub2启动项4、能够正确的编译源代码5、能够用编译出的内核启动系统报告内容要求(1) 实现方法和思路(2) 测试及结果报告正文内核编译过程1、拷贝源代码到/usr/src目录下将文件添加共享文件夹中,然后在terminal输入以下命令:cd /mnt/hgfscp -r packages /usr/srccp linux-2.6.32.60 /usr/src2、在usr/src目录下解压源码:cd /usr/srctar xvf linux-2.6.32.60.tar.bz23、拷贝packages到“~”目录下:cd /usr/srccp -r packages ~4、安装软件包:dpkg –i *.deb5、转到内核源代码所在的目录“/usr/src/linux-2.6.32.60”:cd /usr/src/linux-2.6.32.606、输入make menuconfig,进入general setup选项,进入local version 菜单,添加版本标示:lan,保存并退出。
计算机操作系统实验_操作系统引导
西北工业大学操作系统实验实验报告一、实验目的熟悉GeekOS实验环境。
二、实验要求编译运行操作系统的启动代码。
三、实验过程及结果1、编写第一个“操作系统”,代码如下:org 07c00hmov ax,csmov ds,axmov es,axcall DispStrjmp $DispStr:mov ax,BootMessagemov bp,axmov cx,16mov ax,01301hmov bx,00aehmov dl,0int 10hretBootMessage: db "hello,OS world!"times 510-($-$$) db 0dw 0xaa55结果如图:修改boot.asm,修改文字颜色,代码如下:org 07c00hmov ax,csmov ds,axmov es,axcall DispStrjmp $DispStr:mov ax,BootMessagemov bp,axmov cx,16mov ax,01301hmov bx,00aeh //在此处修改BL的值,可以修改颜色mov dl,0int 10hretBootMessage: db "hello,OS world! "times 510-($-$$) db 0dw 0xaa55结果如图:2.在bochs中运行geek OS,结果如图:四、实验分析思考:引导扇区的标志是0x55AA,为何代码中写入的却是 dw 0xAA55?答:因为存储时低位在前,高位在后,所以代码中高低位反过来写。
五、所遇问题及解决方法答:实验过程中,最大的困难就是理解geek OS的代码。
一个原因是我们没有学过有关汇编的知识,导致代码中有关汇编的部分一头雾水,难以理解;另一方面是之前自己接触的源码比较少,第一次见到geek OS这么大的工程代码,感觉理解起来很困难,不过,在老师花费了几个小时的讲解下,我最终还是勉强理解了一部分。
西安工业大学操作系统实验报告
XI`AN TECHNOLOGICAL UNIVERSITY 实验报告西安工业大学实验报告一、实验目的1.利用高级语言实现三种不同的进程调度算法:先来先服务算法、时间片轮转调度算法和优先级调度算法。
2.通过实验理解有关进程控制块、进程队列等的概念。
二、实验原理各调度算法思想:1.先来先服务算法(FCFS)FCFS是最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。
当在作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,或者说它是优先考虑在系统中等待时间最长的作业,而不管该作业所需执行时间的长短,从后备作业队列中选择几个最先进入该队列的作业,将它们调入内存,为它们分配资源和创建进程,然后把它放入就绪队列。
当在进程调度中采用FCFS算法时,每次调度是从就绪的进程队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行2.时间片轮转调度算法用于分时系统中的进程调度。
每次调度时,总是选择就绪队列的队首进程,让其在CPU上运行一个系统预先设置好的时间片。
一个时间片内没有完成运行的进程,返回到绪队列末尾重新排队,等待下一次调度。
3.优先级调度算法非抢占式优先权调度算法系统一旦把处理机分配给优先权最高的进程后,便一直执行下去,至完成。
抢占式优先权调度算法只要系统中出现一个新的就绪进程,就进行优先权比较。
若出现优先权更高的进程,则立即停止当前执行,并将处理机分配给新到的优先权最高的进程。
三、实验步骤、数据记录及处理1.算法流程程序流程图菜单用户输入进程信息选择使用的算法SJFFCFS RR四、总结与体会时间片轮转调度算法(RR):给每个进程固定的执行时间,根据进程到达的先后顺序让进程在单位时间片内执行,执行完成后便调度下一个进程执行,时间片轮转调度不考虑进程等待时间和执行时间,属于抢占式调度。
优点是兼顾长短作业;缺点是平均等待时间较长,上下文切换较费时。
适用于分时系统。
先来先服务调度算法(FCFS):根据进程到达的先后顺序执行进程,不考虑等待时间和执行时间,会产生饥饿现象。
西工大 操作系统实验报告
西工大操作系统实验报告西工大操作系统实验报告一、引言操作系统是计算机系统中最重要的软件之一,它负责管理计算机硬件和软件资源,为用户提供一个友好、高效的计算环境。
本次实验旨在通过实践操作系统的基本功能和原理,加深对操作系统的理解和掌握。
二、实验目的1. 理解操作系统的基本概念和作用;2. 学习操作系统的安装和配置;3. 掌握操作系统的文件管理和进程管理;4. 实践操作系统的调度算法和内存管理;5. 深入理解操作系统的并发控制和死锁处理。
三、实验环境本次实验使用的操作系统是Linux,具体版本为Ubuntu 20.04 LTS。
实验所需的软件和工具包括GCC编译器、Make工具、Vi编辑器等。
四、实验内容1. 操作系统的安装和配置首先,我们需要下载Ubuntu 20.04 LTS的镜像文件,并通过虚拟机软件创建一个虚拟机。
然后,按照提示进行操作系统的安装和配置,包括选择安装语言、分配磁盘空间、设置用户名和密码等。
安装完成后,我们可以登录系统,并进行一些基本设置,如修改主题、安装常用软件等。
2. 文件管理和进程管理操作系统的文件管理是指对计算机中的文件进行组织、存储和访问的过程。
我们可以使用命令行或图形界面来管理文件,包括创建文件、复制文件、删除文件等。
同时,操作系统还提供了进程管理的功能,可以管理计算机中运行的各个进程。
我们可以使用命令行或系统监视器来查看和管理进程,包括启动进程、终止进程、调整进程优先级等。
3. 调度算法和内存管理操作系统的调度算法是指决定哪个进程在何时执行的算法。
常见的调度算法包括先来先服务、短作业优先、轮转调度等。
我们可以通过修改系统的调度策略来改变进程的执行顺序。
另外,操作系统还负责管理计算机的内存资源,包括内存分配、内存回收等。
我们可以使用命令行或系统监视器来查看和管理内存,包括查看内存使用情况、释放内存空间等。
4. 并发控制和死锁处理操作系统需要保证多个进程之间的并发执行,同时又要避免出现竞争条件和死锁等问题。
2022年西北工业大学软件工程专业《操作系统》科目期末试卷B(有答案)
2022年西北工业大学软件工程专业《操作系统》科目期末试卷B(有答案)一、选择题1、某计算机按字节编址,其动态分区内存管理采用最佳适应算法每次分配和回收内存后都对空闲分区链重新排序。
当前空闲分区信息见表3-12。
回收起始地址为60K、大小为140KB的分区后,系统中空闲分区的数量、空闲分区链第一个分区的起始地址和大小分别是()。
A.3,20K,380KBB.3,500K,80KBC.4,20K,180KBD.4,500K,80KB2、下列关于SPOOLing技术的叙述中,错误的是()A.需要外存的文持B.需要多道程序设计技术的支持C.可以让多个作业共享一台独占设备D.由用户作业控制设备与输入/输出之间的数据传送3、下列关于虚拟存储的叙述中,正确的是()A.虚拟存储只能基于连续分配技术B.虚拟存储只能基于非连续分配技术C.虚拟存储容量只受外存容量的限制D.虚拟存储容量只受内存容量的限制4、使用修改位的目的是()。
A.实现LRU页面置换算法B.实现NRU页面置换算法C.在快表中检查页面是否进入D.检查页面是否最近被写过5、设系统缓冲区和用户工作区均采用单缓冲,从外设读入一个数据块到系统缓冲区的时间为100,从系统缓冲区读入1个数据块到用户工作区的时间为5,对用户上作区中的1个数据块进行分析的时问为90。
进程从外设读入并分析2个数据块的最短时间是()。
A.200B.295C.300D.3906、假定下列指令已装入指令寄存器,则执行时不可能导致CPU从用户态变为内核态(系统态)的是()。
A.DIV R0,R1;(R0)/(R1)→ROB.INT n;产生软中断C.NOT RO;寄存器R0的内容取非D.MOV RO,addr;把地址 addr处的内存数据放入寄存器RO中7、若程序正在试图读取某个磁盘的第100个逻辑块,使用操作系统提供的()接门。
A.系统调用B.图形用户接口C.原语D.键盘命令8、用户在删除某文件的过程中,操作系统不可能执行的操作是A.删除此文件所在的目录B.删除与此文件关联的目录项C.删除与此文件对应的文件控制块D.释放与此文件关联的内存缓冲区9、某硬盘有200个磁道(最外侧磁道号为0),磁道访问请求序列为:130,42,180,15,199.当前磁头位于第58号磁道并从外侧向内侧移动。
西北工业大学-操作系统实验报告-实验五
实验五进程管理一、实验目的(1)加深对进程概念的理解,明确进程和程序的区别;(2)进一步认识并发执行的实质;(3)了解FreeBSD系统中进程通信的基本原理。
二、实验内容与要求1、掌握进程的概念,明确进程的含义;2、编写一段程序,使用系统调用fork( )创建两个子进程。
当此程序运行时,在系统中有一个父进程和两个子进程活动。
让每一个进程在屏幕上显示一个字符:父进程显示'a',子进程分别显示字符'b'和字符'c'。
试观察记录屏幕上的显示结果(多次运行,查看结果是否有变化),并分析原因;3、修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象(多次运行,查看结果是否有变化),并分析原因;4、如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象;5、对整个实验过程进行分析总结,给出详细步骤;三、实验过程1、进程的概念与含义狭义:进程就是一段程序的执行过程。
广义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。
它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
进程的概念主要有两点:第一,进程是一个实体。
每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。
文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。
第二,进程是一个“执行中的程序”。
程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
进程是操作系统中最基本、重要的概念。
是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
西北工业大学_计算机系统基础_实验报告_第3次
西北工业大学计算机系统基础实验报告姓名班级学号实验成绩指导教师实验名称缓冲区溢出攻击实验目的:通过使目标程序跳转到我们预定的位置执行,从而加深对IA-32函数调用规则和栈帧结构的理解。
实验工具:linux、gdb调试器、反汇编工具objdump、将16进制数转化为ASCII码的工具hex2raw。
实验要求:对一个可执行程序“bufbomb”实施一系列缓冲区溢出攻击,也就是设法通过造成缓冲区溢出来改变该可执行程序的运行内存映像,继而执行一些原来程序中没有的行为,例如将给定的字节序列插入到其本不应出现的内存位置等。
实验内容:一、Smoke(让目标程序调用smoke函数)本实验利用getbuf()函数不检查读取字符串长度的漏洞破坏该程序栈帧的返回地址从而达到对主程序造成破坏的目的。
首先用objdump指令反汇编生成bufbomb的汇编语言文本文件。
可以找到getbuf函数代码如下:080491f1 <getbuf>:80491f1: 55 push %ebp80491f2: 89 e5 mov %esp,%ebp80491f4: 83 ec 38 sub $0x38,%esp80491f7: 8d 45 d8 lea -0x28(%ebp),%eax80491fa: 89 04 24 mov %eax,(%esp)80491fd: e8 08 fb ff ff call 8048d0a <Gets>8049202: b8 01 00 00 00 mov $0x1,%eax8049207: c9 leave8049208: c3 ret位于<0x80491f7> 地址处代码为预读的字符串在栈帧创建了0x28(也就是40)字节的空间。
具体位置可以通过gdb在下一行设置断点查找 %eax 的值得到。
为了覆盖被存在返回地址上的值,我们需要读入超过系统默认40字节大小的字符串。
西北工业大学-操作系统实验报告-实验二
实验二FreeBSD的应用软件安装一、实验目的学习如何使用FreeBSD安装应用软件。
二、实验内容与要求1、查阅资料,了解FreeBSD 安装软件的主要方式,每种方式的具体步骤、操作指南;2、学习使用FreeBSD安装方法的一种进行安装简单的SSH;3、详细记录探索学习的内容和实验的整个过程,包括资料的查询、资料的来源(资料名称、网址等)、所做的各种尝试、以及最终的结果(包含截屏);三、实验过程1、FreeBSD 安装软件的主要方式(1).package用 package 安装,只要抓取该程序 package 档案,简单的透过 --> 安装pkg_add package_name --> 移除 pkg_delete package_name就可以完成安装 / 移除。
注意:文件名称 .tgz 结尾的是 package 文件名称 .tar.gz 结尾的是 source 注 : 目前已经安装的 package 数据库放在 /var/db/pkg/ 这个数据夹之中。
通常在比较大型的套件(需要编译很久)或是老是无法编译成功以及想先快速了解未使用过的套件是长成什么样子时,我们会采用这种方式来安装套件。
(2)port如果你要使用 ports 安装软件,你必须先确认 /usr/ports 这个目录是否有安装。
如果没有的话,使用 /stand/sysinstall 来安装 ports 的目录:1. 以 root 执行 /stand/sysinstall2. 选择 Configure 后按 Enter3. 选择 Distributions 后按 Enter4. 选择 ports 后按空格键5. 选择 Exit 后按 Enter6. 选择你要从 CDROM 或 FTP 安装等7. 跟着选单照做,最后离开 sysinstall或者我们也可以到 /ports/ 去手动抓回 port.tar.gz 这个档案,将它放在 /usr/ 下。
[西北工业大学]计算机操作系统(202104)
A.速度 B.利用率 C.灵活性 D.兼容性 答案:B
15.引入多道程序的目的在于()。 A.充分利用CPU,减少CPU等待时间 B.提高实时响应速度 C.有利于代码共享,减少主、辅存信息交换量 D.充分利用存储器 答案:A
24.可采用静态地址重定位技术进行存储管理的有()。 A.单一分区管理、固定分区管理、可变分区管理 B.单一分区管理、固定分区管理、段式存储管理 C.可变分区管理、页式存储管理、段式存储管理 D.单一分区管理、页式存储管理、段式存储管理 答案:A
25.引入多道程序技术后,处理机的利用率()。 A.降低了 B.有所改善 C.大大提高 D.没有变化,只是程序的执行方便了 答案:C
9.用户在一次计算过程中,或者一次事物处理中,要求计算机完成所做的工作的集合,这是指()。 A.进程 B.程序 C.作业 D.系统调用 答案:C
10.在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区合并,为此 需修改空闲区表,造成空闲区表项数减1的情况是()。 A.无上邻(前邻、低址)空闲区,也无下邻(后邻、高址)空闲区 B.有上邻(前邻、低址)空闲区,但无下邻(后邻、高址)空闲区 C.有下邻(后邻、高址)空闲区,但无上邻(前邻、低址)空闲区 D.有上邻(前邻、低址)空闲区,也有下邻(后邻、高址)空闲区 答案:D
11.进程从运行状态变为阻塞状态的原因是()。 A.输入或输出事件发生 B.时间片到 C.输入或输出事件完成 D.某个进程被唤醒 答案:A
12.()的主要目标是提高系统的吞吐量和效率。 A.实时操作系统 B.多道批处理系统 C.分时操作系统 D.微机操作系统 答案:B
13.操作系统是一种()。 A.应用软件 B.系统软件 C.通用软件 D.工具软件 答案:B
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西北工业大学《操作系统》实验报告
目录
《操作系统》实验报告 (1)
一基础知识 (3)
1. 消息 (3)
2.Unix操作系统多路复用消息 (3)
二编程实现消息的创建、发送和接收 (3)
1. 编写程序 (4)
2. 编译运行 (5)
三思考题 (6)
1. 单独执行client或server 有什么结果? (6)
2. 执行一个server程序,多次执行client有什么结果? (7)
3. 消息机制与管道通信的区别 (7)
参考资料 (7)
一基础知识
1.消息
消息(message)是一个格式化的可变长的信息单元。
消息机制允许由一个进程给其它任意的进程发送一个消息。
当一个进程收到多个消息时,可将它们排成一个消息队列。
消息使用二种重要的数据结构:一是消息首部,其中记录了一些与消息有关的信息,如消息数据的字节数;二个消息队列头表,其每一表项是作为一个消息队列的消息头,记录了消息队列的有关信息。
1、消息机制的数据结构
(1)消息首部:记录一些与消息有关的信息,如消息的类型、大小、指向消息数据区的指针、消息队列的链接指针等。
(2)消息队列头表:其每一项作为一个消息队列的消息头,记录了消息队列的有关信息如指向消息队列中第一个消息和指向最后一个消息的指针、队列中消息的数目、队列中消息数据的总字节数、队列所允许消息数据的最大字节总数,还有最近一次执行发送操作的进程标识符和时间、最近一次执行接收操作的进程标识符和时间等。
2、消息队列的描述符
UNIX中,每一个消息队列都有一个称为关键字(key)的名字,是由用户指定的;消息队列有一消息队列描述符,其作用与用户文件描述符一样,也是为了方便用户和系统对消息队列的访问
2.Unix操作系统多路复用消息
在客户-服务员模型中,一个服务员往往对应多个客户。
这时我们可以利用消息的类型参量,让多个进程把消息放入同一个队列中,以便Unix消息队列能够多路复用。
我们只要把type置为1,以表示消息是从客户流向服务员的。
如果客户把它的进程号作为消息的一部分传递,那么服务员只要把客户进程号作为其消息类型,把它的消息发送给客户进程。
每个客户进程都把msgrcv的参数msgtyp 置为其进程号。
二编程实现消息的创建、发送和接收
消息的创建、发送和接收。
使用系统调用msgget( ),msgsnd( ),msgrev( ),及msgctl( )编制一长度为256Bytes的消息发送和接收的程序,将自己的进程号传递给对方,并输出至屏幕。
1.编写程序client.c
server.c
2.编译运行
编译后执行./server.out & ./client.out
三思考题
1.单独执行client或server 有什么结果?执行client
执行server
2.执行一个server程序,多次执行client有什么结果?
执行一个server,多次执行client,client每次执行一次,server就接收一次,并将消息显示。
3.消息机制与管道通信的区别
管道通信:指用于连接一个读进程和一个写进程的文件,成为pipe文件。
向管道提供输入的进程成为写进程,以字符流的形式将大量的数据送入管道,而接收管道输出的进程(读进程)可从管道中接收数据。
可以传送大量的数据。
消息机制:进程之间的数据交换以消息为单位,程序员利用系统的通信原语实现通信。
参考资料
《FreeBSD使用手册》
《实验七》
/viewarticle.php?id=49529 FreeBSD系统编程-红联Linux系统门户
/link?url=cHgaVpKxXzLO5ZQlkzSN6kT10SN-ZTk3ukhqHLYq8gnpcHqse3U mNqoOkhFt6pR_m4X_6uWm61-676VlRzg4EOQHFdN8mK1dBKc2J640JG_Freebsd操作系统消息机制_百度文库。