重点:多道程序特征、操作系统中引入多道程序设计的目的、操作系统类型、操作系统的接口、
OS的四大特征(最重要的两大特征:并发与共享)、并发与并行的区别
充分利用CPU,提高CPU的利用率(P21倒数第六行)
方便用户使用操作系统
书上相关习题:
重点:顺序程序与并发程序的特征、进程与程序的区别、进程三种基本状态及状态变化的原因(能画出五状态以内的状态转换图)、
PCB的作用、进程控制、进程及线程的区别
单道程序:一个在时间上按严格次序先后操作的序列
多道程序:在内存中放多道程序,它们在操作系统的控制下在CPU上交替运行。
间断性:
由于程序共享系统中的资源或为完成同一任务而相互合作,致使在并发程序之间形成相互制约的关系。
相互制约将导致并发程序具有"执行-暂停-执行"这种间断性活动规律。
失去封闭性:
多个程序共享系统中的资源,从而资源的状态由多个程序来改变,致使程序的执行失去了封闭性。
失去可再现性:程序经过多次执行,执行的环境和初始条件相同,但得到的结果却不相同。
进程与程序的主要区别:
程序:是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。
进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
(定义来源:百度百科)
程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;
程序是静态的观念,进程是动态的观念;
进程具有并发性,而程序没有;
进程是竞争计算机资源的基本单位,程序不是。
进程和程序不是一一对应的: 一个程序可对应多个进程即多个进程可执行同一程序; 一个进程可以执行一个或几个程序
(来源:知乎)
定义:是一个用来描述进程本身的特性,进程的状态,进程的调度信息,资源的占有情况等的数据结构
进程控制块是进程存在的唯一标识
作用:使一个在多道环境中不能独立运行的程序成为一个能够独立运行的基本单位,是一个能与其他进程并发执行的进程。
职能:对系统中的全部进程实行有效的管理
主要表现:对一个进程进行创建、撤销以及某些进程状态之间的转换控制
核心态:又称系统态,具有较高的权限,能执行一切指令,能访问所有寄存器及内存的所有区域。
用户态:较低特权的执行状态,此状态下只能执行规定的指令、访问指定的寄存器的指定区域。
内核:是在计算机硬件上扩充的第一层软件,操作系统要对这部分软件进行保护。(内核是利用原语来实现的)
原语:由若干条指令构成,是用于完成一定功能的过程。(原语是用原子操作构成的)
原子操作:过程中的所有操作要么全做,要么全不做。即原子操作是不可分割的操作
(1)引起创建进程的事件:
(2)创建原语要做的工作:
(1)引起进程撤销的事件:
(2)撤销原语要做的工作:
(1)引起进程阻塞和唤醒的事件:
(2)阻塞原语需要做的工作:
(3)唤醒原语需要做的工作:
(1)挂起原语要做的工作:
(2)激活原语要做的工作:
1.定义:线程是进程的一个实体,是被独立调度和分派的基本单位,表示进程中的一个控制点,执行一系列指令。
2.基本属性:
1.二者的关系:
2.具体比较:
做个简单的比喻:进程=火车,线程=车厢
- 线程在进程下行进(单纯的车厢无法运行)
- 一个进程可以包含多个线程(一辆火车可以有多个车厢)
- 不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘)
- 同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)
- 进程要比线程消耗更多的计算机资源(采用多列火车相比多个车厢更耗资源)
- 进程间不会相互影响,一个线程挂掉将导致整个进程挂掉(一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢)
- 进程可以拓展到多机,进程最多适合多核(不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上)
- 进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。(比如火车上的洗手间)-“互斥锁”
- 进程使用的内存地址可以限定使用量(比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去)-“信号量”
作者:biaodianfu
链接:https://www.zhihu.com/question/25532384/answer/411179772来源:知乎
书上相关习题:
重点:同步与互斥的概念、临界资源的概念、信号量(信号量的定义、取值及物理含义)及PV操作(非常重要)、用PV操作解决实际问题。
(进程之间的协作关系包括互斥、同步和通信)
概念:某段时间内,只允许一个进程使用的资源。
临界区:每个进程中访问临界资源的那段程序。
struct semaphore{
int value;
struct PCB *queue;
}
P操作:
void wait(semaphore s){
s.value=s.value-1;
if(s.value<0)
block(s.queue); //将进程阻塞,并将其投入等待队列s.queue
}
V操作:
void sign(semaphore s){
s.value=s.value+1;
if(s.value<=0)
wakeup(s.queue); //唤醒阻塞进程,将其从等待队列s.queue取出,投入就绪队列
}
s.value
表示系统中某种资源的数目(又称资源信号量)s.value=s.value-1
)
s.value<0
表示资源已经分配完毕block(s.queue)
自我阻塞,并插入等待队列s.value=s.value+1
)
s.value<=0
表示等待队列中有等待该资源的进程被阻塞wakeup(s.queue)
将等待队列中的一个进程唤醒s.value<0
时,|s.value|
表示等待队列的进程数小结:
例题:
参考blog:https://blog.csdn.net/qq_40712058/article/details/107300452
书上相关题目:
重点:处理机调度的类型、进程调度的方式 、平均周转(带权)时间的计算、主要调度算法(如先来先服务、时间片轮转、优先权、短作业或短进程优先)死锁产生的原因、死锁产生的必要条件、死锁预防的策略、死锁避免的银行家算法、检测死锁
基本思想:按进程或作业到达的先后顺序进行调度。
基本思想:从后备队列中选择估计运行时间最短的作业,将它们调入内存。
基本思想:从就绪队列中选择估计运行时间最短的进程,将处理机分配给它,使之执行并一直到完成或因发生某事件而阻塞放弃处理机时,再重新调度。
基本思想:进程按FCFS在就绪队列排队,调度程序把CPU分配给队首进程,令其执行一个时间片,一个时间片执行完毕将进程排在队尾。
基本思想:从后备队列中选择若干优先权最高的作业,将它们调入内存。或从就绪队列中选择优先权最高的进程,将处理机分配给它。
死锁的基本概念:
从四个必要条件入手
1.互斥条件不可禁止,互斥是资源的固有属性。
2.抛弃请求条件
3.抛弃不可剥夺条件
4.破坏环路条件
算法小结:
书上相关习题:
重点:重定位(静态重定位和动态重定位)、分区存储管理、可变分区连续存储分配方式各种算法的思想及优缺点、分页存储管理、分段存储管理、页式和段式的区别
内部碎片与外部碎片:在内存管理中,内部碎片是已经被分配出去的的内存空间大于请求所需的内存空间。 外部碎片是指还没有分配出去,但是由于大小太小而无法分配给申请空间的新进程的内存空间空闲块。段式存储管理不会产生内部碎片。但会产生外部碎片。
●地址空间:源程序经编译后得到的目标程序,存在于它所限定的地址范围内,此范围称地址空间。地址空间是逻辑地址的集合。
●存储空间:指主存中一系列存储信息的物理单元的集合,这些单元的编号称为物理地址。存储空间是物理地址的集合。
●重定位(地址映射):把用户程序中的相对地址(逻辑地址)转换为主存中的绝对地址(物理地址)过程。
连续分配:为用户程序分配一个连续的内存空间。
内存区域被分成:
最早使用的一种运行在多道程序中的系统管理方案。分区在系统启动后划分好,以后不能改变。
在进程装入内存时,把可用的内存空间“切出”一个连续的区域分配给进程,以适应进程大小的需要。即分区的大小和个数随系统的运行而不断改变。
基本原理
●将进程的逻辑地址空间分成若干个大小相等的片,称为页面或页;
●内存空间分成与页大小相等的若干个存储块,称为物理块或页框。
●在为进程分配内存时,以块为单位,将进程中的若干页分别装入多个可以不相邻的块中。
为了满足用户在编程和使用上的要求。引入分段存储管理。
整个作业的地址空间被分成若干个段,每个段采用一段连续的地址空间,段的长度由相应的逻辑信息的长度决定。
●页是信息的物理单位,分页是系统管理的需要,而不是用户的需要。
●段是信息的逻辑单位,它含一组意义完整的信息。分段是为了更好地满足用户的要求。
●页的大小固定,由系统确定。
●段的长度不固定,决定于用户所编写的程序。
●分页的作业地址空间是一维的,即单一的线性地址空间。
●分段的作业地址空间是二维的,程序员在标识一个地址时,需给出段名和段内地址。
在内存管理中:
内部碎片是已经被分配出去的的内存空间大于请求所需的内存空间。
外部碎片是指还没有分配出去,但是由于大小太小而无法分配给申请空间的新进程的内存空间空闲块。
段式存储管理不会产生内部碎片。但会产生外部碎片。
书上相关习题:
重点:局部性原理及意义、虚拟存储器的定义与特征、请求页式管理(页式虚拟存储管理)的特点及实现、请求页式管理的页面置换算法
●程序执行时,大多数情况下是顺序执行的。
●过程调用会使程序的执行轨迹从一部分内存区域转至另一部分区域, 但过程调用的深度不会超过5。
●程序中有许多循环语句,这些语句会重复多次执行。
●程序中对数据结构的操作,往往局限在很小的范围内。
正是由于局部性原理的存在,
离散性:进程不连续地装入内存多个不同的区域中。
多次性:一个进程多次调入内存。
对换性:进程在运行过程中,允许将部分程序和数据换进、换出。
虚拟性:能从逻辑上扩充内存容量,使用户感觉到的内存容量远远大于实际的内存容量。
需要一定的硬件支持:
书上相关习题:
重点:设备控制中所用数据结构、DMA方式与通道方式、引入缓冲的目的、Spooling技术的实现与实质、磁盘调度及相关算法、
时间换空间的技术:虚拟存储技术
空间换时间技术:缓冲区、通道、RAID、快表等
设备控制表(DCT)、控制器控制表(COCT)、通道控制表(CHCT)和系统设备表(SDT)
为了缓解和CPU的高速性与I/O设备的低俗性之间的矛盾,产生了脱机输入输出技术。
在联机下实现的输入输出与CPU并行的操作称为SPOOLing技术
SPOOLing的系统组成:
输入缓冲区和输出缓冲区
输入进程SPi和输出进程SPo
书上相关习题:
磁盘调度算法(FCFS、SSTF、SCAN、CSCAN)
进程调度算法:(先来先服务调度算法、时间片轮转法、短作业优先调度算法)
页式管理中给出地址机构计算物理地址
死锁预防中的银行家算法
进程同步(用PV操作实现程序段按序执行、解决实际问题如类生产者消费者问题)
虚拟分页管理中的页面置换算法(先进先出、最近最久未使用、最佳置换算法)