文章目录

  • 操作系统运行机制
  • 中断和异常
  • 系统调用

操作系统运行机制

CPU执行两种不同性质的程序:

1. 操作系统内核程序
2. 用户自编程序(应用程序)

其中内核程序用于执行一些特权指令,应用程序则不能执行。

特权指令,指计算机中不允许用户直接使用的指令。

在实现上,为了避免操作系统及其关键数据受到用户程序的破坏,将CPU的状态划分为用户态(目态)核心态(管态、内核态)

特权指令:只能由操作系统内核部分使用,不允许用户直接使用的指令。

内核程序运行在核心态(CPU执行特权指令) 应用程序运行在用户态(CPU执行非特权指令)

内核是计算机配置的底层软件,操作系统中一些与硬件关联的模块和运行频率高的程序构成了操作系统的内核,内核的指令操作工作在核心态,包含四方面内容:

  1. 时钟管理
    时钟是各部件中最关键的设备。
    第一功能是计时,操作系统需要通过时钟管理向用户提供标准的系统时间
    第二功能是中断管理,实现进程的切换(如时间片的轮转)

  2. 中断机制
    提高多道程序运行环境中CPU的利用率,是操作系统各项操作的基础(eg:鼠标键盘的键入,进程管理调度,系统功能调用,设备驱动,文件访问),现代操作系统是靠中断驱动的软件。
    中断机制中,只有一小部分属于内核,负责保护和恢复中断现场的信息,转移控制权到相关的处理程序,减少终端处理时间,提高系统并行处理能力

  3. 原语
    原语是一些关闭中断的公用小程序,特点如下:
    ①处于操作系统最底层,是最接近硬件的部分
    ②程序运行具有原子性,操作只能一气呵成(从操作安全性和便于管理方面考虑)
    ③这些程序的运行时间较短,调用频繁

    把具有这些特点的程序称为原语,定义原语的直接方法就是关闭中断,让所有动作不可分割完成后再打开中断。

系统的设备驱动CPU切换进程通信等功能中部分操作都可以定义为原语,使其成为内核的组成部分

  1. 系统控制的数据结构及处理
    系统中用来登记状态信息的数据结构很多,为了实现有效的管理,系统需要一些基本操作,常见操作有:
    ①进程管理
    ②存储器管理
    ③设备管理
    核心态指令实际上包括系统调用类指令和一些针对时钟中断原语的操作指令。

中断和异常

异常会引起中断,中断不一定引起异常
中断(外中断)————异常(内中断)

上述提到了核心态用户态两种工作状态,操作系统内核工作在核心态用户程序工作在用户态
系统不允许用户程序实现核心态的功能,但是又必须使用这些功能,所以要在核心态建立通道,向系统资源发出申请,由系统资源直接访问核心态,实现从用户态进入核心态。在实际操作系统中,CPU运行上层程序时唯一进入通道的途径就是通过中断和异常,运行用户态的CPU就会立即进入核心态。
中断对于一个运行在计算机上的实用操作系统,是不可缺少的。操作系统的发展大体上就是一个不断提高资源利用率的过程,而资源利用率就需要在程序并未使用某种资源时,把它对那种资源的占有权释放,这一行为就需要中断机制的实现。

  1. 定义
    中断(外中断)指来自CPU执行指令以外事件的发生(如设备发出的I/O结束中断,表示设备I/O处理已经完成,希望处理机能够向设备发下一个I/O请求,同时让完成I/O后的程序继续运行)。时钟中断,表示一个固定的时间片已到,让处理机处理计时启动定时运行的任务等。这一类中断通常是与当前指令执行无关的事件,即它们与当前处理机运行的程序无关。
    异常(内中断、例外、陷入)指源自CPU执行指令内部的事件。对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现要立即处理。

  2. 中断处理过程

①关中断
CPU响应中断后,首先保护程序的现场,在保护现场的过程中,CPU不应响应更高级中断源的中断请求;否则如果程序现场保存不完整,在中断服务程序结束后,就不能正确的恢复并继续执行现行程序
②保存断点
为保证中断服务程序执行完毕后能正确返回原来程序,必须将原来程序的断点(程序计数器PC)保存起来。
③引出中断服务程序
取出中断服务程序入口地址送入PC
④保存现场和屏蔽字
进入中断服务程序后,首先保存现场,现场信息一般指程序状态字寄存器PSWR某些通用寄存器的内容。
⑤开中断
允许更高级中断请求得到响应。
⑥执行中断服务程序
中断请求的目的
⑦关中断
保证在恢复现场屏蔽字时不被中断。
⑧恢复现场和屏蔽字
现场屏蔽字恢复到原来的状态。
⑨开中断、中断返回
中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到源程序的断点处,以便继续执行源程序

恢复现场:在中断返回前,必须将寄存器的内容恢复到中断处理前的状态,这部分工作由中断服务程序完成。

中断返回:由中断服务程序的最后一条中断返回指令完成。


系统调用

系统调用是操作系统提供的用户接口之一(程序接口API),是应用程序系统之间的接口操作系统的主要功能是为应用程序的运行创建良好环境。系统调用可视为特殊的公共子程序。系统中的各种公共资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。一个操作系统提供的系统调用命令由几十到上百条,系统调用可分为:

  1. 设备管理
    完成设备请求释放以及设备启动等功能。
  2. 文件管理
    完成文件创建删除等功能。
  3. 进程控制
    完成进程创建撤销阻塞唤醒等功能。
  4. 进程通信
    完成进程之间消息传递信号传递等功能。
  5. 内存管理
    完成内存分配回收获取作业占用内存区大小及始址等功能。

【OS】操作系统运行环境相关推荐

  1. linux 中文 gb32,《GB∕T 32394-20.15 信息技术 中文Linux操作系统运行环境扩充要求》.pdf...

    <GB∕T 32394-20.15 信息技术 中文Linux操作系统运行环境扩充要求>.pdf h t t p s w w w .d o c88.co m /w 42020228h t t ...

  2. 操作系统4小时速成:操作系统发展和分类,运行环境:运行机制和内核,用户态非特权,核心态特权,中断技术,访管指令

    操作系统4小时速成:操作系统发展和分类,运行环境:运行机制和内核,用户态非特权,核心态特权,中断技术,访管指令 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得 ...

  3. Java开发和运行环境的搭建(详细教程)

    对JDK.JRE.Java 的认识 JDK 是Java Development Kit的缩写,即Java开发工具集.JDK是整个Java的核心,包括了Java运行环境(JRE).Java开发工具和Ja ...

  4. 操作系统复习--OS的运行机制和体系结构

    操作系统复习–OS的运行机制和体系结构 本文章按照王道操作系统参考 文章主要分:运行机制,操作系统内核,操作系统的体系结构 运行机制 两种命令 特权指令:不允许用户直接使用的命令,如:I/O,中断命令 ...

  5. Zephyr物联网操作系统之运行环境搭建(一)

    对于zephyr这个实时嵌入式操作系统,可以先在x86架构上搭建运行环境,学习相关知识.之后,根据实际需求,再将操作系统移植到不同架构的MCU上. 一.环境搭建 准备工作:安装ubuntu操作系统 虚 ...

  6. 自己动手写操作系统--搭建保护模式下的运行环境:bochs下安装freedos

    在进行保护模式的运行环境配置前,先看了了下书上的代码,编译运行结果如下:nasm 3_pmtest1.asm -o pmtest1.bin,可以看到界面出现了红色的 p 字 保护模式环境配置 1:在网 ...

  7. 如何用JavaScript判断前端应用运行环境(移动平台还是桌面环境)

    我们部署在某些云平台或者Web服务器上的前端应用,既可以用PC端浏览器访问,也可以用手机上的浏览器访问. 在前端应用里,有时候我们需要根据运行环境的不同做出对应处理.比如下面这段逻辑,如果判断出应用当 ...

  8. 10天确定Python,运行环境(超详细步骤)

    倘若有人告诉你,他在学习Python编程,却没有安装运行环境,那你赶紧叫他滚,并离他远点,因为他在欺骗你的感情. 没有安装运行环境,程序根本无法跑起来,对错不能知根知底,试问是在学编程,还是在跟空气对 ...

  9. Java若伊是啥_java运行环境和运行机制

    先来介绍三个概念: JVM----JAVA virtual machine java虚拟机:对字节码提供相同的接口,对操作系统提供不同的接口,以适应各个OS JRE----JAVA runtime e ...

最新文章

  1. C语言网络编程:TCP实现多线程实现多客户端
  2. 遇到困难挫折也不要悲观:每个人生来就是冠军(转)
  3. 《伊万博士: 进化》利用三角剖分算法复刻《超越光速》地图机制
  4. 200726C的数据传递方式
  5. 美团点评CTO罗道锋确认离职,新东家是快手?
  6. LeetCode 12/13 罗马数字与整型互转(哈希,贪心)
  7. 03MyBatis的事务管理和缓存机制
  8. 「leetcode」973. 最接近原点的 K 个点【优先级队列】详解
  9. 网易云会员歌曲下载记录(.ncm-.mp3)
  10. 如何高效学习一门新技术
  11. 复制网站zencart模板的方法
  12. dis的前缀单词有哪些_三个常见的前缀,re-,anti-,dis-,你知道它们的用法吗?
  13. HTML5七夕情人节表白网页❤抖音超火的樱花雨3D相册❤ HTML+CSS+JavaScript
  14. 不做etl sql 怎么直接取_不管茄子怎么做,直接下锅是大错!多加1步,茄子更入味,不变色...
  15. 在linux服务器下配置代理服务器( 使用liunx服务器的ip用来代理 )
  16. ISE使用,Xilinx学习
  17. hyper v设置虚拟机动态内存,内存最大最小值
  18. SAP SD 自定义销售订单审批状态
  19. 【软件工程】药品存销信息管理系统
  20. 古诗词推荐(一):春风十里扬州路,卷上珠帘总不如

热门文章

  1. java sqlite3查询慢_java连接数据库进行查询优化跑不通谁能帮我调下通
  2. python怎么画出圆润的曲线_利用python画出AUC曲线的实例
  3. Android开发之ADB常用命令
  4. matlab球心投影,球心投影
  5. java+mock+例子_java – 如何使用PowerMock和Mockito模拟枚举类的实例?
  6. Mysql存储过程(四)——异常处理
  7. 快讯千树资本投资柒小佰 踏入儿童出行消费领域...
  8. iOS 编写高质量Objective-C代码(六)
  9. Linux中ifcfg-eth0配置参数解释
  10. 方法重载,new,override