更多优质内容
请关注公众号

操作系统入门(二)操作系统的功能和特征-张柏沛IT博客

正文内容

操作系统入门(二)操作系统的功能和特征

栏目:其他内容 系列:操作系统入门 发布时间:2022-02-01 13:11 浏览量:1322
本系列文章目录
展开/收起

- 操作系统的功能



操作系统是控制和管理计算机硬件和软件资源组织程序调度向用户(和用户程序)提供请求底层服务的方便接口和操作界面的一种系统软件。


操作系统的主要功能是存储管理作业和进程管理设备管理文件管理扩充硬件设备用户接口服务


1、存储管理:又包括内存分配地址映射内存保护扩充

内存分配--具体指按策略对每一个程序分配内存;


地址映射--CPU执行用户程序时要从内存取出指令或数据就要先将这个指令或数据的相对地址(或称逻辑地址)转为物理地址,这就是地址映射功能(需硬件支持)。


内存保护--具体指不同用户程序(的数据和指令)在内存中的隔离。

不同用户程序只能在各自的内存空间活动,不能互扰也不能侵入操作系统空间。

具体措施如设置两个界限寄存器分别存放正在执行的程序在内存中的上界地址值和下界地址值。程序运行时产生的每个访问内存的地址都要检查是否大于等于下界寄存器的值并小于上界寄存器的值。如果越界则发生中断并进行相应处理。


内存扩充--具体指虚拟存储技术,将程序运行所需的数据和指令放入内存,而暂不使用的部分放入磁盘,并根据实际情况进行交换。


2、作业和进程调度

用户的计算任务称为作业,程序执行过程称为进程。进程是分配资源和在处理机上运行的基本单位,线程是调度和独立运行的基本单位。

一个作业通常经过2级调度才能在CPU执行,先是作业调度,它把选中的一批作业放入内存并分配必要资源,为这些作业建立进程。再经过进程调度按 一定算法从就绪进程队列中选出一个合适的就绪进程在CPU上运行。


3、设备管理

包括缓冲区管理(为了解决CPU和外设速度不匹配的问题),设备驱动(实现CPU与通道和外设的通信,CPU向通道发出IO指令,驱动程序驱动设备进行IO操作,当IO操作完成后,通道向CPU发出中断信号,根据中断信号找到中断处理程序并执行),设备无关性(用户编写的程序与实际使用的物理设备无关,由操作系统把用户程序使用的逻辑设备映射到物理设备)

PS:通道是一个独立于CPU的专门I/O控制的处理机,控制设备与内存直接进行数据交换。它有自己的通道命令,可由CPU执行相应指令来启动通道,通道在IO操作结束时向CPU发出中断信号。


4、文件管理


5、用户接口服务

操作系统将底层复杂多样的硬件功能封装成简单易用的服务接口提供给用户,使用户和开发者无需关心底层硬件的原理和实现就能操控硬件。

用户接口服务分为3种:系统调用(又称程序接口)、命令行(shell,又称命令接口)和图形用户界面(GUI)

系统调用是内核与用户程序间的接口,通常以C函数的形式出现,所有用户程序要通过系统调用才能获取操作系统的基层服务。系统调用只能在程序中被调用,不能在命令行终端执行。执行系统调用会改变处理机的执行状态(从用户态到核心态)。

系统调用只能由用户程序调用,不能由用户直接使用,而命令行和图形用户界面可由用户直接使用。


6 、对硬件机器扩展

通过虚拟化,将一个物理设备扩充为多个逻辑设备。



- 操作系统的特征


操作系统的4个特征:并发、共享、虚拟和异步。


并发

指两个或多个事件在同一时间段内的不同间隔发生。这些事件宏观上是同时发生的,但微观上是交替串行发生的。

操作系统的并发性指计算机系统中“同时”运行着多个程序,这些程序宏观上看是同时运行着的,而微观 上看是交替运行的。


共享

即资源共享,是指系统中的资源可供多个并发执行的进程共同使用。

共享又分为 互斥共享(某资源在一个时间段内只允许一个进程访问) 和 同时共享 两种方式。


虚拟

虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上 对应物(后者)是用户感受到的。

时分复用技术和空分复用技术就是虚拟性的体现。


时分复用和空分复用是操作系统对计算机上资源进行管理复用的两种方式:

时分复用主要是多道程序在CPU上分时运行,但同一时间内每个程序只能独占一个CPU,时间片用完后程序让出CPU给其他程序运行,从而在宏观上表现为多道程序共享CPU并发运行,这是通过系统软件实现的。

分享的时间单位叫做时间片,大概几十毫秒。

分时的实现需要中断和时钟系统的支持,时钟系统把CPU时间分成一个个时间片,操作系统把时间片分给各个程序,当时间片计数到时后,会产生一个时钟中断,控制转向操作系统。操作系统选择另一个程序分配时间片并让其投入运行。每一次时间片用完都会发生一次中断;

空分复用则是多个客户同一时间能共享某个资源,但每个用户只占用该资源的一部分而不是全部资源(即共享而非独占),如 多个程序共享内存和磁盘资源。


异步

异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的, 而是走走停停(进程走走停停,但CPU一直在运行不会停),以不可预知的速度向前推进,这就是进程的异步性。

并发和共享是操作系统最基本的特征。如果失去共享性、虚拟性和异步性就无法实现并发性;如果并发性不存在,则共享性、虚拟性和异步性就没有意义




- 操作系统的运行机制


一条高级语言的代码可以编译成多条机器指令,程序运行的过程实际上是CPU执行一条条机器指令的过程。


相关概念

应用程序 和 内核程序

应用程序是应用开发者在应用层实现的用户程序,内核程序是操作系统的内部程序,众多内核程序组成了操作系统内核(因此内核本是上就是一堆程序)。内核也是最接近硬件的部分。

不是所有操作系统的功能都在内核中。


特权指令 和 非特权指令

CPU运行的指令分为特权指令和非特权指令两种,应用程序只能使用“非特权指令”,如加法指令等。内核程序作为计算机管理者会让CPU执行一些特权指令,如内存清零指令等。

CPU在运行一条指令前就能判断出该指令是特权指令还是非特权指令。


内核态 和 用户态

CPU具有两种状态:用户态和内核态。系统是通过判断当前CPU状态得知当前运行的是内核程序 还是 应用程序,以及能否执行特权指令。

CPU状态保存在 程序状态字寄存器(PSW,即标志寄存器)的某个标志位,1表示内核态,0表示用户态。

用户态到内核态的切换由“中断”引发,CPU检测到中断信号后会立刻进入核心态(本质是PSW对应标志位变为“内核态”的标志位),CPU会停止运行用户程序转而运行处理中断信号的内核程序。

内核态到用户态的切换是通过执行一条特权指令实现的,该指令将PSW对应标志位改为“用户态”,之后操作系统会让出CPU使用权给用户程序。

变态的过程是有成本的,要消耗不少时间,频繁地变态会降低系统性能







- 中断和异常

中断是由CPU内部或IO设备发出,由CPU接收的用来暂停当前进程运行,转而处理其他优先任务的信号。


中断的作用

中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。(中断是让操作系统夺回CPU使用权的,是用户态切换核心态的唯一途径)。

如果没有中断,那么一旦以应用程序在CPU上运行,CPU会一直运行这个程序直到该程序结束。这就意味着,没有中断,就不存在分时复用,也就不存在多道程序并发。

因此中断是实现并发的基础。


中断的分类

中断分为 内中断 和 外中断。内中断 和 外中断的本质区别是信号来源是否来自于CPU内部。

内中断与CPU当前执行的指令有关,中断信号来源与CPU内部(CPU发给CPU自己的中断);外中断与CPU当前执行的指令无关,中断信号来源与CPU外部(IO设备和其他硬件发给CPU的中断);



内中断又分为自愿中断(指令中断)和强迫中断(硬件故障 和 软件中断);外中断分为外设请求和人工干预等。

自愿中断(指令中断)如 用户程序进行系统调用时会使用访管指令(又称陷入指令、trap指令),该指令会引发一个内中断信号。这种中断是用户程序主动引发的中断,让出CPU给内核程序。

硬件故障 如缺页中断。

软件中断 指用户程序执行非法指令,如整数除以0。

外设请求 如 IO操作完成时IO设备发出的中断信号、时钟中断(CPU的时钟部件每个一个时间片会给CPU发送一个时钟中断信号)等。

人工干预 如用户ctrl+c强行终止一个进程。





另一种分类方式:




中断处理过程

1、CPU每执行完一条指令,就会检查是否有外中断信号。

2、如果检测到外中断信号,系统会保存被中断进程的CPU环境(如程序状态字PSW、程序计数器PC、各种通用寄存器)。然后CPU从用户态转为内核态,操作系统获得CPU控制权。

3、根据中断信号 的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置,执行对应的中断处理程序。中断处理程序是内核程序。

4、恢复原进程的CPU环境并退出中断,返回原进程继续往下执行。






- 系统调用

系统调用是操作系统提供给应用程序调用的特殊函数,应用程序可以通过系统调用请求操作系统提供的基层服务(如操控硬件),而无需关心底层如何实现。

简单来说,系统调用是应用程序和硬件之间的接口。




为什么需要系统调用

因为用户进程直接操作硬件可能发生不可预知的错误和不安全的非法操作,所以硬件等资源必须由操作系统内核管理,用户进程想要操控硬件等资源必须委托操作系统完成,而无法直接使用和操控硬件等资源。内核会对各个进程的资源请求进行协调处理。

正因为用户进程无法直接操控硬件,因此需要操作系统提供系统调用这样的接口给用户进程间接的有权限限制的操控资源。


例如:如果两个进程可以随意地、并发地共享打印机资源,会发生什么情况?

两个进程并发运行,打印机设备交替地收到 WPS 和 Word 两个进程发来的打印请求,结果两篇论文的内容混杂在一起。



什么功能会用到系统调用

凡是与共享资源和设备有关的操作(如存储分配、IO操作、文件管理等),都必须通过系统调用向操作系统请求服务,由内核代为完成。





系统调用和库函数的区别

系统调用是内核程序,而库函数一般是高级语言自定义的函数,但系统调用可以被封装在库函数中以隐藏一些细节是程序员编程更方便,用户程序可以调用这些库函数间接调用这些系统调用,也可以直接进行系统调用。



系统调用发生了什么(过程)


以write系统调用为例,当用户程序调用系统调用,编译为机器指令后,CPU会执行2个关键指令 movl 和 int指令(int不是整型,而是interrupt指令的缩写,即陷入指令)。

先执行的movl指令将write系统调用的参数"abc"放入某个通用寄存器。

后执行的int指令会引发一个内中断,是CPU进入内核态。int指令紧跟一个参数x,x是系统调用号,不同的系统调用对应的中断处理程序入口不同,系统是根据系统调用号x在中断向量表中找到该系统调用对应的中断处理程序入口。

综上,系统调用的过程为:传递系统调用参数到CPU寄存器(movl)→ 执行陷入指令(用户态)→ 执行相应的内核程序处理系统调用(核心态)→ 返回用户程序

注意:

1、陷入指令是在用户态执行的,执行陷入指令后立即引发一个内中断。

2、发出系统调用请求是在用户态发生,对系统调用的相应处理是在内核态进行的。

3、陷入指令是唯一一个只能在用户态执行,而不能在核心态执行的指令。





更多内容请关注微信公众号
zbpblog微信公众号

如果您需要转载,可以点击下方按钮可以进行复制粘贴;本站博客文章为原创,请转载时注明以下信息

张柏沛IT技术博客 > 操作系统入门(二)操作系统的功能和特征

热门推荐
推荐新闻