# 操作系统介绍
- 操作系统作为
系统资源的管理者,需要提供什么样的功能?- 提供的功能:
文件管理、设备管理、处理机(cpu)管理、存储器(运行内存)管理
- 提供的功能:
- 操作系统作为
用户与计算机硬件之间的接口需要提供什么功能?- 命令接口:
联机命令接口(命令行)、脱机命令接口(批处理命令接口)(sh/bat文件执行) - 程序接口:允许用户通过程序间接使用(.dll)
- GUI:图形用户接口(图像拖拽等操作图形操作界面)
- 命令接口:
- 操作系统作为最接近系统硬件的层次,需要在纯硬件基础上实现什么功能?
- 调度系统资源,提供给用户更方便的使用
进程是程序执行的过程,执行前需要将该程序放到cpu当中,才会被cpu处理
并发:两个或多个事件在宏观上同时发生,微观上交替发生。(并行是宏观和微观都同时发生)- 共享:指系统资源供多个并发资源同时使用,分为
互斥共享(摄像头的使用)、同时共享(同时读取文件) - 虚拟:
空分复用技术(虚拟存储器,4G运存运行程序远超4G)、时分复用技术(虚拟处理器,单核处理多任务) - 异步:进程并不总是一次性执行完的,而是走走停停,根据操作系统的调度,微观上异步的处理完所有的指令
发展顺序
- 手工操作系统:人机交互慢,浪费资源
- 批处理阶段:单道批处理系统、多道批处理系统(操作系统开始出现,调度程序并发执行)
- 分时操作系统:轮询机制处理交互任务,人感觉不出来的时间差。(缺点:不能处理紧急任务)
- 实时操作系统:
- 硬实时系统:规定时间内必须执行完(航空导弹、自动驾驶系统)
- 软实时系统:能接受偶尔实时性不强(订票系统)
- 网络操作系统
- 分布式操作系统
- 个人计算机操作系统
- 两种运行状态:
用户态、核心态 - CPU区分运行态的方式:
PSW标志位关键字,0/1 - 两种程序:核心程序(运行在核心态,能够执行
特权指令)、应用程序(运行在用户态,只能执行非特权指令) 中断使cpu进入核心态。发生了中断,就意味着操作系统的介入,cpu的核心态可以让操作系统要用特权指令切换系统的控制权,中断控制是并发执行的核心- 用户态和核心态的切换:
- 用户态 -> 核心态:中断(唯一途径)
- 核心态 -> 用户态:执行一条特权指令,将程序的状态字
PSW改为用户态
系统调用过程:- 传递系统调用参数
- 执行陷入指令(中断指令的一种),产生内中断,系统进入核心态
- 执行系统调用相应的应用程序
- 返回用户程序
# 进程
- 程序段、数据段、PCB共同组成了
进程实体(进程印象) - 创建进程,实际上就是创建进程的PCB,
PCB是进程存在的唯一标识 - 进程是进程实体的运行过程,是系统资源分配和调度的独立单位
PCB包括的信息
- 进程描述信息:进程标识符PID,用户标识符UID
- 进程控制和管理信息:进程当前状态,进程优先级
- 资源分配清单:程序段指针,数据段指针,键盘,鼠标
- 处理机相关信息:各种寄存器处理的值进行临时保存
链接方式:按照进程状态将PCB分为多个队列,操作系统持有指向各队列的指针。索引方式:根据进程状态不同,建立几张索引表,操作系统持有各索引表的指针。
链接指针分为:
执行指针、就绪队列指针、阻塞队列指针
索引指针分为:执行指针、就绪索引表指针、阻塞索引表指针
动态性:进程是程序一次执行的过程,是动态产生的、变化和消亡的。并发性:内存中有多个进程实体,各进程可并发执行。独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位。异步性:各进城推进的速度不可预知,操作系统提供进程同步机制来解决异步问题结构性:每个进程都会配置PCB。结构上看,进城由程序段、数据段、PCB组成。
- 基本状态:
就绪态、阻塞态、运行态(硬件有几核就最多有几个同时处于运行态的进程) - 其他状态:
创建态(将程序的数据段和程序段放入对应的内存中,创建程序的PCB)终止态(进程所占内存和设备正在回收,撤销PCB)
进程控制过程PCB控制信息不能存储错乱,因此这个过程不能被中断
- 进程的控制是通过
原语实现的,原语的特点是不可中断,原语需要运行在核心态,主要工作:- 更新PCB信息:修改当前PCB运行状态,准备下一个PCB需要的运行环境
- 将PCB插入到合适的队列
- 分配/回收资源
前提原因:每个进程拥有操作系统分配的内存地址空间,相互独立,其他进程无法直接访问。
共享存储:操作系统为两个进程提供一个共享空间,但两个进程访问此空间权限是互斥的- 基于数据结构共享:(例)操作系统规定共享区只能放固定长度为100的数组,分次轮流读写(低级共享)
- 基于存储区共享:给你们一块存储区自己玩(高级共享)
管道通信:- 操作系统在内存中开辟一个缓冲区(pip),写满再读,读空再写
- 管道只能是
半双工通信,要实现双向同时通信,则需要两个管道。
消息传递:(用原语发送)消息头(发射进程id,接收进程id,消息类型,消息长度)、消息体- 直接通信方式:每个进程有一个消息缓冲队列,直接通信就是把消息挂在对应进程的这个队列上
- 间接通信方式:系统会为各个进程提供一个信箱(类似邮箱)作为中间载体,大家根据
进程id确定收发件人
半双工通信:数据可以正向传输,也可以反向传输,但一个时间段内只能有一个方向传输