进程与线程的故事

故事
1. 早期计算机和现代的普通计算器是类似的,只有输入和输出的功能。输入一个指令,计算机计算后得出结果。
2. 显然每次输入一个指令得出结果是低效的,所以批处理系统诞生了。批操作系统可以把一系列的指令集保存在存储介质中,在执行任务是读取指令集然后运行得到结果。
3. 显然批处理系统一次只能运行一个任务,在读取存储介质中的数据时,CPU是空闲的。所以进程诞生了,用一个进程来执行一个任务。这样就可以在批操作系统上实现多任务,但早期CPU可能只有一个核心,所以设计了CPU调度算法来按照一定规则执行各个任务。所以普通用户使用时会感觉多任务同时进行。
4. 由于进程是某一个任务指令集,所以只能串行执行,并且进程间通信只能通过外部存储介质等进行通信。但很多情况下,某一个任务也需要并行执行,这种情况下共享进程信息的线程诞生了。线程间可以通过管道,信号等进行通信。

区别 https://blog.csdn.net/swjtuwyp/article/details/51469552
1. 进程是操作系统分配资源的最小单位,线程是程序执行的最小单位(CPU调度线程)
2. 进程是线程的容器,一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路径
3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;
4. 调度和切换:线程上下文切换比进程上下文切换要快得多。

猜你喜欢

转载自blog.csdn.net/zxcc1314/article/details/82120901
今日推荐