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