1. 城镇大全网
  2. 综合百科

学校的希沃电脑怎么做系统(Hey同学操作系统确定不了解一下吗)

不了解计算机系统也能写程序,这是不争的事实。但是我们学习操作系统不是为了创造一个操作系统,而是为了理解操作系统,写出更好的程序。

全文语境思维导图如下:

1. 什么是操作系统

要了解操作系统是什么,是用来做什么的,我们需要从操作系统需求的由来说起。

1946年,世界上第一台通用计算机ENIAC在美国宾夕法尼亚大学诞生。它用了18000个电子管,占地170平方米,重30吨。最可怕的是,无论是ENIAC还是早期的计算机都没有操作系统,这个170平方米的庞然大物的运行完全依靠工程师的手工操作。什么感觉?请看下图:

图中满屋子的大机器是ENIAC。从照片上我们可以看到一个操作人员正在手动调节一个按钮,整个房间里像这样的按钮有上千个!可想而知,在没有操作系统的时代,工程师需要直接操作这种反人类的硬件面板,运行和维护一台电脑的人力成本简直不可想象。

由此,介绍了操作系统最重要的功能之一:管理、分配和调度计算机硬件资源。

有了操作系统,一个程序需要占用多少内存,分配哪个内存空;只有一个CPU,如何同时运行多个程序等等。,用户无需在意,更不用说学习那些晦涩难懂的底层专业知识如数字电路逻辑、计算机组成原理等。,这些都留给操作系统!

也就是说,操作系统将所有底层硬件封装在一个黑盒中,用户可以直接向操作系统发送指令,完成与底层硬件的交互。

那么,操作系统在哪里呢?我们来看看早期的操作系统磁盘操作系统,DOS(磁盘操作系统)是什么样子的:

【/h/】有同学说这不是我们用的cmd命令行,没毛病,但这是整屏的界面,整屏!而不是在对话框中。

显然,DOS这种通过键盘输入命令的操作方式,要比手动调整按钮和连线简单得多。但是这样的命令行界面(CLI)并不能满足大多数用户的口味,所以后来Windows等图形界面(GUI)好的操作系统逐渐成为主流。毕竟只需要点击鼠标就可以操作,门槛足够低。

可见一个操作系统的运行方式和界面的美观程度对用户来说是非常重要的。

这就引出了操作系统的第二个主要功能:为用户提供一个友好、清晰、简洁的操作界面(技术上称为Shell),用户可以通过Shell执行操作系统提供的所有功能。对于命令行,你需要提供足够的命令;对于图形界面,有必要提供足够数量的按钮。

综上所述,操作系统本质上是运行在计算机上的软件/程序。作为基于硬件的第一层软件,操作系统是硬件和各种软件之间的桥梁。它的功能大致可以分为两部分:

管理计算机硬件与软件资源向用户提供一个与系统交互的操作界面

2. 计算机硬件简单介绍

为了工作,操作系统必须了解很多硬件,至少硬件是如何面对程序员的。为此,这里我们先简单介绍一下现代个人电脑中的硬件,然后再讨论操作系统中的细节。

一台简单的个人电脑可以抽象成类似下图的模型:

CPU、内存和I/O设备都由一条系统总线连接,并通过总线与其他设备通信。

处理器

所谓处理器就是我们常说的CPU,是计算机的大脑。CPU从存储器中提取指令并执行它。CPU的执行周期是从内存中提取一条指令,解码确定其类型和操作数,然后执行,再提取解码执行下一条指令。重复这个循环,直到程序完成。

简单来说,就是记住这句话:一个程序需要放入内存,分配CPU,然后才能执行。

存储器

计算机的第二个主要部件是内存。理想情况下,内存应该非常快,比执行一条指令还要快,这样CPU的执行效率就不会受到内存的影响,而且足够大,非常便宜。

但目前的技术手段无法同时满足这三个目标,于是出现了不同的处理方法。存储系统采用分层结构。如下图,顶级内存速度最快,容量最小,成本最高,速度越低,容量越大,成本越低。

为什么访问寄存器这么快?那是因为寄存器和CPU的材质是一样的,所以和访问CPU相比几乎没有延迟。

寄存器的下一级是cache,大家都很熟悉。通常情况下,缓存的使用会带来性能的提升。操作系统一直在使用缓存,比如将经常使用的文件保存在内存中,以避免从磁盘中重复检索这些文件。

下一层是内存,也叫主存,通常称为随机存取存储器(RAM)。缓存中无法满足的所有访问请求都将被转移到内存中。

除了内存RAM,很多电脑还有少量的只读存储器(ROM)。它们不同于RAM。断电后,ROM不会丢失内容,一旦存储就不会被修改。ROM非常快,而且便宜。

下一级是磁盘,容量更大。磁盘唯一的问题是随机存取数据的时间比内存慢三个数量级左右。其速度低的原因是磁盘是一种机械设备,具有特殊的结构,如下图所示:

一个圆盘中有一个或多个金属圆盘,分别以5400、7200、10800转/分或更高转速旋转。有一个机械臂从边缘悬在磁盘上。在这种情况下,你可以回忆一下老式的塑料电唱机。信息写在磁盘上的一系列同心圆上。在任何给定的臂位置,每个磁头可以读取一段环形区域,称为磁道。给定手臂位置的所有轨迹组合在一起形成一个圆柱体。

每个磁道分为若干扇区,扇区的值为512字节。在现代磁盘中,外柱面比内柱面有更多的扇区。机械手从一个气缸移动到相邻的气缸大约需要1毫秒。随机移动到柱面的典型时间为5毫秒到10毫秒,具体取决于驱动器。在磁性臂到达正确的磁道后,驱动器必须等待所需的扇区旋转到磁头下方(这将需要大约5毫秒到10毫秒的延迟),然后才能开始读写。低端硬盘的速度是50MB/s,而高速盘的速度是160 MB/s..

I/O 设备

CPU和内存并不是操作系统唯一需要管理的资源,I/O设备和操作系统一样不可分割。如下图所示,I/O设备一般包括两部分:设备控制器和设备本身,比如键盘控制器和键盘。

设备控制器其实就是一个芯片或者一组芯片,可以接收操作系统的指令,控制物理设备。例如,从设备中读取数据并完成数据处理。

很多时候,控制设备的实际过程是非常复杂的,有很多细节。所以控制器的工作是为操作系统提供一个更简单(但仍然非常复杂)的接口。

I/O设备的另一部分是设备本身,接口相对简单。这是因为接口做不了很多工作,也已经标准化了。标准化之后,任何磁盘控制器都可以适配任何一种磁盘,所以标准化是非常必要的。

3. 操作系统的四个特征

操作系统有四个鲜明的特点:并发、共享、虚拟化和异步。其中,并发和共享是操作系统最基本的特征。没有并发和共享,就没有虚拟和异步。

我们先简单看一下这四个特点,其中涉及到的很多细节概念本文就不解释了,以后再开。

① 并发

并发性和并行性这对孪生兄弟经常让初学者感到困惑。

并发:并发是指宏观上在一段时间内能同时运行多个程序。当然,这些程序宏观上是同时发生的,但微观上是交替发生的。操作系统通过引入进程和线程,使得程序能够并发运行。并行:并行则指同一时刻能运行多个指令,指两个或多个事件在同一时刻同时发生。并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。

带着对下图的理解:

说到并发和并行,就不得不提CPU了。CPU作为计算机的大脑,主要与内存进行交互,从内存中提取指令并执行。而一个程序需要放入内存并分配CPU才能执行,所以并发和并行的能力与CPU的性能密切相关:

单核 CPU同一时刻只能执行一个程序,各个程序只能并发地执行 ;多核 CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行。

比如Intel的第八代i3处理器是4核CPU,也就是说可以并行执行四个程序。当然,即使是4核CPU,只要需要同时运行4个以上的程序,并发还是必不可少的,所以并发是操作系统的一个基本特性。

② 共享

共享就是资源共享,就是系统中的资源可以被内存中的多个并发进程使用。

有两种主要的共享方法:

1)互斥共享

所谓互斥共享,就是虽然这个资源是共享的,可以被所有进程使用,但是在某个时刻只允许一个进程访问同一个资源,这也叫互斥访问,互斥访问需要使用同步机制来实现。互斥共享/访问的资源称为关键资源。

举个互斥共享的例子:

如果同时使用QQ和微信视频,摄像头资源只能同时分配给其中一个进程。

2)同时共享

同时共享是互斥共享的对立面,互斥共享是允许多个进程在一段时间内“同时”访问系统中的某些资源。当然,所谓的“同时性”往往是宏观层面和微观层面的,这些进程可能交替地访问资源(即分时)。

举个同时分享的例子:

用QQ发送硬盘上的文件A,同时用微信发送硬盘上的文件B。宏观上,双方都在同时读取和发送文件,都在访问硬盘资源并从中读取数据。微观上,QQ和微信交替访问硬盘资源。

并发和共享作为一个操作系统最基本的两个特性,其实是互为存在的条件。为什么这么说?这样,我们继续通过上面发送文件的例子(用QQ发送硬盘上的文件A,用微信发送硬盘上的文件B)来看并发和共享的关系:

并发性的体现:两个进程正在并发执行。共享性的体现:两个进程需要共享地访问硬盘资源。③ 虚拟

先定义:虚拟是指把一个物理实体变成几个逻辑上的对应物。物理实体(前者)实际存在,而逻辑对应物(后者)是用户感受到的。

这个有点虚。我们用一个例子来理解一下:

如上所述,一个程序需要放入内存,分配CPU后才能执行。比如GTA5需要4GB运行内存,QQ需要256MB内存,Chrome需要512MB内存,网易云音乐需要256MB内存...假设我们的计算机只有4GB内存,CPU是单核的。那么就有以下两个问题:

问题1:这些程序同时运行需要的内存比4 GB大得多,那为什么能同时在我的电脑上运行呢?

答:这要归功于虚拟内存技术的空分复用技术。虽然我们的计算机实际上只有4GB内存,但它可以同时完美地运行这些比4GB内存大得多的程序。在用户看来,我们的电脑内存远远大于4GB。

问题二:既然一个程序需要分配CPU才能正常执行,为什么在一台单核CPU的电脑上可以同时运行这么多程序?

答:这是由于虚拟内存技术的时分复用。虽然实际上只有一个单核CPU,不可能同时并行执行这么多程序,但是从微观上看,CPU在每个微小的时间段内交替服务于各个进程,在用户看来我们的CPU是多核的。

我们来解释一下以上两种虚拟技术:

1)空分复用技术

空解复用技术的原理是将内存作为缓存,只保存一些最常用的程序,将大部分程序放在磁盘上。这种机制需要快速映射内存地址,以便将程序生成的地址转换为内存中字节的物理地址。这个映像由CPU中的一个组件完成,称为内存管理单元(MMU)。上面这张图我们也看过,我们再来回顾一下:

2)时分复用

多个进程之所以能在同一个CPU上并发执行,是因为采用了时分复用,让每个进程轮流占用处理器,每次只执行很小的时间片,切换很快。

显然,如果失去了并发性,一段时间内系统中只能运行一个程序,这就失去了实现虚拟化的意义。所以,没有并发,就没有虚拟。

④ 异步

异步是指在多程序环境下允许多个程序并发执行,但由于资源有限,进程的执行并不一致到最后,而是以不可预知的速度停止前进,这就是进程的异步性。

比如老扎想在8点和12点同时约会两个女生。每个女生的约会时间是2个小时。和一号二号约会是两个并发程序,而老扎心里是有限的系统资源。

因为并发程序会争夺系统资源的使用,而系统中的资源是有限的,那么同号或者2号的老扎的2小时预约时间可能不会一次性结束,而是断断续续的。可能8点到9点,9点到10点和2点,然后10点到11点,最后11点到12点。

如果并发丢失,即系统只能串行运行每个程序,那么每个程序的执行将一致到底。所以,只有系统有并发,才能导致异步。

4. 学习操作系统的核心内容

这个系列的核心内容如下:

进程管理存储管理文件系统管理I/O 设备管理① 进程管理

过程的概念在上面多次出现。为了更好地实现操作系统的并发和共享,引入了进程。

进程只是程序的一个执行过程,是暂时的。它不仅包括正在运行的程序实体,还包括这个正在运行的程序所占用的所有系统资源,如CPU、内存、网络资源等。很多小伙伴在回答进程的概念时,往往只说它是一个运行的实体,而忽略了进程所占用的资源。例如,如果同一个程序同时运行两次,那么它们就是两个独立的进程。

说到流程,就不得不说一个线程。一个进程中可以有多个线程,它们共享进程资源。

比如QQ和Chrome浏览器就是两个进程。Chrome进程中有很多线程,比如HTTP请求线程、事件响应线程、渲染线程等。线程的并发执行使得浏览器能够在点击浏览器中的新链接以发起HTTP请求时响应用户的其他事件。

其实我们说的流程管理主要包括两个内容:

进程通信进程调度

进程通信,顾名思义,就是进程之间的相互通信。一个进程作为计算机最宝贵的资源,需要放入内存,分配CPU后才能执行,而一个程序可能包含多个进程,这就需要进程之间相互通信和同步,共同完成程序。举个例子,如果A进程生成数据,B进程打印数据,那么B在A生成数据之前必须等待,那么A是不是要给B发消息,告诉B我已经生成数据了,你可以打印了?

进程调度是指在正常情况下,会有多个进程或线程同时争夺CPU。如果只有一个CPU可用,将导致CPU选择下一个运行的进程或线程。这个选择过程就是过程调度。

② 内存管理

缓存作为除寄存器之外最底层的内存,是由硬件管理的,所以我们的研究重点是对内存的管理。

其实我们在操作系统的上述四个特性中假设这个特性的时候就说过这个话题了。内存通常用于存储正在执行的程序。在一个非常简单的操作系统中,一次只有一个程序可以在内存中运行。如果要运行第二个程序,必须从内存中删除第一个程序,并将第二个程序加载到内存中。

显然,这是非常低效的。所以引入了虚拟内存技术,将内存作为缓存,只用来存储一些最常用的程序,大部分程序放在磁盘上。

所以内存管理做的事情大概是:

把使用频繁的部分程序放入内存当内存满的时候,替换掉内存中的某些部分③ 文件系统管理文件其实是进程创建的信息逻辑单元,一个磁盘可能含有几千甚至几百万个文件,每个文件都是独立于其他文件的,事实上,把每个文件看成一种地址空间更容易理解文件的本质。

文件也是由操作系统管理的。文件的构造、命名、存取、使用、保护、实现和管理方法都是操作系统设计的内容,是文件系统的主题。

④ I/O 设备管理

操作系统必须有效地管理I/O设备。它需要向I/O设备发送命令,捕获中断,并处理设备的各种错误。它还应该在设备和系统的其他部分之间提供简单易用的接口。

5. 内核态和用户态

专有名词“内核”可能会让大家有点困惑。这里解释一下。现代操作系统都采用了进程的概念。为了更好地处理系统的并发和共享,使各进程协调工作,仅仅依靠计算机硬件提供的功能是远远不够的。比如一个进程的调度是无法用硬件实现的,必须用一套基础软件来改造硬件资源,才能为进程的执行提供一个良好的运行环境。这个软件就是内核。

简单来说,内核就是操作系统中的一组程序模块。作为可信软件,提供支持进程并发执行的基本功能和基本操作,拥有对硬件设备和所有内存空的访问权。毫不夸张地说,内核是操作系统的核心。

当然,除了内核程序,操作系统还包括其他基础组件,如文本编辑器、编译器、与用户交互的程序,如桌面系统。

① 什么是内核态和用户态

所以既然内核是程序,需要运行,就必须给它分配一个CPU。所以在CPU上运行的程序有两种,一种是操作系统的内核程序(也叫系统程序),一种是应用程序。前者完成系统任务,后者实现应用任务。控制和被控制之间有一种关系。前者拥有管理和分配资源的权利,而后者只能向系统申请使用资源。

显然,我们要区分这两种在CPU上运行的程序,这也是内核态和用户态出现的原因。

内核态(kernel mode):当 CPU 处于内核态时,这是操作系统管理程序(也就是内核)运行时所处的状态。运行在内核态的程序可以访问计算机的任何资源,不受限制,为所欲为,例如协调 CPU 资源,分配内存资源,提供稳定的环境供应用程序运行等。用户态(user mode):应用程序基本都是运行在用户态的,或者说用户态就是提供应用程序运行的空间。运行在用户态的程序只能访问当前 CPU 上执行程序所在的地址空间,这样有效地防止了操作系统程序受到应用程序的侵害。

对于操作系统来说,什么样的程序应该放在内核态?这个要看对资源的需求,时间的紧迫,效率的低下。如CPU、内存、设备等资源管理器程序都应该在内核模式下运行,否则安全性得不到保证。对于文件系统和数据,文件系统数据和管理必须放在内核模式,但是用户数据和管理可以放在用户模式。

② 中断机制

在适当的情况下,操作系统的内核会主动将CPU的使用权让给应用程序,即CPU从内核态转换到用户态。如果CPU要从用户态返回内核态,只能通过中断机制来完成。如果没有中断机制,一旦CPU运行在应用程序上(用户模式),CPU就会一直运行应用程序。换句话说,中断是操作系统内核重新获得CPU使用权的唯一途径。可以说操作系统是由中断驱动的。

当然,这里的中断机制非常宽泛,包括三种手段,也就是说,从用户态切换到内核态有三种手段:

1)程序请求操作系统服务,执行系统调用2)程序运行时产生外中断事件(比如 I/O 操作完成),运行程序被中断,转向中断程序处理3)在程序运行时发生内中断(异常)事件,运行程序被打断,转向异常处理程序工作

以上三种意思都是通过中断机制发生的,那么我们来看看中断都有哪些类型。

根据中断信号来自CPU外部还是内部,中断类型分为外部中断和内部中断:

外中断 (也称中断,狭义上的中断)内中断(也称 异常、例外)

下面简单解释一下中断机制的基本原理:不同的中断信号必须由不同的中断处理程序来处理。然后当CPU检测到中断信号时,会根据中断信号的类型查询中断向量表,从而找到相应中断处理程序在内存中的存储位置。

③ 系统调用

如上所述,程序还可以通过执行系统调用使CPU从用户态转为内核态。那么系统调用和中断是什么关系呢?为什么这种方式也是一种中断机制?那是因为系统调用是由trap指令完成的,会引起内部中断。

更详细的说,操作系统作为计算机硬件之上的第一层软件,需要为上层提供一些简单易用的服务,上层包括用户和应用:

为用户提供GUI和命令界面,而为应用提供程序界面,程序界面由一组系统调用组成,由操作系统提供给开发者。可以理解为应用程序可以调用的特殊函数,应用程序可以通过系统调用请求操作系统内核的服务。

系统调用过程的简化版本如下:

1)在用户模式下,应用程序传递系统调用参数。

2)执行被捕获的指令,触发内部中断,使CPU进入内核状态。

3)在内核模式下,执行相应的请求,内核程序处理系统调用。

4)返回到应用程序

想想为什么系统调用是必要的。

比如我们去学校打印店打印论文,你按了WPS的“打印”选项,打印机就开始工作了。在你的论文打印到一半的时候,另一个学生按下了Word的“打印”按钮,开始打印自己的论文。想象一下,如果两个进程可以任意并发地共享打印机资源,将会发生什么。

显然是两个进程并发运行,导致打印机交替接收WPS和Word的打印请求。结果,两篇论文的内容混在了一起。

这个问题怎么解决?这就需要操作系统内核对共享资源进行统一管理,并向上层提供“系统调用”。如果一个运行在用户态的应用或者进程想要使用这个共享资源,只能通过系统调用向操作系统内核发出请求,然后内核会协调处理每个请求(进程调度)。

通过上面的例子,我们可以总结出哪些函数会用到系统调用:所有与共享资源相关的操作(比如内存分配、I/O操作、文件管理等。)必须通过系统调用从操作系统内核请求,操作系统内核会代其完成。这样可以保证系统的稳定性和安全性,防止用户非法操作。根据功能,这些系统调用可以大致分为以下几类:

设备管理。完成设备的请求或释放,以及设备启动等功能。文件管理。完成文件的读、写、创建及删除等功能。进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。进程通信。完成进程之间的消息传递或信号传递等功能。内存管理。完成内存的分配、回收以及获取作业占用内存区大小及地址等功能。6. 总结

缝补终于完成了。说实话,这一系列的综合文章真的很难写。既要照顾到知识体系的完整性,又要保证每个模块都能涉及到,但又不能太深太细。也要循序渐进,防止突然出现一个专有名词。

来源:https://xie.infoq.cn/article/19ac8a31e0f4c3869846b5530

,

猜你喜欢:综合百科

综合百科学校的希沃电脑怎么做系统(Hey同学操作系统确定不了解一下吗)

转载请注明:原文链接 | http://www.nnxc.com.cn/10043352939.html