操作系统项目描述
了解操作系统的简要介绍,并学习本项目中我们将实现的功能。
简介
现代操作系统(OS)是一套复杂的软件系统。它必须在有限且复杂的硬件资源条件下高效运行,并为用户程序提供服务。从硬件管理的角度来看,操作系统需要管理处理能力、存储空间以及输入/输出资源。另一个重要的组成部分是用户外壳(shell),用于处理用户交互。
本章将讨论与操作系统中内存管理模块和进程管理模块相关的情景与问题。
问题描述
假设你是一名知名操作系统开发团队的开发者。你们团队正在实现一系列与进程调度及进程内存高效分配相关的功能。此外,你还负责开发一个关于磁盘上文件高效编码的模块。
功能需求
为了实现上述功能,我们需要引入以下特性:
-
特性 #1: 首先,需要计算出一个或多个具有连续内存分配的运行进程被抢占的可能性数量,以释放内存供新进程使用。
-
特性 #2: 其次,需要从当前驻留在内存中的进程ID列表中,定位第 n 个要恢复的进程。
-
特性 #3: 对进程进行排序,确保当某个进程被调度时,其所有依赖项均已满足。
-
特性 #4: 部署一种压缩策略,用于识别并分离所有连接在一起的单词。
-
特性 #5: 通过移除最少数量的不匹配起始或结束分隔符,来恢复损坏的文件。
-
特性 #6: 构建一个文件管理系统,支持添加文件并执行通配符搜索。
-
特性 #7: 将以特定目录为根的文件系统序列化并反序列化,传输到远程机器。
-
特性 #8: 通过用字符重复次数替换连续重复的字符,对文件进行压缩。
-
特性 #9: 在文件目录系统中使用正则表达式匹配来搜索文件。
-
特性 #10: 反向工程消息摘要函数,验证在给定操作符集合下,某个消息摘要是否可能生成。
-
特性 #11: 创建一个目录树迭代器,遍历文件系统中的每一个文件和目录。
-
特性 #12: 验证多进程系统中优先级更新的潜在顺序是否合理。
-
特性 #13: 通过反转日志文件中的命令顺序,纠正命令的执行顺序。
-
特性 #14: 通过查找未释放锁的进程,解除进程锁。
-
特性 #15: 根据进程的优先级以及优先级不低于其自身的进程数量,重建进程队列。
理解这些功能需求并设计相应的解决方案,将有助于我们把所需功能集成到操作系统中。
在接下来的课程中,我们将讨论这些特性的推荐实现方式。在开始之前,请思考一下你会如何实现这些功能。随着你的思考,你会逐渐意识到需要解决的一些底层问题。而这些问题的解决方案同样适用于许多常见的编程面试题。