先进先出法(First in First Out,FIFO)是指先把先进入的东西先处理掉,最后进入的东西最后处理,也就是先处理先进入的数据,最先进入的数据最后处理完,满足先进先出的要求。在计算机技术中,比如缓存空间,使用先进先出的规则,如果缓存空间已经满了,那么可以把最先存进去的缓存文件删除,腾出地方存储新的文件。同样的,在操作系统中,有着“先进先出”规则,例如就计算机程序中的I/O处理,这里也要求先进先出,也就是先进入程序的I/O优先处理,最后进入的I/O后处理,把先进入的请求最先处理完。
先进先出法在操作系统中有着非常广泛的应用,比如:程序优先,存储分配,内存管理,I/O处理等。比如,我们在操作系统中构建了一个定时器(Timeout),这时候我们可以采用先进先出的方式把程序控制转移给定时器来处理,也就是把最先到达的程序先处理。在内存管理中,先进先出法也有着应用,当内存空间不足时,我们可以采用先进先出的方式把最先占有内存空间的程序调换出去,腾出内存空间给空间最后进入的程序。
其他的,在计算机程序中,也可以使用先进先出法,来实现“排队”机制,即程序的执行先后顺序由最先进入程序的顺序决定。对于先进先出的算法,它的特点很简单,就是先进入的先出来,后进入的后出来,例如上文中提到的购买食物,先排队的先买到食物。
先进先出法拓展:队列是具有先进先出特性的一种线性结构,它将所存放的元素按先进先出的顺序取出。它是一种常用的数据结构,它的实现方式有多种,比如链式队列,数组实现的队列等。队列有着广泛的应用。它主要用于存储多个任务,按照一定的规则(先进先出)来进行调度。例如,在操作系统调度中,一般会使用一个队列来存放缓冲区,按照先进先出的原则,先进入队列的任务会优先处理,最后进入的任务最后处理。