《现代操作系统》笔记

1.5 操作系统概念

进程 

地址空间

文件

 

1.6 系统调用

用于进程管理的系统调用

 

2.1 进程

 

2.2 线程

 

2.3 进程间通信

竞争条件  临界区  

忙等待的互斥:

屏蔽中断 

锁变量 

严格轮换法  连续测试一个变量直到某个值出现为止,称为忙等待;由于这种方式浪费CPU时间,所有通常应该避免。只有在有理由认为等待时间是非常短的情形下,才使用忙等待。用于忙等待的锁,称为自旋锁。

睡眠与唤醒 

信号量  使用了三个信号量:一个称为full,用来记录充满的缓存槽数目;一个为empty,记录空的缓存槽数目;一个称为mutex,用来确保生产者和消费者不会同时访问缓冲区;full的初始值为0,empty的初始值为缓冲槽数目,mutex初值为1。

             信号量的另一种用途是实现同步。信号量full和empty用来保证某种事情的顺序发生或不发生。

互斥量  多数现代操作系统提供一种方法,让进程和其他进程共享其部分地址空间。在这种方法中,缓存区和其他数据结构可以共享。

管程

消息传递 (MPI消息传递接口)

屏障(barrier)

避免锁:读-复制-更新

 

2.4 调度

抢占式和非抢占式调度算法:如果硬件时钟提供50HZ、60HZ或其他频率的周期性中断,可以在每个时钟中断时做出调度决策。根据如何处理时钟中断,可以把调度算法分为两类。非抢占式挑选一个进程然后让该进程运行直至被阻塞,或者该进程自动释放CPU。即使该进程运行了若干小时也不会被挂起。相反,抢占式调度算法挑选一个进程,并且让该进程运行某个固定时段的最大值。如果在该时段结束时,该进程仍在运行,它就被挂起。进行抢占式调度处理,需要在时间间隔的末端发生时钟中断,以便把CPU控制返回给调度程序。

调度算法分类:批处理  交互式  实时

批处理系统中的调度:先来先服务   最短作业优先   最短剩余时间优先

交互式系统中的调度:

轮转调度:每个进程被分配一个时间段,称为时间片。时间片轮转调度中唯一有趣的一点是时间片的长度。

优先级调度

多级队列

最短进程优先

实时系统中的调度

 

 

内存管理

3.1 无存储器抽象

3.2 一种存储器抽象:地址空间

地址空间是一个进程可用于寻址内存的一套地址集合。每个进程都有一个自己的地址空间,并且这个地址空间独立于其他进程的地址空间(除了一些特殊情况下进程需要共享它们的地址空间)

基址寄存器与界限寄存器

内存超载的方法:交换技术和虚拟内存

空闲内存管理

位图和空闲区链表  为创建的进程分配内存的一些算法

3.3 虚拟内存

基本思想:每个程序拥有自己的地址空间,这个空间被分割成多个块,每一块称作一页或页面。

分页  

由程序产生的地址称为虚拟地址,它们构成了一个虚拟地址空间。在使用虚拟内存的情况下,虚拟地址不是被直接送到内存总线上,而是被送到内存管理单元(MMU),MMU把虚拟地址 映射为物理地址。

虚拟地址空间按照固定大小划分成称为页面的若干单元。在物理内存中对应的单元称为页框。

缺页中断:当程序访问了一个未映射的页面,MMU注意到该页面没有被映射,于是使CPU陷入到操作系统。操作系统找到一个很少使用的页框且把它的内容写入磁盘。随后把需要访问的页面读到刚才回收的页框中,修改映射关系,然后重新启动引起陷入的指令。

MMU内部工作:

输入的16位虚拟地址被分为4位的页号和12位的偏移量。可用页号作为页表的索引,以得出对应于该虚拟页面的页框号。如果“在/不在”位是0,则引起一个操作系统陷阱。如果该位是1,则将在页表中查到的页框号复制到输出寄存器的高3位中,再加上输入虚拟地址的低12位偏移量,如此就构成15位的物理地址。输出寄存器的内存随即被作为物理地址送到内存总线。

页表:页表的目的是把虚拟页面映射为页框。从数学角度说,页表是一个函数,它的参数是虚拟页号,结果是物理页框号。

页表项的结构:页表项结构与机器密切相关,32位是一个常用的大小。

加速分页过程

两个主要问题:1、虚拟地址到物理地址的映射必须非常快

2、如果虚拟地址空间很大,页表也会很大

转换检测缓冲区(TLB):大多数程序总是对少量的页面进行多次的访问。因此,只有很少的页表项会被反复读取,而其他的页表项很少被访问。解决方案是设置一个小型的硬件设备,将虚拟地址直接映射为物理地址,而不必再访问页表。这种设备称为转换检测缓冲区(TLB)

软件TLB管理:理解两种不同的TLB失效的区别,当一个页面访问在内存中而不在TLB中时,将产生软失效。那么此时所要做的就是更新一下TLB,不需要产生磁盘IO。相反,当页面本身不在内存中(当然也不在TLB中)时,将产生硬失效。

次要缺页错误、严重缺页错误;程序访问了一个非法地址,根本不需要向TLB中新增映射。此时,操作系统一般会通过报告段错误来终止该程序。

  针对大内存的页表:另一个问题是怎样处理巨大的虚拟地址空间,以下是两种解决方法:多级页表   倒排页表

 

3.4 页面置换算法

当发生缺页中断时,操作系统必须在内存中选择一个页面将其换出内存,以便为即将调入的页面腾出空间。 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值