操作系统问题
1.进程和线程的区别:a.粒度性分析;b.调度性分析;c.系统开销分析:线程不拥有系统资源;
2.进程不同与互斥: 互斥:是指某一资源同时只允许一个访问者访问,访问无序;
同步:在互斥基础上,通过其他机制实现访问者对资源的有序访问;
同步体现的是协作性;互斥体现的是排他性;
3.进程间的通信方式:a.管道(只能在有父子进程关系的进程间使用);b.有名管道(允许无亲缘关系的进程的通信);c 信号量(计数器,可以控制多个小县城对共享资源的访问。);d 消息队列(由消息的链表,存放在内核中并由消息队列标识符标识。); e 信号(用于通知接受某个时间已经发生);f 共享内存:映射一段能被其他进程所访问的内存;g 套接字:可用于不同及其间的进程通信
消息队列克服了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等缺点
4.作业或进程的调度算法
a。先来先服务 b。短作业优先 c。时间片轮转调度算法:保证就绪队列中的所有进程,在一给定的时间内,均能获得一时间片cpu执行时间 d。高响应比优先; e。优先权调度算法:优先数越多,优先权月小; f。多级队列调度算法:根据作业的性质和类型不同,将就绪队列再分为若干个子队列,所有的进程按照其性质排入相应的队列汇总,而不同的就绪队列采用不同的调度算法;
5.死锁:原因:a。竞争资源 b。进程推进顺序不当
必要条件:a。互斥条件 b。不剥夺条件 c。请求与保持条件 d。环路等待条件
避免:银行间算法:允许进程动态的申请资源;
解除:a。强制性的从系统中撤销一个或多个死锁的进程以断开循环等待链,并收回分配给终止进程的去哪不自愿; b。使用一个有效的挂起和解除机构来挂起一些死锁的进程;实质是从被挂起的进程哪里抢占资源以解除死锁;
6.页面置换算法:a。最佳置换算法; b。先进先出置换算法; c 最近最久未使用置换算法LRU; d。最近未用算法Clock置换算法 f。最少使用置换算法LFU
1.节点是红色或黑色。
2.根节点是黑色。
3.每个叶子节点都是黑色的空节点(NIL节点)。
4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
变色:
为了重新符合红黑树的规则,尝试把红色节点变为黑色,或者把黑色节点变为红色
左旋转:
逆时针旋转红黑树的两个节点,使得父节点被自己的右孩子取代,而自己成为自己的左孩子。
右旋转:
顺时针旋转红黑树的两个节点,使得父节点被自己的左孩子取代,而自己成为自己的右孩子。
应用:jdk的集合类TreeMap和TreeSet 底层就是红黑树实现的。Java8的HashMap