四、操作系统的启动,中断,异常和系统调用

简介: 四、操作系统的启动,中断,异常和系统调用

1、启动


计算机通电之后,计算机会首先进行POST(加电自检),包括寻找显卡和执行BIOS。之后由BIOS将BootLoader加载到内存之中,再有BootLoader将硬盘中的OS系统加载到内存之中,然后计算机的控制权力转移到OS系统手中。

199bb4bbb0b44a80be2345130960ae9c.png



2、操作系统与设备和程序交互


操作系统包含三个interfaces,分别是面向外设通过中断和I/O进行处理;面向应用程序通过系统调用异常来提供相应的功能。


为什么应用程序不能直接来操作外设和计算机硬件?


首先处于安全的考虑,不是所有的应用程序都是可信任的,在计算机运行之中,内核是被信任的第三方,只有内核可以执行特权命令;另一方面是为了方便应用程序的开发,通过OS来屏蔽底层的复杂性。



2.1、系统调用


系统调用是指应用程序主动向操作系统发出的服务请求(system call),其来源于应用程序。


系统调用的源头是应用程序,处理时间是异步或者同步的,系统调用命令发出情况下其是同步的,但是接受OS返回的命令时,其可能是异步的;OS对系统调用的响应是等待服务完成之后再继续执行,等待和持续。


发生系统调用时,OS处理过程,OS接收到应用程序发出的系统调用指令之后,会传输指令到指定设备中执行指定的命令。基本的系统调用API包括WIN32 API用于windows和POSIX API用于POSIX-based systems,如Linux,UNIX,Mac OS等。Java API用于Java虚拟机,但其本质还是调用WIN32 API和POSIX API。


系统调用涉及到特权级的转换,由应用程序的“用户态”转换成OS的“内核态”。系统调用相对于函数调用有所区别,函数调用是在同一个堆栈空间之内进行,也不需要进行特权级的转换;而系统调用涉及到堆栈空间的转换,以为需要从应用程序申请的堆栈空间转换到OS系统函数所在的堆栈空间进行执行。从而系统调用相对于函数调用要消耗更多的资源,但是可以保证安全性和可靠性


跨越操作系统边界的开销?


在执行时间上的开销超过程序调用


开销


♣建立中断/异常/系统调用号与对应服务里程映射对应关系


表的初始化开销


♣建立内核堆栈

♣验证参数

♣内核态映射到用户态的地址空间,更新页面的映射关系

♣内核态独立的地址空间(TLB)



2.2、异常


异常指令或者其他坏的处理状态(如:内存出错等 ),其来源于不良的应用程序。异常的源头是应用程序,处理时间是同步的;OS对异常的响应是杀死或者重新执行意想不到的应用程序指令。


发生异常时,OS处理过程,首先需要保存现场,之后进行异常处理(杀死产生异常的程序或者重新执行异常指令),最后再恢复现场。



2.3、中断


来自不同硬件设备的计时器和网络的中断,其来源于外设。中断的源头是外设;处理时间是异步的;OS对于中断的响应是持续的,对用户应用程序是透明的。


发生中断时,硬件和软件的处理过程,对于硬件来说,其需要设置中断标记[CPU的初始化],将内部、外部事件设置中断标记,将中断时间的ID发送给OS,由OS来处理中断事件。对于软件OS来说,其需要保存当前处理状态,中断服务程序的处理,清除中断标记最后恢复程序之前的处理状态。








相关文章
|
5月前
|
消息中间件 存储 算法
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
136 0
|
2月前
|
Linux 开发者 iOS开发
Python系统调用实战:如何在不同操作系统间游刃有余🐟
【8月更文挑战第5天】Python系统调用实战展示了如何轻松应对跨平台挑战。通过`os`与`pathlib`模块处理文件系统操作,如创建目录及获取用户主目录,自动适配不同操作系统的路径格式。利用`subprocess`模块执行外部命令,智能选择`ls`或`dir`等系统特定指令。借助Tkinter创建图形用户界面,实现一次编写到处运行的目标。这些技巧让开发者专注于应用逻辑,简化跨平台开发流程。
32 0
|
5月前
|
Linux C语言
操作系统 | 添加系统调用
操作系统 | 添加系统调用
53 0
|
4月前
|
算法 Linux 调度
技术好文共享:详解操作系统中断
技术好文共享:详解操作系统中断
|
5月前
|
存储 程序员
操作系统的运行机制、中断和异常、系统调用
操作系统的运行机制、中断和异常、系统调用
70 1
|
5月前
|
Linux 开发工具 C语言
【操作系统】实验四 增加Linux系统调用
【操作系统】实验四 增加Linux系统调用
133 1
|
5月前
|
Unix 编译器 Linux
操作系统的启动和中断
操作系统的启动和中断
33 0
|
5月前
|
资源调度 调度 UED
CPU执行系统调用时发生中断,操作系统还能切回中断前的系统调用继续执行吗?
系统调用服务例程在执行过程中,通常不会被中断。系统调用服务例程的执行是一个原子操作,即在执行期间不会被中断。这是为了确保在系统调用服务例程执行期间对内核数据结构的一致性和完整性。
|
3月前
|
安全 Linux 网络安全
部署07--远程连接Linux系统,利用FinalShell可以远程连接到我们的操作系统上
部署07--远程连接Linux系统,利用FinalShell可以远程连接到我们的操作系统上
|
2月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
下一篇
无影云桌面