进程、进程管理、进程调度、内存管理、进程通信

进程(Process)
可执行文件(.exe)在这里插入图片描述
当一个程序(.exe文件)运行起来之后就形成了一个线程。

通过任务管理器我们可以观察电脑所有线程
在这里插入图片描述

进程管理
一台电脑时时刻刻都运行着上百条进程,为了便于管理,就有了进程管理。

进程管理的步骤

  • 描述进程:通过结构体/类,把一个进程包含哪些信息表示出来
  • 组织进程:使用一定的数据结构,把结构体/类存放在一起

进程控制块(PCB)
进程管理就是利用一些数据结构,把PCB组织在一起,比如双向链表。

1.创建进程:就是创建一个链表的结点
2.销毁进程:就是删除链表上的结点
3.遍历进程列表:就是遍历链表

  1. pid
    每个进程都有唯一的一个身份标识

第一次打开QQ,会产生pid1
关闭QQ后,再次打开,会产生pid2
pid1 != pid2

  1. 内存指针
    描述该进程的内存中哪部分是指令,哪部分是数据

操作系统有时要把一些必要的数据加载到内存中,运行的指令(代码),运行时依赖的全局变量

3.文件描述符
一个进程会打开很多的文件,对应一组文件描述符表(顺序表),每个元素代表一个打开的文件,表中对应的下标就是文件描述符

进程调度

  1. 进程状态 在这里插入图片描述

创建状态:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成(资源无法满足),就无法被调度运行,把此时进程所处状态称为创建状态。

就绪状态:进程已经准备就绪,已分配到所需资源,只要分配到CPU就能够立即运行。

执行状态:进程处于就绪状态被调度后,进程进入执行状态。

阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用。

终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行。

2.进程的优先级
系统按照不同的优先级调度进程的运行,优先级高的进程有先执行的权利。

A进程优先级最高、B进程优先级居中、C进程优先级最低
最后执行顺序为A>B>C

3.进程的上下文
进程在离开CPU时,会把寄存器的值保存在PCB的上下文字段中,再次执行时会把PCB中的值恢复到寄存器中并继续执行。

进程暂时离开,才会进行存档
进程执行结束,不会存档

4.进程的记账信息
统计每个进程在CPU上的执行时间,用来作为进程调度的参考依据

内存管理
操作系统对内存的分配,采用的是空间模式(不同进程使用内存中不同的区域,相互之间不会造成干扰)。
在这里插入图片描述
这个图描述的是进程1和进程2直接访问物理内存。这种访问可能会造成进程间相互干扰,如果进程1发生数据下标越界等问题,可能会访问到进程2所指向的内存。

虚拟地址空间:为了解决上述问题,提高进程的独立性和操作系统的稳定性,引用了虚拟地址空间的概念。
在这里插入图片描述
进程1、进程2分别分配一块虚拟空间,并通过页表映射到物理内存中,这样进程自身感知不到实际的物理地址。
如果某一个进程发生错误,在页表中找不到对应的地址,也就无法找到真正的物理地址。

进程间通信
进程之间并不是完全独立的,有时也需要有一些交互的操作。
进程间通信,是在进程保持独立性的前提下,通过公共区域,完成数据交换。

多进程编程

  • 进程是重量级的,进程的运行需要系统分配资源(耗时操作),速度慢、消耗资源多。
  • 系统首先会遍历自己的空闲内存表,找到合适大小的空间进行分配;多个进程申请资源,而系统只能一个一个进程的分配。

多线程编程

  • 线程是轻量的进程
  • 一个进程可以包含多个线程,每个线程都是一个可以独立调度执行的“执行流”。
  • 对于线程而言,系统资源提前分配好了的,可以较少资源开销。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值