【操作系统原理-陈渝老师】第二章 操作系统的启动,中断,异常及系统调用

目录

 

1.问题的引出

2.操作系统的启动所需要的的资源

3.操作系统的启动过程

4.中断,异常与系统调用的概念引入

5.操作系统存在的意义以及中断,异常与系统调用存在的意义

6. 中断,异常与系统调用的比对

7.中断,异常和系统调用的处理过程


1.问题的引出

1.操作系统如何从计算机一加电以后启动到正常运行然后最终让我们的应用程序各自正常地开始自己的工作?
2.操作系统如何给我们应用提供服务以及控制外设或者与外设进行交互.

REF1 

2.操作系统的启动所需要的的资源


POST(加电自检)
寻找显卡和执行BIOS



最基础的就是三部分:CPU,内存(Memory),I/O.
操作系统一开始放的时候并没有放在内存中直接供CPU执行,它是放在硬盘上,然后由BIOS来提供相应的
支持,BIOS(基本IO处理系统),这个处理系统基本的功能就是一旦我们打开电源计算机开机之后就能让我们
的计算机系统能够开始检测各种各样的外设,这个就是BIOS完成的基本的功能.完成外设的检查之后需要
加载相应的软件执行.
OS是放在磁盘上的,另外也有一个小程序bootloader也是放在磁盘上的.
bootloader主要的功能是加载OS的,能够让OS从硬盘放到内存中去,让CPU能够执行操作系统,另一方面,看
图可以看出在整个计算机内存中有一部分空间是由BIOS预先占上了,但是还有很多地方是空的,我们的BIOS
第一步要做的事情就是需要从一个特定的地址开始执行,这个地址如果以X86为例的话,这个地址是一个固定
的地址CS:IP=0xf000:fff0,分别代表CS和IP这两个寄存器的值,CS-段寄存器,IP-指令寄存器,这两个寄存器
在一起可以形成一个具体的内存的地址,一开始加电BIOS就从这个地址开始执行,这个地址执行之后它会完
成一系列的工作,包括自检(检查自身各种各样的设备是否能够正常工作,应用程序的正常运行需要屏幕,屏
幕能够反映出来各种各样的图像和文字,展示各种各样的功能,实际上是有一个显卡显示驱动在执行,另一方
面还有键盘鼠标来控制这些相应的操作以及需要将一些信息存储到磁盘上),这些基本的操作都需要BIOS进
行初始化的检查,假定检查完成之后这些外设都能够正常工作了,接下来需要做的是把bootloader从硬盘上
放到内存中去,这既是BIOS需要完成的基本功能.

BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统".


3.操作系统的启动过程

BIOS如何把bootloader加入到内存中去的?

bootloader一般放在硬盘的第一个主引导扇区,这样BIOS就很容易找到它,只要找到硬盘的
第一个扇区就可以把它加载到我们的内存中去,这个就是一个最基本的过程,一般我们硬盘
的第一个扇区就是512个字节,意味着我们的bootloader仅仅只有512个字节这么小的空间
就可以完成很多功能,其中最主要的功能就是把更复杂的软件,也就是我们的OS从我们的
磁盘中加载到内存中,这就是BIOS加载bootloader,bootloader再加载OS的一个大概的过程.


以X86为例,bootloader会放在内存中的什么位置呢?
这一点也是由我们的BIOS来具体设定好了的,比如说会放在0x7c00这个地址,然后连续从内存
一直往上512个字节就是我们bootloader主要的代码和数据.


就这么点,这么小的代码和数据
能够完成的功能其实也很有限,它只是完成了把我们接下来的操作系统的代码和数据从硬盘
中加载到内存中去,当BIOS把我们的bootloader从硬盘加载到内存中去之后,CPU的控制权就
由我们的bootloader来掌握了,bootloader接下来需要做的事情是什么呢?
很明显,第一步是要找到硬盘中操作系统的起始扇区已经操作系统的长度,然后把这块区域(
可能包含几个硬盘的磁盘块)从硬盘中读到内存中去,这个就是bootloader完成的主要工作.
读到内存中去之后,按道理到这,bootloader已经完成了自己的工作.

bootloader把CPU的控制权交给了OS之后,实际上就跳转到OS的最起始的地址去执行,这样OS
就可以在内存中开始它所必要的工作.从前期的初始化工作到后期的能够创建各种各样的程序
运行,到这个阶段,整个计算机硬件的管理都处于OS的管理之下.

以上就是操作系统的启动过程.


4.中断,异常与系统调用的概念引入

5.操作系统存在的意义以及中断,异常与系统调用存在的意义

相对于一些恶意的应用程序,我们可以非常信任操作系统,操作系统可以给我们提供一个安全的服务.
应用程序不可以直接访问外设,直接访问外设很容易造成整个计算机系统的奔溃.
另外操作系统可以提供更简单的接口,屏蔽底层设备的复杂性,使得应用程序可以简单方便.
为了实现这个愿景,中断,异常与系统调用出现了.

6. 中断,异常与系统调用的比对

【linux内核分析与应用-陈莉君】系统调用机制---链接

外设:
键盘-产生字符事件
鼠标-移动事件
网卡-产生网络包事件
声卡-
显卡-
这些都是外设.


异常:
操作系统被动处理一些由应用程序产生的意外事件,如:
(1)应用程序除零操作,这条指令会使得计算机无法正常工作,操作系统发现之后就会对其进行处理;
(2)恶意程序需要越过它的权限访问另外程序的受保护的地址空间,这种情况会被操作系统及时截获,这个
   也算是异常;
(3)应用程序在执行过程中需要的资源没有得到满足,这时候操作系统在后端悄悄地在后面把事情处理好,
   然后让应用程序再去执行.
...
异常事件促使操作系统为应用程序提供服务,一般情况下异常其实并不是应用程序想要主动发起.

系统调用:
主动要求操作系统提供服务.如打开文件,关闭文件,发送网络包等.

异步是指当这个事件产生的时候,应用程序并不知道什么时候会产生,这个就是异步;
异常是比较明确,一定是执行到某一条特定的指令之后才产生;
系统调用:异步或者同步,正常情况下一个系统读数据的调用发出之后,操作系统完成处理立刻把相应的处理
结果返回给系统调用,这个就是一个同步的过程;如果说应用程序发出一个读数据请求之后马上去做其他事情
了,操作系统在完成读数据之后给应用程序发出一个异步的消息,告诉它事情已经做完了.对于系统调用而
言,请求的那个点是同步的,但是返回的那个点可能是同步也可能是异步.

对中断而言,打断了当前应用程序的正常执行,但是应用程序并没有感觉到中断的产生,因为
操作系统悄悄地将它完成了,操作系统并不想去影响应用程序,应用程序在执行的过程中感觉
不到时不时地会产生中断.这个对应用程序来说是透明的(应用程序看不见感受不到中断的存在).

异常,严重情况将程序杀死然后退出,也有异常的情况时重新执行产生异常的指令,因为操作系统
提供相应的支持之后有可能再次执行的时候这条产生异常的指令可以正常地执行下去.

系统调用,一般来说是等待服务完成之后继续执行,不会重复执行产生系统调用的那条指令.

7.中断,异常和系统调用的处理过程

中断发生硬件和软件的应对策略:
硬件
设置中断标记[CPU初始化].
(1)将内部,外部时间设置中断标记;
(2)中断事件的ID.
中断事件的ID是指程序访问的中断向量地址.

软件
(1)保存现场:保存被打断的执行的现场,执行到什么地方了,寄存器的内容是什么;
(2)中断服务程序处理;
(3)清除中断标记;
(4)恢复之前保存的处理状态.




硬件的处理过程和软件的处理过程合在一起才能正确地完成一个中断或者异常的处理过程.
产生中断或异常之后需要知道是哪个特定的例程去处理,这个是需要判断的,因此要建立一个
表,这个表的一侧是中断或者异常号(编号之后就可以区分出来产生的是硬盘的中断还是鼠标
的中断,不同的外设产生的中断有特定的编号),特定的编号对应着不同的地址,地址针对特定
中断的服务例程的起始地址,有了这个地址之后,就可以跳转到对应的服务例程进行处理.
这只是一个简单的描述,还需要做一些其他保存与恢复工作.

POSIX表示可移植操作系统接口,它定义了操作系统应该为应用程序提供的接口.




系统调用与传统的函数调用:
函数调用是发生在一个栈空间,完成了函数之间的参数的传递和参数的返回;系统调用发生的过程
中,应用程序和内核有各自的堆栈,意味着当应用程序发出系统调用切换到内核中执行的时候需要切换
堆栈,实现用户态到内核态的转换,堆栈的切换和用户态内核态的转换都需要一定的开销,意味着当执行
系统调用的时候带来的开销会比去执行一个函数调用大很多,开销带来的回报就是安全可靠.

系统调用,异常和中断跨越了操作系统的边界,即操作系统与应用程序,操作系统与外设的边界.
这有一些开销代价,但是带来了安全可靠.


随着应用程序的执行有可能会引起内存状态的改变,页机制的转变,cache TLB可能被刷新,这个刷新
会导致额外的开销.这些开销是值得的也是必须的.有这些开销的存在能够保证安全可靠的环境.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值