一、目的: 熟悉银行家算法,加深死锁有关概念的理解。 二、内容: 编制银行家算法通用程序,并检测思考题中所给状态的安全性。 三、要求: (1) 下列状态是否安全?(三个进程共享12个同类资源) 进程 已分配资源数 最大需求数 1 1 4 (状态a) 2 4 4 3 5 8 1 1 4 2 4 6 (状态b) 3 6 8 (2) 考虑下列系统状态 分配矩阵 最大需求矩阵 可用资源矩阵 0 0 1 2 0 0 1 2 1 5 2 0 1 0 0 0 1 7 5 0 1 3 5 4 2 3 5 6 0 6 3 2 0 6 5 2 0 0 1 4 0 6 5 6 问系统是否安全?若安全就
2024-06-24 11:31:26 260KB 操作系统 编程语言
1
实验内容:1.本实验是模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。 2.采用最先适应法、最佳适应法、最坏适应法分配主存空间。 3.当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这时应把它分成二部分,一部分为占用区,剩余部分又成为一个空闲区。 4.当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。 5.运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。 算法描述: 最先适应法: 将进程往尽量低地址空闲区域放,放不下的话在将地址慢慢升高,每一次存放,都从低地址开始寻找满足的空闲区域,直至最高地址,每次存放都从0开始。 最佳适应法: 和最先适应算法相似,当进程申请空闲的时候,系统都是从头开始查找。空闲区域是从小到大记录的,每次查找都是从最小的开始,直到查找的满足要求的最小空间区域。 最坏适应法: 该算法与之前两种算法相反,用最大的空闲区域来存储东西
1
1. 编写实验使用的示例程序 2. 理解X86计算机的寻址机制,理解全局描述符表GDT,局部描述符表等数据结构的内容。 3. 查看GDTR,LDTR,DS等寄存器,了解寄存器的数据格式。 4. 根据寄存器和相关的数据结构,计算变量j的线性地址。 5. 使用creg查看寄存器信息 6. 根据线性地址和页内偏移,基于页式地址转换,计算物理地址。
2022-11-17 20:36:43 1.07MB 操作系统 Bochs 地址映射
1
UNIX操作系统实验2.doc
2022-06-09 22:02:29 152KB unix 操作系统
注:源码粘贴在报告中。原创,转载请注明。 本实验要求建造一个没有虚拟功能的内存管理系统。任务如下: • 设计一个内存管理器,支持至少两种分配策略, 如first-fit, next-fit, best-fit, worst-fit 等。 • 对不同分配策略的性能进行评估。
1
一、实验题目:进程基础 二、实验目的:(略) 三、实验内容 注意:所有截图,需要是自己的,截图时,请把需要截取的图片与自己本机的IP地址的图片一起截取。 1. 把实验一保存的u盘中的fda.img拷贝到qemu-ubuntu-14.04.1-lts \ ubuntu 目录下,覆盖原来的文件。 2. 打开qemu-ubuntu-14.04.1-lts 文件夹,并执行其中的linux.bat批处理文件,以启动虚拟机(虚拟机启动过程较慢,请耐心等待)。 在使用过程中更换软盘镜像文件 同时按下Ctrl-Alt-2进入QEMU监视器 在监视器中使用 change floppy0 fda.img 更换软盘镜像。 完成操作按下Ctrl-Alt-1返回操作系统 sudo mount /dev/fd0 /media/floppy0 进入相应目录: cd /media/floppy0 3. 编译上次实验的c语言源文件。 sudo gcc –o XXXYYYe1 XXXYYYe1.c 提供截图:
2021-12-13 17:19:46 196KB 实验2
1
实验内容 任务一、 (1) 阅读以上父子进程利用管道进行通信的例子(例1),写出程序的运行结果并分析。 (2) 编写程序:父进程利用管道将一字符串交给子进程处理。子进程读字符串,将里面的字符反向后再交给父进程,父进程最后读取并打印反向的字符串。 任务二、 (1) 阅读例2的程序,运行一次该程序,然后用ipcs命令查看系统中共享存储区的情况,再次执行该程序,再用ipcs命令查看系统中共享内存的情况,对两次的结果进行比较,并分析原因。最后用ipcrm命令删除自己建立的共享存储区。 (有关ipcs和ipcrm介绍见后面一页) (2) 每个同学登陆两个窗口,先在一个窗口中运行例3程序1(或者只登陆一个窗口,先在该窗口中以后台方式运行程序1),然后在另一个窗口中运行例3程序2,观察程序的运行结果并分析。运行结束后可以用ctrl+c结束程序1的运行。 (3) 编写程序:使用系统调用shmget(),shmat(),shmdt(),shmctl(),编制程序。要求在父进程中生成一个30字节长的私有共享内存段。接下来,设置一个指向共享内存段的字符指针,将一串大写字母写入到该指针指向的存贮区。调用fork()生成子进程,让子进程显示共享内存段中的内容。接着,将大写字母改成小写,子进程修改共享内存中的内容。之后,子进程将脱接共享内存段并退出。父进程在睡眠5秒后,在此显示共享内存段中的内容(此时已经是小写字母)。
2021-12-01 13:03:08 890KB 操作系统 进程通信 实验报告
1
1、设计一个程序实现基于优先数的时间片轮转调度算法调度处理器。 2、假定系统有5个进程,每个进程用一个进程控制块PCB开代表,进程控制块的结构如下图。 3、每次运行所设计的处理器调度程序调度进程之前,为每个进程任意确定它的要求运行时间。 4、此程序是模拟处理器调度,因此,被选中的进程并不实际启动运行,而是执行已运行时间+1 来模拟进程的一次运行,表示进程已经运行过一个单位时间。 .5、在所设计的程序中应有显示或打印语句,能显示或打印每次被选中的进程名以及运行一次后进程队列的变化。 6、为进程任意确定要求运行时间,运行所设计的处理器调度程序,显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程。 7、设有一个就绪队列,就绪进程按优先数(优先数范围0-100)由小到大排列(优先数越小,级别越高)。当某一进程运行完一个时间片后,其优先级应下调(如优先数加2或3)。
1
三、实验内容 (1) 通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: 1. 50%的指令是顺序执行的; 2. 25%的指令是均匀分布在前地址部分; 3. 25%的指令是均匀分布在后地址部分; 具体的实施方法是: 1. 在[0,319]的指令地址之间随机选取一起点m; 2. 顺序执行一条指令,即执行地址为m+1的指令; 3. 在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’; 4. 顺序执行一条指令,其地址为m’+1; 5. 在后地址[m’+2, 319]中随机选取一条指令并执行; 6. 重复上述步骤1~5,直到执行320次指令。 (2) 将指令序列变换
1
西北工业大学,软件学院,操作系统,实验二 LINUX的SHELL编程和C语言编程,实验报告,截图等所有资料
2021-06-04 16:52:21 915KB 西北工业大学 软件学院 操作系统
1