目录
进程通信:四种高级通信:
线程与进程:
进程基本属性:
线程的基本属性:
作业调度算法:
先来先服务调度算法(FCFS):
短作业优先调度算法(SPF):
最高响应比优先算法(HRN):
基于优先数调度算法(HPF):
基本公式:
死锁产生的必要条件:
产生死锁的原因主要是:
产生死锁的四个必要条件:
解除死锁的方法有:
程序的三种装入方式:
程序的链接:
连续分配存储管理:
一、单一连续分配
二、固定分区分配
三、动态分区分配
分页存储管理:
页面:
页面大小:
快表:
分段:
操作系统有一个虚拟内存映射表。
局部性
进程间通信主要有以下几种方式:
管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道(named pipe):有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信;消息队列(message queue):消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。信号量(semophore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。信号(sinal):信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。共享内存(shared memory):共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。套接字(socket) : 套接口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器的进程通信;CPU调度和分派的基本单位;进程中执行运算的最小单位,可完成一个独立的顺序控制流程;真正在CPU上运行的是线程;一个线程可以创建一个线程也可以删除一个线程 -- 线程调度;多个线程完成不同工作就是多线程 抢占资源;
(1) 因为系统资源不足。 (2) 进程运行推进的顺序不合适。 (3) 资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则 就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。
(1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之 一不满足,就不会发生死锁。
最简单的一种存储管理方式,只能用于单用户、单任务的操作系统中。 优点:易于管理。 缺点:对要求内存空间少的程序,造成内存浪费;程序全部装入,很少使用的程序部分也占用内存。
把内存分为一些大小相等或不等的分区(partition),每个应用进程占用一个分区。操作系统占用其中一个分区。支持多个程序并发执行,适用于多道程序系统和分时系统。最早的多道程序存储管理方式。 缺点:内碎片(一个分区内的剩余空间)造成浪费;划分为几个分区,便只允许几道作业并发,分区总数固定,限制并发执行的程序数目。
1、分区的大小不固定:在装入程序时根据进程实际需要,动态分配内存空间,即——需要多少划分多少。 2、空闲分区表项:从1项到n项:内存会从初始的一个大分区不断被划分、回收从而形成内存中的多个分区。 3、优点:并发进程数没有固定数的限制,不产生内碎片。缺点:有外碎片(分区间无法利用的空间) 4、分区分配算法
①首次适应算法FF(first-fit)空闲分区排序:以地址递增的次序链接。 检索:分配内存时,从链首开始顺序查找直至找到一个大小能满足要求的空闲分区; 分配:从该分区中划出一块作业要求大小的内存空间分配给请求者,余下的空闲分区大小改变仍留在空闲链中。 若从头到尾检索不到满足要求的分区则分配失败 优点:优先利用内存低址部分,保留了高地址部分的大空闲区; 缺点:但低址部分不断划分,会产生较多小碎片;而且每次查找从低址部分开始,会逐渐增加查找开销。
②循环首次适应算法空闲分区排序:按地址 检索:从上次找到的空闲分区的下一个空闲分区开始查找,直到找到一个能满足要求的空闲分区。为实现算法,需要设置一个起始查寻指针并采用循环查找方式 分配:分出需要的大小优点:空闲分区分布均匀,减少查找开销缺点:缺乏大的空闲分区
③最佳适应算法总是把能满足要求、又是最小的空闲分区分配给作业,避免“大材小用”。空闲分区排序:所有空闲分区按容量从小到大排序成空闲分区表或链。 检索:从表或链的头开始,找到的第一个满足的就分配 分配:分出需要的大小 缺点:每次找到最合适大小的分区割下的空闲区也总是最小,会产生许多难以利用的小空闲区(外碎片)
④最差适应算法/最坏匹配法基本不留下小空闲分区,但会出现缺乏较大的空闲分区的情况。
⑤快速适应算法根据进程常用空间大小进行划分,相同大小的串成一个链,需管理多个各种不同大小的分区的链表。进程需要时,从最接近大小需求的链中摘一个分区。 能快速找到合适分区,但链表信息会很多;实际上是空间换时间。
地址结构:
页表:
地址变换结构: