线程可以与同进程下线程共享一些数据,且每个线程也有自己的空间。
进程和线程都能提高程序并发度,提高运行效率和响应时间。
线程执行开销较小,但不利于资源管理和保护,进程相反。
进程间通信:
进程彼此独立,若A B进程需要通信,则需要一方将数据放入内核中一块共享缓冲区,然后另一方取走数据。
①匿名管道:
管道是半双工通信方式,数据单向流动,只能在有亲缘关系的进程(父子进程)使用。
②有名管道:
在管道基础上,使非亲缘关系进程也可以通信。
③信号量:
计数器,用于控制多个进程对共享资源的访问(可作为锁机制),主要作为同步手段。
④消息队列:
由消息链表,存放在内核中并由消息队列标识符标识。克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
⑤信号:
用于通知某个进程某事件已经发生。
⑥共享内存:
映射一段可以被其他进程访问的内存,该内存由一个进程创建,但可以多进程访问,是最快的方式。
⑦套接字:
还可以用于不同设备间的进程通信。
进程调度算法
①FCFS:先到先服务:排队按顺序服务进度
②SPF:短进程优先调度:从队列中选择最短运行时间进行执行
③优先级调度算法:优先从就绪队列查找优先级最高的任务执行(剥夺、非剥夺)
④时间片轮转调度算法:按到达时间先后次序生成队列,按FCFS算法服务,但当时间片用完,没有执行完,将剥夺处理机,给队列下一位,而该进程到队列末尾重新排队。
⑤高响应比优先调度算法:响应比=(等待时间+要求服务时间)/要求服务时间,在队列中取出响应比最高的进程执行。
⑥多级反馈队列调度算法:通过动态调整进程优先级和时间片进行筛选。