【JavaEE】计算机组成以及操作系统(进程)的基本知识

目录

前言

1、计算机基本组成

1.1、存储器 

2、操作系统

2.1、 进程(任务)的概念

2.2、进程的管理 

2.2.1、进程控制块PCB(process control block)

2.3、CPU分配(进程调度)

2.3.1、并发

2.3.2、并行

2.4、进程管理(PCB)的一些属性

2.4.1、进程的状态

2.4.2、进程的优先级 

2.4.3、进程的上下文

2.4.4、进程的记账信息

2.5、操作系统的常用数据结构


前言

相信计算机相关专业的同学对冯诺依玛体系结构一定是相当熟悉吧。现代的计算机大多遵守冯诺依曼体系结构。

1、计算机基本组成

【JavaEE】计算机组成以及操作系统(进程)的基本知识_第1张图片

  • cpu(中央处理器  ):进行算数运算和逻辑判断
  • 存储器:分为外村和内存,用于存储数据(使用二进制方式存储)
  • 输入设备:用户给计算机发号施令的设备。
  • 输出设备:计算机给用户汇报结果的设备。
  • 数据流:一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。由指令流调用的数据序列,包括输入数据和中间结果。

数据流是一串连续不断的数据的集合,就像水管里的水流,在水管的一端一点一点的供水,而在水管的另一端看到的是一股连续不断的水流。类比,数据写入程序可以是一段一段的向数据流管道当中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取的程序来说,看不到数据流再写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据。不管写入时是将数据分次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。

  • 指令流:机器执行的指令序列
  • 控制流:是计算机执行一个程序中语句的顺序。

1.1、存储器 

在计算机上的数据有三种存储方式,一种是外存,一种是内存,一种是CPU缓存。

  • 外存:比如电脑上的硬盘,磁盘,U盘等都是外存
  • 内存:是暂时存储进程以及数据的地方,又称为主存,是CPU能直接寻址的存储空间。
  • CPU缓存:缓存就是数据交换的缓冲区,是贮藏数据(使用频繁的数据)的临时地方。当用户查询数据时,首先在缓存中寻找,如果找到了则直接执行,如果找不到,则取数据库中查找。
  1. 存储量:外存的最大,其次是内存,最后是CPU缓存。
  2. 数据的读取速度:CPU缓存 > 内存 > 外存。

2、操作系统

操作系统的作用是控制和管理系统资源。操作系统是管理硬件与软件资源的计算机程序。

操作系统的分层试图

【JavaEE】计算机组成以及操作系统(进程)的基本知识_第2张图片

 操作系统由两个基本功能:

  1. 防止硬件被失控的应用程序滥用 
  2. 向引用程序提供和简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备

操作系统是一个非常大的概念,他是一个软件,这里与我们关系最大的就是,操作系统对进程的管理。 


2.1、 进程(任务)的概念

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配基本单位是操作系统结构的基础。

  • 狭义定义:进程就是一段程序的执行过程
  • 广义定义:进程是一个具有一定独立功能的程序,关于某个数据集合的一次运行活动。他是操作系统动态执行的基本单元在传统的操作系统中,进程即是基本的分配单元,也是基本的执行单元。

下面这些被运行起来的程序可以理解为进程 

【JavaEE】计算机组成以及操作系统(进程)的基本知识_第3张图片

 进程是一个“执行中的程序”,程序是一个静态的没有生命的永久的实体,当操作系统执行他时,他才能成为一个活动的实体。我们将他称为进程。进程是一个动态的,暂时的状态变化的过程


2.2、进程的管理 

由上边的图可以看到,由于进程很多,所以需要管理,如果只有几个进程的话,也就涉及不到管理。

所谓的管理,分为两步:

  • 描述一个进程:使用结构体/类,把一个进程有哪些信息,表示出来。
  • 组织这些进程:使用一定的数据结构,把这些结构体对象放到一起(通常使用双向链表链接起来)

描述每个进程的结构体,在概念上被称为进程控制块(PCB)。 

2.2.1、进程控制块PCB(process control block)

进程控制块是进程实体的一部分,是操作系统中最重要的记录行数据结构。他是进程 管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时,建立PCB,伴随进程运行的全过程,直到进程撤销而撤销。

PCB进程控制块是进程的静态描述。

  • 进程控制块(PCB)的属性:这里只介绍几个重要的属性,
  • 程序ID:(PID:进程句柄):他是唯一的,一个进程都必须对应一个PID。PID一般是整形数字,程序ID 是每个进程的唯一标识。
  • 内存指针:当前这个进程使用的内存是那一部分【进程运行的时候,使用了那些内存上的资源】
  • 文件描述符表:进程每次打开一个文件,就会产生一个“文件描述符”(标识了这个被打开的文件),一个进程可能会打开很多文件,对应了一组文件描述符。把这些文件描述符放到一个顺序表这样的结构里,就构成文件描述表。【体现的是,进程运行的时候,使用了那些硬盘上的资源(使用了那些文件)】

【JavaEE】计算机组成以及操作系统(进程)的基本知识_第4张图片

文件:比如硬盘上存储的数据,就是以文件为单位存储的。

说到这里,可以看到进程的运行,需要从操作系统这里申请资源。我们也就能理解,进程是操作系统进行资源分配的基本单位(此处设计到的资源包括不限于内存,硬盘,CPU缓存等,这些资源在分配的时候都是以进程为单位分配的)。


2.3、CPU分配(进程调度)

概念: 需要进程调度的理由很充分,即充分利用计算机系统中的CPU资源,让计算机能够多快好省的完成各种任务。为此,可在内存中存放数目远大于计算机系统内CPU个数的进程,让这些进程在操作系统的进程调度器下,能够让进程高效(高的吞吐量--throughput)、及时(低延迟--latency)、公平(fairness)地使用CPU。为此调度器可设计不同的调度算法来选择进程,这体现了进程调度的策略,同时还需并进一步通过进程的上下文切换(context switch)来完成进程切换,这体现了进程调度的机制。
 

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

咱们的应用程序能够运行,全依靠CPU,每个程序相当于一个二进制指令的集合,这些指令靠CPU运行。这里我们来了解一个CPU的概念(核心数)

【JavaEE】计算机组成以及操作系统(进程)的基本知识_第5张图片

同一时间一个逻辑处理器可以运行一个进程

 以小编的电脑为例,有4个内核,8个逻辑处理器,就相当于1个人可以干两个人的活,

可以这样理解,我有4个核心,可以同时运行8个进程,在上面的进程中的图片中,这台电脑当时要处理100个进程,我这8个进程不可能同时运行100个进程。所以这里就设计到了并行和并发的概念。

2.3.1、并发

一个逻辑处理器,先执行进程1,执行了一会之后,再去执行进程2,在执行一会之后,再去执行进程3 ......,此时只要这里的切换速度非常块,看起来,进程1,2,3就是“同时”执行。

2.3.2、并行

同一时刻,两个逻辑处理器,同时执行两个进程,此时这两个进程就是并行执行的。


通过并行和并发的操作,虽然我们只有8个逻辑处理器,但是可以同时执行这100个进程了。

并行+并发完全是由操作系统自身控制的,程序员感知不到,所以我们吧并行+并发统称为并发。

 要完成进程的调度,还是需要PCB(进程的管理)里边的一些属性,进行支撑。

2.4、进程管理(PCB)的一些属性

2.4.1、进程的状态

可以简单认为,进程的状态主要有这两个:

  • 就绪态:该进程已经准备号,随时可以上CPU执行
  • 阻塞态:该进程暂时无法上CPU执行。

 可以这样理解,有三个朋友A,B,C,你想出去玩,A说现在有事情在忙,无法和你出去玩;这就是“阻塞态”;但是朋友B和C没有事情,随时都可以找他们去玩,这就是“就绪态”。

2.4.2、进程的优先级 

进程之间的调度不是“公平”的,有的要优先调度。

 比较重要的事物,优先级最高,让他先调度,先给他分配资源,优先级最低的,给他分配最少的资源。

2.4.3、进程的上下文

描述了当前进程执行到哪里这样的“存档记录”,进程在离开CPU的时候就要把当前的运行的中间结果“存档”。等到下次进程回来CPU上,再恢复之前的“存档”,从上次的结果继续往后执行。

 所谓上下文具体值得就是进程运行过程中,CPU内部的一系列寄存器的值

寄存器有很多种,其中最典型的作用,就是保存当前进程的执行的中间结果,包括进程运行到那一条指令。

进程离开CPU,就需要把这些寄存器的值,保存到PCB的上下文字段中,进程下次回来CPU,再把PCB中的值给恢复到寄存器中。

存档:进程离开CPU的时候,需要将寄存器中的值保存下来放到PCB上下文字段中。

读档:进程下次回来,CPU在把PCB上下文中的值恢复到寄存器中。

❗❗❗注意:这里为什么要提到将寄存器中的值保存下来???


上面说过在同一时间,一个逻辑处理器只能处理一个进程。CPU每个逻辑处理器有自己的寄存器,当一个进程运行时,这个寄存器表示这个进程的执行结果,但是当运行另一个进程的时候,他就需要表示另外一个的执行结果。所以当进程离开CPU的时候,要将寄存器当中的值保存下来。

 


2.4.4、进程的记账信息

统计每个进程,在CPU上执行了多久了,执行到那句指令了。这个就可以作为调度的参考依据。


2.5、操作系统的常用数据结构

操作系统往往使用双向链表这样的数据结构来组织PCB。

  • 创建一个进程就是创建一个链表的结点
  • 销毁一个进程就是把链表中的结点给删除了
  • 遍历进程就是遍历双向链表。

你可能感兴趣的:(Java,服务器,运维)