操作系统:
通信方式:
1.管道:
内核里面的一串缓存,管道传输的数据是无格式的流且大小受限;对于匿名管道其通信范围是存在父子关系的进程。因为管道没有实体,也就是没有管道文件,只能通过 fork 来复制父进程 fd 文件描述符,来达到通信的目的。对于命名管道(也被称作FIFO),它可以在不相关的进程间相互通信。(管道传输数据是单向的)
关于fork()
2.消息队列:
消息队列是保存在内核中的消息链表,发送数据时,会分成若干个独立的数据单元,且也是固定大小。如果进程从消息队列中读取了消息体,内核就会把这个消息体删除。消息队列不适合比较大数据的传输,因为在内核中每个消息体逗游戏一个最大长度的限制,同时所有队列所包含的全部消息体的总长度也有上限。消息队列通信过程中,存在用户态与内核态之间的数据拷贝开销。
3.共享内存:
拿出一块虚拟地址空间来,映射到相同的物理内存中,省去了消息队列拷贝数据的开销。
4.信号量:
共享内存的问题在于若多个进程同时修改同一个共享内存,可能会发生冲突。为了防止多进程竞争共享资源,信号量就实现了这一保护机制。信号量是一个整型计数器,主要用于实现进程间的互斥与同步,而不是用于缓存进程间的通信。
调度算法
1.FCFS(先来先服务)
对长作业有利,适用于CPU繁忙型作业,而不适用于I/O繁忙型作业;
2.SJF(最短作业优先调度)
造成饥饿现象,长作业一直无法执行
3.高响应比算法
优先权=(等待时间+要求服务时间)/要求服务时间
4.时间片轮转调度算法
如果时间片长度太短,会导致过多的进程上下文切换,降低了CPU效率;
如果设得太长又可能引起短作业进程的响应时间变长;
5.最高优先级调度算法
从就绪队列中选择最高优先级的进程进行运行。
进程的优先级可分为静态优先级或动态优先级:
静态:创建进程时就已确定,后面不会更改;
动态:根据进程动态变化调整优先级,如如果进程运行时间增加,则降低其优先级,如果进程等待时间(就绪队列的等待时间)增加,则升高其优先级,也就是随着时间的推移增加等待进程的优先级。
处理优先级高的方法,也分为非抢占式和抢占式:
非抢占式:当就绪队列中出现优先级高的进程,运行完当前进程,再选择优先级高的进程;
抢占式:当就绪队列中出出现优先级高的进程,当前进程挂起,调度优先级高的进程运行。
缺点:导致低优先级的进程永远不会运行。
多级反馈队列调度算法:
多级表示有多个队列,每个队列优先级从高到低,同时优先级越高时间片越短;
反馈表示如果有新的进程加入优先级高的队列时,立刻停止当前正在运行的进程,转而去运行优先级高的队列。
优先级越高时间片越短的原因:
如果高优先级的任务在就绪队列1无法完成,那么就会放到就绪队列2,虽然等待时间变长,但运行时间也会更长,所以该算法很好的兼顾了长短作业,同时有较好的响应时间。
内存调度算法
注意:当发生缺页中断时,必然是不会发生内存越界,因为在之前就已检测过是否越界,若越界则不会访问页表。
最佳页面置换算法:
置换在未来最长时间不访问的页面
先进先出置换算法:
选择在内存驻留时间很长的页面进行置换
LRU算法,最近最久未使用
时钟置换算法
磁盘调度算法
1.先来先服务
2.最短寻道时间优先
可能产生饥饿,原因是磁头在一小块区域来回移动。
3.扫描算法(SCAN)
磁头在一个方向上移动,访问所有未完成的请求,直到磁头到达该方向上的最后的磁道,才调换方向,这就是扫描(Scan)算法。
4.C-SCAN
只有磁头朝某个特定方向移动时,才处理磁道访问请求,而返回时直接快速移动至最靠边缘的磁道,也就是复位磁头,这个过程是很快的,并且返回中途不处理任何请求,该算法的特点,就是磁道只响应一个方向上的请求。
5.LOOK与C-LOOK
磁头在移动到「最远的请求」位置,然后立即反向移动。
那针对 SCAN 算法的优化则叫 LOOK 算法,它的工作方式,磁头在每个方向上仅仅移动到最远的请求位置,然后立即反向移动,而不需要移动到磁盘的最始端或最末端,反向移动的途中会响应请求。
而针 C-SCAN 算法的优化则叫 C-LOOK,它的工作方式,磁头在每个方向上仅仅移动到最远的请求位置,然后立即反向移动,而不需要移动到磁盘的最始端或最末端,反向移动的途中不会响应请求。
内存管理
Cache写命中时的处理方式:
直写法:
CPU往Cache写数据的同时也往主存中写数据,一直保存数据一致;
由于CPU往主存中写数据很慢,所以需要一个写缓冲队列。
写回法:
当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存。减少了访存次数,但存在数据不一致的隐患。
未命中时:
写分配法:
先将数据从主存调入Cache,然后再对Cache进行写,最后用写回法将Cache中的数据写回主存。
非写分配法:
CPU直接写入主存,不与Cache交互。
参考资料:
小林coding的图解系统