进程的并行和并发以及上下文。

一、进程的初步认识
1.程序,进程的概念。
程序:程序可以理解是一组静态的代码,是放在磁盘里的可执行文件,是有序代码的集合。
进程:进程可以理解为正在运行的程序,是程序执行的实例。
2.程序和进程的区别。
(1)、程序是静态的,可以永久的存在于磁盘上;而进程是动态的,暂时的,是程序的一次执行,有一定的生命期。
(2)、进程可以并发执行,而程序不能。
(3)、进程具有独立性,进程是可以独立竞争计算机资源(CPU时间、内存)的基本单位,而程序不是作为独立单位。
(4)、进程和程序不是一一对应的,一个程序可以对应多个进程即多个进程执行同一程序;一个进程可以执行一个或者多个程序。
总结:一个程序刚开始就是一个在硬盘上的程序,加载运行时,是为了完成某些任务(如迅雷完成下载任务),而要完成任务,就需要操作系统为该任务提供足够做的资源(如内存和CPU资源),而这一整套任务的执行,我们可以叫做进程
所以:进程是担当分配系统资源(CPU、时间,内存)的实体,是具有动态特性的,
比如打开我们电脑的任务管理器,就可以看到正在运行的程序,也就是进程。
在这里插入图片描述

二、时间片的概念
现代操作系统,如Linux,Windows等都是支持多任务的操作系统,所谓的多任务就是操作系统可以运行同时运行多个任务。
操作系统的任务调度就是采用时间片轮换的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行。
任务执行的一小段时间叫做时间片,任务正在执行的状态叫做运行状态,任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务就出于就绪状态等待下一个属于它的时间片的到来,这样每个任务都能得到执行,由于CPU的执行效率非常高,时间片非常短,在每个任务之间快速的区切,给人的感觉就是多个任务在"同时执行",这就是接下来要讲的并发

三、并发和并行

现在,多核CPU已经非常普及了,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。
对于并发:多个进程在一个CPU下采用时间片轮转的方式,在一段时间之内,让多个进程都得以推进,称之为并发。站在CPU的角度来说,多个进程是来回切换执行的,但由于CPU执行效率很快,时间片很短,在外界或者人类的角度来说,难以察觉这些切换时的变化,所以看起来这些进程是同时进行的,所以并发是一种“伪并行”。
对于并行:多个进程在多个CPU下分别,同时进行运行,这称之为并行以。
计算机操作系统中把并行性和并发性明显区分开,主要是从微观的角度来说的,具体是指进程的并行性(多处理机的情况下,多个进程同时运行)和并发性(单处理机的情况下,多个进程在同一时间间隔运行的)。并发与并行类似于工厂中的流水线,要扩大产量,1是考虑建造多个工厂,这就是并行,2是考虑每个工厂中新增流水线,这就类似并发。

四、进程中的上下文
进程是由内核态管理和调度的,进程的切换只能发生在内核态。
上下文简单说来就是一个环境,进程在时间片轮转切换时,由于每个进程运行环境不同,就涉及到转换前后的上下文,环境的切换就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈上的内容。切换时需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。
进程的上下文不但包括虚拟内存,栈,全局变量等用户空间资源,还包括内核堆栈,寄存器等内核空间。先把当前进程的虚拟内存,栈保存起来,再保存当前进程的内核状态和CPU寄存器,加载下一个进程的内核状态后,还需要刷新新进程的虚拟内存和用户栈。
进程切换的场景有:
1.进程的时间片耗尽。
2.系统资源不足(内存不足)
3.进程通过睡眠函数sleep把自己挂起来。
4.当有优先级更高的进程运行时,为了去运行更高优先级的程序,当前程序会被暂停执行。
5.发生硬中断,CPU上的进程会被挂起,然后执行内核中的中断服务进程。

五、进程的状态

1.就绪:进程处于可运行的状态,就是说该进程已经被分配到了所有必须的资源,只是CPU时间片还没有轮转到该进程,则该进程处于就绪状态,一旦获得时间片就可以立即执行。
2.运行:进程处于可运行的状态,且CPU时间片轮转到该进程,该进程正在执行代码,则该进程处于运行状态。
3.阻塞:进程不具备运行条件,正在等待某个事件的完成。引起阻塞的原因有:(1)、向系统申请资源时失败。如果资源被另一个进程正在占用。则该进程出于阻塞状态。(2)、等待某种操作,该进程启动了某I/O设备,如果只有完成了制定I/O任务后该进程才能执行,在启动了I/O设备后会自动进入阻塞状态。
(3)、新数据尚未达到,对于相互作用的进程,如果一个线程需要先获得另一个进程数据后才能对该数据进行处理,只要数据未达到就会进入阻塞状态。(4)、等待新任务的到达,每当当前进程完成自己的任务就会把自己阻塞起来,等到新任务到达时,才将其唤醒。

六、内核态和用户态
一般的操作系统(如Windows、Linux)对执行权限进行分级:用户态和内核态。
操作系统内核作为直接控制硬件设备的底层软件,权限最高,称为内核态,或核心态。
用户程序的权限最低,称为用户态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值