关于进程调度的基本过程

目录

进程是什么

使用PCB来描述进程

进程的执行方式


进程是什么

进程(process) :一个程序运行起来,在操作系统中,就会出现一个对应的进程,进程,就是一个跑起来的应用程序。例如,我们打开任务管理器,就能查看当前运行的所有进程。

注:除了上述自己运行的程序是进程之外,还有一些系统自带的/安装某些程序,给你添加的,对于你的系统能够稳定运行有很重要的意义的。(误删可能搞坏系统哦)

  想要让一个程序运行,就必须得给这个进程分配系统资源。(包括cpu,内存,硬盘,网络带宽)所以,进程也可以视为是操作系统进行资源分配的基本单位。

使用PCB来描述进程

   操作系统中可能包含大量的进程,一旦东西多了,就得考虑”管理“。对于管理这个事情,操作系统的通用做法,是先“描述”,再“组织”。下面我们围绕这两个词展开:

描述

  进程是在宏观层面对于一个程序的描述,那么关于这个进程更详细的信息该怎样展示呢?我们可以使用结构体/类来存储一个进程的核心信息。这样结构体我们称之为PCB。通常称为进程控制块(落实到具体的操纵系统上,不同的操作系统代码中实际上的名字是不一样的。比如Linux的PCB实际的名字是task_struct)  

pcb中包含很多的信息,此处只讨论几个比较重要的:

1. pid  进程的id/标识符

相当于进程的身份证号码,同一个机器,同一个时刻,进程id肯定是互不相同的。

2. 内存指针   管理进程运行时,内存资源的分配

  一个程序,在运行的时候,就会被从硬盘加载到内存中。此时要去读取该程序中的数据和指令。内存指针的作用就是告诉操作系统该程序的数据和指令都在内存中的哪里存着。

3. 文件描述符表

一个进程运行的时候,会操作一些文件。通过一个“顺序表”这样的数据结构,记录下当前这个进程,都打开了哪些文件。要操作文件,需要先打开文件。

4.状态   描述一个进程能不能用,如果进程可以随时运行,我们称进程处于:"就绪状态",如果进程无法正常运行,我们称之为“阻塞状态”。处于阻塞状态的进程,无法在cpu上执行。

5. 优先级  进程之间先运行谁,后运行谁。

6. 上下文  进程在cpu执行过程中,也会产生很多的“中间结果”,在进程切换出cpu之前,就需要把这些中间结果(cpu的各种寄存器中的值)保存到pcb的上下文里(寄存器-> 内存),下次这个进程回到cpu上执行的时候,就需要把之前的存档回复回来(内存-> 寄存器)。其中,有一个pc程序计数器记录执行到哪个指令了。下次执行,就是沿着上次执行到的地方继续执行。(这里的中间结果都是和之前一样的)

7.记账信息  一张表格来统计各个进程分配了多少时间, 操作系统要避免某个进程一直吃不到cpu资源,就会进行统计,给吃的少的进程,适当的多分配一些。

组织

  操作系统中,通常会使用链表这样的数据结构,来把多个PCB串起来。

进程与pcb的关系如下:

1. 任务管理器中查看进程列表

   就是在遍历链表中的每个节点,并且获取显示出对应的信息。

2. 创建新的进程(双击某个程序运行)

新的进程创建出一个新的pcb,并且添加到上述链表中。

3. 销毁某个进程(某个程序退出)

 要把链表上对应的pcb节点给删除掉

  具体过程例如,以下代码

int mian(){

    printf("hello");

}

首先,双击test.exe可执行文件,此时操作系统就会产生一个进程出来,同时把exe里包含的指令和数据加载到内存中,然后再创建一个pcb,再把pcb加入到内核的链表中。

注:pcb只是个小本子,记录了关于这个进程的信息。就像货品清单,不能说数据和指令存储在pcb中,就像货品不能存储在清单中。

进程的执行方式

  我们在任务管理器中看到,系统中包含了很多进程,每个进程都需要执行。执行就需要占用cpu资源,去cpu上执行。当进程的数量很多的时候,我们就需要一定的方法来管理进程。主要的方法分为并行执行并发执行

并行执行(分时复用):cpu往往有很多核心,一个核心,同一时刻,运行一个进程。有16个核心,同一时刻,就可以运行16个进程。(完全是同时执行)

并发执行:一个核心,不同时刻,可以执行不同的进程,这一刻,执行进程1,下一刻,执行进程2,cpu把总的执行时间,切换成若干个小的片段,每个片段执行一个进程,每个片段称为“时间片”就像同一段铁轨,可以这会跑一列火车,下一会再跑另一列火车。由于时间片比较短,cpu切换进程的速度极快,人感知不到,站在人的角度来看,就是这若干个进程在”同时执行“(本质上不是)。

总结: 并行,微观时间上是同时执行。 并发,宏观时间上是同时执行,微观时间上是串行执行。因此,往往就把并行和串行统称为“并发”,把编写解决并发问题的程序,称为“并发编程”。操作系统会按照并行+ 并发的互相搭配,运行所有的进程。

以上内容,希望能够令你对进程有更清晰的认识。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值