【SCAU】操作系统

基本原理:

1.指令执行的基本指令周期:

开始->pc取到指令,存入IR,pc指向下一条指令地址->执行IR中的指令->停止

2.中断分类和中断处理过程:

(1)程序中断,软件实现
(2)时钟中断,由系统时钟产生的中断,固定时间触发,可以视作时钟周期
(3)IO中断,由输入/输出设备产生,发起中断请求
(4)硬件故障中断,优先级高,特殊情况下保护数据完整和硬件安全

中断执行过程:
无中断:执行用户程序和IO程序
有中断:执行用户程序,IO程序不执行
开始->pc->IR->检查中断,初始化中断程序;

3.处理中断的两种方法:
中断技术并不是单独地由软件或硬件实现的,而是通过软硬件结合技术相互配合,协同实现的,这些参与到中断实现过程中的装置或程序统一称为中断系统

(1)禁止中断(顺序处理):
	中断控制器:控制中断寄存器,中断寄存器中存放来自中断源发起的中断请求
	正在处理一个中断时,禁止中断,也称关中断
	对所有中断严格按照顺序依次执行,实现起来较为简单,但是没有考虑优先级和实时访问的情况
(2)中断嵌套:
	嵌套处理多中断,高级中断可以打断低级中断

4.存储器层次:计算内存的平均存取时间

二级存储器(cache-内存)
三级存储(cache-主存-外存)
存储器金字塔:寄存器->cache(三级缓存)->内存->外存(辅助性存储)

5.高速缓存:

目的:缓解cpu和内存之间的巨大速度差异
作用:加快内存访问速度(通过cache实现),cache是通过SRAM进行实现的,SRAM(通过触发器进行实现)比DRAM(通过电容进行实现,需要定时进行刷新,维持内部存储的电平状态)快,但制造成本高

6.程序的局部性原理(考虑时空局部性)

程序局部性原理从两部分来看,时间局部性和空间局部性:
(1)时间局部性原理是指:短时间内,被访问过的指令和数据有很大的概率很快会被再次访问
(2)空间局部性原理是指:短时间内,处于某一区域的指令和数据会被程序频繁访问
为什么cache与局部性原理有关:
cache是为了缓解cpu与内存之间的速度差异过大的矛盾的,cache的实现方式是在cpu和内存之间增加了一小块支持高速访问的SRAM存储区域,存储cpu短时间内访问的内存指令或数据地址。由于程序局部性原理,cpu能从cache中取得需访问的指令或数据,节省了访问内存而浪费的大量时间

7.操作系统的发展过程:从cpu和资源上看,cpu只不能代表电脑的全部算力

手工操作阶段:人机交互,用户独占全机,人机速度矛盾导致资源利用率极其低下。

批处理系统:引入了脱机输入/输出技术(使用磁带)完成,用监督程序复制控制作业的输入,输出(有点像daemon,用与守护进程)

单批道程序处理系统:只支持同时执行一段程序或指令,内存中只能装入一个作业,导致大量时间浪费在等待io操作程序上。

多批道程序处理系统:多道程序并发执行,多个作业同时放入内存中执行,共享计算机资源,资源利用率大幅提升的同时cpu也能保持busy状态,缺点在于响应时间长

分时操作系统:分时(多用户),独立(各用户互不干扰),及时(响应快),交互性(直接控制程序执行)
计算机以时间片尾单位轮流为各个用户作业服务,各个用户可以通过终端与计算机进行交互,解决了人机交互响应慢的问题,但是不能处理一些高优先级的任务

实时操作系统(RTOS):实时,可靠,安全,专用,有限交互
能够优先相应一些紧急任务,某些紧急任务不需要时间片排队,必须要在严格的时限中处理完对应事件,具有高可用性,及时性和可靠性

9.多道程序设计如何提升效率:

多道程序设计可以同时将多个程序加载到内存中,在一个程序执行io操作的时间段时切换到另一个程序执行,大大提高了cpu的执行效率

10.多个作业并发执行时资源利用率如何计算

进程管理:进程是动态的,程序是静态的,现成

五状态进程模型:

新建态->进程处于刚刚被创建的状态,但还未加载到内存中
就绪态->进程已经在内存中,具备了一切可以执行的条件
运行态->进程正在占用处理器执行状态
阻塞态->进程在等待某些事件发生之前不能被执行的状态,比如等待I/O操作完成
退出态->进程已经处于结束状态

进程控制块(PCB):

对进程的各项信息加以描述并保存,可以理解为元进程,是进程属性的集合

进程的创建和终止:

创建:所有的进程都是由操作系统进行创建的,对用户透明,允许一个进程产生另外一个进程,进程派生
终止:分为两种情况:1.正常完成其所执行的程序 2.因各种原因导致还未完成而提前结束

进程切换:

是指进程调度时新旧进程的切换

执行模式的切换:

执行模式有两种,一种是用户态,一种是内核态
用户态:在进程用户空间运行的线程库创建并管理,操作系统未知,高效,不涉及到状态切换
内核态:内核级线程由内核创建并管理,一个进程的线程可以在多个处理器上并行,但涉及到模式切换

进程和线程的区别:

进程是资源分配的最小单位,线程是cpu执行的最小单位

线程的优点和三种状态:

优点:1.减少管理开销,创建和终止花费时间比进程少
2.线程之间可以快速切换,切换速度比进程快
3.线程之间的通信较容易实现
4.线程的并发程度高,可以在多处理器系统上并行,并发性能强
三态:
1.就绪 2.执行 3.阻塞

内核级线程和用户级线程特点

内核级:1.内核可以将同一进程的不同线程调度到多个处理器上,并行执行
2.单一线程被阻塞并不会导致该进程被阻塞
3.切换速度快;缺点:线程转移需要进行用户-内核-用户的模式切换,系统开销大
用户级:1.高效,线程切换不需要内核态特权
2.可移植性高,可以在任何操作系统执行
3.调度与应用程序相关

互斥

只允许同一时间内只有一个进程访问临界区的临界资源

临界资源与临界区:

临界资源:1.同一时间内仅仅允许一个进程独占使用的资源
临界区:1.同一时间内仅允许一个进程运行的一段代码

信号量:

信号量是用于表示系统中某种资源数量的一个变量
semWait()表示占用一个信号量,分配给运行的进程的信号量
semSignal()表示释放一个信号量

信号量原语定义:

struct semaphore{
	int count;
	queueType queue;
}
void semWait(semaphore s){
	s.count--;
	if(s.count < 0){
	/*把当前进程插入到等待队列s.queue,阻塞当前进程*/
	}
}
void semSignal(semaphore s){
	s.count++;
	if (s.count <= 0){
	/*从等待队列中唤醒一个进程,将其插入就绪队列*/
	}
}

用信号量实现互斥和同步

设置多个信号量,表示不同资源的数量

有限缓冲的生产者/消费者问题:

增加信号量s来记录空闲缓冲的数量

死锁概念:

一组相互竞争系统资源或通信的进程间“永久”阻塞

资源分配图:

注意资源的数量,大概率有环路,有环路不一定会导致死锁,死锁一定存在环路

死锁的四个必要条件:

1.互斥
2.占有且等待
3.不可抢占
4.循环等待

内存管理:

固定分区:

将内存划分为固定数量的区块,这些区块可大小可以相同或不同,但一但划分好,分区数量不变,缺点是容易产生内存碎片

动态分区:

根据进程的大小动态生成分区,分区大小正好等于进程大小,分区数量会实时变化

首次适配,下次适配,最佳适配:

首次适配:将空闲区按起始地址递增排列,从链首开始匹配,匹配到大小
下次适配:将空闲区按起始地址递增排列,从上一次放置进程的内存位置开始扫描
最佳适配:空闲区按分区大小递增顺序排列,从链首开始查找,第一个满足要求的空闲区就是满足要求的最小空闲区。

内部碎片:

加载的数据块小于分区大小而导致内存空间浪费

外部碎片:

由于进程多次换入换出而出现多个无法利用的小空闲块,称作外部碎片

伙伴系统的分配与回收:

伙伴系统是指分配两个相邻的帧块,每块大小相同
首先查找是否有长度为s的空闲块,有则直接分配;无则查找是否有2s,4s的空闲块,直到找到一个空闲块,将该块分裂为两个伙伴:左伙伴L和右伙伴R,R保留作为新空闲块。如果长为s直接分配,过大则分裂为s/2.

回收:系统释放该进程所占据的内存空间,检查对应的伙伴是否为空闲块,是,则合并为更大的伙伴空闲块,否,则不能合并为更大的空闲块

重定位:

逻辑地址转换为物理地址
线程的地址分布不一定连续,

设备管理与磁盘:

中断I/O方式和DMA有什么区别

中断IO:可以实现cpu和I/O设备并行操作,但是需要cpu需要时间处理中断,导致中断次数增加后会使cpu利用率降低
DMA:使设备与内存直接进行交互,只有在数据传输结束后才会向cpu发送中断信号,大幅减轻了cpu负担
通道方式:相对独立的IO控制系统,当cpu发出IO命令后,由设备驱动程序生成通道程序,通道完成全部的通道指令后才会向cpu发出中断信号

中断I/O的优点和缺点:

优点:各种设备通用
缺点:中断次数多

缓存buffer的作用:

缓解cpu和IO设备之间巨大的速度差异,提高cpu利用率,提高cpu和IO之间的并行性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值