进程/线程

进程
  所有现在的计算机都能同时做几件事。当一个用户程序正在运行时,计算机还能够同时读取磁盘,并向屏幕或打印机输出文本信息。在一个多道程序系统中,CPU在程序间切换,使每道程序运行几十或几百毫秒。然而严格地说,在一个瞬间,CPU只能运行一道程序。在1S期间,它可能运行了多道程序,这样就给用户一种并行的错觉。有时人们所说的伪并行就是这种情形,以此来区分多处理机系统的真正的硬件并行。人们很难对多个并行的活动进行跟踪。因此,经过多年的努力,操作系统的设计者发展了一种概念模型,即进程模型。
   因为突然变得僧多粥少了,所以每个进程只好做一些额外的事情:在别人使用之前把自己的东西收拾好,下次轮到自己时再摆出来。为了保存这些额外的东西,进程的结构也发生了相应的变化。一个进程被分成三大部分:代码段、数据段和PCB(进程控制块)。
    在多出来的PCB中,我们保存了如下信息:
 1、进程标识符(操作系统用于识别进程的唯一标识)
 2、处理机状态(主要是通用寄存器,指令寄存器,PSW和用户栈指针)
 3、进程调度信息(状态、优先级,被阻塞原因和其他一些乱七八糟的东西)
 4、进程控制信息(同步信息、代码段和数据段的信息、资源清单和指向下一个PCB的指针)
    操作系统正是通过PCB来管理这多个进程。在这样的系统里,进程既是操作系统独立调度和分派的基本单位,又是一个可拥有资源的独立单位。


线程
    多个进程间使用很多相同数据的话,实在是太浪费了。于是线程出现了。同一个进程下可以拥有多个线程,它们共享这个进程的虚拟地址空间、全局变量和操作系统资源,它们之间的切换也不再需要PCB,而只需要极少一点资源就可以了。线程是进程的再分身,一个应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程。
   线程是操作系统分时调度分配CPU时间的基本实体。一个线程可以执行程序的任意部分的代码,即使这部分代码被另一个线程并发地执行。
   简单的说进程和线程有如下不同:
   I、 进程可以拥有资源,线程共享进程拥有的资源
   II、进程间的切换必须保存PCB,同个进程的多个线程间的切换不用那么麻烦
   III 进程和线程都可以有优先级。
   IIII同一进程中的两段代码不能够同时执行,除非引入线程。
例子:
   当你在一台PC上打开两个QQ时,每一个QQ是一个进程;而当你在一个QQ上和多人聊天时,每一个聊天窗口就是一个线程。
   图一

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值