线程与进程的关系和区别???

fxly 2003-10-16 10:30:22
请高手讲解一下,最好能举例说明,多谢!
...全文
1277 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Weigehoho 2003-10-16
  • 打赏
  • 举报
回复
楼主的问题:
“是不是这样的:
开不同的程序就是不同的进程?
而同一种程序同时多开几次仍然是一个进程,但是是多个线程?例如开两个QQ。

还是这样的:
同一个程序开几次就是几个进程,例如开两个QQ就是两个进程。
而线程就像是“网络蚂蚁”下载的那种方式,开几个蚂蚁就是几个线程?? 可那是断点续传啊!!!”
书上就有明确解释
jhyu 2003-10-16
  • 打赏
  • 举报
回复
当你阅读完操作系统原理课程里面关于两者关系的描述之后,你可以得出下面两句简短的结论:
进程是资源分配的基本单位,线程是处理机调度执行的基本单位
liao2001 2003-10-16
  • 打赏
  • 举报
回复
书上不是说的很多吗?看不懂再来问吧。
另:“线程是操作系统的最小执行单位”,这种说法是不准确的,系统调度的最小单位应该是轻进程,每个线程会绑定一个轻进程来执行。。。
daizh 2003-10-16
  • 打赏
  • 举报
回复
引用楼主:同一个程序开几次就是几个进程,例如开两个QQ就是两个进程。从进程的角度是这样的
zhusunme 2003-10-16
  • 打赏
  • 举报
回复
a process is a program in execution
a thread is a basic unit of CPU utilization, it comprises a thread ID,a program conter,a register set,and a stack.it shares with other threads belonging to the same process its code section, data section, and other operating-system resourses,such as open files and and signals. A traditional process has a single thread of control.
fxly 2003-10-16
  • 打赏
  • 举报
回复
是不是这样的:
开不同的程序就是不同的进程?
而同一种程序同时多开几次仍然是一个进程,但是是多个线程?例如开两个QQ。

还是这样的:
同一个程序开几次就是几个进程,例如开两个QQ就是两个进程。
而线程就像是“网络蚂蚁”下载的那种方式,开几个蚂蚁就是几个线程?? 可那是断点续传啊!!!

懵懂~~~~~~~~~
Weigehoho 2003-10-16
  • 打赏
  • 举报
回复
进程:多任务系统的产物
它就是一个程序在数据集合上的一次执行。

每个进程在别人使用之前把自己占用的资源保存好,下次轮到自己时再读出来。为了保存这些额外的东西,进程的结构也发生了相应的变化。一个进程被分成三大部分:代码段、数据段和PCB(进程控制块) 。

在PCB中,保存了如下信息:

l 进程标识符(操作系统用于识别进程的唯一标识)

l 处理机状态(主要是通用寄存器,指令寄存器,PSW和用户栈指针)

l 进程调度信息(状态、优先级,被阻塞原因和其他一些乱七八糟的东西)

l 进程控制信息(同步信息、代码段和数据段的信息、资源清单和指向下一个PCB的指针)


操作系统正是通过PCB来管理这多个进程。在这样的系统里,进程既是操作系统独立调度和分派的基本单位,又是一个可拥有资源的独立单位。


线程:进程的再分身


同一个进程下可以拥有多个线程,它们共享这个进程的资源,它们之间的切换也不再需要PCB,而只需要极少一点资源就可以了。在这样的操作系统里,线程变成了系统调度和分派的基本单位。



简单的说进程和线程有如下不同:


l 进程可以拥有资源,线程共享进程拥有的资源

l 进程间的切换必须保存PCB,同个进程的多个线程间的切换不用那么麻烦


当你在一台PC上打开两个QQ时,每一个QQ是一个进程;而当你在一个QQ上和多人聊天时,每一个聊天窗口就是一个线程。
daizh 2003-10-16
  • 打赏
  • 举报
回复
简单的说,你每启动一个程序,就启动了一个进程。在Windows 3.x下,进程是最小运行单位。在Windows 95/NT下,每个进程还可以启动几个线程,比如每下载一个文件可以单独开一个线程。在Windows 95/NT下,线程是最小单位。WINDOWS的多任务特性使得线程之间独立运行,但是它们彼此共享虚拟空间,也就是共用变量,线程有可能会同时操作一片内存。
roselu 2003-10-16
  • 打赏
  • 举报
回复
学习!

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧