赞
踩

在没有操作系统的时候,资源只属于当前运行的程序。引入OS、多道程序设计的概念后,进程就出现了。
进程的作用是:合理的隔离资源、运行环境、提升资源利用率。
进程(进程实体)由程序段、数据段和PCB三部分组成。
组成:
定义:
PCB常驻内存,存放在系统专门开辟的PCB区域内。
一个进程中可以有多个线程,线程是操作系统进行运行调度的最小单位。线程是进程中实际运行工作的单位。


当进程被分配到除CPU以外所有必要的资源后,就会进入就绪状态。只要再获得CPU的使用权,就可以立即运行。
就绪队列:一个系统中多个处于就绪状态的进程排成一个队列。

就绪状态的进程获得CPU后就进入执行状态
进程因某种原因从而放弃CPU的状态称为阻塞状态。(比如由于提出系统服务请求(如I/O操作),但因为某种原因未得到操作系统的立即响应)
阻塞的进程也会形成一个阻塞队列。

创建进程时拥有PCB但其他资源尚未就绪的状态。

进程结束由系统清理或归还PCB的状态。
生产者消费者问题、哲学家进餐问题。
以上问题出现的根源是:进程彼此之间没有相互通信。
对竞争资源在多进程间进行使用次序的协调,使得并发执行的多个线程之间可以有效使用资源和相互合作。
进程ID:是进程的唯一标记,表现为一个非负整数,最大值由系统确定。
fork()函数可创建进程,被创建的称为子进程,创建者称为父进程。
进程的父子关系可以通过pstree命令来查看。
特殊进程:

-aux打印进程详细信息,-u查看指定用户进程,使用| grep查询指定进程。-9强制结束进程。进程调度就是指计算机通过决策决定哪个就绪进程可以获得CPU使用权。
是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
产生死锁的四个必要条件:
在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。
银行家算法具体实现,详见:银行家算法 -Hello_狂奔的蜗牛
内存管理主要是为了解决三个问题:
只能在单用户、单进程的操作系统中使用。

是支持多道程序设计的最简单存储分配方式。
内存空间被划分为若干个固定大小的区域,每个分区只给一个程序使用,互不干扰。
根据进程实际需要分配。
回收时可能会有以下四种情况:

字块是相对物理设备的定义,页面则是相对逻辑空间的定义。
将进程逻辑空间等分成若干大小的页面,相应的把物理内存空间分成与页面大小相等的物理块。以页面为单位把进程空间装进物理内存中分散的物理块。
页面大小应该适中,过大难以分配,过小内存碎片过多。页面大小通常是512B~8K。
页表记录进程逻辑空间与物理空间的映射。

现代计算机可支持非常大的寻址空间,所以会有很多表项,页面就会占用很大空间。因此诞生了多级页表。

使用多级页表后,只需要将一级页表加载进内存即可,二级页表到磁盘中读取。
页式存储管理的缺点:如果有一段连续的逻辑分布在多个页面中,将大大降低执行效率。
将进程逻辑空间划分成若干段(非等分)。段的长度由连续逻辑的长度决定。
段表记录着段和物理地址的映射。

结合了两者的优点。
先将逻辑空间按段式管理分成若干段,再把段内空间按页式管理等分成若干页。

在段页式系统中,为了获得一条指令或数据,须三次访问内存。第一次访问是访问内存中的段表,从中取得页表始址;第二次访问是访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址一起形成指令或数据的物理地址;第三次访问才是真正从第二次访问所得的地址中,取出指令或数据。
显然,这使访问内存的次数增加了近两倍。为了提高执行速度,在地址变换机构中增设一个高速缓冲寄存器。每次访问它时,都须同时利用段号和页号去检索高速缓存,若找到匹配的表项,便可从中得到相应页的物理块号,用来与页内地址一起形成物理地址;若未找到匹配表项,则仍须再三次访问内存。
为什么使用?有些进程实际需要的内存很大,超过物理内存的容量。多道程序设计,使得每个进程可用物理内存更加稀缺。
虚拟内存:把程序使用内存划分,将部分暂时不使用的内存放置在辅存。
局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。
由于这个原理,程序运行时无需全部装入内存,装载部分即可。如果访问页不在内存,则发出缺页中断,发起页面置换。从用户层面看,程序拥有很大空间,这便是虚拟内存。
Buddy内存管理算法基于计算机处理二进制的优势具有极高的效率。算法主要是为了解决内存外碎片的问题。
满足以下三个条件的称为伙伴:
假如系统需要4(22)个页面大小的内存块,该算法就到free_area[2]中查找,如果链表中有空闲块,就直接从中摘下并分配出去。
如果没有,算法将顺着数组向上查找free_area[3],如果free_area[3]中有空闲块,则将其从链表中摘下,分成等大小的两部分,前四个页面作为一个块插入free_area[2],后4个页面分配出去。
free_area[3]中也没有,就再向上查找,如果free_area[4]中有,就将这16(2222)个页面等分成两份,前一半挂如free_area[3]的链表头部,后一半的8个页等分成两等分,前一半挂free_area[2]的链表中,后一半分配出去。假如free_area[4]也没有,则重复上面的过程,知道到达free_area数组的最后,如果还没有则放弃分配。
释放时类似。

文件内容由定长记录和可变长记录组成。
也称为流式文件,文件内容长度以字节为单位。
比如exe、dll、so。
顺序文件是指按顺序存放在存储介质中的文件。(磁带就只能存储顺序文件)
查询速度快,增删改慢。
可变长文件不适合使用顺序文件格式存储。索引文件是为了解决可变长文件存储而发明的一种文件格式。
需要一张索引表。



读取文件内容非常容易,速度快。对存储要求高,要求满足容量的连续存储空间。
链接分配可以将文件存储在离散的盘块中,需要额外的存储空间存储文件的盘块链接顺序。

把文件所有盘块集中存储(索引)。读取某个文件时,将文件索引读取进内存即可。

每个文件都拥有一个索引块,记录所有盘块信息。索引分配方式支持直接访问盘块。文件较大时,索引分配方式具有明显优势。


空闲盘区分配与内存分配类似。
将所有空闲盘区组成一个空闲链表,每个链表节点存储空闲盘块和空闲的数目。

0表示未使用,1表示已分配。
优点:

目录树使得任何文件或目录都只有唯一路径。


对CPU而言,凡是对CPU进行数据输入的都是输入设备,凡是对CPU进行数据输出的都是输出设备。




由于CPU与IO设备的速率不匹配,设立缓冲区。其减少CPU处理IO请求的频率,提高CPU和IO设备之间的并行性。
是关于慢速字符设备如何与计算机主机交换信息一种技术,通常称为“假脱机技术”。
利用高速共享设备将低速的独享设备模拟为高速的共享设备。逻辑上,系统为每一个用户都分配了一台独立的高速独享设备。
假设有三个设备都需要使用打印机。若有进程要求对它打印输出时,SPOOLing系统并不是将这台打印机直接分配给进程,而是在共享设备(磁盘或磁鼓)上的输出SPOOLing存储区中为其分配一块存储空间,进程的输出数据以文件形式存放于此。
各进程的数据输出文件形成了一个输出队列,由输出SPOOLing系统控制这台打印机进程,依次将队列中的输出文件实际打印输出。在SPOOLing 系统中,实际上并没有为任何进程分配,而只是在输入井和输出井中,为进程分配一存储区和建立一张I/O请求表。这样,便把独占设备改造为共享设备。

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。