1、启动

DISK:存放OS 和BootLoader,BootLoader用来加载OS

BIOS:基本I/O处理系统,是存在内存中的。接通电源后,BIOS会从CS:IP这个地址开始执行,然后完成一系列工作:

(1)POST(加电自检),也就是检查自身的各种设备是能正常工作,如寻找显卡,外设等;

(2)在硬盘第一个扇区(引导扇区,512字节),把BootLoader放到内存中去;

(3)控制权交给了BootLoader,它把OS的代码,数据从硬盘中加载到内存中;

(4)控制权交给了OS,开始运行。

2、操作系统如何对外设进行管理,如何对应用程序进行管理?

操作系统与设备和程序的交互。操作系统的interface包含三个:

(1)面向外设,通过中断和IO进行处理

(2)面向应用程序,通过系统调用和异常提供服务

3、系统调用:应用程序主动向操作系统发出服务请求,也就是一条指令,由操作系统来完成一些动作

4、异常:来源于不良的应用程序,程序在执行过程中出现了一些意想不到的事情,需要操作系统进行处理

5、中断:外设的请求,需要操作系统提供支持,来自不同硬件设备的计时器和网络中断

中断是外设的事件,异常是内部CPU的事件,中断和异常迫使CPU访问一些被中断和异常服务访问的功能。

6、中断分两部分完成:

(1)对于硬件来说,要设置中断标记(CPU)初始化,将内部、外部事件设置中断标记,记录中断事件的ID。

(2)对于软件来说,保存当前的处理状态,中断服务处理,清除中断标记,恢复之前保存的处理状态。

7、异常过程:保存现场、异常处理、恢复现场。

8、系统调用:程序访问主要是通过高层次API接口而不是直接进行系统调用。用户不需要知道操作系统调用是如何实现的,只需要获取API和了解操作系统将什么作为返回结果。

9、函数调用和系统调用区别:1、当系统进行函数调用时,都是在一个栈空间内执行;2、而系统调用中,操作系统和内核是有各自的堆栈,要完成堆栈的切换;3、系统调用还要完成用户态到内核态的特权级的转换;4、由于第三第四点,会付出额外开销,相比函数调用而言;5、但是系统调用更安全。