到底什么是进程+进程基本调度的基本过程总结
创始人
2024-06-02 05:02:17
0次

本篇文章将介绍什么是进程,进程基本调度的基本过程是什么,本文将详细帮你重新认识进程,原喜欢!!


目录

一、操作系统(Operating System)

二、操作系统中的进程管理

2.1什么是进程?

2.2进程控制块抽象(PCB Process Control Block)

2.3.CPU 分配 —— 进程调度(Process Scheduling)

 三、内存分配 —— 内存管理(Memory Manage)

四、进程间通信(Inter Process Communication)


一、操作系统(Operating System)

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

操作系统的定位

 

 操作系统由两个基本功能:
1) 防止硬件被时空的应用程序滥用;
2) 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

二、操作系统中的进程管理

2.1什么是进程?

简单来说:进程(process)/任务(task)一个运行起来的程序,就是进程。

 .exe的是一个可执行文件,当双击这个文件的时候,程序就跑起来,于是在系统中形成了一个进程。可以在任务管理当中看见所有运行的进程。

 进程管理,其实就是分俩步:

1.描述一个进程,使用结构体/类,把一个进程有哪些信息,表示出来。

2.组织这些进程:使用一定的数据结构,把这个结构体或者对象放到一起。

进程的结构体PCB(process control block)里面的属性

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

2.内存指针 表示当前使用这个进程的内存是哪一部分,使用了哪些资源

3.文件描述符表 文件:比如硬盘上存储的数据,往往就是以文件为单位进行整理的,进程每次打开一个文件,就会产生一个文件描述符,一组文件描述符放到顺序表中就构成文件描述符表

进程的特点:

  • 独立性
  • 进程是系统中独立存在的实体,它可以拥有自己独立的资源,每个进程都拥有自己私有的地址空间,在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间
  • 动态性
  • 进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合,程序加入了时间的概念以后,称为进程,具有自己的生命周期和各种不同的状态,这些概念都是程序所不具备的.
  • 并发性
  • 多个进程可以在单个处理器CPU上并发执行,多个进程之间不会互相影响.

2.2进程控制块抽象(PCB Process Control Block)

计算机内部要管理任何现实事物,都需要将其抽象成一组有关联的、互为一体的数据。在 Java 语言中,我们可以通过类/对象来描述这一特征。

// 以下代码是 Java 代码的伪码形式,重在说明,无法直接运行
class PCB {
// 进程的唯一标识 —— pid;
// 进程关联的程序信息,例如哪个程序,加载到内存中的区域等
// 分配给该资源使用的各个资源
// 进度调度信息(留待下面讲解)
}

这样,每一个 PCB 对象,就代表着一个实实在在运行着的程序,也就是进程。
操作系统再通过这种数据结构,例如线性表、搜索树等将 PCB 对象组织起来,方便管理时进行增删查改的操作。

2.3.CPU 分配 —— 进程调度(Process Scheduling)

操作系统对CPU资源的分配,采用的是时间模式 —— 不同的进程在不同的时间段去使用 CPU 资源。

进程的运行,需要从操作系统这里申请资源,进程是操作系统进行资源分配的基本单位。

接下来的一组属性,就是描述和CPU资源相关的属性,这些都是辅助进行,进程调度

1.进程状态:a.就绪态 :该进程已经准备好,随时可以上cpu执行

                     b.阻塞态 :该进程暂时无法上cpu执行

2.进程的优先级:进程之间的调度不一定是公平的,需要一定的优先调度

                     A优先级最高

                     B其次

                     C最低

3.进程的上下文:所谓上下文就是描述了当前进程执行到哪里这样的存档记录,当进程在离开CPU的时候就要把当前运行的中间结果,“存档”等待下次进程回来CPU上,恢复之前的“存档‘。

4.进程的记账信息:统计了每个进程在CPU上执行了多久,可以作为调度的参考依据。

 

进程的调度分为并行和并发,

所谓并行就是同一时刻,俩个核心,同时执行俩个进程,此时这俩个进程就叫做并行执行的。

所谓并发就是一个核心,先执行进程1,再去执行进程2,再去执行进程3,只要切换速度够快,看起来就是同时执行进程1,2,3。

很多时候会把并行+并发叫做并发!!

 三、内存分配 —— 内存管理(Memory Manage)

操作系统对内存资源的分配,采用的是空间模式 —— 不同进程使用内存中的不同区域,互相之间不会干扰。

 

操作系统给进程分配的内存, 是以”虚拟地址空间’的方式进行分配的,每个进程访问的内存地址,都不是真实的物理地址!!

 上面的图是直接访问物理地址,那么这样子会产生BUG,所以操作系统采用另一种方式

这样的话,这俩个进程所用的内存地址,会自动映射到真实的物理地址内存上,但是进程自身感知不到实际的物理地址是什么

四、进程间通信(Inter Process Communication)

如上所述,进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了进程之间互相具备”隔离性(Isolation)“。

简单来说:就是在隔离性的前提下,找一个公共的区域,让俩个进程借助这个区域来完成数据交换。

但现代的应用,要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进行配合地达到应用的目的,如此,进程之间就需要有进行“信息交换“的需求。进程间通信的需求就应运而生。
目前,主流操作系统提供的进程通信机制有如下:
1. 管道
2. 共享内存
3. 文件
4. 网络
5. 信号量
6. 信号
其中,网络是一种相对特殊的 IPC 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同一主机上的进程间进行通信。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...