A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© V_John 中级黑马   /  2013-10-31 21:40  /  2682 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 V_John 于 2013-11-1 21:50 编辑

求进程,线程,程序之间的关系?可能我理解出了错误?求大神帮帮忙?

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

16 个回复

倒序浏览
进程(Process):是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。进程之间是相对独立的,一个进程无法直接访问另 一个进程的数据(除非利用分布式计算方式),一个进程运行的失败也不会影响其他进程的运行,Windows系统就是利用进程把工作划分为多个独立的区域 的。进程可以理解为一个程序的基本边界。
        要解决的问题:为了使程序能并发执行,(要并发执行就要隔离进程,使进程独立,即每个进程有属于自己的数据段、程序段、进程控制块)
应用程序域:它提供安全而通用的处理单元,公共语言运行库可使用它来提供应用程序之间的隔离。您可以在具有同等隔离级别(存在于单独的进程中)的单个进程中运行几个应用程序域,而不会造成进程间调用或进程间切换等方面的额外开销。在一个进程内运行多个应用程序的能力显著增强了服务器的可伸缩性。
       优势: 在一个应用程序中出现的错误不会影响其他应用程序。能够在不停止整个进程的情况下停止单个应用程序。应用程序域形成了托管代码的隔离、卸载和安全边界。    在任意给定时间,每一线程都在一个应用程序域中执行
线程:是Windows任务调度的最小单位。线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。
        解决问题:进程是一个资源的拥有者,因而在进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销,限制了并发程度的进一步提高。

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
张小康 发表于 2013-10-31 21:56
进程(Process):是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。进程之间是相对独立 ...

那进程,线程,程序他们之间的关系是啥呢?
回复 使用道具 举报
说通俗点 程序运行了就叫进程 没运行只能叫程序
进程包含线程 线程的功能加起来就是整个进程的功能
比如一个进程要进行运算的同时监听用户键盘指令,大家都知道程序只能一步一步执行,所以不可能同时有两个动作,
要完成上述动作时,就需要两个线程来帮忙了,两个线程一个负责运算,另一个负责监听用户指令
自己的理解,不够全面还请大家补充

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
我觉得一个程序是实现一个功能,程序可以是多个进程组成的。
进程是一个可以独立存在的,拥有所有运行所需资源的单位,就像一个工厂。
而线程是进程创建线程来处理特定的工作,就像工厂中一条作业线。

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1 简洁 靠谱

查看全部评分

回复 使用道具 举报
进程和线程是程序的运行基本单元,一个程序至少有一个进程,一个进程至少有一个线程。进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。为了并发,所以程序分进程,进程分线程,而具体什么时候运行由调度程序决定。
回复 使用道具 举报
V_John 发表于 2013-10-31 22:20
那进程,线程,程序他们之间的关系是啥呢?

每个程序都有至少有一个进程、当只有一个线程的时候,这个线程就是程序的进程
即一个进程至少有一个线程
同一个进程中的多个线程之间可以"并发"执行
回复 使用道具 举报
V_John 中级黑马 2013-10-31 23:19:24
8#
蒋东东 发表于 2013-10-31 23:12
进程和线程是程序的运行基本单元,一个程序至少有一个进程,一个进程至少有一个线程。进程是系统进行资源分 ...

是一个进程至少有一个程序?还是?同一个进程可以有多个线程
回复 使用道具 举报
V_John 中级黑马 2013-10-31 23:19:36
9#
蒋东东 发表于 2013-10-31 23:12
进程和线程是程序的运行基本单元,一个程序至少有一个进程,一个进程至少有一个线程。进程是系统进行资源分 ...

是一个进程至少有一个程序?还是?同一个进程可以有多个线程
回复 使用道具 举报
V_John 发表于 2013-10-31 23:19
是一个进程至少有一个程序?还是?同一个进程可以有多个线程

是一个程序至少要有一个进程。程序包含进程,进程包含线程的关系。
回复 使用道具 举报
蒋东东 发表于 2013-10-31 23:48
是一个程序至少要有一个进程。程序包含进程,进程包含线程的关系。

哦哦 ,知道了,看来我笔记记错了!
回复 使用道具 举报
进程中包含线程,进程中可以开辟多个线程,进程本身中包含一个线程,杨忠科老师不是第一课就讲的很好吗...你没仔细看吧?

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
追溯客 发表于 2013-11-1 10:42
进程中包含线程,进程中可以开辟多个线程,进程本身中包含一个线程,杨忠科老师不是第一课就讲的很好吗...你没 ...

只怪我笔记的时候,记反了,咳咳。。。总感觉不对劲。。。
回复 使用道具 举报
这个很简单
比如:你打开一个QQ  这就是打开了一个程序  同时会在资源管理器中  出现一个QQ.EXE的进程  
这里的程序和进程是对应关系的
但是 你在操作QQ的时候  会有很多线程在处理这个进程的操作
多线程之间是互相独立的   

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
程序在打开运行的时候就演变成了进程,进程是由线程组成的。简单的说,你每启动一个程序,就启动了一个进程。在Windows 3.x下,进程是最小运行单位。在Windows 95/NT下,每个进程还可以启动几个线程,比如每下载一个文件可以单独开一个线程。在Windows 95/NT下,线程是最小单位。WINDOWS的多任务特性使得线程之间独立运行,但是它们彼此共享虚拟空间,也就是共用变量,线程有可能会同时操作一片内存。

所谓进程,本身不能执行,它只是一个资源的集合体,拥有地址空间,模块,内存,...
线程是真正的执行单元,一个进程如果没有线程,那么就没有存在的意义,因为不可能执行。
回复 使用道具 举报
V_John 发表于 2013-11-1 11:56
只怪我笔记的时候,记反了,咳咳。。。总感觉不对劲。。。

好好学习!天天向上!
回复 使用道具 举报
V_John 发表于 2013-11-1 11:56
只怪我笔记的时候,记反了,咳咳。。。总感觉不对劲。。。

好好学习!天天向上!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马