您的位置:首页 > 运维架构 > Linux

Linux进程与线程的区别

2016-10-19 23:56 405 查看
  
Linux是一个多用户、多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。在操作系统设计上,从进程(Process)演化出线程(Thread),最主要的目的就是更好地支持多处理器,并且减小(进程/线程)上下文切换的开销.根据操作系统的定义,进程是系统资源管理的最小单位,线程是程序执行的最小单位.
(1)在多进程情况下,每个进程都有自己独立的地址空间.在多线程情况下,同一进程内的线程共享进程的地址空间.因此,创建一个新的进程时就要耗费时间来为其分配系统资源,而创建一个新的线程花费的时间则要小得多.
(2)在系统调度方面,由于进程地址空间独立而线程共享地址空间,线程间的切换速度要远远快于进程间的切换速度.
(3)在通信机制方面,进程间的数据空间相对独立,彼此通信要以专门的通信方式进行,通信时必须经过操作系统.而同一进程内的多个线程共享数据空间,一个线程的数据可以直接提供给其他线程使用,而不必经过操作系统.因此,线程间的通信更加方便和省时.

(4)线程可以提高应用程序的响应速度.在图形界面程序中,若有一个非常耗时的操作,会导致其它操作不能进行而等待这个操作,此时界面响应用户操作的速度会变得很慢.多线程环境可以将该操作由单独的线程来完成,该线程在用完操作系统分配给它的时间片后让出 CPU ,这样其它操作便有机会执行了.
问题:使用多进程还是多线程的设计方式?



      首先,创建进程比创建线程要多占用系统资源,系统资源不足往往会引起系统性能的下降,导致任务完成的比较慢.

      其次,由于多个进程要操作同一个数据集合,必然会因为数据争用导致进程状态改变,同多个线程状态改变相比,进程切换要使用更多的CPU时间.

      最后,使用单进程方式.由于进程少,每个进程又可以较多的获得CPU时间片,从而能够很大的改善进程的性能.

      由此可见,并不是使用多进程处理数据就一定比使用多个线程的单进程快.上图显示了使用两种方式的程序性能变化曲线.从图上可以看出,无论使用何种方式,进程和线程都不是越多越好,两种方式都存在一个临界点,超过这个临界点,都会因为频繁的进程或线程状态切换而造成程序性能下降.使用多进程方式在到达临界点之后再增加进程就会引起性能的下降,而且下降速度比单进程多线程方式到达临界点之后的下降速度快,这是因为进程切换比线程切换更费时.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: