- 操作系统教程
- OS - 首页
- OS - 需求
- OS - 概述
- OS - 历史
- OS - 组成部分
- OS - 结构
- OS - 架构
- OS - 服务
- OS - 属性
- OS - 周转时间 & 等待时间
- OS 进程
- OS - 进程
- OS - 进程调度
- OS - 调度算法
- 先来先服务 (FCFS) 调度算法
- 最短作业优先 (SJF) 调度算法
- 轮询 (Round Robin) 调度算法
- 最高响应比优先 (HRRN) 调度算法
- 优先级调度算法
- 多级队列调度
- 上下文切换
- 进程操作
- 彩票进程调度
- 预测 SJF 调度的突发时间
- 竞争条件漏洞
- 临界区同步
- 互斥同步
- 进程控制块
- 进程间通信
- 抢占式和非抢占式调度
- OS 同步
- 进程同步
- OS 内存管理
- OS - 内存管理
- OS - 虚拟内存
- OS 存储管理
- OS - 文件系统
- OS 类型
- OS - 类型
- OS 其他
- OS - 多线程
- OS - I/O 硬件
- OS - I/O 软件
- OS - 安全性
- OS - Linux
- 考试题库及答案
- 考试题库及答案
操作系统教程
操作系统 (OS) 是一组管理计算机硬件资源并为计算机程序提供常用服务的软件。当您开始使用计算机系统时,操作系统 (OS) 充当您和计算机硬件之间的接口。操作系统实际上是一种低级**软件**,归类为**系统软件**,支持计算机的基本功能,例如内存管理、任务调度和控制外围设备等。
本简单易懂的教程将带您逐步学习操作系统的概念。
什么是操作系统?
操作系统 (OS) 是计算机用户和计算机硬件之间的接口。操作系统是一种软件,它执行所有基本任务,例如文件管理、内存管理、进程管理、处理输入和输出以及控制外围设备(如磁盘驱动器和打印机)。
通常,**计算机系统**由以下组件组成:
- **计算机用户**是使用整个计算机系统的用户。
- **应用软件**是用户直接用来执行不同活动。这些软件简单易用,例如浏览器、Word、Excel、各种编辑器、游戏等。这些通常是用高级语言编写的,例如 Python、Java 和 C++。
- **系统软件**性质更复杂,更接近计算机硬件。这些软件通常是用低级语言(如汇编语言)编写的,包括**操作系统**(Microsoft Windows、macOS 和 Linux)、编译器和汇编器等。
- **计算机硬件**包括显示器、键盘、CPU、磁盘、内存等。
现在让我们用简单的词来说明:
如果我们认为计算机硬件是计算机系统的身体,那么我们可以说操作系统是它的灵魂,让它活起来,即运行起来。如果没有安装操作系统,我们就无法使用计算机系统。
操作系统 - 示例
市场上有很多操作系统,包括付费和免费(开源)的。以下是几个最流行的操作系统的示例:
- **Windows:**这是最流行的商业操作系统之一,由微软开发和销售。它在市场上有不同的版本,例如 Windows 8、Windows 10 等,大多数是付费的。
- **Linux:**这是一个基于 Unix 的、最受欢迎的操作系统,于 1991 年 9 月 17 日由 Linus Torvalds 首次发布。如今,它有 30 多个变体,例如 Fedora、OpenSUSE、CentOS、Ubuntu 等。大多数是免费的,尽管您可以通过支付少量许可费来获得其企业版。
- **macOS:**这同样是一种 Unix 操作系统,自 2001 年以来由 Apple Inc. 开发和销售。
- **iOS:**这是一个由 Apple Inc. 专为其移动设备(如 iPhone 和 iPad 等)创建和开发的移动操作系统。
- **Android:**这是一个基于修改后的 Linux 内核和其他开源软件的移动操作系统,主要设计用于触摸屏移动设备,例如智能手机和平板电脑。
其他一些旧但流行的操作系统包括 Solaris、VMS、OS/400、AIX、z/OS 等。
操作系统 - 功能
简而言之,以下是操作系统的一些重要功能,我们将在接下来的章节中详细介绍:
- 进程管理
- I/O 设备管理
- 文件管理
- 网络管理
- 主内存管理
- 辅助存储管理
- 安全管理
- 命令解释器系统
- 控制系统性能
- 作业会计
- 错误检测和纠正
- 协调其他软件和用户
- 许多其他重要任务
操作系统 - 历史
操作系统多年来一直在发展。在 20 世纪 50 年代,计算机只能一次运行一个程序,就像计算器一样,但在接下来的几十年里,计算机开始包含越来越多的软件程序(有时称为库),这些程序构成了当今操作系统的基础。
第一个操作系统由通用汽车公司于 1956 年创建,用于运行一台 IBM 大型机,其名称为 IBM 704。IBM 是第一家开发操作系统并在其计算机中分发操作系统的计算机制造商(20 世纪 60 年代)。
关于操作系统演变的一些事实:
- 斯坦福研究所于 20 世纪 60 年代后期开发了联机系统 (NLS),这是第一个类似于我们今天使用的桌面操作系统的操作系统。
- 微软于 1981 年收购了 QDOS(快速简易操作系统),并将其命名为 Microsoft 操作系统 (MS-DOS)。截至 1994 年,微软已停止支持 MS-DOS。
- Unix 是 20 世纪 60 年代中期由麻省理工学院、AT&T 贝尔实验室和通用电气共同开发的。最初它被称为 MULTICS,代表多路复用操作系统和计算系统。
- FreeBSD 也是一个流行的 UNIX 派生版本,起源于伯克利的 BSD 项目。所有现代 Macintosh 计算机都运行 FreeBSD 的修改版本 (OS X)。
- Windows 95 是一个面向消费者的基于图形用户界面的操作系统,构建在 MS-DOS 之上。它于 1995 年 8 月 24 日由微软作为其 Windows 9x 操作系统系列的一部分发布。
- Solaris 是一个专有的 Unix 操作系统,最初由 Sun Microsystems 于 1991 年开发。在 2010 年 Sun 被 Oracle 收购后,它被更名为 Oracle Solaris。
为什么要学习操作系统
如果您渴望成为一名优秀的计算机程序员,那么强烈建议您深入了解操作系统的内部工作原理。这使您有机会了解数据如何在磁盘中保存,CPU 如何创建和调度不同的进程运行,以及如何与不同的 I/O 设备和端口交互。
有各种低级概念可以帮助程序员设计和开发可扩展的软件。底线是,如果不了解操作系统的概念,就不能认为某人是优秀的计算机**应用软件**开发者,甚至无法想象有人在不深入了解操作系统的基础上成为**系统软件**开发者。
如果您是应届毕业生,并且正在申请 Google、Microsoft、Amazon、IBM 等标准公司的职位,那么您很可能会被问到与操作系统概念相关的问题。
目标读者
本教程专为计算机科学专业人员和学生准备,特别是为 BCA、MCA、B.Tech、M.Tech 工程学学生准备,以帮助他们理解一般的操作系统从基础到高级的概念。操作系统是每个教授计算机科学的大学的核心概念之一,并且这个科目在考试中占有很大的权重。
先决条件
在您开始使用本教程学习操作系统之前,我们假设您已经了解计算机基础知识,例如什么是计算机硬件、CPU、主内存、辅助内存、设备、文件等。如果您还不了解这些概念,那么将很难理解与操作系统相关的各种概念,因此强烈建议您在尝试学习操作系统之前先学习我们的计算机基础教程。
关于操作系统的常见问题
关于操作系统有一些非常常见的问题 (FAQ),本节尝试简要地回答它们。
操作系统就像计算机的管理者。它是一个软件程序,充当用户和计算机硬件之间的中间体,管理计算机的资源并提供运行应用程序的平台。操作系统控制诸如管理内存、处理输入和输出设备(如键盘和打印机)、为 CPU 调度任务以及提供与计算机交互的用户界面等任务。
开发的第一个操作系统被称为“GM-NAA I/O”,代表“通用汽车北美汽车运营输入/输出”。它是由通用汽车公司在 20 世纪 50 年代初期为其 IBM 701 大型机创建的。GM-NAA I/O 的设计目的是为了管理输入和输出操作,例如从穿孔卡片读取数据并将结果写入打印机,以满足通用汽车的计算需求。
最新的个人电脑和笔记本电脑操作系统:
Microsoft Windows 11 − 由微软开发,Windows 11是Windows操作系统的最新版本。它提供了改进的用户界面、新的生产力功能以及性能和安全性的提升。
macOS Monterey − 由苹果公司开发,macOS Monterey是Mac电脑的最新macOS操作系统版本。它引入了新的功能,如通用控制、专注模式,以及对Safari和FaceTime的增强。
Ubuntu 22.04 LTS − 由Canonical开发,Ubuntu 22.04 LTS(长期支持版)是基于Linux的电脑的最新Ubuntu操作系统版本。它提供了更新的软件包、改进的性能和稳定性。
学习操作系统所需的时间取决于多种因素,例如你之前的知识储备、你想要达到的理解深度以及你投入学习的时间。学习操作系统的基础知识,例如理解其功能、组件和基本概念,可能需要几周到几个月的时间。
然而,熟练掌握操作系统,包括理解进程管理、内存管理、文件系统和网络等高级主题,可能需要持续学习和练习几个月甚至一年以上的时间。
操作系统的概念随着时间的推移不断发展,许多个人和组织都做出了贡献。早期的操作系统示例之一是GM-NAA I/O,它是由通用汽车公司在20世纪50年代为其IBM 701大型机开发的。
然而,我们今天所知的现代操作系统概念开始形成于20世纪60年代,当时开发了诸如CTSS(兼容分时系统)和MULTICS(多路信息和计算服务)之类的系统。这些系统为后来的操作系统(如AT&T贝尔实验室在20世纪70年代开发的Unix)奠定了基础,Unix极大地影响了随后的操作系统,包括Linux和macOS。
操作系统的四种主要类型是:
单用户单任务操作系统 − 这些操作系统一次只允许一个用户在一个计算机上工作,并且一次只能处理一个任务或程序。例如早期版本的MS-DOS。
单用户多任务操作系统 − 这些操作系统允许一个用户同时运行多个程序或任务。操作系统在任务之间快速切换,给人以同时运行多个程序的错觉。例如现代版本的Windows、macOS和Linux。
多用户操作系统 − 这些操作系统允许多个用户同时在同一台计算机上工作。每个用户都可以拥有自己的用户帐户并独立运行自己的程序。例如基于UNIX的系统(如Linux和macOS),以及Windows服务器版本。
实时操作系统 (RTOS) − 这些操作系统旨在实时处理数据并响应事件,并对完成任务有严格的截止时间限制。它们用于时间至关重要的应用中,例如控制工业机械、汽车系统和航空航天应用。例如QNX和VxWorks。
操作系统的安全性取决于各种因素,包括其设计、实现以及为保护其免受漏洞和威胁而采取的措施。虽然没有操作系统可以被认为完全不受安全风险的影响,但有些操作系统以其强大的安全功能和实践而闻名。
例如,苹果公司开发的macOS通常因其强大的安全架构、定期安全更新以及内置的安全功能(如Gatekeeper和FileVault)而受到好评。同样,一些Linux发行版,如Ubuntu和Fedora,也因其安全措施而备受推崇,包括及时的安全补丁和对开源安全实践的重视。
操作系统中的死锁是指两个或多个进程因为每个进程都在等待另一个进程释放其所需的资源而无法继续执行的情况。这就像交通堵塞,汽车互相堵塞而无法前进。在死锁情况下,任何进程都无法取得进展,导致系统停滞。当进程在等待其他进程的同时持有资源时,可能会发生死锁,从而产生循环依赖关系,阻止任何进程的执行。
操作系统中的后台打印(Simultaneous Peripheral Operations On-line,SPOOLING)是一种用于更有效地管理输入/输出 (I/O) 操作的技术。它的工作原理是将来自输入设备(如键盘)或输出设备(如打印机)的数据临时存储在一个缓冲区中,允许计算机在数据传输到设备或从设备传输数据的同时继续处理其他任务。这有助于防止CPU因等待速度慢的设备完成其操作而空闲等待,从而提高整体系统性能。
例如,当您打印文档时,操作系统可能会将数据后台打印到打印后台程序,该程序会对打印作业进行排队,并在后台将其发送到打印机,允许您继续处理其他任务,而无需等待打印过程完成。
操作系统中的虚拟内存是一种技术,它允许计算机结合使用其物理内存 (RAM) 和辅助存储器(如硬盘驱动器或SSD)来模拟比实际拥有的内存更多的内存。它的工作原理是将数据在物理内存和辅助存储器之间临时传输,允许计算机运行需要比物理可用内存更多的内存的程序。当物理内存已满时,操作系统会将较少使用的内存移动到辅助存储器,为其他任务释放物理内存空间。此过程对用户是透明的,并通过允许更多程序同时运行而不会耗尽内存来提高系统性能。