0


操作系统 --- 进程

文章目录

1. 冯诺依曼体系结构

现代的计算机,大多数都是遵守冯诺依曼体系结构

冯诺依曼体系结构 主要由 五大部件 组成:

  • 存储器: 用来存放数据和程序
  • 运算器: 主要运行算数运算和逻辑运算,并将中间结果暂存到运算器中
  • 控制器: 主要用来控制和指挥程序和数据的输入运行,以及处理运算结果
  • 输入设备: 用来将人们熟悉的信息形式转换为机器能够识别的信息形式,常见的有键盘,鼠标等
  • 输出设备: 可以将机器运算结果转换为人们熟悉的信息形式,如打印机输出,显示器输出等

在这里插入图片描述
注:

  1. 运算器控制器 合为 中央处理器(CPU)
  2. 中央处理器 : 是进行算术运算逻辑判断
  3. 存储器 分为 内存外存
  4. 输入设备输出设备 合为 I/0设备
  5. 针对于 存储空间 : 磁盘 > 内存 >> CPU
  6. 针对于 数据访问速度 : CPU >> 内存 > 磁盘

2. 操作系统

操作系统 (Operating System) 简称 OS.

操作系统是一组做计算机资源管理的软件的统称。
目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等

OS分类

  1. 管理者的任务种类分两种:硬件管理,软件管理
  2. 按照目标对象分两种:一种对内的管理,一种对外业务进行管理

3. 进程

3.1 进程的概念

进程(process) 也叫做 任务(task).对于操作系统来说 一个任务就是一个进程

进程 就是一个"正在运行"的程序,换言之,可以把进程看做程序的一次运行过程;
同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

要想让进程跑起来,就得给这个进程分配一定的系统的硬件资源:

CPU,内存,磁盘,网络宽带,...

在这里插入图片描述

3.2 进程在系统中是如何被管理的

**

管理 = 描述(PCB) + 组织

**

  1. 描述 : 进程控制块(PCB)
  2. 组织: 使用一定的数据结构来组织.常使用双向链表实现.

查看进程列表: 本质上就是遍历操作系统内核中的这个链表,并显示其中的属性.
创建一个进程: 本质上就是创建一个PCB对象,后加入到内核的链表中
销毁一个进程: 本质上就是删除内核链表中的这个PCB对象.

3.3 进程控制块

进程控制块(PCB Process Control Block) ,我们可以把进程控制块看作 一个类 或 C语言的结构体.
一个PCB对象就对应一个进程

PCB中有哪些属性?

  1. pid : 一个进程的身份标识.一个机器同一个时刻不会存在2个pid相同的进程.
  2. 内存指针 : 描述了这个进程使用的内存空间是哪个范围(虚拟地址空间)
  3. 文件描述符表 : 描述了这个进程都打开了哪些文件.
  4. 进程调度信息(进程的状态,进程的优先级,进程的上下文,进程的记账信息)

3.4 操作系统的并发和并行式执行

例子:
现有一个有钱的,但是长得丑的男 A,一个没钱的,但是长得帅的男 B, 以及一个没钱的长得丑,但是会舔的男 C.
要想同时和 A B C 三个人一起交往该如何实现?

今天和A一起吃饭逛街
明天和B一起看电影
后天和C一起去上课

只要安排的合理 A B C 就不知道互相的存在.

从宏观上来看(以一年为单位): 同时与3个人进行交往
从微观上来看(以一天为单位): 同一时间只与一个人交往

3.4.1 并发式执行

由于CPU的运行速度非常快,虽然CPU在进行切换,但是用户却看不见这切换的过程.从宏观上来看是同时进行的,从微观上来看是交换进行的.

3.4.2 并行式执行

因为多核CPU可以同时执行多个程序,如 8核CPU 可以 同时执行8个程序.
CPU1执行了 进程1
CPU2执行了 进程2
进程1 和 进程2 不论从宏观上来看还是从微观上来看都是同时执行的

3.5 进程的状态

  • 创建状态: 进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。
  • 就绪状态: 进程处于可运行的状态,只是CPU时间片还没有轮转到该进程,则该进程处于就绪状态。
  • 运行状态: 进程处于可运行的状态,且CPU时间片轮转到该进程,该进程正-在执行代码,则该进程处于运行状态。
  • 阻塞状态: 进程不具备运行条件,正在等待某个事件的完成
  • 终止状态: 进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行.在这里插入图片描述

3.6 进程的优先级

进程的优先级 就是 安排时间表的时候,优先给谁安排

例如 现有12块时间.
最喜欢 B ,就给 B 分配了 7块时间
其次最喜欢 C , 就给 C 分配了 4块时间
最不喜欢 A ,就给 A 分配了 1块时间

这样就优先给 B 其次是 C 最后是 A

3.7 进程的上下文

进程的上下文 : 简单说来就是一个环境,进程在时间片轮转切换时,由于每个进程运行环境不同,就涉及到转换前后的上下文环境的切换,就是一个进程在执行的时候, CPU的所有寄存器中的值、进程的状态以及堆栈上的内容。切换时需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。

3.8 进程的记账信息

记录当前这个进程在CPU上执行了多久了,用来辅助决定这个进程是继续在CPU上执行,还是说要调度出去.

3.9 内核态与用户态

一般的操作系统(如Windows、 Linux)对执行权限进行分级:用户态和内核态。

  • 操作系统内核作为直接控制硬件设备的底层软件,权限最高,称为内核态,或核心态。
  • 用户程序的权限最低,称为用户态。

例如 : 张三去银行办理业务,首先需要去填表(个人信息),这就是用户态
填好表后,交给银行的工作人员,让工作人员帮你办理业务,这就是内核态.

3.10 进程的虚拟地址空间

在这里插入图片描述
为啥要搞一个"虚拟地址空间"
为啥不让进程直接访问真实的物理地址?

为了一定程度减少内存访问越界带来的后果.
例如进程1 的内存范围是 0x100~0x400 ,此时如果尝试修改0x401的地址数据,这个操作就是越界访问.

在真实的物理地址的情况下,如果修改了 0x401 ,这个地址可能是进程2的,此时进程2就可能出bug了.

在虚拟地址的情况下,如果修改了 0x401 ,此时进行 0x401 的页表查询,由于0x401是非法地址,就查找不到, 于是就让 这个进程崩溃,防止影响其他的进程.

这样就让进程和进程之间相互影响的可能性变小了,隔离性增加了,进程也更稳定了.缺点就是两个进程需要相互配合的时候,沟通起来就麻烦了.

标签: 操作系统 进程

本文转载自: https://blog.csdn.net/wwzzzzzzzzzzzzz/article/details/123501266
版权归原作者 wwzzzzzzzzzzzzz 所有, 如有侵权,请联系我们删除。

“操作系统 --- 进程”的评论:

还没有评论