L4 操作系统接口
操作系统接口
用户通过程序(应用软件)使用计算机
程序是普通代码加上一些重要的函数
如:
操作系统提供重要函数(重要函数就是操作系统接口,接口表现为函数调用,由系统提供,因此叫系统调用)
常见的系统调用:
L5 系统调用的实现
问题1:
操作系统在内存中,应用程序也在内存中,为什么应用程序不能直接访问存取内核中的信息?
回答:
因为内核中有很多重要的信息与内容,若能随意调用和jmp那就很危险比如root密码被修改,word内容通过显存被看到
问题2:
怎么做到不让应用程序随意的jmp,调用内核数据?
回答:
硬件把内存割成了两个区域,一个叫用户态,一个叫内核态。
内核态可以访问任何数据,用户态不能访问内核数据
DPL用来描述目标内存段的特权级别(要访问的目标区域的特权级别)
CPL当前的特权级别
特权级别:
若CPL的数字<=DPL的数字,表示当前特权级别更高,则可以进入,否则不能进入
问题3:
系统调用如何进入内核态?
回答:
硬件提供了主动进入内核的方法——中断指令int(唯一的方法)
因此,系统调用的核心:
系统调用的实现:
L8 CPU管理
CPU的工作原理:
把一个程序放在内存中,设置初始的地址寄存器PC为第一个程序的内存地址,CPU自动的取址执行
管理CPU最简单的方法:
设置好PC的初值,CPU自动工作
这样会出现什么问题?
阻塞
解决办法:
多道程序设计(切来切去)
并发:一个CPU上交替的执行多个程序
怎么做到?
- 修改寄存器PC
- 使用PCB来记录CPU切出去的那个时刻程序执行到哪里,方便CPU切回来的时候继续执行
运行的程序 和 静态的程序不同
运行中的程序叫做进程
- 进程有开始,有结束,程序没有
- 进程会走走停停,程序不会
- 进程需要记录,程序不用
L9 多进程图像
上层用户看到的是3个进程同时使用
对于OS来说,是多个进程的推进
操作系统需要把进程记录好,按照合理的次序推进(分配资源,进行调度)
多进程图像从开机到关机
开机时创建个进程,执行shell,shell再启动其他进程
多进程如何组织?
操作系统管理进程的核心就是PCB + 状态 + 队列
Process Control Block:用来记录进程信息的数据结构
把PCB组织成不同的数据结构,如就绪队列,磁盘等待队列
状态:
进程根据状态分类
多进程如何交替(切换)?