如何组件化
操作系统功能模块
操作系统(Operating System, OS)是计算机系统中最基础的软件,位于计算机硬件与用户应用程序之间。它作为接口,负责管理硬件资源,并为用户和应用程序提供抽象和服务,使用户能够方便、高效、安全地使用计算机资源。操作系统的基本功能可以分为以下几个方面:
- 资源管理:操作系统管理计算机的硬件资源,包括CPU、内存、存储设备、网络接口等。通过资源的调度和分配,确保系统的高效运行。
- 进程管理:管理系统中的程序执行,包括进程的创建、销毁、调度和状态转换,以及进程之间的通信和同步。
- 内存管理:负责内存的分配与回收,提供进程所需的内存空间,同时通过机制(如虚拟内存)实现内存的高效利用和安全性。
- 文件管理:提供文件系统,管理磁盘上的文件和目录,支持文件的创建、删除、读写和权限设置。
- 设备管理:操作系统通过设备驱动程序管理硬件设备,提供设备访问的统一接口,并协调多个进程对设备的访问。
- 用户接口:提供命令行接口(CLI)或图形用户界面(GUI),使用户能够与系统交互。
- 安全与保护:实现权限管理,确保系统资源不被非法访问,保护用户数据的安全性。
核心组件库
将操作系统的功能模块分解为多个核心组件库,每个组件库负责特定的功能(如进程管理、内存管理、文件系统等),核心组件库设计了抽象接口和实用工具,提供统一的功能调用方式。
我们设计了如下几个核心组件库:
- lego_arch:与架构相关的组件,其中包含对寄存器的操作封装、指令封装、与架构相关的中断处理的封装
- lego_irq:对中断处理的一系列抽象接口
- lego_timer:有关定时器、计时器的抽象接口
- lego_device:设备驱动接口,用于开发设备驱动
- lego_mem:有关内存管理的抽象,用于设计物理和虚拟内存分配器、物理到虚拟内存的映射器、页面置换器
- lego_process:有关进程管理的抽象,用于设计进程调度等
- lego_fs:有关文件系统的抽象,参考Linux VFS
- lego_net:有关网络协议栈的抽象
- lego_io:阻塞、非阻塞、异步三种基础IO模型的抽象
- lego_virt:与虚拟化相关的定义
开发者需要按照其所实现的组件类型与功能按需依赖某个核心组件库开发组件,对于核心组件库的设计与使用在第二部分核心组件库 & OS杂谈中会详细说明。