并发:同一段时间内有多个进程并发执行。
共享:系统的资源能被多个同时执行的进程或线程共享。
虚拟:通过时分复用或空分复用技术将一个物理实体虚拟为多个。
异步:系统中的进程是以不可预知的速度进行,与按序执行的同步相反。
进程是进程实体的运行过程,是系统进行资源分配和调度的独立单位;
线程是比进程更小的可独立运行的单位,可以看作轻量级进程,引入线程的目的是为了减小并发执行过程中的开销,增加并发率。一个进程内可以有多个线程。
两者的对比:
就绪态,运行态,阻塞态。
进程通信指的是进程之间交换数据的方式。进程通信分为低级通信和高级通信。
低级通信通过信号量方式。高级通信方式包括:共享存储、消息传递、管道通信。
信号量:能保证某资源被互斥访问,或控制被访问的顺序(同步)。
共享存储:在进程之间有一块共享内存区域可直接访问,通过对这个区域的读操作或写操作来实现数据共享,这个过程是互斥的。
消息传递:进程间以格式化的消息为单位进行数据交换。有直接通信方式和间接通信方式两种,直接通信方式是发送进程直接将消息发送给接收进程缓冲队列,接收进程从缓冲队列中取得消息。间接通信方式是将消息发送到一个中间实体中,相当于信箱,接收进程从实体中取得消息。
管道通信:管道,就是指连接读进程和写进程的一个共享文件,然后进行半双工地读写文件。
进程同步指的是多个并发进程的按照某种顺序执行。
先来先服务算法:按顺序执行进程,优点是公平,缺点是短作业会等待较长时间。
短作业优先算法:选择处理时间最短的先执行,优点是平均等待时间短,周转时间更短,缺点是长作业会一直排在后面,不公平,还可能会造成饥饿。
高相应比算法:响应比=执行时间+等待时间/执行时间,相应比越高,越先执行。优先是综合考虑了等待时间和处理时间。当等待时间相同时,处理时间越短的越先执行;当处理时间相同时,先来的先执行。
时间片轮转:给每个进程分配时间片,按到达顺序,循环执行。优点是公平,而且每个进程都能被执行到。
优先级调度算法:根据上层设置的优先级来决定执行顺序。
多级反馈队列调度算法:是一个效率很高的调度算法。设有多级队列,时间片长度由小到大,优先级由高到低。当有新进程时,加入到优先级最高队列,执行后移动到低一级的队列中。优先执行高优先级队列中的进程,直到高优先级为空,再执行低优先级的进程。
前三种是批处理操作系统常用,后三种倾向于交互式操作系统。
每个进程中访问临界资源的那段程序称为临界区,一次仅允许一个进程使用的资源称为临界资源。
解决冲突方法:
忙则等待:当临界资源正在被访问时,不允许其他进程访问临界资源。
闲则让进:当临界资源空闲时,让需要访问他的进程来访问它。
有限访问:一个进程访问临界资源的时间是有限的,不能一直占用。
让权等待:当进程等待许久一直得不到访问临界资源的机会,应该主动让出,避免出现“忙等”现象。
死锁是在多个运行的进程中,因为资源的不合理分配而使得他们互相等待别人手里的资源,导致多个进程进入阻塞状态。
死锁预防
就是确保死锁的四个必要条件中至少一个不满足,就能预防死锁的发生。
死锁避免
当进程申请资源时,检测资源分配后系统是不是安全状态,就是说,存在一个安全分配序列,使得系统能够分配各个进程所需的资源。如银行家算法。
死锁检测与解除
允许进程运行过程中出现死锁,在发生死锁后,通过某种方法检测出,并采取相关措施解除死锁,比如终止所有死锁进程资源,或一次终止一个直到死锁解除。或者剥夺某些死锁进程的资源。
分页,分段都是内存的非连续分配方式。
分页,指的是将进程的逻辑地址分为大小固定的页,然后每一页对应着一块大小固定的物理内存块,这些物理内存块可以是离散的。
分段,指的是将进程的逻辑地址分为大小不固定的段,每一个段对应着一块离散的物理内存块。
两者的区别是:
虚拟内存是一种内存扩容技术。
它的思想是,一个运行的进程,不必要把所有的数据全部放入内存中,而是需要用到的时候在从外部调入内存中。而且进程的数据不需要一直保存在内存中,当内存空间不够时,部分数据可以被系统调出内存。
所以在用户的角度上看的内存的大小远远大于实际内存的大小。
好处:在内存中可以保留多个进程的数据,系统并发度提高。
内部碎片指的是分配给某进程的内存区域中,有些部分没有用上。
外部碎片指的是在动态分配内存过程中,会产生一些很小的空闲内存区域,难以被利用。
先进先出算法:淘汰最先进入物理内存块的页面。这个算法实现简单,但效率低下,还存在一种问题,当分配的内存块变多时,缺页中断次数可能变多。
最佳置换算法:淘汰最久不会被访问的页面。这个算法的前提是,已经确定页面的访问序列。但进程要访问哪些页面是不能提前预知的,所以这个算法无法实现。
最近最久未使用算法:淘汰最近最久未使用的页面,和最佳置换算法的方向相反,这个是往前面找。但这个算法实现困难,需要专门的硬件支持。
时钟置换算法:给每个页表项增加访问标记和修改标记,循环遍历页面,优先选择未被访问和未被修改的页面进行淘汰。
颠簸指的是刚刚换出的页面马上就又被换入,刚刚换入的页面马上被换出,从而导致运行效率急剧下降。
这是因为进程拥有的物理内存块数小于频繁使用的页面数。应当增加物理内存块数。
中断是指程序在运行过程中,因为某些事件,需要暂停当前工作,并处理其他事件,处理完毕后,又要恢复之前的状态。
处理过程: