tarzar 发表于 2007-11-20 13:59:54

一直搞不清楚:进程与线程

你好,我一直搞不清楚线程与进程的关系(指windows下的多进程与多线程),windows进程的调度和UC/OS中的任务调度是不是一样啊,如果是,那么线程又是靠什么来调度的呢,

我只知道,一个进程最少要有一个线程.
"怎么理解线程调度的开销会比进程调度的开销小"得多这句话啊?

进程调度的工作应该是:切换任务的一套CPU寄存器和栈空间.

那线程调度做的工作是哪些啊

onair 发表于 2007-11-20 19:15:52

以下蓝色文字由版主:onair 于:2007-11-20,19:15:52 加入。<font color=black>请发贴人注意:本贴放在这分区不合适,即将移走
原来分区:航空模型
即将移去的分区:电脑综合论坛
移动执行时间:自本贴发表0小时后
任何的疑问或咨询,请可随时联系站长。谢谢你的支持!</font>

apple888888 发表于 2007-11-22 00:55:41

你google一下关键字“线程与进程”,保证第一页就有你要的答案/

lvhaian 发表于 2007-11-22 09:18:08

oc/os-ii 中进程即线程,具体可以参阅 <<嵌入式系统设计师>>教程。

tarzar 发表于 2007-11-22 10:57:47

谢谢! apple888888和lvhaian 安哥 两位


贴上一资料:


4.2.1 线程概念
  在传统上,并发多任务的实现采用的是在操作系统(OS)级运行多个进程。由于各个进程拥有自己独立的运行环境,进程间的耦合关系差,并发粒度过于粗糙,并发实现也不太容易。当前,采用多处理机构成超高性能计算机成为主流。为发挥新体系结构的并行效率提出一些新概念和支持并行程序的机制。在这种背景下,针对传统UNIX中进程的概念在支持中微粒度并行程序设计方面的不足,提出了线程概念。如果把进程所占资源与进程中的运行代码相分离,那么在一个地址空间中便可运行多个指令流,由此产生线程概念。这一概念在表达应用问题本身的并行性方面较传统进程有较大优势,尤其在共享主存的多处理机硬件环境上有更好的运行效率。但是,线程尚没有统一的定义,一般说来,所谓线程(或称线索),指程序中的一个单一的顺序控制流。
  图1和图2分别示意了把一个任务按2个并发进程和2个并发线程分解后的情况。比较这两张图中进程与进程之间、线程与线程之间的关系可以看出,进程间的关系比较疏远。各个进程是在自己独有的地址空间内执行,不但寄存器和堆栈是独有的,动态数据堆、静态数据区和程序代码也相互独立。而线程间的关系则要紧密得多,虽然各线程为保持自己的控制流而独有寄存器和堆栈,但由于两线程从属于同一进程,它们共享同一地址空间,所以动态堆、静态数据区及程序代码为各线程共享。进程作为独立的实体,它为线程提供运行的资源并构成静态环境。线程是处理机调度的基本单位。如果说进程概念很好地描述了单机操作系统行为,那么线程概念则很好地描述了多机系统中的并行处理行为,将起到进程在单机操作系统中类似的历史作用。
http://cache.amobbs.com/bbs_upload782111/files_8/ourdev_182350.jpg


所谓多线程程序设计,指使单个程序中包含并发执行的多个线程。当多线程程序执行时,该程序对应的进程中就有多个控制流在同时运行,即具有并发执行的多个线程。在一个进程中包含并发执行的多个控制流,而不是把多个控制流一一分散在多个进程中,这是多线程程序设计与多进程程序设计截然不同之处。
  正是由于线程与进程之间的这些差别,决定了多线程技术的优越性。
  多线程技术的优越性
  (1)快速的关联切换
  由于操作系统级的进程独占自己的虚地址空间,调度进程时,系统必须交换地址空间,因而进程切换时间长。在同一程序内的多个线程共享同一地址空间,因而能使线程快速切换。例如,10个进程,每个进程10个线程的系统与100个进程,每个进程1个线程的系统相比,前者的运行速度要快于后者。
  (2)系统额外开销小
  对多个进程的管理(创建、调度等)有比较大的系统开销。在需要动态创建新进程的应用中,比如响应于每个客户的请求而建立一个新的服务进程的服务器应用程序中,这种开销比较显著。而对线程的管理虽然也会有系统开销,但比进程的小得多。
  (3)通信很容易实现
  为了实现协作,进程或线程之间需要进行数据交换。对于自动共享同一地址空间的各线程来说,所有的全局数据都可以访问,因而不需要什么特殊手段就能自动实现数据共享。而进程之间的通信则要复杂得多。
  (4)线程个数比进程个数多得多
  许多多任务操作系统限制用户进程总数,如不少UNIX版本的典型值为40~100,这对许多并发应用来说远远不够。在多线程系统中,虽存在线程总数限额,但个数多得多(OS/2支持4096个线程)。

  Mach、Chorus、Solaris system等各种采用了线程技术的系统,使得多线程技术迅速发展并得到了日益广泛的应用。IEEE推出了有关多线程程序设计的标准POSIX1003.4a。特别是在Window NT和Windows 95等流行操作系统中,采用了线程作为基本的调度单位,其API中也提供了有关线程操作的用户程序接口。

dingwei 发表于 2007-11-26 08:55:06

了解了
页: [1]
查看完整版本: 一直搞不清楚:进程与线程