操作系统的发展史和进程
操作系统的发展史
手工操作——穿孔卡片
一个计算机机房,一次只能被一个卡片使用。
1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式。此时还没有操作系统的概念。
程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。
手工操作方式的两个特点:
- 用户独占全机,不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低
- CPU等待手工操作。CPU的利用不充分。
批处理——磁带存储
批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。
联机批处理系统
支持多用户去使用一个计算机机房
主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入磁带,依次把磁带上的用户作业读入主机内存并执行并把计算结果向输出机输出。完成了上一批作业后,监督程序又从输入机上输入另一批作业,保存在磁带上,并按上述步骤重复处理。
但是,在作业输入和结果输出时,主机的高速CPU仍处于空闲状态,等待慢速的输入/输出设备完成工作: 主机处于“忙等”状态。
脱机批处理系统
为克服与缓解:高速主机与慢速外设的矛盾,提高CPU的利用率,又引入了脱机批处理系统,即输入/输出脱离主机控制。
高速磁盘:
提高文件的读取速度。
优点:
提高CPU的利用率
多道程序系统
多道技术(基于单核情况下研究):
单道:
多个使用使用CPU时是串行。
多道技术:
-
空间上的复用(*******):
一个CPU可以提供给多个用户去使用。 -
时间上的复用(*******):
切换 + 保存状态
IO操作:
input()
print()
time.sleep(3)
-
若CPU遇到IO操作,会立即将当前执行程序CPU使用权断开。
优点:
CPU的利用率高。 -
若一个程序使用CPU的时间过长,会立即将当前执行程序CPU使用权断开。
缺点:
程序的执行率降低。
并发与并行:
并发: 指的是看起来像同时在运行,多个程序不停 切换 + 保存状态。
并行: 真实意义上的同时运行,在多核(多个CPU)的情况下,同时执行多个程序。
所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
进程
程序与进程
-
程序: 一堆代码。
-
进程: 一堆代码运行的过程。
进程调度:
当代操作系统调度:
时间片轮转法 + 分级反馈队列
先来先服务调度:
a,b程序,若a程序先来,先占用CPU。
缺点:程序a先使用,程序b必须等待程序a使用cpu结束后才能使用。
缺点:程序a先使用,程序b必须等待程序a使用cpu结束后才能使用。
短作业优先调度
a,b程序,谁的用时短,先优先调度使用cpu。
缺点:若程序a使用时间最长,有N个程序使用时间短,必须等待所有用时短的程序结束后才能使用。
时间片轮转法
CPU执行的时间1秒中,加载N个程序,要将1秒等分成多N个时间片。
分级反馈队列
将执行优先分为多层级别。
- 1级; 优先级最高。
- 2级: 优先级第二,以次类推。
- 3级
进程的三个状态
就绪状态:
所有进程创建时都会进入就绪态,准备调度。
运行状态
调度后的进程,进入运行态。
阻塞态:
是遇到IO操作的进程,都会进入阻塞态。若IO结束,必须重新进入就绪态。
同步和异步
指的是提交任务的方式
同步
若有两个任务需要提交,在提交第一个任务时,必须等待该任务执行结束后,才能继续提交并执行第二个任务。
异步
若有两个任务需要提交,在提交第一个任务时,不需要原地等待,立即可以提交并执行第二个任务。
阻塞与非阻塞
阻塞
阻塞态.遇到IO一定会阻塞
非阻塞
就绪态
运行态
面试题: 同步和异步,阻塞和非阻塞是同一个概念吗?
强调: 不是同一个概念,不能混为一谈!
最大化提高CPU的使用率:
尽可能减少不必要的IO操作。
进程号回收的两种条件:
1.join,可以回收子进程与主进程。
2.主进程正常结束,子进程与主进程也会被回收。
3.僵尸进程与孤儿进程(了解):
僵尸进程:
指的是子进程已经结束,但PID号还存在,未销毁.
缺点:
占用PID号,占用操作系统资源.
孤儿进程:
指的是子进程还在执行,但父进程意外结束.
操作系统优化机制:
提供一个福利院,帮你回收没有父亲的子进程.
4.守护进程:
指的是主进程结束后,该主进程产生的所有子进程跟着结束,并回收.