前言一、线程被引入的原因是什么?二、线程三、例子讲解四、进程和线程的区别总结
前言
在正式开始本文之前,我们通过一个例子给大家简答的说下进程和线程。QQ聊天大家应该都用过吧,在我们小时候,为了QQ等级的提升,我们一台电脑会挂好几个账号,此时,每登录的一个账号,就是一个进程;那我们在聊天的过程中,打开和某个好友的聊天窗口时,这个对应的就是线程。通过这个小例子,大家也能简单的了解进程和线程的形式。
一、线程被引入的原因是什么?
如果使用进程进行调度和分派,我们来看程序并发执行需要付出的时空开销:
在创建、撤销和切换进程中,系统必须为之付出较大的时空开销,这也就限制了 *** 作系统中所设置的进程的数目,而进程的切换也不宜过于频繁,从而限制了并发程度的进一步提高。
讲到这里,线程被引入的原因是不是呼之欲出了,目的就是为了减少程序在并发执行时所付出。
二、线程
引出了线程的概念后,传统的 *** 作系统就演变成了现代 *** 作系统。在现代 *** 作系统中我们来看下线程的定义:作为调度和分派的基本单位。
也就是说现代 *** 作系统把进程的功能给拆分了,进程作为资源分配的单位,而将独立调度和分派的功能分给了线程,因此线程也被称为轻型进程。
这样 *** 作系统就可以分开的处理(资源分配和调度分派),对于拥有资源的基本单位(进程),不对之施以频繁的切换,对于只拥有少量必要资源的线程来实施调度和分派。
三、例子讲解
下面通过对本文开始时的QQ聊天的例子的讲解,来说明进程和线程执行的特点:
1.在上面的例子中,每个账号登录后,OS会创建一个对应的进程,会为之分配资源,我们登录的账号越多,创建的进程也就越多,最直观的感受就是,我们的电脑会变得有些卡顿(在当时,电脑的性能并不高,所以比较明显),这是因为创建进程、进程的调度时空开销较大,也就导致OS中的内存、CPU等资源的紧张。
2.另一个情况,只登陆一个QQ,你打开了多个聊天窗口,是不是对你的电脑流畅度没有可以感知到的影响,这是因为线程的创建和调度所付出的时空开销很低,没有对OS形成较大的负担;
3.还有一种情况,可能大家没有注意到,就是只登陆一个账号,对应着OS中创建了一个进程,打开多个聊天窗口,OS中创建多个线程,这里进程和线程的关系是一对多的关系,一个进程可以创建多个线程。
四、进程和线程的区别
1.进程作为资源分配的单位,线程作为独立调度和分派的基本单位。
2.一个进程可以包含多个线程,一个线程只能属于一个进程,线程不能脱离进程而独立运行;
3.进程作为拥有资源的一个基本单位,线程仅拥有一点必不可少、能保证独立运行的资源(线程控制块TCB、程序计数器、一组寄存器和堆栈)
4.OS为创建、撤销、调度进程耗费的资源明显的大于线程的开销
5.进程之间的独立性高于线程,因为线程共享进程中的地址空间和资源(进程可以看成是一个班级,线程就是里面的学生,学校给班级分配了500元的资金,这个资金相当于分配的系统资源,这些学生共享这些资金。)
总结
线程由于其体量小的特点, *** 作系统中线程的数量远远大于进程的数量,一个进程中的多个线程可以并发的执行在多个处理机上,从而充分地的利用技术革新带来的便利----多核处理机,又进一步的提高了 *** 作系统的并发性。 同时也正因为多处理机的迅速发展, *** 作系统的发展也得到了大大的促进。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)