1.页面调度算法
1、先进先出调度算法(FIFO,First In First Out)
2、最近最不常用调度算法(LFU, Least Frequently Used)
也就是淘汰一定时期内被访问次数最少的页面,LFU关键是看一定时间段内页面被使用的频率。
3、最近最少使用页面调度算法(LRU,Least Recently Used)
也就是首先淘汰最长时间未被使用的页面,LRU关键是看页面最后一次被使用到发生调度的时间长短。
4、最佳置换算法
每次淘汰时,找一个未来最长时间才会被访问的页面进行淘汰。
优点:缺页率低
缺点:需要预测未来,无法实现,但可以用来衡量其他置换算法。
2.进程和线程
1.进程定义:进程是资源分配的基本单位,是计算机中的程序关于某数据集合上的一次运行活动,是程序的实体,是线程的容器。
线程定义:线程是独立调度的最小单位,一条线程指的是进程中一个单一顺序的控制流。
进程和线程的关系就像车间与员工。
2.上下文切换,线程切换快于进程切换。
3.死锁
死锁概念、产生原因
死锁是指多个进程循环等待彼此占有的资源而僵持的局面。
原因:
可用资源太少。
程序推进顺序不合理。
死锁产生的必要条件(具体原因)
需要同时具有以下四个条件:
(其实就是资源有问题,占有者有问题,等待者这三方都有问题,造成循环)
互斥条件:资源无法同时共享
不可抢占条件:资源无法被使用进程以外对象释放
占有且等待条件:进程等待时不释放资源
循环等待条件:资源等待条件形成循环
银行家算法概念
当一个进程申请使用资源的时候,银行家算法通过先试探分配给该进程资源,然后通过安全性算法判断分配后的系统是否处于安全状态,若不安全则试探分配作废,让该进程继续等待。
4.虚拟内存
为了提升内存数量,匀出一部分硬盘空间来充当内存使用。而页面调度算法就是讨论按什么策略将内存中的页面调入虚拟内存。
5.进程有哪几种状态?阻塞和挂起的区别
三种基本状态:
运行态:进程占用CPU,并在CPU上运行;
就绪态:进程已经具备运行条件,但是CPU还没有分配过来;
阻塞态:进程因等待某件事发生而暂时不能运行;
挂起的概念:
挂起就是将进程由运行态转为就绪,暂停他的运行状态
挂起和阻塞的区别:
挂起是主动行为,又挂起转为运行也是主动控制的,阻塞是被动行为,由阻塞转为运行也是被动的,不能预测的。
6.进程之间通信的方式有哪些
1.管道:速度慢,容量有限,只有父子进程能通讯 ,通道是半双工的(数组只能在单向流动)
2.消息队列:将消息存在不同类型的队列中
3.信号量:不能传递复杂消息,只能用来同步
4.共享内存区:能够很容易控制容量,速度快,但要注意状态同步问题
7.链表和数组的区别
1.数组查找快,插入删除慢,链表插入删除快,查找慢
2.数组存储的位置连续,链表存储位置不连续,依靠指针
8.v8内存回收算法
新生代
1.scavenge之cheney
将内存区域分为from和to,from释放非存活对象,复制到to中,然后交换fromto
缺点:复制效率低,只能用一般内存区域
老生代
只有经历过新生代回收,并且from区域的占量达到一定值的时候才会进入老生代
1.mark-sweep
标记存活对象,回收其他对象
缺点:产生内存碎片
2.mark-compact
标记存货对象,并且将内存进行移动合并
缺点:效率低下