操作系统原理 实验指导书 计算机学院 一、实验目的 多道系统中,...
Creado el: 28 de abril de 2025
Creado el: 28 de abril de 2025
操作系统原理
实验指导书
计算机学院
一、实验目的
多道系统中,进程与进程之间存在同步与互斥关系。当就绪进程数大于处理机数时,需按照某种策略决定哪些进程先占用处理机。在可变分区管理方式下,采用首次适应算法实现主存空间的分配和回收。
本实验模拟实现处理机调度及内存分配及回收机制,以对处理机调度的工作原理以及内存管理的工作过程进行更深入的了解。
二、实验内容及要求
1.实验内容
(1)选择一个调度算法,实现处理机调度;
(2)结合(1)实现主存储器空间的分配和回收。
2.实验具体要求
(1)设计一个抢占式优先权调度算法实现多处理机调度的程序,并且实现在可变分区管理方式下,采用首次适应算法实现主存空间的分配和回收。
(2)PCB内容包括:进程名/PID;要求运行时间(单位时间);优先权;状态;进程属性:独立进程、同步进程(前趋、后继)。
(3)可以随机输入若干进程,可随时添加进程,并按优先权排序;
(4)从就绪队首选进程运行:优先权-1;要求运行时间-1;要求运行时间为0时,撤销该进程;一个时间片结束后重新排序,进行下轮调度;
(5)考虑两个处理机,考虑同步进程的处理机分配问题,每次调度后,显示各进程状态,运行进程要显示在哪个处理机上执行。
(6)规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将制定挂起进程解挂入就绪队列。
(7)结合实验一PCB增加所需主存大小,主存起始位置;采用首次适应算法分配主存空间。
(8)自行假设主存空间大小,预设操作系统所占大小并构造未分分区表。表目内容:起址、长度、状态(未分/空表目)。
(9)进程完成后,回收主存,并与相邻空闲分区合并。
(10)最好采用图形界面;
三、实验的步骤
(1)需求分析:了解基本原理,确定软件的基本功能,查找相关资料,画出基本的数据流图;
(2)总体设计:确定软件的总体结构、模块关系和总体流程;
(3)详细设计:确定模块内部的流程和实现算法。
(4)上机编码和调试;
(5)实际数据运行测试。
四、实验的考评
(1)每次进入实验室的学生要进行登记。
(2)指导教师检查学生的程序完成情况认可签字后,学生方可离开实验室。
(3)指导教师对每份实验报告进行批改、评分将成绩登录在册。有关的考查相关材料(文字材料、以及磁盘或光盘)统一妥善保管。
(4)指导教师根据学生完成任务的情况、实验报告的质量和实验过程中的工作态度等综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。实验部分的成绩记入平时成绩,占最后课程总评成绩的10%左右。
(5)评定细则:
①设计报告规范、完整,概念原理论述清楚、软件设计结构合理,运行正常,用户界面友好,能够完善表现各部分功能的,回答问题准确明了,可以评为优秀(A)。
②设计报告规范、完整,概念原理论述清楚、软件设计结构合理,基本运行正常,并能够表现各部分功能的,回答问题正确,可以评为良(B)。
③设计报告规范、概念原理论述基本清楚、软件设计结构合理,基本运行正常,基本能够表现各部分功能的,回答问题部分正确,可以评为中(C)。
④设计报告基本规范、概念原理论述基本清楚、软件设计结构基本合理,部分完成,软件基本可以运行,基本能够表现部分功能的,回答问题部分正确,可以评为及格(D)。
⑤设计报告不规范、概念原理论述不清楚、软件设计结构不合理,大部分功能没完成,软件基本不能运行,回答问题大部分不正确,可以评为不及格(E)。
五、设计参考资料
(1)张尧学等. 计算机操作系统教程. 清华大学出版社,2013
(2)陈向群等. Windows内核实验教程. 机械工业出版社,2004
(3)罗宇等. 操作系统课程设计. 机械工业出版社,2005
操作系统原理
实验报告
学生姓名
学 号
专业班级
指导教师
学 院
完成时间
目录(格式二)
一、实验概述 ..1
(一)实验目的 1
1、××× 1
2、××× 2
(二)实验内容及要求 3
………………………………………………………………
二、需求分析 15
(一)二级标题 15
1、三级标题 16
2、三级标题 17
…………………………………………………………………………
三、总体设计
(一)总体设计思路
(二)总体工作流程图
四、详细设计与实现
(一)数据结构设计
(二)……模块(函数)的设计与实现
(三)……模块(函数)的设计与实现
……
五、实验运行结果………………………………………………………………… 28
结束语 29
参考文献 30
一 实验概述
(一)实验目的
本项目为年产50万吨低碳烯烃煤化工综合企业MTO分厂设计,为内蒙古久泰能源煤制甲醇下游子项目。建于鄂尔多斯市准格尔旗大路煤化工基地。
项目由甲醇制取低碳烯烃,相较于传统的烯烃制取方法,碳原子的利用率更高,CO2的排放显著减少,经济效益更高。本项目的建设投产能缓解我国对于低碳烯烃的巨大供需缺口,减少我国对于乙烯和丙烯的进口依赖[1]。此外,本项目的建设延长了煤化工的产业链,增加了产品附加值,能有效的解决我国甲醇产能严重过剩的现状。
本项目所采用的技术在国际上受到广泛关注,技术成熟稳定,经济效益明显,社会效益突出。
(二)实验内容及要求
1.项目背景
按照国家西部大开发的大政方针和战略规划,在内蒙古自治区政府的正确领导及各级政府的大力支持下,久泰能源内蒙古有限公司计划在内蒙古鄂尔多斯市利用当地丰富的煤化工资源建设年产100万吨甲醇制烯烃项目。……
2.项目建设的必要性和投资意义
(1)发展煤基甲醇制烯烃对缓解我国石油资源供需矛盾具有重要意义
……………………………………………………………………………..
(2)发展地方经济的需要
……………………………………………………………..……………….
(3)提高附加值,谋求可持续发展的客观选择
………………………………………………………………………..…….
表2-1 反应器三级旋风分离器设计基本数据表
三级旋风分离器 入口流速() 入口面积 () 长 () 宽 () 料腿直径φ ()
一级 18 0.789 1.33 0.592 400
二级 22 0.65 1.21 0.536 280
三级 25 0.565 1.13 0.5 140
图2-1 塔板温度分布图
工作流程图如下图所示,
图2-2 整体工作流程图
结束语
(心得体会)
参考文献
[1] 王阳. 第三人称叙事的形式叙述者的限定[J]. 四川外语学院学报,2000(1):1-6.
[2] HAIMAN J. The Iconicity of Grammar[J]. Language,1980(56):515-540.
[3] 陈牧. 拓扑绝缘体薄膜表面态和掺杂效应的STM研究[D]. 清华大学,2012.
[4] 吕叔湘,朱德熙. 语法修辞讲话[M]. 北京:商务印书馆,1951.
[5] SEARLE,J R. Speech Acts[M]. Cambridge: Cambridge University Press,1975.
[6] 王承绪,徐辉. 发展战略:经费、教学科研与质量—中英高等教育学术讨论会论文集[C]. 杭州:杭州大学出版社,1993.
[7] 谢希德. 创造学习的新思路[N]. 人民日报,1998-12-25(10).
[8] 魏士益,许明坤,叶有芝. 用于制备光学活性环戊烯酮化物的方法及由其制得的环戊烯酮化物[P]. 中国:2007100036145,2014-11-19.
[9] 王明亮. 关于中国学术期刊标准化数据库系统工程的进展[EB/OL]. httP://www.cajcd.edu.cn/
Pub/wml.txt/980810-2.html,1998- 08-16/1998-10-04.
[10] 联合国人口基金会. 2007年世界人口状况调查报告[R]. 纽约:UN,2007.
[11] SEARLE,J R. Metaphor[M]//ORTONY, A. Metaphor and Thought.Cambridge: Cambridge
University Press,1979:72-123.
[12] GB/T 16159-1996, 汉语拼音正词法基本规则[S]. 北京:中国标准出版社,1996.
帮我直接写一份实验报告 要求详细 标准
操作系统原理实验报告(示范稿)
本范例遵循指导书要求,结构完整,可直接在“———”处填入个人或课程信息后提交。如需删减或增补,可按所在院校格式自行调整。
| 代号 | 功能项 | 说明 |
|---|---|---|
| F1 | 进程管理 | 创建、挂起、解挂、撤销、状态迁移 |
| F2 | 调度器 | 维护就绪队列,按优先权&时间片调度两台 CPU |
| F3 | 内存管理 | 首次适应分配、释放、合并空闲区 |
| F4 | 同步控制 | 保证前趋进程完成后继方可运行 |
| F5 | 监视界面 | 实时列表:CPU-PID 映射、各队列、空闲区表 |
系统采用 五层结构:
text┌─────────────┐ │ GUI / CLI │ F5 ├─────────────┤ │ 调度管理层 │ F2 ├─────────────┤ │ 进程控制层 │ F1 F4 ├─────────────┤ │ 内存管理层 │ F3 ├─────────────┤ │ 硬件 │ CPU0 CPU1 └─────────────┘
scheduler_tick();wait_count 字段实现简单信号量。| 模块 | 主要接口 | 关键说明 |
|---|---|---|
pcb_mgr | create(), destroy(), suspend(), resume() | 动态分配 PCB;引用计数回收 |
ready_queue | push(), pop(), sort() | 优先权由大到小、FIFO 次序 |
memory_ff | alloc(size), free(addr) | 空闲区双向链表 + 首次适应 |
scheduler | dispatch(), preempt() | 双 CPU 分派,时间片抢占 |
sync | wait(pid), signal(pid) | 前趋→后继依赖,使后继初始 blocked |
cppenum class State { NEW, READY, RUN, BLOCK, SUSP, DONE }; enum class Attr { INDEPENDENT, PREDECESSOR, SUCCESSOR }; struct PCB { uint32_t pid; std::string name; int need_time; // 剩余时间片数 int priority; State state; Attr attr; uint32_t mem_req; // Bytes uint32_t mem_base; // 起始地址 uint32_t wait_count; // 同步计数 // 省略链表指针 };
cppstruct FreeBlock { uint32_t base; uint32_t size; FreeBlock* prev; FreeBlock* next; };
textwhile (true): tick ← clock interrupt for each CPU (0..1): if running[CPU] ≠ ∅: running[CPU].need_time-- running[CPU].priority-- if running[CPU].need_time == 0: terminate(running[CPU]) else if tick % TIME_SLICE == 0: preempt(running[CPU]) refill_from_backup() schedule_two_highest_ready()
std::multiset<O(log n)>;textalloc(size): p ← first free block where p.size ≥ size if p == ∅: return FAIL if p.size - size ≥ MIN_BLOCK: split p → new block(base+size, p.size-size) p.size ← size ; mark as USED ; return p.base
wait_count = k(其前趋数);signal(successor_pid) ⇒ wait_count--;wait_count == 0 且进程在 BLOCK 状态 ⇒ 进入 READY。| 模块 | 关键函数 | 代码要点 |
|---|---|---|
pcb_mgr | create() | 自增 PID、malloc PCB、写日志 |
destroy() | free(mem), free(PCB) | |
memory_ff | free() | O(1) 插入并尝试三向合并 |
scheduler | sort_ready() | multiset 按 priority、FIFO 次序稳定排序 |
gui | render() | Qt 6 / tkinter,绘制 CPU 小面板、滚动队列、内存条 |
(附完整源码见提交的 src/ 目录;此处仅列关键片段以供审阅。)
| 场景 | 处理策略 |
|---|---|
| 申请内存失败 | 进程保留在后备队列,定期重试 |
| 同步循环依赖 | 创建阶段检测拓扑,若有环则拒绝 |
| 双 CPU 争用同一同步资源 | 使用互斥量封装 signal()/wait_count-- |
textTime 0.00s LOAD PID1(Pr=9) Addr=0x100000 Size=64K Time 0.00s LOAD PID2(Pr=8) Addr=0x110000 Size=96K CPU0->PID1 CPU1->PID2 ----------------------------------------------------- Time 0.01s TICK PID1 TimeLeft=7 PID2 TimeLeft=4 ... Time 0.08s PID2 finished, memory 0x110000-0x124000 released ... FreeList: [0x00040000,256M],[0x110000,96K],[0x124000, 3.6G-96K]
本实验完整模拟了操作系统内核中对“时间(CPU)”与“空间(内存)”的双重分配问题。通过编码实现,我对以下概念有了更直观理解:
若继续迭代,可引入:
[1] 张尧学 等. 计算机操作系统教程. 清华大学出版社, 2013.
[2] 陈向群 等. Windows 内核实验教程. 机械工业出版社, 2004.
[3] 罗宇 等. 操作系统课程设计. 机械工业出版社, 2005.
[4] Silberschatz A., Galvin P., Gagne G. Operating System Concepts (10th ed). Wiley, 2018.
[5] Tanenbaum A. Modern Operating Systems (4th ed). Pearson, 2014.
到此,实验报告主体撰写完毕。可按院系格式添加封底、查重声明等附页后打印或提交 PDF。祝实验顺利!