操作系统课程讲解(操作系统的课程)

操作系统课程讲解(操作系统的课程)文章来源 鲜枣课堂 原文作者 小枣君 我们每天都在使用操作系统 Windows Linux 安卓 iOS 都是非常经典的操作系统 有了它们 我们才能够更好地使用电脑 手机这样的硬件终端设备 那么 操作系统的本质是什么 到底具有哪些功能和特性 我们常说的进程 线程 内核 中断 GUI CLI 又是什么意思 接下来 我们一起寻找答案 什么是操作系统 从本质来看 操作系统其实就是一套软件

大家好,我是讯享网,很高兴认识大家。




讯享网


文章来源:鲜枣课堂

原文作者:小枣君

我们每天都在使用操作系统。Windows、Linux、安卓、iOS,都是非常经典的操作系统。有了它们,我们才能够更好地使用电脑、手机这样的硬件终端设备。那么,操作系统的本质是什么?到底具有哪些功能和特性?我们常说的进程、线程、内核、中断、GUI、CLI……又是什么意思?接下来,我们一起寻找答案。




什么是操作系统



从本质来看,操作系统其实就是一套软件。它也是代码写出来的,像我们现在普遍使用的Windows10,主要就是C/C++写的。


操作系统属于软件,但又是非常特别的软件。


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


计算机的层次架构


对于用户(user)和上层应用软件(application)来说,操作系统把很多底层的细节都封装隐藏起来了,通过标准接口以供调用,大大简化了上层应用软件的开发。


与此同时,它又提供了很多辅助性的工具和功能,让用户可以更好地掌控计算机的运行状态。


换句话说,操作系统就是一个超级大管家。它什么都管,为用户服务,向用户负责。




操作系统的核心功能



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


2.1 进程管理


进程(Process)和线程(Thread),是操作系统里非常重要的两个概念。


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


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


我们使用“Ctrl+Alt+Del”快捷键调出Windows的任务管理器,就可以看到很多的进程:


任务管理器


线程,则是操作系统进行运算调度的最小单位。


线程比进程更低一级,是进程内的一个可以独立调度和指派的执行单元。


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


进程与线程


例如你启动了一个浏览器程序,那么,操作系统就会开启一个相应的进程。这个进程里面,又会有多个线程,如HTTP请求线程、事件响应线程、渲染线程等。


如果你关闭这个浏览器程序,从任务管理器可以看到,这个进程和对应的线程都没有了。当然,你也可以在任务管理器里,直接右键关闭某个进程,程序也就强制退出了。Linux里干掉一个进程,用的命令就是“kill(杀掉)”。


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


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


进程的状态变化


需要注意的是,一个程序可以对应一个或多个进程。而一个进程同样可以对应一个或多个程序(虽然比较罕见)。


2.2 内存管理


以前我们多次提到过冯·诺依曼架构。程序要从硬盘到内存,才能够被运算器(CPU)处理。每个程序都有足够的内存空间,才能够确保正常运行。


冯·诺依曼架构


运行之后,内存也需要被及时释放,才能让别的程序能够继续占用。


内存的分配和回收,也是操作系统负责的。


除了内存分配之外,操作系统还要负责进行内存保护(确保每道程序都只在自己的内存区中运行,进程间不会互相干扰)、地址映射(将程序装入内存运行时,需要将逻辑地址转化成内存单元所限定的物理地址)、内存扩充(借助于虚拟存储技术,从逻辑上去扩充内存容量)等工作。


2.3 设备管理


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



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


2.4 文件系统管理


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


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


2.5 安全和权限管理


有了硬件和软件资源,我们还要指定到底谁能够使用他们。


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


2.6 交互界面


操作系统是用户使用计算机的一个工具。我们想要让计算机工作,就需要一个好的交互界面,以便下达命令、查询结果和状态。


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


很多人都用过“cmd”调出来的命令行界面,那种叫做联机命令接口,也叫交互式命令接口。



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


值得一提的是,除了(联机、脱机)命令接口之外,操作系统还提供了程序接口。


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



现在有很多应用程序通过高级语言提供的库函数,间接地进行系统调用。我们可以把这些库函数视为对系统调用的进一步封装。



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




操作系统的主要特性



除了上面说的六大功能之外,操作系统还有四个特性,分别是:并发、共享、异步和虚拟。


3.1 并发(concurrency)


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


并发和并行(parallellism)是有区别的。并行是两个或多个事件在同一时刻内发生。举例来说,一边吃苹果一边看电视,是并行。在1分钟之内,吃掉苹果、香蕉和橘子,就是并发。



很显然,并发从宏观上看是同时发生的,但从微观上看是分时交替发生的(和通信里面的“时分复用”有点像)。并发考验的是资源调度的能力,而并行需要硬件的支持,例如采用多核处理器。


3.2 共享(sharing)


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


互斥共享,顾名思义,就是不能同时用。仅当某一进程访问完并释放该资源后,才允许另一进程对该资源进行访问。这类资源称为临界资源或独占资源。计算机系统中的大多数物理设备,都属于临界资源。


同时共享,就是能够多个进程同时用。最典型的设备,就是硬盘。


大家应该也能看出来,共享的底层逻辑也和通信里的“复用”很像,要么是分时间进行共享(时分复用),要么是分物理资源空间进行共享(空分复用),主要看资源本身的属性。


3.3 异步(asynchronous)


异步,是同步的反义词。同步是大家保持节奏统一。而异步,是各走各的路。

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


3.4 虚拟(virtualization)


最后是虚拟。这个我们在云计算里经常会提到。把一个物理实体,变成若干个逻辑实体,就是虚拟。


虚拟的本质,还是资源的复用。只不过通过软件来实现了,用户感受到的,是多个逻辑实体。




操作系统的组成架构




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


操作系统的核心,就是大家经常听说的内核(Kernel)。



内核直接与硬件进行交互,并为其他系统软件和应用程序提供服务。前面提到的操作系统核心功能,除了交互界面之外,大部分都和内核紧密相关。


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


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


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


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


一般情况下,开机后,用户启动某个应用程序,操作系统内核程序会在合适的时候主动让出CPU,转为用户态。这时,如果发生了中断,操作系统内核会强行夺回CPU控制权,让CPU从用户态变成内核态。


这里刚好说说中断(Interrupt)。


处理器收到信号,提示发生了某个事件,应予以注意,这种情况就称为中断。

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


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


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


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


继续说内核。内核也分为多种类型,例如大内核、微内核。


所有的操作系统服务都在内核空间运行,就是大内核,也叫宏内核、单内核。


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



相比大内核,微内核更灵活,架构更清晰,代码没有那么庞大,维护起来也容易一些。


操作系统负责交互界面的,叫做外壳(Shell)。前面介绍过,包括命令解释器和图形用户界面等。


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


下面这个,是一个操作系统整体架构的示意图:



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





操作系统的常见分类



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


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


以前的操作系统只有几MB,一个软盘就能装得下。现在的操作系统,动辄几个GB,甚至几十GB,DVD光盘都装不下。


针对不同的设备终端类型,以及不同的应用场景,操作系统也出现了细化分的趋势,演变出很多类别。


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


如下表所示:


END

转载内容仅代表作者观点

不代表中国科学院半导体所立场


编辑:三月

责编:木心

投稿邮箱:

往期推荐

1.半导体所在仿生覆盖式神经元模型及学习方法研究方面取得进展

2.半导体所在反型结构钙钛矿太阳能电池方面取得重要进展

3.芯片为什么用铜作为互联金属?

4.关于芯片的7nm到底是个啥

5.硅基集成光量子芯片技术

6.量子反常霍尔效应有多反常?或将带来下一次信息技术革命!




小讯
上一篇 2025-05-27 23:27
下一篇 2025-06-12 14:58

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/167683.html