操作系统实验2的目标主要在于深入理解监控程序(Operating System, OS)如何执行用户程序,并通过实践掌握用户程序的格式、运行要求以及BIOS调用。实验要求包括了解引导扇区程序的作用,掌握COM格式用户程序的制作,重写引导程序以执行COM格式程序,设计命令交互执行多个程序,以及进行简单的磁盘空间管理。 1. 监控程序执行用户程序的主要工作流程如下: - 操作系统启动并执行,即运行监控程序。 - 监控程序负责加载用户程序到内存中。 - 然后,用户程序在内存中运行。 - 用户程序执行完毕,控制权返回给监控程序,准备执行下一个用户程序。 2. 用户程序的格式与运行要求: - COM格式是一种早期的简单可执行文件格式,通常用于DOS系统。它不包含任何文件头,而是直接从文件起始位置开始执行代码。 - BIN格式则是另一种原始的二进制文件格式,通常用于加载到内存特定地址执行。 - EXE格式更为复杂,包含了程序的头部信息,如入口点、段信息等,多用于现代Windows系统。 3. 加载用户程序的方法通常涉及BIOS调用,如int 13中断,用于从磁盘读取扇区到内存中。例如,可以指定磁盘上的起始扇区和内存中的目标地址,然后调用int 13h,AX=2DH功能来加载用户程序。 4. BIOS(基本输入输出系统)调用是早期计算机系统中的关键部分,它们提供了一套低级别的硬件接口,如磁盘读写、屏幕输出等。例如,BIOS的int 13h中断可以用来读写硬盘或软盘,int 10h中断则用于控制显示器。 实验内容涉及到的具体任务包括: - 修改引导扇区程序,使其变为多个COM格式程序,每个程序在屏幕不同区域显示信息。 - 重写1.44MB软驱引导程序,以便能够执行COM格式的用户程序。 - 设计命令行界面,允许用户交互式地执行存储在软驱映像中的程序。 - 创建一个简单的磁盘空间管理表,记录在软驱映像中的用户程序信息。 实验中遇到的问题和解决方案: - stoneN.asm的边界问题,通过定义边界来增强程序的适应性。 - stoneN00_not_used.asm在处理边界和角落时的错误,通过改进算法来判断碰撞情况。 - fillout.cpp的扩展性不足,通过增加输入参数以支持填充任意扇区。 - 对于myos1.asm和stoneN00.asm中org问题的理解,org指令用于设定汇编代码的起始地址,影响程序加载后的内存布局。 通过这个实验,学生将深化对监控程序执行用户程序原理的理解,熟悉不同类型的可执行文件格式,掌握加载程序的方法,并能实际编写简单的操作系统组件,如引导加载器和监控程序,同时还能进行基础的磁盘管理。这不仅锻炼了编程技能,也加强了对操作系统底层机制的认知。
剩余11页未读,继续阅读
- 粉丝: 36
- 资源: 334
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 用于操作 ESC,POS 打印机的 Python 库.zip
- 用于控制“Universal Robots”机器人的 Python 库.zip
- 用于控制 Broadlink RM2,3 (Pro) 遥控器、A1 传感器平台和 SP2,3 智能插头的 Python 模块.zip
- 用于接收和交互来自 Slack 的 RTM API 的事件的框架.zip
- 用于将日志发送到 LogDNA 的 Python 包.zip
- 用于将 Python 计算转换为渲染的乳胶的 Python 库 .zip
- 用于实现推荐系统的 Python 库.zip
- 用于实施无服务器最佳实践并提高开发人员速度的开发人员工具包 .zip
- 用于地理数据的 Python 工具.zip
- 全国大学生FPGA创新设计竞赛作品 泡罩包装药品质量在线检测平台.zip
评论0