首页 > 其他分享 >第二章、操作系统基础操作

第二章、操作系统基础操作

时间:2023-02-24 21:33:06浏览次数:34  
标签:调用 操作系统 中断 系统 应用程序 内核 操作 第二章

1. 操作系统的启动 异常和中断

启动:

OS的启动加载是通过一步步来执行实现的,主要涉及到 BIOS(基本I/O处理系统,检查外设硬件能否正常工作)、DISK(存放OS)、Bootloader(加载OS,能够让OS从硬盘加载到内存中去).

  1. 通电之后BIOS就会从一个特定的地址开始执行(CS:IP = 0xf0000:fff0 CS是段寄存器,IP是指令寄存器) ;
  2. 然后接下来会完成一系列操作,包括 加电自检(POST) ,自检是指检查一些硬件外设设备能否正常工作; 在自检完成后就会将bootloader从硬盘上加载进内存中去(bootloader的位置往往位于硬盘的第一个扇区,仅仅只有512个字节);
  3. 接下来CPU的控制权就交给了bootloader, bootloader最主要的一个功能就是将 OS 从硬盘上加载进内存,然后CPU的控制权交给OS , 接下来系统的管理就由OS来控制.

在这里插入图片描述

系统调用、中断、异常的概念及不同点:

  • 系统调用(来源于应用程序)
    • 应用程序主动向操作系统发出服务请求
  • 异常(来源于不良的应用程序)
    • 非法指令或者其它坏的处理状态(如内存出错)
  • 中断(来源于外设)
    • 来自不同的硬件设备的计时器和网络中断

三者的不同点:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为什么应用程序不能直接访问硬件而是通过操作系统?
-计算机运行时,内核是被信任的第三方。
-只有内核可以执行特权指令。
-为了方便应用程序。

中断和异常处理机制:

(1)中断处理

在这里插入图片描述

分为硬件和软件,硬件方面外设首先会产生一个中断标记,当CPU检测到这个中断标记后会产生一个具体的中断ID,并且将该ID发送给操作系统,操作系统就能够根据具体的ID去操作;

在这里插入图片描述

软件方面需要打断当前正在运行的程序,那么就会保存当前的处理状态,然后去处理中断服务程序,处理完毕后清理中断标记,最后恢复之前保存的处理状态;

(2)异常处理:

​ 异常处理过程和中断不一样,异常处理首先也会产生异常编号告知操作系统,操作系统会保存产生异常的指令的程序现场(比如当前指令的地址和寄存器的内容),然后进行异常处理,处理结果可能为杀死异常程序或者恢复现场后重新执行异常指令。

在这里插入图片描述

系统调用:

(1)程序访问主要是通过高层次的API接口而不是直接进行系统调用:

一条指令会触发一个系统调用;

-通常情况下,存在与每个系统调用相关的序号,系统调用接口根据这些序号来维护表的索引。
-系统调用接口调用内核态中预期的系统调用,并返回系统调用的状态和其它任何返回值。
-用户不需要知道系统调用是如何实现的,只需要获取API和了解操作新系统将什么作为返回结果。操作系统接口的细节大部分都隐藏在API中,并通过运行程序支持的库来管理。

-用户态:应用程序在执行的过程中,CPU执行的特权级的状态(很低,不能访问特殊机器指令和IO)。
-内核态:应用程序在执行的过程中,CPU执行的特权级的状态(高,操作系统可以执行CPU任何一条指令)。

-系统调用时涉及到特权级从用户态到内核态的转换,应用程序和操作系统有各自的堆栈会涉及到堆栈的转变,这两个变化比函数调用的开销更大,但更安全和可靠。(而程序调用是在一个栈空间实现参数的调用和返回)。

(2)系统调用会涉及到跨越操作系统边界的开销:

在执行时间上系统调用会超过程序调用,这其中的开销包括 :①建立中断/异常/系统调用号与对应服务例程映射关系的初始化开销;②建立内核堆栈(操作系统和应用程序的堆栈不一样);③验证参数(操作系统不信任应用程序会检查数据);④内核态映射到用户态的地址空间,更新页面映射权限(内存拷贝开销);⑤内核态独立地址空间TLB

程序的堆栈不一样);③验证参数(操作系统不信任应用程序会检查数据);④内核态映射到用户态的地址空间,更新页面映射权限(内存拷贝开销);⑤内核态独立地址空间TLB

标签:调用,操作系统,中断,系统,应用程序,内核,操作,第二章
From: https://www.cnblogs.com/istitches/p/17153123.html

相关文章

  • Mysql、(一)Linux下Mysql 基础操作
    @目录一、Linux下安装Mysql二、启动Mysql服务三、登录Mysql四、用户权限五、Mysql的配置文件一、Linux下安装Mysql百度二、启动Mysql服务servicemysqlstartservic......
  • 什么是操作系统
    特点:没有一个完整、精确、公认的定义,我们可以操你个功能和特点来介绍操作系统。功能:操作系统是一个管理应用的程序,控制系统上程序的运行为程序提供各种各样的程序,使得......
  • 操作系统的中断、异常、和系统调用
    中断和异常的处理机制都具有硬件和软件的处理过程,合在一起才能完成操作系统的一个具体的服务为了区分异常、终端的来源,需要模拟出一个类似于键值对的数据,key是中断号或异......
  • 数据结构基础—二叉树的非递归遍历和基本操作
    数据结构基础—二叉树的非递归遍历和基本操作非递归遍历先序//非递归先序遍历二叉树voidzhongxu(BiTreeT){BiTreestack[MAX];//模拟栈 BiTreenode;int......
  • C语言数据结构串的表示与操作的实现
    串的堆分配储存表示typedefstruct{ char*ch;//若是非空字符串,则按串长分配存储区,否则ch为NULL intlength;//串长度}HString;生成一个其值等于串常量的串HStr......
  • docker 操作常用命令
    镜像#以tomcat为基础镜像创建一个容器,容器名为my-tomcat#拉取tomcat最新镜像,实际生产中,dockerpull这一步可以省略,dockerrun的时候会自己去拉取。dockerpulltomcat......
  • eclipse快捷键操作指北
    MyEclipse快捷键4(ALT+CTRL)Alt+CTRL+↓复制当前行到下一行(复制增加)Alt+CTRL+↑复制当前行到上一行(复制增加)-------------------------------------------MyEcl......
  • NPOI 操作Excel
    usingNPOI.HSSF.UserModel;usingNPOI.SS.UserModel;usingNPOI.XSSF.UserModel;//导入publicvoidupload(HttpPostedFileBasefile){if(......
  • 操作系统储存管理(页式、段式、段页式)
    某计算机系统的内存大小为128k,采用可变分区分配方式进行内存分配,当前系统的内存分块情况如下图所示,现有作业4申请内存9k,几种不同的存储分配算法在分配中,会产生什么样的结果......
  • 自己从零写操作系统GrapeOS——3.GrapeOS参考资料
    站在巨人的肩膀上才能看的更远。我写GrapeOS主要参考了以下4本书:《30天自制操作系统》作者川合秀实《操作系统真象还原》作者郑刚《一个64位操作系统的设计与实现》作......