操作系统进程调度的基本过程

1.进程是操作系统进行资源分配的基本单位;

        包括CPU资源,内存资源,硬盘资源网络资源等。

2.进程在操作系统中是如何描述以及组织的?

        要想理解进程是怎么调度的,那么必须首先知道进程在系统上是如何描述以及如何组织的。

        进程的描述方式:由于操作系统的主流编程语言是C/C++,因此进程广泛使用结构体Struct来进行描述。比如Linux系统,进程是通过进程控制块PCB(Process Control Block)这样的结构体描述进程信息的。

        进程的组织方法:操作系统通过数据结构把上述的结构体串联起来,实现进程的增删改查。这里我们可以简单理解为使用一个链表将进程信息串联起来,实际上采用的数据结构更复杂,实现信息的增删改查。以Linux系统为例,创建进程就是创建一个PCB结构体并在链表中插入,销毁进程就是在链表上把PCB删除,并且释放PCB,修改进程就是修改链表中的PCB内部的信息,浏览进程就是遍历链表的每一个节点,依次显示信息。

3.PCB内部都包含哪些信息?

PCB是一个非常复杂的结构体,包含的信息非常多,我们目前只讨论一些关键信息。

  1. a.PID进程标识符

        同一时刻,一台机器上的每个进程的PID是唯一的,PID是每个进程的唯一标识符,系统内部的很多操作都是通过PID找到对应的进程的。

  1. b.一组内存指针

        用来描述进程依赖的指令和数据存在哪个区域。创建进程后,操作系统会读取到进程相关的指令和数据,并加载到内存中。

  1. c.文件描述符表

        描述了进程需要操作哪些文件,对应硬盘上的数据。

  1. d.进程状态

        分为就绪状态和阻塞状态,能够随时调用或者正在调用,都叫做就绪状态。不能被调用叫做阻塞状态。

  1. e.进程的优先级

        优先级高的进程执行时间多,次数多,优先级低的进程执行的时间少,次数少。

  1. f.进程的上下文

        用来记录该进程上次被调度完成时的结果。进程执行一段时间会从CPU上调度走,过一段时间还会再次调度该进程,这时候需要沿着上次调度执行的结果继续往后执行,上次调度的结果(CPU内部一些寄存器的值)就是上下文。

  1. g.进程的记账信息

        记账信息指的是操作系统统计各个进程在CPU上执行的时间,根据执行时间来进一步调整调度的策略。

4.进程的调度

        调度进程的关键就是“分时复用”。通过快速切换进程的方式,只要切换的速度足够快,人就无法察觉到,直观上的感觉就是程序在并发执行。严格意义上来讲,这种快速切换进程的方式叫做并发,同时执行进程的方式才是并行,这都是由操作系统内核统一调度的,普通用户感知不到,因此通常把并发和并行统称为并发。

        操作系统调度进程时需要知道进程的状态、优先级、上下文和记账信息,根据这些信息来进行调度。首先需要确认进程的状态,如果进程能够随时被执行,那么进程就是就绪状态,操作系统会随时调度该进程。如果不能被执行,进程就处于阻塞状态,操作系统就不会调度这个进程。如果进程处于就绪状态,高优先级的进程会被操作系统优先调度,并且调度该进程的时间多,频率高;低优先级的进程会被后调度,并且调度该进程的时间少,频率低。进程调度时,操作系统会切换进程,会出现操作系统将进程从CPU上调度走的情况,因此调度走之前会保存本次进程执行的上下文(通常为CPU寄存器的值),下次再调度该进程时,需要按照这次的上下文,继续执行。调度进程时,操作系统会记录调度各个进程的在CPU上的执行时间,即记账信息。依据记账信息,操作系统就会知道哪个进程调用的时间多,哪个进程还没有被调用,进而调整调度策略,防止低优先级的进程总是不被调用,避免影响用户使用功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值