1.操作系统定义
操作系统是计算机系统中的一个系统软件,是一些程序模块的集合——
他们能以尽量有效、合理的方式组织和管理计算机的软硬件资源
合理地组织计算机的工作流程,控制程序的执行并向用户提供各种服务功能
使得用户能够灵活、方便地使用计算机,使整个计算机系统高效率运行
2.操作系统的三个作用
(1)资源的管理者-有效
(2)向用户提供各种服务-方便实用
(3)对硬件机器的扩展-扩展能力
3.OS特征:
(1)并发:指处理多个同时性活动的能力(并行:多指不同程序同时在等多个硬件部件上执行)
(2)共享:操作系统与多个用户程序共同使用计算机系统中的资源 互斥共享&同时共享
(3)虚拟:一个屋里实体映射为若干个对应的逻辑实体——分时、分空间  提高资源利用率
(4)随机:操作系统必须随时对不可预见的次序发生的时间进行想用并处理
4.SPOOLing系统(技术)
批处理系统的实现、现代计算机系统的打印过程通常采用的技术
思想:利用硬盘做缓冲,将输入、计算、输出分别组织成独立的任务流,使I/O和计算真正并行
工作原理:
用户作业加载到磁盘上的输入井
按某种调度策略选择几个搭配得当的作业调入内存
作业运行的结果输出到磁盘上的输出井
运行结果从磁盘上的输出经送到打印机
说到spool就想到了讲网络GIS时说的池管理与非池管理,然而他们半毛钱关系都没有……
也许以后要用 呢。回顾一下


5.中央处理器(CPU)
处理器由运算器、控制器、一系列的寄存器以及高速缓存构成
两类寄存器:
(1)用户可见寄存器:高级语言编译器通过优化算法分配并使用,以减少程序访问内存次数
(2)控制和状态寄存器:用于控制处理器的操作;在默写特权级别下可以访问修改。常见的有:
程序计数器、指令寄存器、程序状态字
6.CPU的状态(模式MODE)
在程序状态寄存器中专门设置一位,根据运行程序对资源和指令的使用权限而设置不同的CPU状态
(1)两个状态
操作系统需要两种CPU状态:内核态、用户态。
特权指令:只能由操作系统使用,用户程序不能使用:启动I/O 、内存清零、修改程序状态字、设置时钟、允许/禁止中断 、取数指令 、停机
非特权指令:用户程序可以使用:控制转移、算术运算、访管指令(使操作系统由用户态变为内核态)
e.g.x86系列处理器 R0(内核态),R1,R2,R3(用户态)大多数x86的OS只用了R0 R3
(2)CPU状态之间的转移:
用户态-(唯一途径:中断、异常、陷入机制)->内核态
内核态-(设置程序状态字PSW)->用户态
一条特殊的指令:陷入指令(访管指令),提供给用户程序的接口。用以调用操作系统的功能(服务)
int trap syscall sysenter sysexit
7.中断、异常机制(操作系统的驱动力,非常重要)
主要作用:
及时处理设备发来的中断请求
可使OS捕获用户程序提出的请求
防止破坏……
8.中断/异常的概念:(硬件完成这一过程)
CPU对系统发生的某个时间做出的一种反应
CPU暂停正在执行的程序,保留现场后自动转去执行相应事件的处理程序,处理完成后返回断电。继续执行被打断的程序
事件的发生改变了处理器的控制流
特点:随机发生、自动处理。可恢复
9.
中断的引入:为了支持CPU和设备之间的并行操作
异常的引入:表示CPU执行指令时本身出现的问题
10.分类




11.中断/异常机制工作原理
是现代计算机系统的核心机制之一:
软硬件配置使得计算机得以充分发挥能力


12.中断响应过程示意:






13.中断处理程序

14.x86处理器的中断机制



15.系统调用:用户在编程时可以调用的操作系统功能
系统调用是操作系统提供给编程人员的唯一接口,使CPU状态从用户态陷入内核态
每个操作系统都提纲几百种系统调用(进程控制、进程通信、文件使用……)
16.区分系统调用,库函数,API,内核函数

17.系统调用机制的设计:
(1)中断/异常机制:支持系统调用服务的实现
(2)选择一条特殊指令:陷入指令 引发异常 用户态转为内核态
(3)系统调用号和参数:每个系统调用都要实现给定一个编号
(4)系统调用表:存放系统调用服务例程的入口地址
18.参数传递过程,如何实现用户程序的参数传递给内核:三种方法
(1)陷入指令自带参数
(2)通用寄存器传递参数(常用)
(3)内存中开辟专用堆栈区
19.系统调用的执行过程
当CPU执行到特殊的陷入指令时:
(1)中断/异常机制:硬件保护现场;通过查中断向量表将控制权转给系统调用总入口程序
(2)系统调用总入口程序:保存现场;将参数保存在内存堆栈里;通过查系统调用表把控制权转给想用的系统处理例程或内核函数
(3)执行系统调用例程
(4)恢复现场,返回用户程序
20.基于x86 linux系统调用实现
陷入指令选择128号
门描述符:
(1)系统初始化时:对中断描述符表中128号门
(2)初始化:2.3两字节:内核diamante段选择符;0167:偏移量(指向system_call)
(3)门类型:15陷阱门:可以不自动关闭
(4)特权级:R3 和用户级别相同,允许用户进程使用该门的描述符
系统执行128指令:
由于特权级的改变,要切换栈 用户栈->内核态


21.中断发生后OS底层工作步骤:
(1)硬件压栈:程序计数器
(2)硬件从中断向量装入新的程序计数器等
(3)汇编语言过程保存寄存器值
(4)汇编语言过程设置新的堆栈
(5)C语言中断服务程序运行
(6)进程调度程序决定下一个将运行的 进程
(7)C语言过程返回至汇编代码
(8)汇编语言过程开始运行新的当前进程