我对于线程,进程的概念一直都是比较模糊,最近整理了一下。总结起来就是,线程是进程的一部分,进程
是程序的一部分。
线程的引入
:
例如,有一个Web服务器要进程的方式并发地处理来自不同用户的网页访问请求的话,可以
创建父进程和多个子进程的方式来进行处理,但是创建一个进程要花费
较大的系统开销和占用较多的资源。除
外,这些不同的用户子进程在执行的时候涉及到进程上下文切换,上下文切换是一个复杂的过程。所以,为了
减少进程切换和
创建的开销,提高执行效率和节省资源,人们在操作系统中引入了"线程(thread)"的概念。
进程的作用和定义
:进程是为了提高CPU的执行效率,减少因为程序等待带来的CPU空转以及其他计算机
软硬件资源的浪费而提出来的。进程是为了完成用户任务所需要的程序的一次执行过程和为其分配资源的一个
基本单位,是一个具有独立功能的程序段对某个数据集的一次执行活动。
线程和进程的区别
:
1、线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。
2、一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条
线(线程)的,而是多条线(线程)共同完成的。
3、系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是
它所属的进程的资源),线程组只能共享资源。那就是
说,出了CPU之外(线程在运行的时候要占用CPU资
源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
4、与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了。
5、进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。
线程和进程相同点
:
1、 二者都具有ID,一组寄存器,状态,优先级以及所要遵循的调度策略。
2、每个进程都有一个进程控制块,线程也拥有一个线程控制块。
3、线程和子进程共享父进程中的资源;线程和子进程独立于它们的父进程,竞争使用处理器资源;线程和
子进程的创建者可以在线程和子进程上实行某些控制,比如,创建者可以取消、挂起、继续和修改线程和子
进程的优先级;线程和子进程可以改变其属性并创建新的资源。
进程与程序的区别
:
程序是一组指令的集合,它是静态的实体,没有执行的含义。而进程是一个动态的实体,有自己的生命周期。
一般说来,一个进程肯定与一个程序相对应,并且只有一个,但是一个程序可以有多个进程,也可以只有一个
进程。除此之外,进程还有并发性和交往性。简单地说,进程是程序的一部分,程序运行的时候会产生进程。
总结
:
线程是进程的一部分,进程是程序的一部分。
其他理解:
进程(Process)的定义是a program in
execution,也就是正在执行的程序。而进程具备四个特征:动态性
(dynamic)、并发性(concurrence)、独立性
(independency)和结构化(structure)。这四个特性中,有些是程序
不具备的。而且作为进程载体的进程控制块(PCB)中除了有程序
代码,还包括进程状态,程序计数器,寄存
器,调度信息等。所以我认为程序和进程之间不是包含关系。
参考:http://www.ezloo.com/2007/10/thread_process_program.html
分享到:
相关推荐
进程与线程的一个简单解释,教你简单区分程序设计过程中的进程与线程问题,有助于你对多线程编程的理解
简单来说,一个进程就是一个计算机中运行的程序的实例。 线程: 线程是操作系统中的最小执行单元,负责当前进程中程序的执行。 进程和线程的区别: 根本差别:进程是操作系统任务调度和资源分配的基本单位,而...
关于进程&线程查看器 用过vc++自带的Process Viewer,觉得这个小程序简单易用,有时候作用还很大,我就产生了自己做一个类似程序的想法,想着想着就着手作了起来。 首先我查看了有关进程和线程的api函数(在tlhelp...
线程就好比车间里的工人,它是程序运行的最小单位,一个进程可以包括多个线程。 进程与线程概念 共享全局变量和锁 车间的空间是工人们共享的,许多房间是每个工人都可以进出的。进程中的内存空间也是共享的,每个...
在Windows等操作系统下,使用的VC、VB、java或C等编程语言,采用进程(线程)同步和互斥的技术编写程序实现生产者-消费者问题或哲学家进餐问题或读者-写者问题或自己设计一个简单进程(线程)同步和互斥的实际问题。
下面简单介绍一下,该程序的功能正如其名,当你启动该程序时,它会检索当前在该系统中的进程和线程,并将进程的基本信息以列表的形式列出来,当你选中某一进程时,程序会在下面的线程视图中列出该进程的所有线程的...
用户线程的优点是线程的调度不需要内核直接参与,控制简单,可以在不支持线程的操作系统中实现,缺点是同一进程中只能同时有一个线程在运行,如果一个线程使用了系统调用而阻塞,那么整个进程都会被挂起。...
一个简单的内存查看功能的源代码,可以查看进程,线程和模块的相关信息
利用Windows进程和线程创建方法实现一个简单的读者,写着程序,读者将1~10十个数字依次填入临界资源区gData,当且仅当gData被读者消费后,写者才可以写入下一个数。
一个简单的进程保护实例,两线程相互看护实现,程序启动会运行两个线程,当一个线程发现另一个线程不存在时就启动这个进程
《JAVA多线程设计模式》PDF 下载 《Java线程 高清晰中文第二...单线程程序并行化 内层循环线程化 循环输出 多处理器扩展 总结 第十章 线程组 线程组概念 创建线程组 线程组方法 操作线程组 线程组、线程和安全 总结
Unix操作系统环境下,应用程序可以利用fork函数创建子进程,但子进程与该应用程序进程拥有独立的地址空间、系统资源和代码执行单元,并且进程的 调度是由操作系统来完成的,使得在应用进程之间进行通信和线程协调...
马士兵多线程预习资料。 什么是叫一个进程? 什么叫一个线程? - Program app ->QQ.exe ... 线程:作为一个进程里面最小的执行单元它就叫一个线程,用简单的话讲一个程序里不同的执行路径就叫做一个线程
线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。 多个线程的...
线程并发拷贝程序。Linux下调试通过。当年万恶的课堂作业。惨了不少人。
《C++面向对象多线程编程》共分13章,全面讲解构建多线程架构与增量多线程编程技术。第1章介绍了用于构建面向对象程序的不同类型...第12章简单介绍多线程应用程序的测试技术。第13章对全书内容进行扼要地回顾与思考。
3、利用最常用的三个函数pthread_create,pthread_join和pthread_exit编写了一个最简单的多线程程序。理解多线程的运行和输出情况; 4、利用信号量机制控制多线程的运行顺序,并实现多线程中数据的共享; 5、分析...
所谓线程(或称线索,thread),指程序中的以单一的顺序控制流。...显然,按传统方法设计的程序,无论是单道执行的程序,还是由多个进程并发执行的多道程序,就每个程序本身而言,都是由单线程组成的。
一个进程池的服务器程序 下面做了非常简单的http服务器,该服务器只能接收Get请求。 流程大概如下: 1,父进程listen,创建pipe(下面所有父子进程之间的通信都用该pipe) 2,父进程预fork n个子进程 3,各个子...