共享的两种方式

共享有两种,这里的共享能够理解为复用,分为时间上的复用和空间上的复用,时间上的复用的一个典型的例子就是分时系统分时使用cpu,cpu将全部时间分红若干个段,每一个进程使用一段时间,而后让出cpu,以后调度逻辑会挑选另一个进程来使用cpu的接下来的时间段;空间上的复用的一个典型的例子就是早期的多道程序设计的内存管理机制,那个时候没有如今MMU的复杂逻辑,仅仅将物理内存分红若干等分或者不等分的空间段,而后分给每一个进程一个,若是空间段比进程少就要涉及换入换出机制,这里先不涉及换入换出,若是有换入换出了就说明这个内存段在进程生命周期内并非永久属于该进程的,这就致使了必定的时间复用,这个一会再说,不考虑交换的话,每一个进程就能够在被分到的内存空间段中进行仅仅属于本身的编址逻辑,好比全部进程都将本身内存段的开始定位为逻辑地址0,而后顺序平坦编址。缓存

更晚的时候的请求调页机制其实是空间复用和时间复用的混合,某一个时刻是空间复用,可是在更长的时间段上看,一个内存空间段并非永久的属于一个进程,这就是时间复用了。实际上请求调页的复杂性就在于它实现了公平性,在很细的粒度上实现了公平性,若是不是为了这种公平,彻底没有必要这么复杂,原始的整个进程的换入换出已经很好了,只是那会形成很大的交换延迟,相反若是粒度过于细,还会形成抖动,所以请求调页机制在公平性和效率之间做了折中,这就是工做集机制,固然这只是理论,实际的操做系统内核实现中LRU的用法更加广泛些,而且lru链表加上两个阀值而不是一个阀值,有效地防止了抖动。ide

在现实生活中,时分复用和空分复用使用的也是很普遍的,毕竟理论就是来源于真实的世界的若是共享的是一个资源,那么就是空分复用,若是共享的是一个流程,那么就是时分复用,固然流水线也是一种提升效率的机制,它在一个流程内部分为了好几个流程,有效地调动了全部的流程,使得任何细微流程不至于空闲,流水线是为了防止部件空闲的,是一个细粒度的机制,然而问题是虽然部件不空闲了,可是数据却再也不是一步到位了,而要从流水线的一节流到下一节,确定影响了单品加工效率,这个怎么解决呢?这就是缓存的做用。操作系统