操作系统 复习

1 操作系统的概念与定义

操作系统的功能和目标

  • 系统资源的管理者
  1. 处理机管理
  2. 存储器管理
  3. 文件管理
  4. 设备管理
  • 用户与计算机硬件系统之间的接口
  1. 命令接口
    联机命令接口:交互式的命令接口
    脱机命令接口:批处理命令接口(脚本)
  2. 程序接口
    =系统调用
  • 对硬件机器的拓展
    扩充机器

操作系统的特征

1.2最重要,两者相依共存

  1. 并发
    宏观同时发生,微观交替发生
    并行:微观也是同时发生
  2. 共享
    互斥共享、同时共享
  3. 虚拟
    基于并发性
    虚存(空分复用技术)
    虚拟cpu(时分复用技术)
  4. 异步性

操作系统的发展和分类

  1. 手工操作阶段
    缺点:人机速度矛盾
  2. 单道批处理系统
    脱机输入输出技术(磁带),并由监督程序控制作业的输入输出
    缺点:内存中只有一道程序运行,有大量时间空闲等待i\o完成
  3. 多到批处理系统
    并发执行需要中断技术的支持
    多到程序并发执行,共享计算机资源,提升资源利用率
  4. 分时操作系统
    解决了人机交互问题,用户在自己的时间片解决问题
    缺点:没有优先处理,循环处理时间片
  5. 实时操作系统
    能够优先响应一些紧急任务
  • 硬实时系统
  • 软实时系统

操作系统的运行机制与体系结构

  • 两种指令
    分为特权指令(如内存清零)和非特权指令

  • 两种处理器状态
    用户态(目态)
    核心态(管态)

  • 两种程序
    应用程序:只能使用非特权指令,运行在用户态
    内核程序:操作系统的核心功能,两种指令都能执行

  • 操作系统内核
    是计算机的底层软件
    功能:

  1. 时钟管理
  2. 中断处理
  3. 原语(设备驱动、cpu切换):最接近硬件的部分,这些程序的运行具有原子性,不可中断
  4. 进程管理,存储器管理,设备管理
    包含1,2,3,为微内核:
    优点:功能少,结构清晰,方便维护
    缺点:频繁在核心态和用户态切换,性能低

1,2,3,4大内核:
优点:高性能
缺点:代码庞大,结构混乱,难以维护

中断和异常

中断:操作系统接入开展管理工作,用户态转到内核态;中断是用户态进入核心态的唯一途径。

  • 中断的分类
    内中断和外中断:本质区别:信号来源是否来自于cpu内部
  • 外中断的处理过程
    执行完每个指令,都要检查是否有外部中断信号;
    若检测到,保护(存档)cpu环境;
    根据中断类型处理相应的程序;
    恢复原进程cpu环境并继续往下执行

系统调用

系统调用发生在用户态,对系统的调用发生在核心态
系统调用相关处理需要特权指令,在核心态下执行
操作系统向上提供系统调用

2.进程

进程的定义

进程实体:由程序段、数据段、PCB组成
进程是资源分配、接受调度的基本单位

PCB是进程存在的唯一标志!

  • PCB
  1. 进程表述信息
    进程标识符PID,用户标识符UID
  2. 进程控制和管理信息
    进程当前状态,进程优先级
  3. 资源分配清单
    程序端指针、数据段指针、键盘、鼠标
  4. 处理机相关信息
    各种寄存器值
  • 进程的组织方式
    链接方式
    索引方式

  • 进程的特征

  1. 动态性:最基本的特征
  2. 并发性
  3. 独立性:进程是资源分配、接受调度的基本单位
  4. 异步性
  5. 结构性

进程的状态

三种基本状态:

  • 运行态
  • 就绪态
  • 阻塞态

进程控制

进程控制室进程状态的转换
修改的是PCB和类似queue 队列中
原语 实现进程控制,执行期间不可被中断
原语要做的事情

  1. 更新PCB信息
  2. 将PCB插入合适队列
  3. 分配回收资源

三种调度

  1. 高级调度 作业调度
    外存与内存之间的调度,每个作业调入一次,调出一次。
    从外存按照一定顺序调入内存
  2. 中级调度 内存调度 引入虚存
    提高内存的利用率和系统吞吐量
    暂时调到外存称之为 挂起 ,PCB常驻内存
    调度决定哪个挂起状态的进程调入内存
    挂起是进程映像在外存,阻塞是进程映像在内存
  3. 低级调度 进程调度
    频率很高,内存->CPU,就绪态->运行态

进程调度的时机

需要进程调度 进程主动放弃、被动放弃

  • 进程调度的方式
    非抢占式、抢占式

调度算法评价指标

  • CPU、IO利用率=忙碌时间、总时间
  • 系统吞吐量:总共完成多少道作业/总时间
  • 周转时间:作业被提交给系统到作业完成为止的时间间隔
  • 平均周转时间
  • 带权周转时间:作业周转时间(作业完成时间-作业提交时间)/ 作业实际运行时间
  • 等待时间:作业:处于等待状态机时间之和,与调入之后等待时间(后备队列-内存)
    进程:就绪队列时间
  • 相应时间:从用户提出请求到首次响应时间

调度算法

  1. 先来先服务 FCFS first come first serve
    用于进程、作业调度
    非抢占式

  2. 短作业优先 SJF shortest job first
    非抢占 选择当前已到达且运行时间最短的作业
    会导致饥饿

  3. 抢占式短作业优先 SRTN 最短剩余时间优先
    新进程的剩余时间大于当前剩余时间,就抢占
    会导致饥饿

  4. 高响应比优先 HRRN highest response ratio next
    响应比:(等待时间+要求服务时间)/要求服务时间

  5. 时间片轮转算法 RR round robin
    分时操作系统的诞生而诞生
    按到达就绪队列的顺序,轮流执行时间片,未执行完成就被剥夺,到最后重新排队
    为抢占式算法,由时钟中断来控制

  6. 优先级调度算法
    可用于作业调度也可用于进程调度
    抢占式和非抢占式都有
    优先级有动态优先级和静态优先级

  7. 多级反馈队列调度算法
    可抢占式
    用于进程调度
    有多级队列,时间片按队列优先级由小变大,只有k级队列为空的时候,才会为k+1分配时间片
    会导致饥饿

进程同步和进程互斥

进程同步用于解决进程异步的问题
对临界资源的访问,必须要互斥访问

  • 互斥:分为四个部分,进入区,临界区,退出区,剩余区
    对临界资源的互斥访问,要遵循以下的原则
  • 空闲让进
  • 忙则等待
  • 有限等待
  • 让权等待

进程互斥的软件实现方法

  1. 单标志法
    每个进程进入临界区的权限只能被另一个进程赋予
  2. 双标志先检查法

信号量机制

  • 整型信号量:
    wait(S)、P原语和signal(S)、V原语
int s=1;

void wait(int s){
while(s <=0);  //存在忙等的问题
s=s-1;
}
void signal(s){
s=s+1;

  • 记录型信号量
class semaphore{
int value;
class process *L;//等待队列,目的式让权等待
}

void wait(semaphore S){
	S.value--;
	if(S.value <0){
		block(S.L);
	}
}

void signal (swmaphore S){
s.value++;
if(S.value <=0){
wakeup(s.L);
}
}

用信号量机制实现进程互斥同步和互斥

  1. 实现进程互斥
定义mutex初值为资源数量 
process(){
p(mutex)
临界区代码段
v(mutex)
}
  1. 实现进程同步
    要求:代码3要在代码4之后执行
 mutex =0;
p1(){
代码1
v(mutex)
代码2}

p2(){
p(mutex)
代码3
代码4
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值