进程与线程
什么的进程:
程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。
程序和进程的区别在于:程序的指令的集合,它是进程运行的静态描述文本,进程是程序的一次执行活动,属于动态概念。
在多道编程中我们允许多个程序同时加载到内存中,在操作系统的调度下可以实现并发执行。就是这样的设计,大大的提高的CPU的利用率,进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在cup上实现多道编程而提出的。
有了进程为什么还要线程?
进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率,,其实,仔细观察就会发现进程还是有很多缺陷的,主要体现在以下两点上:
1.进程只能在一个时间干一件事,不能同时干两件事或多件事。
2.进程在执行的过程中如果有阻塞,例如:等待输入,整个进程就会挂起,即使进程中有些工作不依赖与输入的数据,也无法执行。
例如:我们在使用QQ聊天,QQ做为一个独立进程,如果同一时间只能干一件事,那它是如何实现在同一时刻,即能监听键盘输入,又能监听其他人给你发的消息,同时还能把别人发的消息显示在屏幕上那?这个时候你可能会说,操作系统不是有分时吗?但是,分时是指在不同的进程间的分时,即操作系统处理一会你的QQ任务,又切换到word文档任务上去了,每个CPU时间片分给你的QQ程序时,你的QQ还是只能同时干一件事呀。
在自白一点,一个操作系统就像是一个工厂,工厂里面有很多生成车间,不同的车间生成不同的产品,每个车间就相当于一个进程,而且你的工厂很穷,供电不足,同一时间只能给一个车间供电,为了能让所有车间都能同时生产,你的工厂电工只能给不同的车间分时供电,但是论到你的QQ车间时,发现只有一个干活的工人,结果生产效率极低,为了解决这个问题,应该怎么办呢?。。。没错,就是你想到的,就是多加几个工人,让几个工人同时工作,这每个工人就是线程。
原文:http://www.cnblogs.com/YingLai/p/6287727.html