who.c.zip_Who
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
在哈工大的操作系统课程实验中,学生被要求增强已有操作系统0.11的功能,通过添加新的系统调用来实现特定的任务。在这个案例中,实验2的目标是添加一个名为"who"的系统调用,用于显示当前登录到系统的用户信息。这个系统调用的实现主要集中在`who.c`文件上,它包含了必要的函数定义和系统调用接口。 我们需要理解操作系统0.11的基本架构。这是一个简化版的操作系统,通常用于教学目的,帮助学生深入理解操作系统的核心概念,如进程管理、内存管理和系统调用等。系统调用是用户程序与操作系统内核交互的桥梁,它允许程序执行只有内核权限才能完成的任务,如文件操作、进程控制和硬件访问。 `who.c`文件中的核心工作是对"who"系统调用的实现。这通常涉及以下步骤: 1. **定义系统调用号**:在0.11操作系统中,每个系统调用都有一个唯一的编号,这在`sys_call.h`头文件中定义。你需要找到合适的空闲编号,并将其分配给"who"系统调用。 2. **实现系统调用函数**:在`who.c`中,你需要编写一个函数(例如`sys_who`),该函数将处理实际的用户请求,如读取并返回当前登录用户的列表。 3. **更新系统调用表**:系统调用表是内核中的一张表格,记录了每个系统调用号对应的处理函数。你需要在`sys_call.s`或类似的汇编代码文件中,将`sys_who`函数地址填入对应的系统调用表项。 4. **处理用户请求**:在`sys_who`函数内部,你需要遍历系统数据结构(如进程描述符),检查哪个进程是活动的登录会话,然后收集这些信息。这可能涉及到对进程状态、打开的终端设备以及登录时间的检查。 5. **返回结果**:一旦获取了所有必要的用户信息,你需要将它们以某种格式(比如字符串数组)组织起来,并通过系统调用的返回值传递给用户空间。 6. **用户空间接口**:为了使用户程序能调用这个新系统调用,还需要在C库(如`lib.c`或`unistd.h`)中添加相应的声明和实现。这样,用户可以使用`syscall`或`system`函数来调用`who`。 7. **测试和调试**:编写测试程序,确保新添加的系统调用能够正确工作。这可能包括创建多个用户会话,然后检查`who`调用返回的结果是否符合预期。 通过这个实验,学生不仅能够掌握如何在实际操作系统中添加系统调用,还能深入理解进程管理、内存模型和系统调用机制。此外,这也是一种实践编程技巧和调试技能的好机会。在完成这个任务后,学生对于操作系统的理解将更加深入,为后续更复杂的系统级编程打下坚实基础。
- 1
- 粉丝: 92
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (178548844)zotero文献阅读以及主题和翻译插件
- (179839044)64402-MySQL数据库基础实例教程(第3版)(微课版)-源代码(含例题、案例、实训、实战四个项目).zip.zip
- 基于微信小程序的户外旅游小程序.zip
- 双摇臂履带底盘sw16可编辑全套技术开发资料100%好用.zip
- 国外某地气温数据(extend:2011-2016年).zip
- (18695238)libsvm文档
- 数据分析-51-小红书达人画像
- 基于微信小程序的华云智慧园区(包括数据库,源码).zip
- 步进电机驱动 C#上位机和STM32下位机源程序 步数方向控制
- 船上用品检测12-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 非常好用 的,局域网,文件共享,文档管理 工作,方便检索文件 ,支持HTTP服务
- 手机组装自动镭焊机step全套技术开发资料100%好用.zip
- java项目,毕业设计-基于协同过滤算法商品推荐系统
- 大三-一个简单的安卓移动开发课程设计Android Studio
- 数据分析-53-「猛男的童年回忆」三大类型玩具在京东平台的销售分析
- C# TouchSocket的基础使用,连接,发送,接收WPF