区分程序与进程的概念_cmd关闭软件进程「建议收藏」

区分程序与进程的概念_cmd关闭软件进程「建议收藏」1.什么是程序?一套做数据处理的步骤

目录

1.什么是程序?

2.什么是进程?

        1.站在用户角度的视角(⭐)

        2.站在 OS(操作系统)实现的角度看什么是进程(⭐)

        3.理解进程

3.进程管理/进程调度

做好进程调度,我们面临的问题

4.由进程管理,引出的一些 OS 概念

1.并行 VS 并发

2.用户态 VS 内核态


1.什么是程序?

一套做数据处理的步骤。程序 = 指令+ 数据。是一套静态的步骤。(比如说菜谱)

程序是静态的,一般表现为一个或一组文件

2.什么是进程?

        1.站在用户角度的视角(⭐)

英文本意就是:过程

进程是程序的一次执行过程——按照菜谱的一次做菜的过程,进程是动态的

一个程序,可以进行多次执行(表现为多个进程);甚至可以“同时”执行(多个进程同时存在)

进程是程序在“运行阶段”的视角主题

        2.站在 OS(操作系统)实现的角度看什么是进程(⭐)

进程是 OS 进行资源分配的基本单位

进程是 OS 进行资源分配的最小实体

1.OS 的职责:协调者/管理者

2.资源:被 OS 管理的资源(硬件资源、软件资源)

3.分配的实体/单位:分配的时候,只考虑到这一层级

4.基本/最小:允许有更高层次的单位,但最低到进程

换言之

同一个进程中的资源是共享的(如果存在比进程更低级的单位,是共享的);不同进程之间的资源是隔离的。

A 进程只能访问 A 进程自己的资源(这里主要讨论内存);A 进程无法访问 B 进程的资源(内存);更无法访问被 OS 直接管理的资源。

        3.理解进程

1.动态过程        2.绑定一个程序        3.允许同时存在        4.OS 内部进行资源申请的最小个体

OS 要管理进程,进程是 OS 内部非常核心的一个概念。可以把 OS 的职责做个简单的划分:

1. OS 进行CPU 协调的模块——进程管理模块:主要负责进程的调度工作——主持不同进程在 CPU 运行的时间划分。

实践中,OS 需要负责把 进程 A 从 CPU 上拿下来,把 进程B 放到 CPU 上通过修改 PC 寄存器的值,让 CPU 去执行属于 B 的指令。

2. OS 进行内存协调的模块——内存管理模块:主要负责内存空间的分配工作——进程通信的问题

3. 硬盘最为主要的二级存储,是比较重要的一个IO 设备——OS 进行硬盘上的数据的协调模块:把硬盘上的数据抽象成文件(包含文件夹/目录)的概念。——文件夹管理模块

4.网络管理模块

5.其他硬件——以文件驱动的形式进行管理——驱动管理

3.进程管理/进程调度

同一个颜色代表一个进程

区分程序与进程的概念_cmd关闭软件进程「建议收藏」

做好进程调度,我们面临的问题

1.需要把进程(程序执行的过程)这个抽象的概念,用数据表示处理——面向对象的思想

变成数据,才能被计算机进行处理(才能被 OS 这个软件进行处理)

OS 需要管理多个进程,通过数据结构组织起来管理List、Map、Queue

2.需要对进程做个区分:哪些可以分配给 CPU ,哪些暂时还没准备好

通过对进程状态做状态划分(⭐),来区分出处于不同情况下的进程——进程状态/状态的转义(随着时间的变化,进程的情况也在变化)

新建(进程处于正在创建中)

就绪(万物具备,只欠CPU)

运行(进程的指令正在 CPU 运行着)

阻塞(进程由于等待外部条件,所以暂时无法继续)

结束(进程的所有指令执行结束,但 PCB 暂时保留,OS 还需要做一些其他的工作的时候)

区分程序与进程的概念_cmd关闭软件进程「建议收藏」

 所有运行状态必须是从就绪状态变过去的。进程的 CPU 必须经过 OS 系统分配才能得到。

每个状态的转化过程:

=> 新建:随着程序的启动运行

新建 => 就绪:进程的初始化工作全部完成(这个工作是由 OS 的指令完成的)

就绪 => 运行:进程被 OS 选中,并分配了 CPU 之后

运行 => 结束:进程的最后一条指令执行结束(粗略的理解,就是 main 方法执行结束了)

运行 => 就绪:1.被高优先级的进程抢占了 2.时间片耗尽 3.进程可以执行一些 OS 提供的系统调用,主动放弃

运行 => 阻塞:等待一些外部条件:等待 IO 设备;进程休眠一段时间哎

阻塞 => 就绪:外部条件满足:IO 数据来了;休眠时间到了

结束 => :进程 PCB 彻底被 OS 回收了

站在 OS 角度,同一时刻,处于不同的状态下的进程不止一个。

就绪队列(一般只有一个):装所有处于就绪状态的进程,都是等待备CPU 分配的进程

阻塞队列(一般每个条件都可以有一个):等待某些外部条件的进程组成的队列

3.现在手上有等待分配 CPU 的所有进程列表——就绪队列,那么选择哪个进程上 CPU?

要求:要有消息,保证公平性,要让更紧急的任务被更紧急的处理,低成本解决

先来先服务、优先级划分(进程PCB 中需要管理一个优先级属性)、短作业优先级…

4. OS 什么时候会介入进程调度:需要选择一个新的进程,进行CPU 分配

        1.一个新的进程刚出狱就绪状态时,当该进程的优先级较高时——具备这种能力的 OS 被称为抢占式(实时)

        2.运行状态的进程 => 结束。一个进程结束了

        3.OS 每隔一段时间,会调度一次:进程的时间片耗尽

        4.进程主动放弃 CPU:运行 => 阻塞;运行 => 就绪

        5.OS 具体怎么进程切换:通过上下文切换——保护上一个进程的上下文 + 恢复下一个进程的上下文

上下文概念:

可以用环境这个词去理解

讨论到进程调度中,上下文指的是:以 PC 寄存器所代表的一组寄存器中的值

保护上下文:把寄存器中的值,保存到内存的某个位置

恢复上下文:把内存中之前保护的值,写入寄存器中

区分程序与进程的概念_cmd关闭软件进程「建议收藏」

4.由进程管理,引出的一些 OS 概念

1.并行 VS 并发

并行:进程真的同时在执行(从微观角度的同一时刻,是由多个指令在执行的,所以只会在多CPU 多核场景下)

并发:进程假的同时在执行(微观上,一次只执行一个进程;宏观上,多个进程在“同时”执行)

2.用户态 VS 内核态

区分程序与进程的概念_cmd关闭软件进程「建议收藏」

 CPU 正在执行的是 OS 的指令时,就进入到内核态。执行普通进程的指令时,就在用户态

管理的核心就是权限的划分

  • 内核态的指令权限高(所有硬件都能访问)
  • 用户态的指令权限低(只能访问 OS 规定的资源)

CPU 本身就有权限开关,所以可以做到

内核态指令可以访问所有内存,用户态指令只能访问进程自己的内存

用户态和内核态之间的转换,是通过1)系统调用:操作系统实现一组访问。2)CPU 中断进程 OS 的指令。

用户态的性能较好,内核态的性能较差


执行流:拥有独立 pc 的一套指令;不同的执行流从现象上看起来的完全独立的

今天的文章区分程序与进程的概念_cmd关闭软件进程「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/89602.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注