进程和线程
没有操作系统(单一指令,人工输入执行) —> 批处理操作系统(多指令,预先写下来) —> 进程(每个任务,cpu运行速度>>io操作)
早期没有操作系统,只有输入、计算、输出功能。用户输入一个指令,计算机完成操作。因为计算机的计算速度远远大于人的输入指令速度。
批处理操作系统, 将指令预先写下来(磁带、磁盘等),形成指令清单,即”任务”。计算机,IO操作远远大于CPU执行速度。如果某个任务在读取大量速度,就会阻塞。
进程: 每个任务,独立内存空间。因为cpu运行很快,所以操作系统分时处理,感觉就像是每个进程,同时运行一样。进程间,不互通。所以涉及到进程间通信,管道、信号量、共享存储等
线程,单个进程内部只能串行处理,所以发明了线程,线程是进程内部的子任务。共享一份进程数据。 所以,操作系统的调度最小单位是线程。 进程就变成了分配资源的最小单位。
多进程多线程,让多任务有并行处理。但是本质上还是分时系统。并不能做到时间上的真正并行。
解决方案,让多个cp同时执行计算任务。
- SMP 对称多处理器结构, 常用方案,多核处理器
- NUMA, 非一致性存储访问结构
- MMP, 海量并行处理结构