当前位置:网站首页 > 编程语言 > 正文

操作系统基本作用(操作系统基本作用有哪些)



目录

1.操作系统的运行机制

简单了解程序的运行原理

两种指令:特权指令和非特权指令

两种处理器状态:核心态/内核态/管态和用户态/目态

两种程序:内核程序和应用程序

内核:

如何变态?

2.中断和异常

中断的作用

中断的分类

内中断

外中断

中断机制的基本实现原理

3.系统调用

什么是系统调用?

系统调用与库函数的区别

为什么系统调用是必须的?

什么功能要用系统调用实现?

系统调用的过程


高级语言编写代码—》机器指令

程序运行的过程就是CPU执行一条一条机器指令的过程。在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型。

指令就是处理器(CPU)能识别执行的最基本的命令

”小黑框“是交互式命令接口,与这里的指令不一样。

特权指令:不允许用户直接使用的指令。如内存清零指令。

非特权指令:是指允许用户直接使用的指令。如加法指令和减法指令。

可以理解为CPU内部有一个小开关,当小开关为0时,CPU处于核心态,此时CPU可以执行特权指令,切换到用户态的指令也是特权指令。当小开关为1时,CPU处于用户态,此时CPU只能执行非特权指令。

”管理程序“(内核程序)要执行一些特权指令,而被管理者(应用程序)出于安全考虑不能执行这些特权指令。

内核(Kernel)是操作系统最重要最核心的部分,也是最接近硬件的部分,由很多内核程序组成操作系统的内核。甚至可以说,一个操作系统只要有内核就够了。(eg:Docker(容器)—》仅需Linux内核)

内核态—》用户态:一条修改PSW的特权指令。(将标志位设置为用户态)

用户态—》内核态:由中断引起,硬件自动完成。CPU检测到中断信号后,会立即变为“核心态”,并且停止运行当前的应用程序,转而运行处理中断信号的内核程序。

让操作系统内核强行夺回CPU的控制权,使CPU从用户态变为核心态。

(如果没有”中断“机制,那么一旦应用程序上CPU运行,便会一直运行该应用程序,就没有”并发“多道了)

内中断

(也称异常,例外,与当前执行的指令有关,中断信号来源于CPU内部)

1、陷阱、陷入(trap)【软件中断】

2、故障(fault)【软件中断】

由错误条件引起的,可能被内核程序修复。内核程序修复故障后会吧CPU使用权还给应用程序,让它继续执行下去。如:却也故障,除数为0

3、终止(abort)【硬件中断】

由致命错误引起,内核程序无法修复该错误。因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。硬件故障 如:控制器出错,存储器检验错等。

例子:

若当前执行的指令是非法的,则会引发一个中断信号。

1、试图在用户态下执行特权指令

2、执行除法指令时发现除数为0

3、有时候应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令——陷入指令,该指令会引发一个内部中断信号。(执行“陷入指令”,意味着应用程序主动地将CPU控制权还给操作系统内核。“系统调用”就是通过陷入指令完成的【是应用程序故意引发的】))

外中断

(也称中断,与当前执行的指令无关,中断信号来源于CPU外部)【硬件中断】

1、时钟中断—由时钟部件(每隔一个时间【如50ms】会给CPU发送一个时钟中断信号)发来的中断信号。

2、I/O中断请求—由输入/输出设备发来的中断信号。

(1)检查中断信号

(2)找到相应的中断处理程序——通过”中断向量表“实现

不同的中断信号需要用不同的中断处理程序来处理。

当CPU检测到中断信号后,会根据信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。

中断信号类型中断处理程序指针012...3.........
显然,中断处理程序一定是内核程序,需要运行在“内核态”。

操作系统对应用程序/程序员提供的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。

有的库函数是对系统调用的进一步封装(创建一个新的文件),有的库函数没有使用系统调用(如“取绝对值函数”,math.h)。
                                      
普通应用程序可直接进行系统调用,也可使用库函数。有的库函数涉及系统调用,有的不涉及。编程语言向上提供库函数,有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使程序员编程更加方便。操作系统向上提供系统调用,使上层程序能请求内核的服务裸机

a要打印,b也要打印,他们打印的内容混合在一起了。

解决方法:由操作系统内核对共享资源进行统一的管理,并向上提供“系统调用”,用户进程想要使用打印机这类共享资源,只能通过系统调用向操作系统内核发出请求。内核会对各个请求进行协调处理。

(凡是与共享资源有关的操作,会直接影响到其他进程的操作,就一定需要操作系统介入,就需要通过系统调用来实现)

设备管理:完成设备的请求或释放,以及设备启动等功能。

文件管理:完成文件的读、写、创建及删除等功能。

进程控制:完成进程的创建、撤销、阻塞及唤醒等功能。

进程通信:完成进程之间的消息传递或信号传递等功能。

内存管理:完成内存的分配、回收以及获取作业占用内存区大小和起始地址等功能。

传递系统调用参数—》执行陷入指令(用户态)—》执行相应的内请求核程序处理系统调用(核心态)—》返回应用程序

tip:

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

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

到此这篇操作系统基本作用(操作系统基本作用有哪些)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 换地方上网ip地址不变(ip地址换为什么连不上网)2025-01-29 07:00:05
  • 若依文件上传从后端限制文件类型(若依文件上传从后端限制文件类型怎么办)2025-01-29 07:00:05
  • libssh2编译(libssh2编译安装)2025-01-29 07:00:05
  • pem文件和key文件(pek文件是什么意思)2025-01-29 07:00:05
  • 时钟的代码(时钟代码完整版)2025-01-29 07:00:05
  • 网页聊天平台(聊天 网页)2025-01-29 07:00:05
  • 单片机程序编写代码(单片机如何编写程序)2025-01-29 07:00:05
  • libxml2.dll(libxml2.dll,无法继续执行代码)2025-01-29 07:00:05
  • vs怎么调试(vs怎么调试代码)2025-01-29 07:00:05
  • 结构游戏的分类ppt(结构游戏的分类及技巧有哪些)2025-01-29 07:00:05
  • 全屏图片