# Overview 概述 - [What is an OS? 什么是操作系统?](#what-is-an-os) - [Process Abstraction 进程抽象](#process-abstraction-进程抽象) - [Separate 分割](#separate-分割) - [Service Provider 提供服务](#service-provider-提供服务) - [Conclusion 结论](#conclusion-结论) ## What is an OS? 操作系统是一个软件。它像是一个协调人,或者幻术师,简化硬件细节,给程序提供更友好、安全的接口。 ![操作系统将硬件变为更友好的接口](images/L01-OS-Overview.png) - 程序认为的“机器”实际上是操作系统提供的抽象接口,而不是物理硬件。 - 每个正在运行的程序只需关心它自己,而无需协调其他程序的运行。 - 操作系统提供更易于使用、安全的接口,隐藏了底层硬件。 操作系统不一定要实现全部功能。有时候,在特定环境下(比如在一个月球探测车上),会构建简化的操作系统。这种操作系统可能会缺乏很多功能,比如不支持网络或者缺乏安全措施。 ## Process Abstraction 进程抽象 一个进程有: - 地址空间 Address Space - 一个或多个线程,用以执行任务 - 其他的系统状态(打开的文件、网络连接,etc.) ## separate 分割 在进程运行时,每个程序都会假设自己独占处理器。它无需关心是否有别的进程会和它产生冲突,或者抢占它的CPU时间。操作系统通过提供一个抽象的“机器”来实现这一点,使得每个进程都感觉自己独占了整个系统。 同样地,为了保护,操作系统一般也不会允许程序访问其他程序的内存或资源。这么做会让系统立刻终止该程序,并生成一份core dump。 ![操作系统禁止非法内存访问](images/L01-OS-stop-illegal-memory-access.png) ## Service Provider 提供服务 操作系统还会提供一些服务: - 文件系统、网络、UI, etc. - 传输文件、权限管理、用户管理, etc. - Look and feel - 电源状态 ## Conclusion 结论 操作系统: - 提供便于使用的抽象层,应付各种各样的硬件 - 便利性、保护、可靠性... - 统合可用的硬件资源,保护用户进程 - 通过提供标准化的服务,简化应用开发 - 提供fault containment(错误隔离), fault tolerance(容错), 以及fault recovery(错误恢复)机制。