进程和线程

本文详细介绍了操作系统中的进程和线程概念,包括进程状态、线程实现、进程通信和多种调度算法,如批处理系统的先来先服务、最短作业优先,以及交互式系统的轮询调度和优先级调度等。
摘要由CSDN通过智能技术生成

目录

进程和线程

进程

进程状态

进程实现

线程

线程实现

线程状态

用户空间实现线程

内核空间实现线程

进程通信

竞态条件

临界区

调度算法

批处理系统

先来先服务

最短作业优先(Shortest Job First)

最短剩余时间优先(Shortest Remaining Time Next)

交互式系统

轮询调度 (round-robin)

优先级调度

最短进程优先

保证调度

彩票调度

公平分享调度


 

进程和线程

进程

一个进程是某种类型的一个活动,它有程序,输入,输出以及状态。单个处理器可以被若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。

在任何多到程序设计系统中,CPU由一个进程快速切换至另一个进程,使得每个进程各运行几十或几百毫秒。由于CPU在各个进程之间的快速切换,因此每个进程的执行速度是不确定的,进程的执行顺序也是不确定的。对于单处理器系统,由于在一个CPU上的快速切换,因此每个瞬时,只有一个进程在运行,这种情况就是所说的伪并行。

进程状态

* 运行态,即该时刻进程实际在占用cpu

* 就绪态,可运行,但因为其他进程正在运行而暂时终止

* 阻塞态,除非某种外部事件发生,否则进程不能运行

* 终止态,进程停止运行(可能完成,也可能因错误被动结束),移除调度

 

进程实现

操作系统为了执行进程间的切换,维护一张表格这张表就是 进程表(也被称为进程控制块)。每个进程占用一个进程表项。该表项包含了进程状态的重要信息,包括程序计数器,堆栈指针,内存分配状况,所打开文件的状态,账号和调度信息,以及其他在进程由运行态转换到就绪态或阻塞态时所必须保存的信息,从而保证该进程随后能再次启动,就像从未被中断过一样。

 

线程

  • 拥有共享同一个地址空间和所有可用数据的能力

  • 线程比进程更轻量级,容易创建,容易撤销

  • 性能方面的原因。如果多个线程都是cpu密集型的,那么并不能获得性能上的增强,但是如果存在大量的计算和大量的I/O处理,拥有多个线程能在这些活动中彼此重叠进行,从而加快程序的执行速度。

进程模型基于两种独立的概念,资源分组处理与执行。引入线程使得我们将资源和处理执行分开。即进程用于把资源集中到一起,而线程则是在CPU上被调度执行的实体。也就是说进程负责准备运行所需的虚拟环境,线程负责完成任务。

线程实现

同一个进程中的所有线程共享进程提供的虚拟环境内容,每个线程内部又会存在各自独立的堆栈空间,程序计数器等,这些独立的数据保证了线程的正确切换,也就是说这些独立内容就是线程切换时需要保存的内容。

线程状态

和进程一样,线程也存在以下状态:运行,阻塞&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值