操作系统查漏补缺
2018-01-15 16:34
218 查看
进程的描述与控制
进程的描述
定义:程序+PCB(进程控制块)+数据集合,是系统资源分配的最小单位。
目的:为了使程序并发执行,并能对其加以描述和控制。
特征:动态性、并发性、独立性、异步性。
三种基本状态:就绪态、运行态、阻塞态
进程的同步
同步方式:临界区、互斥区、信号量、事件、管程
临界区:在每个进程中访问临界资源的代码称为临界区;在进入临界区之前,对临界资源进行观察,观察是否被访问。
管程:java虚拟机的方法级和方法内部的同步就使用了管程。 定义:定义了个数据结构和能为并发进程在该数据结构上的一组操作,这组操作能同步进程和改变管程中的数据。即 管程是OOP的思想,将临界资源抽象为一组数据结构;将对资源的操作抽象为一个方法。
管程和进程的区别:(1)管程是共享数据结构,如消息队列;进程是私有的;(2)管程是为了解决共享资源互斥问题,进程是为了实现系统的并发性。(3)管程是被动工作,即进程进入管程访问临界区资源;进程是主动工作。(4)进程拥有动态性和并发性,而管程则没有。
同步遵循的规则:空闲让进、忙则等待、有限等待、让权等待
出现死锁的情况:必须同时满足四条,互斥条件、请求与保持、循环等待、不可剥夺资源
避免死锁的算法:银行家算法+安全性算法
进程通信方式
主要有四大类:共享存储区、管道通信、消息传递、客户-服务器模型
管道:用于连接一个写进程-读进程的并实现它们之间的通信的文件,又名pipe。提供互斥、同步以及确认对方是否存在。
C/S模型,最核心的就是套接字。基于文件型的套接字类似于管道,基于网络的套接字就和平常我们说的一致。
线程相关
定义:系统调度和分配的最小单位
目的:和进程类似,为了OS有更好的并发性。
和进程的区别:(1)进程是最小的可拥有资源的独立单位,换言之,线程并没有独立的资源。(2)并发性:进程之间能并发执行;同一进程的多个线程也能并发执行。(3)切换:进程在切换时消耗的资源大于线程;但一个进程崩溃不会影响其他进程;而一个线程崩溃则隶属于的整个进程拉闸。(4)独立性:进程拥有自己的PCB数据结构,是独立的;而线程是共享进程的资源,谈不上什么独立性。
线程的实现方式:(1)内核态线程 (2)用户态线程 (3)二者混用
java线程间通信方式:线程不独立占有资源,所以线程间进行通信主要就是为了同步(1)互斥锁 (2)信号量 (3)对于读写进程单向的管道 (4)wait/notify (5)临界区也算上一个吧
调度算法
先来先服务(FCFS):最简单的,顾名思义,哪个进程先到就先服务哪个。
短作业优先(SJF):属于优先级调度算法的一种,以作业长度为优先级判定。 缺点:(1)对长作业非常不利 (2)人机无法进行交互 (3)没有考虑每个作业的紧迫程度
高响应比优先:结合了FCFS和SJF,本质上你我觉得还是优先级算法。
进程调度
进程调度的任务:(1)保存CPU当前的现场信息,如程序计数器、通用寄存器中的内容,将断点信息保存到PCB中。(2)选取下一个执行的进程,改为运行态 (3)将CPU分配给进程,并让其从上次断点处开始运行,把断点信息装入寄存器中。
组成部分:(1)排队器 (2)分配器 (3)上下文切换器
调度方式:(1)协同式 (2)抢占式
抢占式调度:(1)RR时间片轮转 (2)优先级调度算法 (3)多级反馈队列调度算法
内存分区分配方式
单一连续分配
固定分区分配
动态分区分配(可变分区分配):(1)基于顺序搜索分配算法 (2)基于索引分配算法
基于顺序搜索:(1)首次适应算法 (2)循环首次 (3)最佳适应算法 (4)最坏适应算法
首次适应算法(FF):从可分配内存的链首开始寻找,找到一个可以用的内存空间,装进去,OK。 缺点:大量碎片
循环首次:不是从链首了,而是从上一次找到的空闲分区的下一个开始。
最佳适应:找到一个和需要内存大小相近的空间,装进去。 缺点:大量碎片
最坏适应:找最大的内存空间,寅吃卯粮。 优点:查找效率高,碎片少。
基于索引分配:(1)快速适应 (2)伙伴系统 (3)哈希算法
动态可重定位分配:(1)相对于动态分区分配多一个“紧凑”,即碎片整理功能。
页面置换算法
最佳置换算法:这个东西实际应用中实现不了,但是可以作为一个检验性能的标杆。核心就是,观察已经存入的内存页面,将最长时间(未来)不再访问的页面换出。而实际应用中,我们明显无法预测到未来,到底是个什么情况。
先进先出FIFO:啥都有它,不介绍了
最近最久未使用置换算法LRU:顾名思义,就是将内存中最近最久没有使用的页面置换出去。 操作系统中实现它使用了寄存器和栈,这个栈很精髓,编程实现的话要用这个。用栈保存当前使用各个页面的页号,每当进程访问某页面 的时候,便将该页面的页号从栈中移除并压入栈顶,因此,栈顶始终是最新被访问页面的页号,栈底是最久未使用的页号。
进程的描述
定义:程序+PCB(进程控制块)+数据集合,是系统资源分配的最小单位。
目的:为了使程序并发执行,并能对其加以描述和控制。
特征:动态性、并发性、独立性、异步性。
三种基本状态:就绪态、运行态、阻塞态
进程的同步
同步方式:临界区、互斥区、信号量、事件、管程
临界区:在每个进程中访问临界资源的代码称为临界区;在进入临界区之前,对临界资源进行观察,观察是否被访问。
管程:java虚拟机的方法级和方法内部的同步就使用了管程。 定义:定义了个数据结构和能为并发进程在该数据结构上的一组操作,这组操作能同步进程和改变管程中的数据。即 管程是OOP的思想,将临界资源抽象为一组数据结构;将对资源的操作抽象为一个方法。
管程和进程的区别:(1)管程是共享数据结构,如消息队列;进程是私有的;(2)管程是为了解决共享资源互斥问题,进程是为了实现系统的并发性。(3)管程是被动工作,即进程进入管程访问临界区资源;进程是主动工作。(4)进程拥有动态性和并发性,而管程则没有。
同步遵循的规则:空闲让进、忙则等待、有限等待、让权等待
出现死锁的情况:必须同时满足四条,互斥条件、请求与保持、循环等待、不可剥夺资源
避免死锁的算法:银行家算法+安全性算法
进程通信方式
主要有四大类:共享存储区、管道通信、消息传递、客户-服务器模型
管道:用于连接一个写进程-读进程的并实现它们之间的通信的文件,又名pipe。提供互斥、同步以及确认对方是否存在。
C/S模型,最核心的就是套接字。基于文件型的套接字类似于管道,基于网络的套接字就和平常我们说的一致。
线程相关
定义:系统调度和分配的最小单位
目的:和进程类似,为了OS有更好的并发性。
和进程的区别:(1)进程是最小的可拥有资源的独立单位,换言之,线程并没有独立的资源。(2)并发性:进程之间能并发执行;同一进程的多个线程也能并发执行。(3)切换:进程在切换时消耗的资源大于线程;但一个进程崩溃不会影响其他进程;而一个线程崩溃则隶属于的整个进程拉闸。(4)独立性:进程拥有自己的PCB数据结构,是独立的;而线程是共享进程的资源,谈不上什么独立性。
线程的实现方式:(1)内核态线程 (2)用户态线程 (3)二者混用
java线程间通信方式:线程不独立占有资源,所以线程间进行通信主要就是为了同步(1)互斥锁 (2)信号量 (3)对于读写进程单向的管道 (4)wait/notify (5)临界区也算上一个吧
调度算法
先来先服务(FCFS):最简单的,顾名思义,哪个进程先到就先服务哪个。
短作业优先(SJF):属于优先级调度算法的一种,以作业长度为优先级判定。 缺点:(1)对长作业非常不利 (2)人机无法进行交互 (3)没有考虑每个作业的紧迫程度
高响应比优先:结合了FCFS和SJF,本质上你我觉得还是优先级算法。
进程调度
进程调度的任务:(1)保存CPU当前的现场信息,如程序计数器、通用寄存器中的内容,将断点信息保存到PCB中。(2)选取下一个执行的进程,改为运行态 (3)将CPU分配给进程,并让其从上次断点处开始运行,把断点信息装入寄存器中。
组成部分:(1)排队器 (2)分配器 (3)上下文切换器
调度方式:(1)协同式 (2)抢占式
抢占式调度:(1)RR时间片轮转 (2)优先级调度算法 (3)多级反馈队列调度算法
内存分区分配方式
单一连续分配
固定分区分配
动态分区分配(可变分区分配):(1)基于顺序搜索分配算法 (2)基于索引分配算法
基于顺序搜索:(1)首次适应算法 (2)循环首次 (3)最佳适应算法 (4)最坏适应算法
首次适应算法(FF):从可分配内存的链首开始寻找,找到一个可以用的内存空间,装进去,OK。 缺点:大量碎片
循环首次:不是从链首了,而是从上一次找到的空闲分区的下一个开始。
最佳适应:找到一个和需要内存大小相近的空间,装进去。 缺点:大量碎片
最坏适应:找最大的内存空间,寅吃卯粮。 优点:查找效率高,碎片少。
基于索引分配:(1)快速适应 (2)伙伴系统 (3)哈希算法
动态可重定位分配:(1)相对于动态分区分配多一个“紧凑”,即碎片整理功能。
页面置换算法
最佳置换算法:这个东西实际应用中实现不了,但是可以作为一个检验性能的标杆。核心就是,观察已经存入的内存页面,将最长时间(未来)不再访问的页面换出。而实际应用中,我们明显无法预测到未来,到底是个什么情况。
先进先出FIFO:啥都有它,不介绍了
最近最久未使用置换算法LRU:顾名思义,就是将内存中最近最久没有使用的页面置换出去。 操作系统中实现它使用了寄存器和栈,这个栈很精髓,编程实现的话要用这个。用栈保存当前使用各个页面的页号,每当进程访问某页面 的时候,便将该页面的页号从栈中移除并压入栈顶,因此,栈顶始终是最新被访问页面的页号,栈底是最久未使用的页号。
相关文章推荐
- 极客学院学习:第六周javascript基础查漏补缺笔记
- 向我的软件班的同学引荐别人推荐几本好书(我也是在查漏补缺),希望有志者能少走些弯路。
- C语言——查漏补缺
- Vue 脱坑记 - 查漏补缺(汇总下群里高频询问的xxx及给出不靠谱的解决方案)
- Java基础查漏补缺:(开篇)为什么要在即将找工作的时候还在看Java基础
- 查漏补缺
- 【JavaScript学习笔记】4:查漏补缺1
- Java基础查漏补缺:(开篇)为什么要在即将找工作的时候还在看Java基础
- 黑马程序员-学习笔记-查漏补缺
- 黑马程序员---前序《对部分基础知识的查漏补缺》
- html标签认识的一些查漏补缺
- 【HTML5学习笔记】7:查漏补缺1
- C++查漏补缺读书笔记一 友元(friend)
- 查漏补缺1
- Java基础知识_查漏补缺篇
- cocos2d-x的android环境搭建与win32程序移植至android(查漏补缺版)
- 查漏补缺——类(C++ Primer)
- 查漏补缺——顺序容器(C++ Primer)
- 【SQL Server学习笔记】14:查漏补缺1(三值谓词,范式,主键/唯一/外键/检查/默认约束)
- java小知识查漏补缺(一)