码迷,mamicode.com
首页 > 编程语言 > 详细

进程和线程

时间:2017-11-16 21:56:39      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:死锁   生活   大于   并行   操作   情况   地址空间   申请   aik   

 什么是进程?

  • 进程是操作系统中运行的一个任务(一个应用程序运行在一个进程中)
  • 进程(process)是一块包含了某些资源的内存区域,操作系统利用进程把它的工作划分为一些功能单元。
  • 进程包含一个或多个线程。进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。
  • 线程只能归属于一个进程并且它只能访问该进程所拥有的资源,当操作系统创建一个进程后,该进程会自动申请一个主线程或者首要线程的线程。

什么是线程

  • 一个线程是进程的一个顺序执行流
  • 同类的多个线程共享一块内存空间和一组系统资源,线程本身有一个供程序执行时的堆栈,线程是切换负荷小,因此线程也被成为轻负荷经常。

进程和线程的区别

  • 一个进程至少拥有一个线程
  • 进程拥有独立的内存单元,而多个线程共享内存。
  • 每个独立线程有一个程序运行的入口,顺序执行序列和程序的出口。
  • 线程不能独立执行

为什么要用多线程?

生活中的多线程:

  • 单车道容易拥堵,多车道,路况畅通。
  • 车间中一条生产线生产缓慢,增加多条生产线,同时生产出更多的产品。

使用场合:

  • 程序中需要同时完成多个任务的情况,可以将每个任务定义为一个线程,使他们一同工作。
  • 有些单一线程可以完成,但是多线程可以更快,如下载文件等

多线程的缺点:

  1. 如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换.
  2. 更多的线程需要更多的内存空间
  3. 线程中止需要考虑对程序运行的影响.
  4. 通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生

并发原理

多个线程“同时”运行只是我们感官上的一种表现。事实上线程是并发运行的(时间片轮转进程调度算法),单个CPU的情况下任何一个时间内有且仅有一个进程占有CPU,如果有多个CPU,情况就不同了,如果进程数小于CPU数,则不同的进程可以分配给不同的CPU来运行,这样,各个进程就是真正同时运行的,这便是并行。但如果进程数大于CPU数,则仍然需要使用并发技术。OS将时间划分为很多时间片段(时间片),尽可能的均匀分配给每一个线程,获取时间片段的线程被CPU运行,而其他线程全部等,只要每个时间片段足够小,用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。所有并发技术不是绝对意义上的“同时发生”。

线程的状态

线程是一个动态执行的过程,它也有一个从产生到死亡的过程。

下图显示了一个线程完整的生命周期。

 

技术分享

 

 

 

 

进程和线程

标签:死锁   生活   大于   并行   操作   情况   地址空间   申请   aik   

原文地址:http://www.cnblogs.com/magic101/p/7827969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!