您的位置:首页 > 其它

【操作系统】——作业、进程和线程

2015-03-31 21:06 183 查看
       最近看操作系统看到了进程和线程,想起那天米老师在三合班讲的进程和线程二者的区分。感觉自己的理解还是太浅,所以迫不及待这想着自己总结一遍印象会更深刻。

       作业

       什么是作业?

       作业是用户需要计算机完成的某项任务,是要求计算机所做工作的集合。一个作业的完成要经过作业提交、作业收容、作业执行和作业完成4个阶段。作业这个概念是以前操作系统沿用的名词,不过现在已经基本不再引用了。

       作业调度和算法

       作业调度就是从输入井中选取后备作业装入主存储器的工作。说白了,其实就是将作业从外存调入内存的过程。

       作业调度算法分为5种,如图所示:

       



       进程

       什么是进程?

       进程是一个程序在一个数据集上的一次执行过程,是分配资源的基本单位。进程是一个动态的概念,是执行中的程序。进程就是程序的一次执行过程,它由程序、数据和进程控制块组成。进程包括三种基本状态,这些状态刻画了进程的生存周期,如图所示:

                                                             



       为什么要引入进程?

       对于多道并行执行的程序来说,有时它要占用处理器运行,有时要等待传送信息,当得到信息后又可继续执行,一个程序的执行又可能受到另一个程序的约束。所以,程序的执行是走走停停的。为了能正确反映程序执行时的活动规律和状态变化,所以要引用进程。主要为了以下两点:

       1、刻画系统的动态性、发挥系统的并发性、提高资源利用率

       2、正确描述程序动态执行过程

       进程调度和调度算法

       进程调度就是从就绪进程中选取一个进程,让它占用处理器的工作。即从作业被装入主存后,进程从“就绪”态到“运行"态的过程。

       进程调度算法,如图所示:
                                  



       线程

       什么是线程?

       在现代操作系统中,把用户的一个计算问题或一个应用问题作为一个进程,把该进程中可以并发执行的各部分分别作为线程。线程是进程中执行运算的最小单位,也是处理机调度的基本单位。线程是进程中可独立执行的子任务,一个进程可以有一个或多个线程。

       为什么要引入线程?

       虽然一个计算问题由若干个进程合作完成可以提高效率,但进程多了缺点也随之而来,主要表现在三点:

       1、每个进程都要占用一个进程控制块和一个私有的主存空间,开销较大;

       2、进程之间传递信息时要从一个工作区传到另一个工作区,需要专用通信机制,速度较慢;

       3、进程增多就增加了进程调度的次数,给调度和控制带来了复杂性。

       因此,为了尽量避免设计过多的进程,而采用线程技术。这里举一个打印机的例子,打印机打印成纸张,需要经过三个过程:数据输入、数据处理、数据输出。

       若是没有线程的概念,则会把这项工作分成三个进程:输入进程、处理进程、打印进程。若是引入线程的概念,则只需将这项工作分成一个进程,然后再创建三个线程:输入、处理、打印。如图所示:

       



       引入线程的好处

       根据上面这张图,来谈谈引入多线程技术的好处。

       1、减少了进程,也就节省了分配进程控制块和工作区的开销。对于上图来说,将三个进程减少到了一个。

       2、创建线程只需为线程建立一张“线程描述表”,但不需要另外分配资源,创建速度快。

       3、线程间的信息传递在同一主存空间中进行,不需要额外的通信机制,且传递速度快。根据上图,创建的三个线程要比创建的三个进程信息传递快,因为线程是在同一主存空间中运行的。

       4、线程能独立执行,能充分利用和发挥处理器与外围设备的并行工作能力。

       作业、进程和线程的区分

       作业和进程的区别

       (1)作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将它放入外存中的作业等待队列中等待执行。而进程则是完成用户任务的执行实体。是向系统申请分配资源的基本单位。任一进程,只要它被创建,总有相应的部分存在于内存中。
       (2)一个作业可由多个进程组成,且必须至少由一个进程组成.

       (3)作业的概念主要在批处理系统中,在分时系统中没有作业的概念,而进程的概念则是用在几乎所有的多道系统中。

       进程和线程的区别

       如果把进程比作操作系统,那么线程就是你打开的应用程序、窗口、浏览器等。操作系统就是他们的共用资源,应用程序、窗口和浏览器等并行工作且共享资源。
       (1)一个线程只能属于一个进程,而一个进程可以有一个或多个线程。

       (2)进程是资源分配单位,而线程是调度和执行单位。

       (3)每个进程都有自己的主存空间,但同一进程中的各线程共享该进程的主存空间,进程中的所有线程对进程的整个主存空间都有存取权限。

       总结:

       通过区分作业、进程和线程之间的区别,让我对于他们之间的关系和理解更深刻了,虽然很多东西是查资料得来的,这里也算是一个汇总,再加上点儿自己的理解,搭建知识网络,下篇博客要推出操作系统中比较难理解的PV操作,敬请期待。
       

       

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  操作系统 线程