操作系统编程作业
================
> 实现环境:xcode 9.2 & c++11
一、设计一个按优先数调度算法实现处理器调度的程序
-----------------
1. 假定系统有5个进程,每个进程用一个PCB来代表。PCB的结构为:
* 进程名——如P1~P5。
* 指针——按优先数的大小把5个进程连成队列,用指针指出下一个进程PCB的首地址。
* 要求运行时间——假设进程需要运行的单位时间数。
* 优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。
* 状态——假设两种状态:就绪和结束,用R表示就绪,用E表示结束。初始状态都为就绪状态。
2. 每次运行之前,为每个进程任意确定它的“优先数”和“要求运行时间”。
3. 处理器总是选择队首进程运行。采用动态改变优先数的办法,进程每运行1次,优先数减1,要求运行时间减1。
4. 进程运行一次后,若要求运行时间不等于0,则将它加入就绪队列,否则,将状态改为“结束”,退出队列。
5. 若就绪队列为空,结束,否则转到 3 重复。
6. 要求能接受键盘输入的进程优先数及要求运行时间,能显示每次进程调度的情况,如哪个进程在运行,哪些进程就绪,就绪进程的排列情况。
二、可变分区管理方式下采用首次适应算法实现主存分配和回收
-----------------
1. 可变分区方式是按作业需要的主存空间大小来分割分区的。当要装入一个作业时,根据作业需要的主存容量查看是否有足够的空闲空间,若有,则按需分配,否则,作业无法装入。假定内存大小为128K(可输入),空闲区说明表格式为:
* 起始地址——指出空闲区的起始地址;
* 长度——一个连续空闲区的长度;
* 状态——有两种状态,一种是“未分配”状态;另一种是“空表目”状态,表示该表项目前没有使用。
2. 采用首次适应算法分配回收内存空间。运行时,输入一系列分配请求和回收请求。
3. 要求能接受来自键盘的空间申请及释放请求,
4. 能显示分区分配及回收后的内存布局情况。
三、连续磁盘存储空间的分配和回收
-------------------
1. 为了提高磁盘存储空间的利用率,可在磁盘上组织成链接文件、索引文件,这类文件可以把逻辑记录存放在不连续的存储空间。为了表示哪些磁盘空间已被占用,哪些磁盘空间是空闲的,可用位示图来指出。位示图由若干字节构成,每一位与磁盘上的一块对应,“1”状态表示相应块已占用,“0”状态表示该块为空闲。位示图的形式与实习二中的位示图一样,但要注意,对于主存储空间和磁盘存储空间应该用不同的位示图来管理,绝不可混用。
2. 申请一块磁盘空间时,由分配程序查位示图,找出一个为“0”的位,计算出这一位对应块的磁盘物理地址,且把该位置成占用状态“1”。假设现在有一个盘组共8个柱面,每个柱面有2个磁道(盘面),每个磁道分成4个物理记录。那么,当在位示图中找到某一字节的某一位为“0”时,这个空闲块对应的磁盘物理地址为:
* 柱面号=字节号 xxxx xxxx
* 磁道号= 位数 / 4
* 物理记录号= 位数 % 4
3. 归还一块磁盘空间时,由回收程序根据归还的磁盘物理地址计算出归还块在位示图中的对应位,把该位置成“0”。按照(2)中假设的盘组,归还块在位示图中的位置计算如下:
* 字节号=柱面号
* 位数=磁道号4+物理记录号
4. 设计申请磁盘空间和归还磁盘空间的程序。
5. 要求能接受来自键盘的空间申请及释放请求,要求能显示或打印程序运行前和运行后的位示图;
6. 分配时把分配到的磁盘空间的物理地址显示或打印出来,归还时把归还块对应于位示图的字节号和位数显示或打印出来。
四、银行家算法实现
------------------
1. 初始状态下,设置数据结构存储可利用资源向量(Available),最大需求矩阵(MAX),分配矩阵(Allocation),需求矩阵(Need),输入待分配进程队列和所需资源。
2. 设计安全性算法,设置工作向量表示系统可提供进程继续运行的可利用资源数目。
3. 如果进程队列可以顺利执行打印输出资源分配情况,如果进程队列不能顺利执行打印输出分配过程,提示出现死锁位置。
五、模拟页面地址重定位
-------------------
1. 当进程在CPU上运行时,如指令中涉及逻辑地址时,操作系统自动根据页长得到页号和页内偏移,把页内偏移拷贝到物理地址寄存器,再根据页号,查页表,得到该页在内存中的块号,把块号左移页长的位数,写到物理地址寄存器。
2. 设计页表结构;
3. 设计地址重定位算法
4. 有良好的人机对话界面
机智的程序员zero
- 粉丝: 2416
- 资源: 4877
最新资源
- 鸟类目标检测数据集-含画眉鸟-百灵鸟xml文件数据集
- pyheif-0.8.0-cp37-cp37m-win-amd64.whl.zip
- 基于深度学习的鸟类种类目标检测-含数据集和训练代码-对百灵鸟-画眉鸟检测.zip
- pyheif-0.8.0-cp38-cp38-win-amd64.whl.zip
- pyheif-0.8.0-cp39-cp39-win-amd64.whl.zip
- pyheif-0.8.0-cp313-cp313-win-amd64.whl.zip
- MyBatis SQL mapper framework for Java.zip
- pyheif-0.8.0-cp312-cp312-win-amd64.whl.zip
- pyheif-0.8.0-cp311-cp311-win-amd64.whl.zip
- pyheif-0.8.0-cp310-cp310-win-amd64.whl.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈