操作系统(OS)的概念:一个基本的程序集合
其中包括:
(1)内核(进程管理,内存管理,文件管理,驱动管理)
(2)其他程序(例如函数库,shell程序等)
OS是一款纯正的"搞管理"的软件
(1)可以是对硬件的管理也可以是对软件的管理 (2)可以是对内的管理(对进程),也可以是一种对外业务的管理(对硬件资源操作)
进程
首先什么是进程?
对操作系统来说,一个任务就是一个进程
课本概念:程序的一个执行实例,正在执行的程序等
内核观点:担当分配系统资源(CPU、内存)的实体,具有动态特性
这里注意程序和进程的区别:
程序:在硬盘上静态的可执行文件(可执行的程序代码)
进程:程序运行起来后表现为进程,进程是系统分配资源
———————————————————————————————————————
在编写一个进程之后运行,即可任务管理器中查看到该进程,如下:
public static void main(String[] args) throws Throwable {
Thread.sleep(99999);
}
PID为进程的代号
PDI结构体来管理进程(包括进程的各种信息,如PDI进程名称、状态、占用资源)
———————————————————————————————————————
那么Java程序又是如何进行的呢?
有关时间片的认识
现在一般的操作系统都支持“多任务”的操作系统,即可以同时运行多个任务
————————————————————————————————————————————————
操作系统的任务调度是采用时间片轮转的抢占式调度方式(一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行)
————————————————————————————————————————————————
而执行任务的这一小段时间就为时间片
————
任务正在执行的状态为运行态(正处于时间片调度到的进程)
任务执行一段时间后强制暂停去执行下一个任务,被暂停的任务处于就绪态等待下一个属于它的时间片
系统调度进程:进程在运行态和就绪态之间转换
并发
CPU的执行效率非常高,时间片非常短,在各个任务之间快速切换,人的肉眼感知是进程同时执行(其实有CPU的时间片轮转调度),即我们所说的并发
并发与并行
并发:多个进程在一个CPU下采用时间片轮转的方式,在一段时间内,让多个进程都得以推进
——》(假同时,一个时间只有一个进程执行)
并行:多个进程在多个CPU下分别同时运行
——》(真同时,一个时间点,多个进程同时执行)
内核态与用户态?
内核态(核心态):操作系统内核作为直接控制硬件设备的底层软件,权限最高
用户态:用户程序的权限最低
如何理解内核态和用户态?
举个例子:一个人去银行办理业务,这个人自己进行填表,这就叫做用户态
————>
那么如果这个人通过窗口将表交给工作人员,让工作人员进行相关操作,这时对这个人来讲,就为陷入内核,工作人员在帮忙办理业务的状态即为内核态
这里注意用户态和内核态的相互转换比较耗时需要向系统申请
进程中的上下文
上下文简单来说就是一个环境,进程在时间片轮转切换时,由于每个进程的环境不同,就涉及到转换前后上下文环境的切换
即为一个进程在执行的时候的CPU的所有寄存器中的值、进程状态及堆栈上的内容
切换时要保存当前进程的所有状态,即保存当前进程的进程上下文
在这里插入图片描述
阻塞:进程不具备运行条件,正在等待某个事件完成