线程
进程和线程
程序运行需要资源分配(进程)和调度/执行(进程里面的线程)
线程优势:创建快,结束快,切换快(线程之间),通信快(进程之间的通信复杂,需要中转)
挂起进程就会挂起进程中的所有线程。
进程一创建就有线程创建,然后派生出其他线程
RPC请求
用户级线程ULT:线程是由用户程序从线程库调用的
优点:切换快,移植性好,调度与应用程序相关,不同的应用程序可以采用不同的线程调度策略。
缺点:阻塞线程会阻塞整个进程,没有办法充分利用多核优势(不在内核中)
内核级线程KLT:线程放入线程池
优点:阻塞线程不会阻塞整个进程,可充分利用多核优势
缺点:切换慢(每次切换都需要内核处理,系统状态需要切换),调度机制不灵活
对称多处理
SISD【单个处理器执行单个指令流对存储在单个内存中的数据进行操作】,SIMD【每条指令由不同的处理器在不同的数据集上执行】,MISD【一个数据序列被传输到一组处理器,每个处理器执行不同的指令序列。永远不会实现】,MIMD【一组处理器同时对不同的数据集执行不同的指令序列】
并发是多核运行,大多数操作系统做不到,只是伪并行
对称多处理和多线程是不同的概念。
内核可以在任何处理机上运行,有多个处理机
Microkernel微内核
直到最近,大多数操作系统都只有一个单体内核
只包括基本内核功能:
其他服务放在用户空间作为服务程序:
优势:一致接口,扩展性好,可移植性好,可靠性,支持分布式系统,面向对象操作系统