曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 8430|回复: 0
打印 上一主题 下一主题

[基于Linux] 线程与进程的关系

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2009-6-24 10:50:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
线程是计算机中独立运行的最小单位,运行时占用很少的系统资源。由于每个线程占用的 CPU 时间是由系统分配的,因此可以把线程堪称操作系统分配 CPU 时间的基本单位。
在用户看来,多个线程是同时执行的,但从操作系统看来,各个线程是交替执行的。系统不停的在各个线程之间切换,每个线程只有在系统分配给它的时间片内才取得 CPU 的控制权(微观串行,宏观并行),执行线程中的代码。( 注意: 这里只是针对单 CPU 单核的情况;在多 CPU 多核的主机上,多个线程是可以同时运行的。)

Linux 支持多线程,它在一个进程内生成许多个线程。一个进程可以拥有一至多个线程。为什么在支持多进程的情况下还引入多线程呢?这是因为多线程相对于多进程有以下优点:
      在多进程情况下,每个进程都有自己独立的地址空间,而在多线程的情况下,同一进程内的线程共享进程的地址空间。因此,创建一个新的进程时就要耗费时间来为其分配系统资源,而创建一个新的线程花费的时间则要小得多。
      在系统调度方面,由于进程地址空间独立而线程共享地址空间,线程间的切换速度要远远快于进程间的切换速度。
      在通信机制方面,进程间的数据空间相对独立,彼此通信要以专门的通信方式进行,通信时必须经过操作系统,而同一进程内的多个线程共享数据空间,一个线程的数据可以直接提供给其他线程使用,而不必经过操作系统。因此,线程间的通信更加方便和省时。
线程以上优点,可以概括为两个字“节约” :节约资源、节约时间。这些对操作系统的设计来说是非常重要的。此外,线程还具有如下优点:
      可以提高应用程序的响应速度。在图形界面程序中,如果有一个非常耗时的操作,它会导致其他操作不能进行而等待这个操作,此时界面响应用户操作的速度会变得很慢。多线程环境可以将这个非常耗时的操作由单独的线程来完成。这个线程在用完操作系统分配给它的时间片后,让出 CPU ,这样其他操作便有机会执行了。
      可以提高多处理器的效率。现在许多计算机都采用多核技术。在这种情况下,可以让多个线程在不同的处理器上同时运行,从而大大提高执行速度。因此,多线程更能发挥硬件的潜力。
      可以改善程序结构。对于处理多个命令的应用程序,可以将对每个命令的处理设计成一个线程,从而避免设计成大程序时造成的程序结构复杂。
虽然线程在进程内共享地址空间、打开的文件描述符等资源。但是线程也有似有的数据信息,包括:
      线程号(thread ID) : 每个线程都有一个唯一的线程号一一对应。
      寄存器( 包括程序计数器和堆栈指针 )
      堆栈
      信号掩码
      优先级
      程序似有的存储空间。
Linux 系统支持 POSIX 多线程接口,成为 pthread (Posix Thread).编写 Linux 下的的多线程应用程序,需要使用头文件 pthread.h,连接时需要使用库 libpthread.a 。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-19 20:27 , Processed in 0.062696 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表