免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2023 | 回复: 5
打印 上一主题 下一主题

搞不清楚,线程和进程,那位进来说说 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-22 09:34 |只看该作者 |倒序浏览
我只知道多线程是共享数据的,而多进程则各自拥有自已的堆栈。

在线程中可以创建进程吗?如可以,它的各自数据是共享的,还是怎样?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2007-03-22 11:22 |只看该作者
太多基本概念混淆不清了, 找本好的介绍类 Unix 操作系统原理的书认真看看吧.

论坛徽章:
0
3 [报告]
发表于 2007-03-22 16:48 |只看该作者
一个进程至少有一个或多个线程

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2007-03-23 04:44 |只看该作者
原帖由 huaping3263 于 2007-3-22 16:48 发表于 3楼  
一个进程至少有一个或多个线程


过于简单武断了.

下面以类 Unix 系统的进程模型为例说说我自己对进程和线程概念的理解吧.

     进程(process) 是操作系统提供的一种程序执行环境的抽象, 是一种
动态的概念. 在这种抽象中, 正在该进程中执行的程序认为自己独占整个
计算机资源, 包括 CPU 及其寄存器, 所有的(虚拟)内存, 文件系统, 等等.
每个进程对应了一组资源, 包括 CPU 资源, 地址空间或者说虚拟内存(包括
其代码段, 数据段和执行栈), 文件描述符表, 等等. 资源的类型和各个
操作系统实现的进程模型相关, 例如说在 Plan 9 的进程模型中就有类 Unix
操作系统的进程模型所没有的 name space 和 rendezvous group(a spac
of rendezvous tags) 等资源类型. 另外, 在一个进程里面至少有一个执行
序列, 一般称之为线程(thread).

     线程在各个操作系统的实现是不同的, 甚至在同一个操作系统中也可能
存在多种实现(Linux 就是这种情况). 一般来说, 线程的实现分为内核线程
和用户态线程. 所谓的内核线程, 就是说操作系统内核意识到了线程的存在,
而且调度(上下文切换)也以线程为单位. 而用户态线程即指内核完全意识
不到线程的存在, 调度也是以进程为单位进行的. 另外, 用户态线程也可以
有多种不同的实现方式, 例如说通过在创建进程时共享某些资源(例如说父子
进程共享数据段[由于一个线程代表一个执行序列, 所以执行栈无法共享; 而
只读的代码段一般都共享], 共享文件描述符表, 等等), 再通过适当的进程间
通信/同步机制实现在这些进程间的可控上下文切换; 再例如说像操作系统
提供对硬件资源的多路复用(multiplex)一样通过对进程资源进行多路复用(
multiplex)在一个进程中提供多个执行序列也是可以的, Plan 9 的 thread
库就是用这种方式实现的.

[ 本帖最后由 MMMIX 于 2007-3-23 05:30 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-03-25 13:27 |只看该作者
谢谢楼上这么多位, 4楼的大哥说得好深入,
我有点认识了。再次谢谢, 4楼的大哥说的plan 9是什么来的?(原谅我菜)

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2007-03-25 15:27 |只看该作者
原帖由 yanghs.dgut 于 2007-3-25 13:27 发表于 5楼  
4楼的大哥说的plan 9是什么来的?(原谅我菜)


Plan 9 是 Bell Labs 的一款操作系统, 其官方网站在:

http://plan9.bell-labs.com/plan9/

其介绍在

http://plan9.bell-labs.com/plan9/about.html

另外, 请善用搜索引擎. 这类问题一般搜索一下都可以解决.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP