操作系统必备

chap1

操作系统定义:

控制和管理整个计算机系统的硬件与软件资源,合理地组织,调度计算机的工作与资源分配

操作系统四大特征:

并发,共享包括互斥共享和同时访问方式(微观上互斥),虚拟,异步

操作系统两个状态

用户态和核心态

特权指令:(了解)

尽在核心态。如io指令,置中断指令,存取用于内存保护的寄存器,送程序转太子到程序状态字寄存器等指令

中断和异常的定义:

中断:通常指外中断,比如io完成,固定时间片到的时钟中断等。

异常:通常指内中断,比如指令中断,硬件故障,或者地址月结,算术移除,缺页等。

系统调用按功能大致分为哪几类:

设备管理,文件管理,进程控制,进程通信,内存管理。

用户态转向核心态的厘子:

  1. 用户程序要求操作系统的服务,即系统调用
  2. 发生一次中断1
  3. 用户程序种产生了一个错误状态
  4. 用户程序企图执行一条特权指令
  5. 从核心态转向用户态由一条指令实现,这条指令也是特权指令,一般是中断返回指令

chap2

进程与线程概念:

进程:进程是进程实体的运行过程,时系统进行资源分配和调度的一个独立单位,最核心的是进程控制块pcb。

线程是轻量级的进程,它是一个基本的cpu执行单元,线程是进程的一个实体,是倍系统独立调度和分派的基本单元,线程自己不拥有自通资源,只拥有一点再运行中必不可少的资源,但他可与同于一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程种的多个线程之间可以并发执行。线程也有就绪,运行,阻塞三种基本状态。

进程的状态与转换

创建态,就绪态,运行态,阻塞态和结束态。

创建态:申请一个空白的pcb,写入一些可控制和管理进程的信息,由系统分配运行时必须的资源,然后把进程转入就绪态;

就绪态:获得了除处理机外的所有资源,一旦得到处理机就可以立即运行。

运行态:进程在处理机上运行。当时间片到则转为就绪态,当出现等待事件则转到阻塞态。

阻塞态:进程等待莫i一事件而暂时运行,如等待输入输出完成,即使处理机空闲也不能转入运行

结束套:撤销pcb,处理资源回收等工作。

进程的通信方式:

  1. 共享储存:对一块共享空间进行读写操作实现进程间的信息交换。分为两种:低级方式是基于数据结构的共享,高级方式是基于存储区的共享
  2. 消息传递:氛围直接通信和间接通信方式。直接通信方式把消息发给接收进程,间接通信把消息发给某个中间实体,接收进程从中间实体去消息。
  3. 管道通信:只允许一边写入一边读出,半双工通信方式。

线程和进程的比较

  1. 调度方面:进程是拥有资源和调度的基本单位。线程是独立调度的基本单位。在同一进程中,线程的切换不会引起进程切换。在不同继承中进行线程切换,就会引起进程切换。
  2. 在引入线程的操作系统中,线程和进程都具有并发性。
  3. 进程的创建或是撤销的开销远大于创建和撤销线程的开销。同时,进程切换的开销大于线程切换的开销。
  4. 进程的地址空间相对独立,同一进程的各线程共享进程的资源。
  5. 进程需要同步和互斥进行通信,保证数据一致性。线程可以直接读/写进程数据段来进行通信。

引入进程的目的 是更好地 使多道程序并发执行 提高资源利用率和系统吞吐量; 而 引入线程的目的 则是 减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能 。

什么是进程?进程由什么组成

进程是一个具有独立功能的程序关于某个数据集合的一次运行活动,可以申请和拥有系统资源,是一个动态的概念。进程由程序段,相关数据段和pcb构成,pcb是标志一个进程存在的唯一表示,程序段是进程运行的程序代码,数据段是存储程序运行过程中相关的一些数据。

典型的调度算法(进程的调度方式):

  1. 先来先服务调度算法:
  2. 短作业优先算法,会产生饿死的现象
  3. 优先级调度算法:非剥夺式和剥夺式优先级调度算法
  4. 高相应比有限调度
  5. 时间片轮转调度
  6. 多级反馈队列

为什么要引入处理及调度

如果没有处理及调度,意味着要等当前运行的进程执行完后,下一个进程才能执行,实际情况中,进程常需要一些外部设备的输入输出等,让处理及总等待外部设备,是对处理机的极大浪费。

临界资源定义

一次仅允许一个进程使用

同步机制要遵循以下准则

空闲让进,忙则等待,有限等待,让权等待

实现临界区互斥的基本方法:

软件实现的方法:

  1. 单标志法违背空闲让进
  2. 双标志先检查法违背忙则等待
  3. 双标志后检查法违背产生饥饿现象
  4. 皮特森算法

硬件实现的方法:

  1. 中断屏蔽方法:关中断,临界区,开中断
  2. 硬件指令方法,是原子操作,不允许被中断

信号量

用于解决互斥同步问题,只能被两种标准原语访问,即pv操作。

信号量分类:

  1. 整形信号量:定义一个用于表示资源数目的整形量s,违背让权等待,可能出现忙等

while(s《=0);

  1. 记录型信号量:出来一个代表资源数目的变量value外,在增加一个进程链表,用于连接所有等待该资源的进程

原语定义:

具有原子性,完成某种功能且不能被分割,中断执行的操作序列,通常由硬件实现。

用信号量实现同步:

假设两个进程a和b,要保证a执行之后,b才能执行。首先设置一个同步信号量s,初值为0. b要执行之前要p(s)操作,只有当a执行完之后,执行v(s)操作, s为,b才能开始执行,否则被阻塞

用信号量实现互斥

假设用信号量s记录初始资源个数。在访问临界资源前后分别加上p(s)和v(s)

用信号量实现前驱

首先画出他的一个前驱图。每个箭头设置一个信号量,并设置初值为。在箭头起始段进程的内容执行完之后进行v对应的信号量,在箭头终端指向的进程开始前设置p该箭头信号量

生产者消费者思想

假设一组生产者进程和一组消费和进程共享一个初始为空,大小为n的缓冲区。则我们可以设置一个互斥信号量mutex,初值为1,用于互斥访问该临界资源。同时设置信号量 empty和full,记empty初值为n,full初值为0.对于生产者进程,要保证缓冲区美满,临界区可使用才能放产品。对于消费者进程,要保证有产品且临界区可访问才能取出产品。

读者写者问题

为了避免访问的数据可能不一致提出的读者写者问题。除了读者和读者不存在互斥问题,其他行为都有实现互斥。可以允许多个读者进行读操作,但只允许一个写着王文件写信息。任意写着在写操作之前都不允许其他读者或写着工作。但有可能出现写者饿死的现象。所以在写进程请求访问时,应该禁止后续的读进程。

哲学家进餐问题

假设5各哲学家圆桌就坐,每个哲学家只有思考和进餐两个操作。每个哲学家一根一根拿筷子,如何让他们不造成死锁和饥饿。通常由一下集中思路:第一种,当一名哲学家的左右两边的筷子都可以用时才能允许抓筷子;第二种时比如至多允许4名哲学家同时进餐等。

死锁

死锁:多个进程因竞争资源而造成的互相等待资源的情况,如果没有外力敢于,这些进程都无法向前推进。

产生的原因

  1. 对系统中的不可剥夺的资源的竞争
  2. 进程的推进顺序非法
  3. 发生死锁必须同时满足以下四个条件:互斥条件,不可剥夺条件,请求并保持条件,循环等待条件。

死锁处理策略

  1. 死锁预防,破坏必要条件的一个或几个
  2. 死锁避免,用某种方法繁殖系统进入不安全状态;
  3. 死锁检测及解除

死锁羽凡只需要破坏死锁产生的四个必要条件之一

破坏互斥条件,破坏不可剥夺条件,破坏请求并等保持条件,破坏循环等待条件。

银行家算法

银行家算法的基本思想是分配资源之前,判断系统是否是安全的;若是,才分配。会算出总资源书,已分配资源数目和还需要资源数目。

为什么产生死锁,产生死锁的条件:

原因:由于系统存在一些不可剥夺资源,当两个或两个以上的进程栈有自身的资源并请求对方的资源,导致每个进程都无法向前推进,就是死锁。必要条件4各:互斥条件,不可剥夺条件,请求并保持条件,循环等待条件。

什么办法解决死锁:

预防死锁,避免死锁和死锁的检测与解除。预防时破坏4各必要条件,避免时用一些算法防止系统进入不安全状态

连续分配管理方式:

  1. 单一连续分配:用于单用户单任务
  2. 固定分区分配比较好管理:分区大小相等或是分区大小不等
  3. 动态分区分配,但会产生较多内部碎片,需要紧凑来解决,成本代价大。

动态分区的分配策略:

首次适应,按地址递增次序连接,找到大小能满足的第一个分区;

最佳适应:空闲分区按容量递增,找到第一个能满足要求的分区

最坏适应:一容量递减连接,找到第一个满足要求的分区

循环首次适应(临近适应):由首次适应演变而来,不容的是,分配内存是从上次的=查找结束的位置开始继续查找。

非连续分配管理

  1. 基本分页存储管理
  2. 基本分段存储管理
  3. 段页式管理方式

为什么要进行内存管理

在单批道处理系统阶段,一个系统在一个时间段内只执行一个程序,内存的分配简单,即仅要分配给当前运行的进程。一如多道程序的并发执行后,进程之间共享的不仅是处理机,还有主存储器。如果不对内存进行瓜拉尼,则容易导致内存数据的混乱,会限制进程的并发执行。

虚拟内存管理从逻辑上扩充内存

局部性原理

时间局部性:程序中的某条指令一旦执行,不久之后该指令可能再次执行;某数据被访问过,不久之后该数据可能再次被访问。产生时间局部性的典型原因是程序中存在着大量的循环操作。

空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址,可能集中在一定的范围之内,因为指令通常是顺序存放,顺序执行的,数据页一般是以向量,数组,表等形式簇聚存储的。

页面置换算法

决定应该换入哪页,换出哪页

  1. 最佳置换算法:淘汰以后永不使用的页面,或是在最长时间内不再访问的页面
  2. 先进先出页面置换算法:优先淘汰最早进入内存的页面
  3. 最近最久未使用:淘汰最近最长时间未访问的页面
  4. 时钟置换算法:给每帧附加使用位。优先淘汰使用位为0的帧

虚拟内存是怎样解决的,会带来什么问题

虚拟内存是使用外存上的空间来扩充内存空间,通过一定的换入/换出,是的整个系统在逻辑上能够使用一个远远超出其物理内存大小的内存容量。因为虚拟内存技术调换页面时需要访问外存,会导致平均访存时间增加,若使用了不合适的替代算法,会降低系统性能。

分页管理和分段管理方式的比较

  1. 从目的方面:分页是由于系统管理的需要而不是用户的需要,分段是为了能更好地满足用户的需要。页是物理单位,段时逻辑单位,含有一组意义相对完整的信息
  2. 从长度方面:页的大小固定且由系统决定。段的长度不固定,取决于用户所编写的程序
  3. 地址空间方面:分页管理方式的地址空间是一维的,分段是二维的
  4. 在碎片方面:分页由内碎片,无外碎片;分段有外碎片,没有内碎片

在目录中查找某个文件可以使用什么方法

可以采用线性列表法或者哈希表法。线性列表发把文件名组织成一个线性表,查找时一次与线性表中的每个表项进行比较。哈希表用文件名通过哈希函数得到一各指向文件的指针,这种方法迅速,但要注意避免冲突。

磁盘调度算法

  1. 先来先服务
  2. 最短寻找时间优先
  3. 扫描算法
  4. 循环扫描算法

chap5

io控制方式:

  1. 程序直接控制方式:cpu需要不断测试io设备的状态,造成极大cpu资源的浪费。
  2. 中断驱动方式:允许io设备主动打断cpu的运行并请求服务
  3. dma方式(直接存储器存取):由于io设备和内存间的数据交换必须经过cpu中的寄存器,所以速度还是受限,所以dma方式基本思想是在io设备和内存间直接开辟数据交换通路
  4. 通道控制方式:io通道是专门负责输入/输出的处理机,这种方式可以实现cpu,通道和io设备三者的并行操作。

spooling技术:

spooling技术又称为假脱机技术,为了缓和cpu的高速性和io设备的低速性的矛盾。相对于虚拟机技术,虚拟机技术像是骗过用户,比如电脑内存只有4g但是可以运行内存大于4g的程序。而spooling技术更像是骗过进程,假如我想要打印pdf和word文件,但只有一台打印机,而此时pdf进程和word进程都以为他们各自都拥有打印机,这实际上是缓冲队列产生的这种假象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haibianyoushark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值