概述
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 页面置换算法
当发生缺页中断时,操作系统必须在内存中选择一个页面将其换出内存,以便为即将调入的页面腾出空间。
最后
以上就是受伤外套为你收集整理的《现代操作系统》笔记的全部内容,希望文章能够帮你解决《现代操作系统》笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复