操作系统(OS)是一种系统软件,负责管理计算机的硬件资源,并为应用程序提供服务。它协调处理器时间、内存、存储和输入/输出设备的使用,同时确立共享和保护这些资源的规则。通过提供进程、地址空间和文件等抽象,操作系统使应用程序不必直接控制每一项硬件细节就能运行。操作系统既包括支持众多应用程序和用户的通用环境,也包括资源受到严格限制或有严格时序要求的专用系统。(pages.cs.wisc.edu)
结构与接口
内核是操作系统的核心组件,负责特权操作和核心资源管理。在由硬件强制实施特权隔离的系统中,应用程序通常在用户态执行,而内核在权限更高的模式下执行。这种区分限制了应用程序修改受保护内存或执行可能影响整台计算机的操作的能力。一些驱动程序也在内核态执行,因此其正确性对系统稳定性至关重要。(learn.microsoft.com)
应用程序通过系统调用请求内核服务,包括创建进程、访问文件或分配资源等操作。程序库通常会封装这些请求,提供便于使用的接口。系统调用通过受控入口转移控制权,因此不同于应用程序内部的普通函数调用。完整的运行环境并不只有内核,还可能包括程序库、命令解释器、后台服务和用户界面软件。操作系统与配套实用程序之间的界限因系统而异。(pages.cs.wisc.edu)
进程与处理器管理
进程是正在执行的程序,以及执行所需的资源和状态。线程是进程内部的一条执行序列。同一进程中的线程通常共享该进程的地址空间和资源,同时各自保有寄存器、栈等执行状态。这使应用程序内部的多项活动能够独立推进。(learn.microsoft.com)
处理器调度决定哪个可运行的线程或进程获得处理器时间。调度策略使用算法,在响应能力、公平性和吞吐量等目标之间取得平衡。抢占式系统可以中断当前执行,将处理器交给另一项任务。这种切换需要保存并恢复执行状态,这一过程称为上下文切换。分时系统利用此类机制,支持多个程序或用户进行交互式操作。在多核硬件上,操作系统还可以支持并行计算,让任务同时执行,而不仅仅是轮流执行。(pages.cs.wisc.edu)
内存与并发
虚拟内存为进程提供逻辑地址空间,其中的地址会映射到物理内存。这种抽象支持隔离、受控共享和灵活的内存分配。采用分页时,地址空间被划分为大小固定的页,这些页不必占据连续的物理位置。某些系统可以将部分页存放在辅助存储设备中,并在需要时将其调入内存。因此,虚拟内存不仅是一种扩展内存容量的技术,也是一种组织和保护机制。(pages.cs.wisc.edu)
受控的共享内存使原本相互分离的执行上下文能够交换数据。然而,当操作在时间上重叠时,并发计算会带来协调问题。如果多个线程在没有适当控制的情况下修改共享状态,结果可能取决于它们的执行顺序。包括锁和条件变量在内的同步(计算机科学)机制用于控制访问并协调执行进度。协调不当可能造成死锁,即各方因等待彼此的资源或操作而无法继续执行。(pages.cs.wisc.edu)
存储、设备与通信
文件系统将持久性数据组织为文件和目录,记录元数据,并实现打开、读取、写入和删除文件等操作。文件名提供面向人的组织方式,而文件描述符或句柄则在程序内部标识已打开的资源。存储管理还涉及空间分配,以及在数据变化时维持一致性;这些工作不同于单纯向设备传输字节。(pages.cs.wisc.edu)
设备驱动程序将操作系统服务与特定硬件连接起来。驱动程序处理设备专用的命令和交互,同时提供其他软件可以使用的接口。网络支持同样提供通信机制,而不要求每个应用程序各自实现硬件访问。网络协议栈可以实现TCP/IP协议族等协议,使应用程序能够通过标准化服务进行通信。(pages.cs.wisc.edu)
保护与内核架构
操作系统的保护机制将执行上下文相互隔离,并限制对资源的访问。例如,在 Windows 中,进程除了拥有自己的虚拟地址空间,还具有安全上下文。这些机制是网络安全的一部分,但特权隔离并不能消除所有漏洞:有缺陷的特权代码仍可能危及系统安全。(learn.microsoft.com)
在宏内核中,大量操作系统功能位于同一个具有特权的地址空间内。微内核则只保留较少的机制,将更高层的服务放在这一核心之外实现。两者的区别在于功能在何处执行,而不只是完整系统提供多少功能。基于微内核的系统仍然需要驱动程序和文件服务等组件。架构会影响通信开销、隔离边界,以及被赋予广泛权限的代码量。(arxiv.org)
历史发展与专用系统
早期操作系统发展出了自动管理程序执行的机制;后来的系统进一步扩展了交互式资源共享。Unix于 1969 年在贝尔实验室开始成形,具备进程管理、文件系统、实用程序和命令解释器。它将内核功能与用户层工具分离的做法,成为一种影响深远的组织方式。Linux是一种类 Unix 内核;Linux 发行版将其与其他软件组合,提供完整的运行环境。(pages.cs.wisc.edu)
实时操作系统强调可预测的调度和对事件的及时响应。实时要求关注的是能否在规定期限内完成任务,而不仅仅是平均速度是否足够快;能否满足这些要求,取决于整个应用程序和系统的行为。另一种区别在于执行环境:操作系统可以运行在虚拟机内,而非直接运行在物理硬件上。在这些环境中,资源隔离仍然必要,而客户机与宿主机之间的资源共享会改变两者的保护边界。(freertos.org)