`
cdwzwd
  • 浏览: 121658 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

线程,进程和程序的简单比较(转)

阅读更多
      我对于线程,进程的概念一直都是比较模糊,最近整理了一下。总结起来就是,线程是进程的一部分,进程是程序的一部分。
      线程的引入:例如,有一个Web服务器要进程的方式并发地处理来自不同用户的网页访问请求的话,可以创建父进程和多个子进程的方式来进行处理,但是创建一个进程要花费较大的系统开销和占用较多的资源。除外,这些不同的用户子进程在执行的时候涉及到进程上下文切换,上下文切换是一个复杂的过程。所以,为了减少进程切换和创建的开销,提高执行效率和节省资源,人们在操作系统中引入了"线程(thread)"的概念。
      进程的作用和定义:进程是为了提高CPU的执行效率,减少因为程序等待带来的CPU空转以及其他计算机软硬件资源的浪费而提出来的。进程是为了完成用户任务所需要的程序的一次执行过程和为其分配资源的一个基本单位,是一个具有独立功能的程序段对某个数据集的一次执行活动。
      线程和进程的区别:
      1、线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。
      2、一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。
      3、系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。那就是说,出了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
      4、与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了。
      5、进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。
      进程与程序的区别:
      程序是一组指令的集合,它是静态的实体,没有执行的含义。而进程是一个动态的实体,有自己的生命周期。一般说来,一个进程肯定与一个程序相对应,并且只有一个,但是一个程序可以有多个进程,或者一个进程都没有也可以只有一个进程。除此之外,进程还有并发性和交往性。简单地说,进程是程序的一部分,程序运行的时候会产生进程。
      总结:
      线程是进程的一部分,进程是程序的一部分。
原文地址:http://www.ezloo.com/2007/10/thread_process_program.html
分享到:
评论

相关推荐

    进程与线程的一个简单解释

    进程与线程的一个简单解释,教你简单区分程序设计过程中的进程与线程问题,有助于你对多线程编程的理解

    程序、进程、线程的区别

    线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。 包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线...

    进程&线程查看器

    关于进程&线程查看器 用过vc++自带的Process Viewer,觉得这个小程序简单易用,有时候作用还很大,我就产生了自己做一个类似程序的想法,想着想着就着手作了起来。 首先我查看了有关进程和线程的api函数(在tlhelp...

    编程实现进程(线程)同步和互斥

    在Windows等操作系统下,使用的VC、VB、java或C等编程语言,采用进程(线程)同步和互斥的技术编写程序实现生产者-消费者问题或哲学家进餐问题或读者-写者问题或自己设计一个简单进程(线程)同步和互斥的实际问题。

    线程并发拷贝程序

    线程并发拷贝程序。Linux下调试通过。当年万恶的课堂作业。惨了不少人。

    java 多线程设计模式 进程详解

    《JAVA多线程设计模式》PDF 下载 《Java线程 高清晰中文第二...单线程程序并行化 内层循环线程化 循环输出 多处理器扩展 总结 第十章 线程组 线程组概念 创建线程组 线程组方法 操作线程组 线程组、线程和安全 总结

    Python程序设计:多线程爬虫.pptx

    线程就好比车间里的工人,它是程序运行的最小单位,一个进程可以包括多个线程。 进程与线程概念 共享全局变量和锁 车间的空间是工人们共享的,许多房间是每个工人都可以进出的。进程中的内存空间也是共享的,每个...

    利用Windows进程和线程创建方法实现一个读者,写者程序

    利用Windows进程和线程创建方法实现一个简单的读者,写着程序,读者将1~10十个数字依次填入临界资源区gData,当且仅当gData被读者消费后,写者才可以写入下一个数。

    进程&线程查看器2.0

    下面简单介绍一下,该程序的功能正如其名,当你启动该程序时,它会检索当前在该系统中的进程和线程,并将进程的基本信息以列表的形式列出来,当你选中某一进程时,程序会在下面的线程视图中列出该进程的所有线程的...

    简单进程保护实例两线程相互看护实现

    一个简单的进程保护实例,两线程相互看护实现,程序启动会运行两个线程,当一个线程发现另一个线程不存在时就启动这个进程

    线程+监听技术 简单的例子 和详细讲解

     所谓线程(或称线索,thread),指程序中的以单一的顺序控制流。...显然,按传统方法设计的程序,无论是单道执行的程序,还是由多个进程并发执行的多道程序,就每个程序本身而言,都是由单线程组成的。

    Java多线程程序设计详细解析

     线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。  多个线程的...

    多线程预习资料

    马士兵多线程预习资料。 什么是叫一个进程? 什么叫一个线程? - Program app ->QQ.exe ... 线程:作为一个进程里面最小的执行单元它就叫一个线程,用简单的话讲一个程序里不同的执行路径就叫做一个线程

    多线程实验报告.docx

    编写一多线程程序,实现如下功能: (1)一个线程进行阶乘和的运算(1!+2!+3!……+30!), 每次阶乘计算时间随机间隔0.5-1秒; (2)另一个线程每隔1秒时间读取上个线程的运算结果和计算 进程,并在图形界面中...

    windows进程相关小程序

    节选自windows程序设计代码,主要包括进程优先级、进程队列模拟、事件内核、线程同步等程序,这些都是比较简单的尝试。作为初学者,不应该好高骛远,而是脚踏实地,想想代码应该怎么写。

    一个进程池的服务器程序

    一个进程池的服务器程序 下面做了非常简单的http服务器,该服务器只能接收Get请求。 流程大概如下: 1,父进程listen,创建pipe(下面所有父子进程之间的通信都用该pipe) 2,父进程预fork n个子进程 3,各个子...

    C++面向对象多线程编程

    《C++面向对象多线程编程》共分13章,全面讲解构建多线程架构与增量多线程编程技术。第1章介绍了用于构建面向对象程序的不同类型...第12章简单介绍多线程应用程序的测试技术。第13章对全书内容进行扼要地回顾与思考。

    解析Java的多线程机制

    Unix操作系统环境下,应用程序可以利用fork函数创建子进程,但子进程与该应用程序进程拥有独立的地址空间、系统资源和代码执行单元,并且进程的 调度是由操作系统来完成的,使得在应用进程之间进行通信和线程协调...

    Linux 进程控制与进程互斥(附源代码)(附实验报告)

    3、利用最常用的三个函数pthread_create,pthread_join和pthread_exit编写了一个最简单的多线程程序。理解多线程的运行和输出情况; 4、利用信号量机制控制多线程的运行顺序,并实现多线程中数据的共享; 5、分析...

Global site tag (gtag.js) - Google Analytics