目录
一、计算机基本原理
1.1 什么是程序
程序是一组计算机能识别和执行的指令或命令的集合,程序能帮助计算机完成我们想要完成的工作。
程序存储在磁盘上,使用程序时,从磁盘到内存再到寄存器,最后被cpu执行。而让程序运行起来,就需要借助于操作系统了。
1.2 什么是操作系统
在当今市面上,常见的操作系统有Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等,虽然操作系统数量看起来很多,但本质却是一种东西。
1.2.1操作系统的定义
操作系统(Operation System, OS) 是指控制和管理整个计算机系统的硬件和软件资源,并合理的组织和调度计算机的工作和资源的分配,以提供给用户和其它软件方便的接口和环境,它是计算机系统中最基本的系统软件。
操作系统层次图:
1.2.2操作系统的功能
操作系统作为计算机的资源管理者,能为我们提供哪些功能呢?
操作系统的两个基本功能
1.防止硬件被失控的应用程序滥用。
2. 为其它软件提供服务,分配其运行时所需的任何必要资源。
那么,操作系统是通过怎样的方式为应用程序分配运行时所需的资源的呢?
二. 什么是进程
2.1 进程的定义
操作系统最核心的概念就是进程。
为什么要引入进程(PCB Process Control Block)
从理论角度上看,进程就是对正在运行的程序过程的抽象。
从实现角度上看,进程是一种实体,每一个实体都有自己的地址空间,地址空间中保存了要执行程序的文本区域(存储要执行的代码),数据区域(存储变量和进程使用的动态分配的内存),堆栈区域(存储使过程中调用的指令和动态变量)。
计算机内部要管理任何现实事物,都要将其抽象为一组有关联的,互为一体的数据,在Java语言中,我们可以用类或者对象来描述进程这一事物。
//以下为伪代码形式,方便了解
Class PCB{
//进程的唯一标识 pid
//数据区域
//文本区域
//堆栈区域
}
每一个这样的对象。都是系统中运行的程序。
2.2 进程的特征
1.并发性:在计算机内存中,同时存在多个进程实体,这些进程在一段时间能够同时运行(同时存在,同时运行)。
如图所示:
2.动态性:进程的实质是程序在系统中的一次运行,是动态产生,动态消亡的。
一个未运行的.exe(可执行文件)可以近似看做一个静态进程,当我们不去运行它时,在系统内存中不会产生相对应的实体。
当我们双击运行时,.exe文件便在内存中产生了相对应的实体。
3.独立性
进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
2.3 进程调度
2.3.1 进程的状态
1.操作系统创建进程时,进程处于创建态,cpu调度进行时,进程处于运行态,此时其它已创建等待cpu调度的进程属于就绪态,某些进程因为某些原因不能继续运行下去,此时处于阻塞状态。
三种状态随着执行和条件的变化发生转换,如图所示:
2.3.2 进程优先级
进程间的调度不一定是“公平”的,系统按照不同的优先级调度进程的运行,分为0-15 级普通优先级和16-31
级实时优先级,高优先级先运行,只有当高优先级进程不运行时,才调用低优先级进程,进程优先级值越低,优先级越高。实时优先级和普通优先级的最大区别就在于,实时优先级不按照时间片轮转,先控制cpu的实时优先级进程不主动放弃cpu的控制权,同级或者低优先级的进程就无法运行。
2.3.3 进程的上下文
进程上下文:通俗来讲,就是一个进程在执行的时候,cpu的所有寄存器的值、进程的状态以及堆栈上的内容,当切换到另一个进程时,它需要保存当前进程的所有状态,即进程上下文,再次执行该进程时,能够恢复切换时的状态。
(此处仅粗略,深入了解请查询相关资料)。
2.3.4 进程记账信息
进程记账记录了每个进程占用cpu的时间量和少量的二进制数据,进程的记账信息是用来辅助系统对进程运行调度的,如果一个进程运行时间太短(此处的运行时间并不是指实际的时间,而是执行指令的条数)。
2.3.5 虚拟地址空间
我们知道进程是分布在内存中的,每个进程都会直接访问物理内存中的地址,如果不加以保护措施,进程的指针指向可能会导致越界访问,引起不必要的麻烦,所以我们必须对进程的内存地址进行限制。
页表:
我们给每个进程划分出专门的空间,成为页表(页表并不是真实存在的,一种逻辑页表),通过页表来实现虚拟地址映射到真实的物理内存上,出现越界问题直接中止该进程以免影响到其它进程。
这样操作,大大提升了操作系统的稳定性。
2.3.6 进程间通信
虚拟地址满足了隔离问题,但是有很多场景需要不同进程之间进行通信交互,进程间有很多通信方式,在Java中,并不鼓励多进程编程,所以在此我们并不深入探讨通信的具体实现。但无论是哪种通信,它们都具有一个核心原则,即划分一块进程都能访问的公共资源,然后基于公共资源使进程之间进行交换数据。
本次的介绍就到这里了,谢谢观看。