操作系统精髓与设计原理 第9版总结

计算机4个主要部件:CPU 内存(主存) I/O 系统总线

操作系统精髓与设计原理 第9版总结_第1张图片

MAR:存储器地址寄存器 

MBR:存储器缓冲寄存器

操作系统精髓与设计原理 第9版总结_第2张图片

计算机其实所做的事就是:取指令和执行指令

取到的指令被放到:指令寄存器(IR)

指令也分为四类:

操作系统精髓与设计原理 第9版总结_第3张图片

举个例子:

操作系统精髓与设计原理 第9版总结_第4张图片

 

指令是16位bit  4个16进制  第一个字节是要执行的操作 后三个字节是执行的操作的数字的地址

1 940-》1代表加载AC 940代表数字地址为940

操作系统精髓与设计原理 第9版总结_第5张图片

操作系统精髓与设计原理 第9版总结_第6张图片

操作系统精髓与设计原理 第9版总结_第7张图片

一个指令周期=取指令+执行指令

DMA直接内存存取:I/O模块直接读取主存  不经过CPU

中断:IO或者主存停止CPU当前的工作去处理他们的。

最初为了提高效率,因为CPU比I/O模块和主存快的多 要等他们 所以先去做自己的事情,他们好了来中断CPU

因此在指令周期中加了一个中断阶段:

指令周期中的中断阶段:

操作系统精髓与设计原理 第9版总结_第8张图片

发送中断时候,需要保存当前的信息,包括程序状态字(PSW)和PC(程序计数器)等将其压栈,执行IO等中断的中断处理程序,执行完再恢复,继续执行刚才的任务。

多个中断的处理:

1.当中断执行时候禁止发生中断。后续的中断按顺序处理。缺点:没有考虑优先级,有的中断比较着急,不快处理后面的可能会溢出

2.定义中断优先级。

操作系统精髓与设计原理 第9版总结_第9张图片

cache存在的意义:CPU和内存速度不匹配。CPU会大量访问主存。

解决:由于局部性原理,在处理器和内存之间提供一个容量小并且速度快的存储器 即cache。

所以CPU访问数据的时候,看数据是否在cache中,否则先从内存读入缓存再读取数据。

 

内存中的最小单位是字  也就是字节(8bit)

一个快是由n个字组成。

内存总共个字  一个块K个字 

cache中有C个存储曹(多少行)每个槽K个字,槽的数字远远小于块的个数 C<

因此每个槽有一个标签 用于存储是哪一个块。标签通常是高位。

cache 替换策略。

cache的三种映射:

直接映射:

操作系统精髓与设计原理 第9版总结_第10张图片

全相连映射:

操作系统精髓与设计原理 第9版总结_第11张图片

组相连映射:

操作系统精髓与设计原理 第9版总结_第12张图片

IO通信技术:

可编程IO:CPU读取的时候一直在IO模块这里 做不了别的事情

中断驱动IO:cpu给模块发送io命令,然后去做别的工作,读一个字后,再利用中断来使用CPU,这样效率会高,但是仍然很低下,因为每个字都要中断(对读入的每个字,CPU必须状态检查,来确定这个字已经在io的数据寄存器了)。

DMA:需要控制总线与主存进行数据交换,不用CPU

操作系统:应用程序和计算机硬件的接口。

单道程序设计:运行完一个作业再去运行另一个作业。

多道程序设计:可以同时运行多个,并且在一个任务IO的时候,cpu去完成另一个事情。

执行上下文:

操作系统精髓与设计原理 第9版总结_第13张图片

进程中的基址寄存器和界限寄存器定义了进程所占的存储器区域,基址寄存器保存了区域的起始地址,界限寄存器保存了大小,这样保护进程之间互不干扰。

分页系统实现了虚拟地址和物理地址的动态映射。

进程的五个状态:

操作系统精髓与设计原理 第9版总结_第14张图片

新建态和就绪态的区别:新建态分配了空间但是执行代码没有进入内存,程序贮存在外存中,通常是磁盘。

通常,一个事件对应一个队列。队列中存放着待执行的进程,当事件发生,相应的队列中所有的进程都转换为就绪态。

挂起状态:如果进程处于阻塞态,OS可以把进程置于挂起态,转移到磁盘。

设计挂起态的原因:好多进程在等待I/O IO比计算慢得多 cpu处于空闲,因此把这些进程放到外存,也就是挂起。

操作系统维护的表:内存、IO、文件、进程。

PCB:和进程向关联的属性,属性的集合是PCB。

进程映像:数据 程序、栈、属性的集合。

用户态:不可以修改PCB等内存区域。

内核态:可以修改PCB等内存区域。

这样保护了PCB和操作系统不受用户程序的干涉。

程序状态字有一位表示状态字:内核还是用户。当用户调用系统服务或者中断时候,执行模式为内核态。

创建进程的步骤:1.给进程分配进程标识符2.给进程分配空间。3初始化PCB 4.设置正确的连接(放在调度队列里面)5.创建和扩充其他数据结构。

中断陷阱:中断:外部事件造成。陷阱:进程产生的错误或异常造成。

发生中断:1.PC设置成中断的开始地址2.切换成内核态。

线程:

线程:有独立的栈,还有独立的控制块用于包含寄存器的值、优先级、和其他与线程有关的状态信息。

线程优点:创建开销小、终止开销小、线程切换开销小、提高了不同执行程序的通信的效率。进程间通信需要内核介入。

用户线程和内核线程:内核线程需要在内核空间执行 ,需要切换到内核态。

SMP对称多处理:多个CPU ,通过总线共享主存。

信号量:

互斥信号量:0或者1

管程:局部数据只能被管程过程访问,任何外部过程不能访问。进程通过调用管程过程进入管程。

消息传递:

银行家算法:

内存管理

内部碎片:内存分了N个大小相等的分区,假设分区为8M,一个长度小于2M的程序被换进来后,导致其他空间浪费,内存碎片。

固定分区:大小相等的分区  大小不等的分区

操作系统精髓与设计原理 第9版总结_第15张图片

对于分区不等的内存,放置算法:维持一个从小到大的队列来放置进程

操作系统精髓与设计原理 第9版总结_第16张图片

动态分区:分区数目大小可变 来多少分多少。

缺点:外部碎片。

解决方法:压缩。

压缩:把所有进程都挪挪地方 把空的空间腾出地方来。但是很耗时。

放置方法:

伙伴系统:一直一分为二 

重定位: 可能进程换入换出每次待的物理地址都不一样。进程使用的都是逻辑地址,需要转换为物理地址。

地址转换的一种方法:基址寄存器 界限寄存器

分页:解决上面的固定分区和动态分区的问题。

将内存分为多个页,将进程空间也分为多个页,这样可以最大化利用空间 进程的空间的物理地址可以不连续,用页表来一一对应。

举个例子:

操作系统精髓与设计原理 第9版总结_第17张图片

操作系统精髓与设计原理 第9版总结_第18张图片

分段:进程被划分为很多段。并且段的大小不需要相等。并且段可以不连续。可能产生外部碎片。

 

进程的常驻集:进程执行的任何时候都在内存中的部分。

当访问不在内存中的逻辑地址,产生中断,进程变为阻塞态。OS产生一个读磁盘的OI请求,在执行磁盘io期间,os可以调度另一个进程运行。

虚拟内存的原因:即使一个很大的进程,短时间内,执行也会在很小的程序里面,访问一两个数组的数据。这样给内存装入太多的块就会造成巨大的浪费。这样可以在内存中保存更多的进程。

但是OS必须管理的很好对进程的空间换入换出。如果频繁的换入换出,就会造成系统抖动。

系统抖动:CPU大部分的时间在把进程的块换入换出,而不是在执行指令。

虚拟内存大部分和分页一起。

页表:一个大表,存放着每一个虚拟内存中的块的基地址(物理地址),块中有偏移量,一相加就是所有的空间。

操作系统精髓与设计原理 第9版总结_第19张图片

PLE页表项: P M   

P是否该页在内存,如果在,还包括该页的页框号。

M修改位。

同样的页表也保存在虚拟内存中,而不是在实际内存。

由于访问页表也会访问物理内存,增加了消耗,因此用类似于cache的高速缓存----TLB来存页表

长程调度:把那个进程加到当前活跃进程。

短程调度:下一次执行哪个进程。

中程调度:把进程从内存放到磁盘或者从磁盘放到内存。

调度算法:

FCFS

段作业优先

高响应比优先

你可能感兴趣的:(操作系统)