收录日期:2020/10/25 07:05:28 时间:2016/07/11 11:05:10 标签:工具平台和程序库
看了LINUX的书对进程还不是很明白,有大侠帮解释些吗,LINUX一启动都有进程中吗,我运行一个程序是不是启一个进程,进程在系统里都是什么东西啊?
总结起来就是,线程是进程的一部分,进程是程序的一部分。
      线程的引入:例如,有一个Web服务器要进程的方式并发地处理来自不同用户的网页访问请求的话,可以创建父进程和多个子进程的方式来进行处理,但是创建一个进程要花费较大的系统开销和占用较多的资源。除外,这些不同的用户子进程在执行的时候涉及到进程上下文切换,上下文切换是一个复杂的过程。所以,为了减少进程切换和创建的开销,提高执行效率和节省资源,人们在操作系统中引入了"线程(thread)"的概念。
      进程的作用和定义:进程是为了提高CPU的执行效率,减少因为程序等待带来的CPU空转以及其他计算机软硬件资源的浪费而提出来的。进程是为了完成用户任务所需要的程序的一次执行过程和为其分配资源的一个基本单位,是一个具有独立功能的程序段对某个数据集的一次执行活动。

      线程和进程的区别:
      1、线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。
      2、一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。
      3、系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。那就是说,出了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
      4、与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了。
      5、进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。
      进程与程序的区别:
      程序是一组指令的集合,它是静态的实体,没有执行的含义。而进程是一个动态的实体,有自己的生命周期。一般说来,一个进程肯定与一个程序相对应,并且只有一个,但是一个程序可以有多个进程,或者一个进程都没有。除此之外,进程还有并发性和交往性。简单地说,进程是程序的一部分,程序运行的时候会产生进程。
      总结:
      线程是进程的一部分,进程是程序的一部分。
           进程和程序区别和联系表现在以下方面: 
        1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。 
进程是一个动态的实体,它有自己的生命周期。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消。反映了一个程序在一定的数据集上运行的全部动态过程。 
       2)进程和程序并不是一一对应的,一个程序执行在不同的数据集上就成为不同的进程,可以用进程控制块来唯一地标识每个进程。而这一点正是程序无法做到的,由于程序没有和数据产生直接的联系,既使是执行不同的数据的程序,他们的指令的集合依然是一样的,所以无法唯一地标识出这些运行于不同数据集上的程序。一般来说,一个进程肯定有一个与之对应的程序,而且只有一个。而一个程序有可能没有与之对应的进程(因为它没有执行),也有可能有多个进程与之对应(运行在几个不同的数据集上)。 
          3)进程还具有并发性和交往性,这也与程序的封闭性不同。进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: 

         简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 
         线程的划分尺度小于进程,使得多线程程序的并发性高。 
        另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 
          线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 
         从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 

      进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 
      线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 
     一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行. 
引用 1 楼 ztz0223 的回复:
C/C++ code总结起来就是,线程是进程的一部分,进程是程序的一部分。
      线程的引入:例如,有一个Web服务器要进程的方式并发地处理来自不同用户的网页访问请求的话,可以创建父进程和多个子进程的方式来进行处理,但是创建一个进程要花费较大的系统开销和占用较多的资源。除外,这些不同的用户子进程在执行的时候涉及到进程上下文切换,上下文切换是一个复杂的过程。所以,为了减少进程切换和创建的开销,提高执行效率和节省…

神速 呵呵
进程就是一个动态的实体,是执行程序在一定数据集上运行的过程,是LINUX系统分配资源的基本单位,进程信息包括了程序计数器寄存器堆栈存储的如代码参数返回地址变量等的数据,在内核里使用task_struct结构体来表示每个进程,系统会维护一个task的数组,通过current指针标识当前进程
内核在启动的时候会由init()创建系统的第一个进程init,进程号是1,由它来做初始化工作,其它的进程都是由它派生出来的,这些进程又会创建各自的子进程,不过创建并不是个合适的名称,应该叫复制,都是从父进程克隆出来的,系统从物理内存中分配出来一个新的task_struct结构,还有多个页面(包括进程的堆栈),这样,除了init进程,系统所有进程都会有一个父进程,在task_struct结构里都保存了父进程,控制进程,兄弟进程,子进程的指针,进程在退出后会通过信号通知父进程,由父进程来作清理,相当于子进程死亡,由父进程来注销它的"户口"
  内核保存所有进程都用一个双向链表连接,可以通过ps命令来查看到所有的进程信息
这种问题不是几句话能说清的,建立楼主找一本关于LINUX操作系统的资料看一看,可能会更清楚一点
不能几句话说清楚的东西留不下来
linux中所有进程都是进程0(任务0)的子进程,都是由sys_fork(kernel/system_call.s)系统调用创建的。
程序是一个可执行的文件
进程是一个执行中的程序实例
进程组是一个或多个进程的集合。
会话期(sission,简称会话)则是一个或多个进程组的集合。
好大的题目。楼上帮答。
搞清楚task_struct结构体里有什么东西就能理解进程的含义~
UP 学习
最好的方法  GOOGLE

建议 采用Paradox7数据库,出现table is full的错误!!! 在线等待,解决立即给分!在sun操作系统上怎么安装weblogic啊! javascript怎么取session中的值(该session中的值是c#写的类) 开始学SWING,给个建议!? 采用Paradox7数据库,出现table is full的错误!!! 我靠!俺再也不相信人民邮电出版社了! 开始学SWING,给个建议!? 请教:用什么工具编写数据字典? struts如何检查表单输入数据必须为数字(100分) 有没有专门讲.net调试的书! 请教:在结构化分析设计方法中的数据字典与面向对象分析设计中的数据字典在编写上有什么区别? 奇怪的问题,解决了重谢~! 《投诉》 技术论坛骂人者请给以惩戒 刚学ASP。NET,有个问题,怎样用Button,指向一个网页 关于input type=text的输入问题,急在线等 请问红皮书<>有for C#的吗?? 不用<input id=uploadfile1 type=file size=49 runat=\"server\">,能把文件上传文件吗? access连接到sql server的ODBC错误问题 如何用OWC9.0導出excel時增加一個sheet? 求SUIPack 5.0全源码,200分送上 access连接到sql server的ODBC错误问题 为什么男人喜欢沾花惹草 如何将两个查询结果合在一起? 《投诉》 CSDN已不再是一个技术论坛了,让人伤心。 打算买个 拍得丽 SL-4 小菜提问:关于制作联赛排行版怎么建表 关于YUV420转换为RGB565 急,linux无法启动。等ing 旧写法如何转换成新写法