进程和线程

因为这几天做一个小东西,其中牵扯到了进程和线程的一些东西,然后也发现自己对于进程和线程的理解不是很到位,于是就写点东西记录下来。
一.线程
线程:应用程序可以有多个线程,这些线程在休眠状态中需要耗费大量的时间来等待事件的发生。其他线程可能进入休眠状态,并且仅定期被唤醒以轮换更改或更新状态信息,然后再次进入休眠状态。为了简化对线程的管理,.NET框架为每一个进程提供一个线程池,一个线程池有若干个等待操作状态,当一个等待操作完成时,线程池中的辅助线程会执行回调函数。线程池中的线程由系统管理,程序员不需要费力于线程管理,可以集中精力处理应用程序任务。线程池是一个多线程处理形式,处理过程中将任务添加到队列,然后再创建线程后自动启动这些任务。线程池中的线程都是后台线程,每个线程都会使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程始终都保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值,超过最大值的线程可以排队,但它们要等到其他程序完成后才启动。(来自一个学姐的博客!)
      线程是进程的实体,是CPU调度和分配的基本单位,线程自己基本上不拥有系统资源,只用有一点在运行中必不可少的资源(如程序计数器,寄存器和栈),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程;同一进程中的多个线程之间可以并发执行。相对于进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在用户看来,多线程是同时执行的。但从操作系统来看,各个线程是交替执行的。系统不停的在各个线程之间切换,每个线程只有在系统分配给他的时间片内才能获得CPU的控制权,执行程序中的代码。
二.进程
(1)概念:进程是一个动态的实体,是程序的一次执行过程。进程是操作系统资源分配的基本单位。要掌握进程的概念就要将进程和程序的概念区分开。进程和程序的区别在于进程是动态的,程序是静态的;进程是运行中的程序,程序是一些保存在硬盘上的可执行代码。进程是一个具有独立功能的程序关于某个数据集合的一次运动活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
(2)进程的概念主要有两点:第一,进程是一个实体。每个进程都有自己的地址空间,一般情况下,包括文本区域、数据区域、和堆栈。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。
三.进程和线程的区别
(1)线程是进程的一部分,所以线程有时侯被称为轻量级进程
(2)一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个线程,进程执行过程不是一条线,而是多条线共同完成的。
(3)系统在运行的时候会为每一个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程资源),线程组只能共享资源。那就是说。除了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
(4)与进程控制表PCB相似,线程已有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少很多。
(5)进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值