写给小白的操作系统入门科普

2024-09-15 www.dnxtw.com

在这篇文章中,我们来谈谈操作系统(Operating System, OS)。

我们每天都在使用操作系统。Windows、Linux、安卓、iOS,它们都是非常经典的操作系统。有了它们,我们可以更好地使用硬件终端设备,如计算机和手机。

那么,操作系统的本质是什么呢?它的功能和特点是什么?我们常说的过程、线程、内核、中断GUI、CLI…… 又是什么意思?

接下来,我们一起寻找答案。

█ 操作系统是什么?

从本质上讲,操作系统实际上是一套软件。它也是由代码编写的,就像我们现在常用的一样 Windows10主要是 C / C 写的。

操作系统属于软件,但也是一个非常特殊的软件。

在整个计算机架构中,它最接近硬件,是最重要和最基本的软件。它负责控制和管理整个计算机系统的资源,并进行合理的组织、调度和分配。

计算机的层次结构

对于用户(user)以及上层应用软件(application)就操作系统而言,隐藏了许多底层细节,通过标准接口进行调用,极大地简化了上层应用软件的开发。

同时,它还提供了许多辅助工具和功能,使用户能够更好地控制计算机的运行状态。

换句话说,操作系统是一个超级管家。它管理一切,为用户服务,并对用户负责。

█ 操作系统的核心功能

操作系统的核心功能可分为以下几个方面:

一是流程管理。

进程(Process)和线程(Thread),这两个概念在操作系统中非常重要。

流程是资源分配的基本单位。操作系统负责过程之间的创建、终止、调度、同步和通信。应用程序的运行,包括操作系统本身的核心功能,都以过程的形式存在。

每个过程包括程序的代码、数据和状态,以及操作系统为程序分配的资源(如内存空间、文件句柄、网络端口等)。操作系统通过过过程管理确保每个过程的高效和安全共享 CPU 时间。

我们使用“Ctrl Alt Del"快捷键调出 Windows 任务管理器可以看到许多过程:

任务管理器

线程是操作系统操作调度的最小单位。

线程比过程低一级,是过程中可以独立调度和分配的执行单位。

一个过程中可以有多个线程,共享相同的内存空间和资源,更容易通信和数据共享。

进程与线程

例如,如果您启动浏览器程序,操作系统将打开相应的过程。在这个过程中,会有多个线程,例如 HTTP 请求线程、事件响应线程、渲染线程等。

如果您关闭浏览器程序,您可以从任务管理器中看到,此过程和相应的线程都消失了。当然,您也可以直接右键关闭任务管理器中的过程,程序将被迫退出。Linux 在里面干掉一个过程,使用的命令是“kill(杀)”。

操作系统直到后期才引入线程。它进一步提供了程序执行的并发性,提高了系统的效率。

过程和线程可以包括执行状态、就绪状态、阻塞状态等。管理过程和线程本质上是为了实现 CPU 资源分配调度。

过程的状态变化

需要注意的是,一个程序可以对应一个或多个过程。一个过程也可以对应一个或多个程序(尽管这是罕见的)。

二是内存管理。

我们以前多次提到过冯冯・诺依曼体系结构。只有当程序从硬盘到内存时,它才能被计算器使用(CPU)处理。为了保证正常运行,每个程序都有足够的内存空间。

冯・诺依曼架构

运行后,内存也需要及时释放,以便其他程序能够继续占用。

操作系统还负责内存的分配和回收。

除了内存分配外,操作系统还负责内存保护(确保每个程序只在自己的内存区域运行,过程不会相互干扰)、地址映射(将程序装入内存运行时,逻辑地址需要转换为内存单元限制的物理地址)、内存扩展(借助虚拟存储技术,从逻辑上扩展内存容量)等。

三是设备管理。

这是操作系统的重要任务之一。它管理和控制外部设备(如打印机、硬盘驱动器、键盘、鼠标等)的使用。

具体来说,它可以完成用户流程提出的 I/O(输入 / 输出)请求分配用户流程所需的要求 I/O 设备,提高 CPU 和 I/O 提高设备利用率 I/O 速度等。高效 I/O 可以避免调度 I/O 设备拖动系统的运行。

四是文件系统管理。

文件系统是操作系统组织、存储和检索数据的一套规则。

操作系统为组织、存储、检索和保护文件提供了一套机制,包括文件的创建、删除、读写操作和目录结构的维护。也可以理解为操作系统对存储设备和资源的管理和调用。

第五,安全和权限管理。

有了硬件和软件资源,我们还需要指定谁能使用它们。

操作系统提供完善的安全机制,确保用户数据的安全性和完整性,包括用户身份验证、访问控制和加密。

最后一个核心功能是交互界面。

操作系统是用户使用计算机的工具。如果我们想让计算机工作,我们需要一个良好的交互界面来发布命令、查询结果和状态。

操作系统提供图形用户界面(GUI,Graphical User Interface)或者命令行界面(CLI,Command Line Interface),方便用户与计算机交互。这是计算机在社会上全面普及的前提。

很多人都用过“很多人都用过”cmd“调出的命令行界面称为在线命令接口,也称为交互式命令接口。

我们以前也学过写批处理文件(.bat 文件),给出几个命令,让计算机一个接一个地执行。这叫脱机命令接口。

除了(在线、离线)命令接口外,操作系统还提供程序接口。

一组系统调用程序接口(system call)该组成允许应用程序间接调用资源。

目前,许多应用程序通过高级语言提供的库函数间接调用系统。我们可以将这些库函数视为系统调用的进一步包装。

需要注意的是,所有与共享资源相关的操作(如存储分配、I/O 操作、文件管理等。),必须通过系统调用向操作系统内核提出服务请求,由操作系统内核代为完成。这可以保证系统的稳定性和安全性。

█ 操作系统的主要特点

除上述六个功能外,操作系统还具有并发、共享、异步和虚拟四个特点。

并发(concurrency)

并发性是指在同一时间间隔内发生两个或两个以上的事件。操作系统具有并发性,是指其同时处理和调度多个程序的能力。

并发和并行(parallellism)有区别。并行是两个或两个以上的事件同时发生。例如,吃苹果和看电视是并行的。在 1 在几分钟内,吃苹果、香蕉和橘子是并发的。

显然,从宏观角度来看,并发是同时发生的,但从微观角度来看,它是分时交替发生的(有点像通信中的“时间重用”)。并发测试了资源调度的能力,并行需要硬件的支持,如多核处理器。

共享(sharing)

共享是指系统中的资源可以通过多个并发过程共同使用。它分为两种方式,相互排斥和共享。

互排斥共享,顾名思义,就是不能同时使用。只有在一个过程访问并释放资源时,才允许另一个过程访问资源。这种资源被称为临界资源或独家资源。计算机系统中的大多数物理设备都是临界资源。

同时共享意味着可以同时使用多个过程。硬盘是最典型的设备。

我们也应该看到,共享的底层逻辑也与通信中的“重用”非常相似,要么是时间共享(时间重用),要么是物理资源空间共享(空间重用),主要取决于资源本身的属性。

异步(asynchronous)

异步是同步的反义词。同步意味着每个人都保持统一的节奏。而异步,就是走自己的路。

异步的前提是并发性。如果没有并发性,所有任务只能是 one by one 串行执行,那么整个系统的效率就会很低。

虚拟(virtualization)

最后是虚拟。我们经常在云计算中提到这一点。虚拟是将一个物理实体变成几个逻辑实体。

虚拟的本质是资源的再利用。它只是通过软件实现的。用户感受到的是多个逻辑实体。

█ 操作系统的组成架构

让我们来看看操作系统的组成架构。

操作系统的核心是我们经常听到的核心(Kernel)。

核心直接与硬件交互,并为其他系统软件和应用程序提供服务。除交互界面外,上述操作系统的核心功能大多与核心密切相关。

计算机里的 CPU,工作状态可分为内核状态(也称管状态)和用户状态(也称目状态)。操作内核程序时,是内核状态。操作应用程序时,是用户状态。

操作系统有两种指令:“非特权指令”和“特权指令”。

应用程序只能使用“非特权指令”,如加法指令、减法指令等。作为“管理者”,操作系统的核心有时会让 CPU 执行一些 high level 内存清零指令等“特权指令”。这些指令影响很大,只允许操作系统内核使用。

当操作系统处于核心状态时,可以执行特权指令。如果处于用户状态,则只能执行非特权指令。

一般情况下,用户启动应用程序后,操作系统内核程序会在适当的时候主动放弃 CPU,转向用户状态。此时,如果中断,操作系统的核心将被迫恢复 CPU 控制权,让 CPU 从用户态到内核态。

这里只是说中断(Interrupt)。

当处理器收到信号并提示发生事件时,应注意。这种情况称为中断。

中断分为内中断和外中断。

内部中断又称异常,是指来自 CPU 内部事件与当前执行指令有关。如程序的非法操作代码、地址越界、操作溢出等。异常不能被屏蔽,一旦发生,应立即处理。

三种典型的内部中断类型包括:陷入困境(trap,由陷入指令引起)、故障(fault,内核程序可以通过错误的条件进行修复)、终止(abort,内核程序因致命错误而无法修复)。

外部中断是狭义的中断,信号来自 CPU 外部事件与当前执行的指令无关。典型的是时钟中断和时钟中断 I/O 中断,或人为干预。

继续说内核。

内核也分为大内核、微内核等多种类型。

所有操作系统服务都在内核空间运行,即大内核,又称宏内核和单内核。

只有最基本的系统服务在核心空间运行,其他服务移出核心,放在用户空间运行,是微核心。

微内核比大内核更灵活,架构更清晰,代码不那么大,更容易维护。

操作系统负责交互界面,称为外壳(Shell)。包括命令解释器和图形用户界面。

除内核和外壳外,操作系统还包括备份工具、恢复工具、防火墙、网络服务等许多其他工具和服务。

以下是操作系统整体架构的示意图:

这个是 Linux 系统架构示意图,供参考:

█ 常见的操作系统分类

随着技术的发展,现代操作系统已经发展了几十年。

计算机硬件不断升级,用户需求不断增加,系统功能不断迭代,最终导致整个操作系统的架构越来越复杂,代码体积越来越大。

以前的操作系统只有几个 MB,一个软盘可以安装。现在的操作系统,通常有几个 GB,甚至几十 GB,DVD 光盘装不下。

对于不同的设备终端类型,以及不同的应用场景,操作系统也有细化分类的趋势,演变成多个类别。

一般来说,操作系统大致可分为桌面操作系统、服务器操作系统、移动终端操作系统、嵌入式操作系统、物联网操作系统等类别。

如下表所示:

关于这些操作系统的具体故事,大家可以参考小枣君之前的文章,今天就不赘述了:

操作系统最强入门科普(Unix / Linux 篇)

操作系统的发展历史(DOS / Windows 篇)

手机操作系统的起起落落(上)

过去手机操作系统的起伏(下)

以上就是今天文章的全部内容。

感谢您的耐心观看。假如大家都觉得文章有用,欢迎多转发。谢谢!

本文来自微信公众号:微信公众号(ID:null),作者:小枣君

广告声明:文本中包含的外部跳转链接(包括不限于超链接、二维码、密码等形式)用于传递更多信息,节省选择时间。结果仅供参考。计算机系统网络上的所有文章都包含了本声明。

相关阅读