首页 > 其他分享 >中断、异常、系统调用

中断、异常、系统调用

时间:2023-02-24 20:25:02浏览次数:35  
标签:调用 中断 异常 应用程序 BIOS 内存 Bootloader OS

启动

DISK:最开始时,OS存放在DISK中,再由BIOS提供相应的支持;
BIOS:是指基本I/O处理系统;功能是在计算机开机之后,让计算机系统可以检测各种外设,进而去加载相应的软件去执行。
Bootloader:参在于硬盘,主要功能就是加载OS,能够让OS从硬盘加载到内存中,然后让CPU可以执行操作系统
在整个内存中有一部分是由BIOS占据的,从内存中某个特定的地址开始执行,这个地址是CS:IP=0xf000:fff0(CS:段寄存器;IP:指令寄存器)这两个数据合在一起形成一个具体的内存地址;而后开始完成各种工作,比如POST加电自检(寻找显卡和执行BIOS)

  • 大致的过程是:
    1.内存中的BIOS将硬盘中Bootloader加载到内存(这个时候CPU的控制权由Bootloader掌握
    2.然后Bootloader再将硬盘中OS加载到内存(Bootloader将OS所占的主要的磁盘块读取到内存中,而后将控制权交由OS,OS就可以在内存中进行必要的工作,包括前期的初始化以及后期的应用程序的运行
    3.Bootloader存放在硬盘的第一个主扇区(512字节)0x7c00,这样BIOS就可以很快地找到Bootloader

操作系统的接口

  • 面向外设是通过1.中断、和I/O做处理的
  • 面向应用程序是通过2.系统调用和3.异常来提供相应的功能

系统调用(来原于应用程序

  • 应用程序主动向操作系统发出服务请求

异常(来源于不良的应用程序)

  • 非法指令或者其他坏的处理状态,如:内存出错(应用程序出现错误,使得不得不由OS来完成相应的功能)

中断

  • 来自不同的硬件设备的计时器和网络的中断

思考:为什么不能直接访问外设,而必须通过OS?
首先,OS是一种特殊的应用软件,它拥有对计算机的控制权,1.是可信任的;而一些应用程序可能存在不安全因素,会造成计算机系统的崩溃;操作系统为应用程序提供了简单一致的接口,这样应用程序就不需要根据不同的外设开发不同的应用软件,2.操作系统屏蔽掉外设的复杂性和差异性

三者的区别

  • 源头
  • 中断:来源于外设(键盘、鼠标、网卡、声卡、显卡产生各种事件,中断事件)
  • 异常:应用程序再执行某些代码的时候产生了意外,比如除零操作;或者程序在执行时所需要的资源,在后端执行好之后再交由应用程序执行
  • 系统调用:应用程序请求操作系统提供服务(有明确指令、参数来说明需要什么样的服务)
  • 处理时间
  • 中断:异步事件(是指这样的中断发生的时间不可预测)
  • 异常:同步事件(是指在执行到某一个特定的指令之后,就一定会产生某个异常)
  • 系统调用:同步(根据某一个特定的指令)或异步(正常情况下数据返回的是同步的,但比如,应用程序发出请求之后就去做别的事情了,就会造成异步的状况)
  • 响应状态
  • 中断:持续,中断对应用程序是透明的(应用程序感受不到被中断,比如在后台运行)
  • 异常:杀死或者重新执行意想不到的应用程序指令
  • 系统调用:等待和持续

标签:调用,中断,异常,应用程序,BIOS,内存,Bootloader,OS
From: https://www.cnblogs.com/hezhipeng/p/17152970.html

相关文章

  • yolov5的训练中断恢复
    Yolov5的恢复训练使用自带参数-resume1.train.py文件中找到函数parse_opt,修改参数–resume的默认参数为Ture        2.runs/train/exp*/weights/路径......
  • Java学习之异常
    异常exception一般需要程序员管理的异常可以分为两类:Exception(大类):Runnable异常及其子类其他异常运行时异常:RuntimeException及其子类,编译时不会出现异常,运行......
  • arm嵌入式工控机BL302 CAN口调用教程
    CAN接口是一种用于实现车载网络通信的接口,它可以支持多个设备之间的高速数据传输。它是由德国BOSCH公司开发的,并最终成为国际标准(ISO11898),在北美和西欧,它已经成为汽车计算......
  • 拷贝构造函数调用时机
    这里讨论两种情况下的拷贝函数调用:作为参数传值过程中的拷贝函数调用,有一个Dog类,d1是Dog类的一个实例现在通过function将d1传入,voidfunction(Dogdog);d1是dog的实参,在......
  • GDB解coredump文件报Python异常解决办法
    GDB解coredump文件报Python异常解决办法解core文件经常提示以下错误信息:PythonException<class'ModuleNotFoundError'>Nomodulenamed'gdb':gdb:warning:Couldno......
  • SkeyeLive同屏直播库库功能介绍和接口说明与调用
    SkeyeLive是OpenSKEYE开源流媒体团队开发的一个集采集,编码,RTSP/RTMP推流和流媒体RTSP服务于一身的通用库,目前支持Windows,Android平台,通过SkeyeLive我们就可以避免接触到稍显......
  • linux中断处理总结
    ARM64中断处理过程:https://www.daodaodao123.com/?p=146上文总结了ARM64裸机中断处理的详细过程,这里主要总结下linux中断处理相关内容;0.为什么有中断?中断,本质上是外设发......
  • git-head-128,403异常
    概述jenkins新增mavn构建任务,添加git提示,无法连接仓库(gitls-remote-hhttp://xxx.gitHEADreturnstatuscode128...therequestedURLreturnederror:403)本质......
  • 【转载】百度飞桨PaddleOCR .NET调用库
    NETConf2021中国我做了一次《.NET玩转计算机视觉OpenCV》的分享,其中提到了一个效果特别好的OCR识别引擎——百度飞桨PaddleOCR,可离线部署,后来我逐步把它封装了一下,代码全......
  • 前端监控之性能与异常
    作者:京东零售李菲菲1前言现有的大部分监控方案都是针对服务端的,而针对前端的监控很少,诸如线上页面的白屏时间是多少、静态资源的加载情况如何、接口请求耗时好久、什么......