目录
一,操作系统
1.概念
- 操作系统是一组做计算机资源管理的软件的统称。
- 目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等
2.操作系统管理进程
1)操作系统管理下层的硬件设备——通过硬件的驱动程序来进行管理的
2)操作系统管理上层的进程——任务管理器中可以看到
3)进程是系统分配资源的最小单位(基本单位)
3.操作系统运行/启动一个进程
1)操作系统运行一个进程首先要分配一些系统资源(硬盘,内存,网络等等)
2)进程启动需要先创建一个pcb(Process Control Block,进程控制块又叫Task)
3)操作系统管理进程,就是在一个数据结构中(常见如双向链表),存储每个进程的pcb
4)pcb包括
- pid:操作系统为每个进程分配的一个身份标识,一个系统中的pid是唯一的
- 内存指针:用于标识进程占用的内存中的位置
- 资源清单:设备资源(打印机,键盘等)&文件资源(通过一个文件描述表,里面记录了可以使用的文件列表(类似数组结构),所在的索引也叫文件描述符)
- 优先级的调度信息
- 其他一些调度信息(执行了/等待了多久,执行了那些代码)
- 进程上下文(进程在时间片轮转调度的时候,切换出去时的环境(运行指令需要的变量等)为上文,恢复执行时的环境为下文)
4.操作系统调度进程及算法
1)先来先服务:根据时间先后顺序来执行
2)高优先级优先:优先级的高的先执行(指的是总的优先级:进程优先级信息+进程等待时间)
3)短作业优先:某个作业的(一组任务)的剩余时间越短,就优先执行,但是存在一些缺陷:某些耗时长的任务,就没机会执行了(也叫饥饿)
4)抢占式:某个高优先级的进程加入,就可能暂停优先级低的任务,先执行高的(Java中的多线程就是使用抢占式)更多的适用一些实时性高的系统执行的进程,需要及时反馈执行结果
5)非抢占式:某个进程必须执行完毕,由进程告诉操作系统执行是否执行结束,可以调度后续的进程(也可能出现进程饥饿的现象)
6)时间片轮转调度算法:最主要的现象(整个电脑中,进程数远超过了cpu核心数还是在执行)
- 在操作系统中,使用了一个就绪队列的数据结构,其中就是存放要运行的进程
- 每次使用头结点的进程,来运行一段时间,再放回到队尾(这段时间叫做这次运行的时间片,这个时间片的大小,是由操作系统计算出来的)
二,进程
1.概念
- 进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程
2.进程执行表现的特性
1)并发:一个cpu以时间片轮转调度的方式依次执行多个进程(人的感知是“同时执行”)
2)并行:多个cpu在一个时间点上,是同时执行多个进程的
多个程序的代码执行,既存在并发,也存在并行
表现特征:单个程序代码的执行顺序,是顺序的,多个程序的代码之间,就可能是无序的
3.虚拟地址空间
4.进程间的通信
由于虚拟内存隔离了进程使用的内存,需要共享数据,就需要采取通信的方式
方式1:文件
方式2:网络(socket)