文章目录
在B站看到蛋黄派的大师兄的操作系统后深受启发,记录下心得
OS宏观
例如:点击LOL这个人,它会穿过I/O门,去冰箱取LOL这道菜,然后再穿过I/O门回来,把菜放到圆桌上,然后再去拿筷子吃。
OS怎么启动的
首先心脏提供血液给大脑,大脑通过眼睛去看外界(12选取),然后再把看到的东西成像在眼睛里(34通过小程序boot来拷贝)。
OS 的目的和功能
OS是软件和硬件资源的管理者
OS发展
例如有一个富二代
多道批处理就是拿3天,陪3个女朋友,3天陪完。
分时就是拿1天,陪3个女朋友,1天陪完。
实时性就是有一个官二代女朋友,她要求什么时候陪,那就要第一时间赶过去陪完她先。
OS运行机制
中断:比如有人打了我一拳,然后痛觉传到大脑里。
异常:比如我吃了垃圾食品肚子痛。
程序接口和系统调用就像自动对焦和手动对焦一样,手动的功能细致,自动的方便使用。
中断原理
比如Q的编码是0101,cpu会和它在约定好的接口上(数据线那里)做对比查询。
OS特征
假并发:一个cpu在10点运行QQ,10点过1毫秒后运行LOL,10点过2毫秒后运行IDEA(以时间来定义)
真并发:3个cpu在10点这一刻同时运行QQ LOL IDEA(以时刻来定义)
异步:在同起点跑,有的先跑在前,有的跑在后
运行A B到达方框里后,A先检查,立了一个旗子后继续跑下去。B先检查,发现A立了旗子,所以就先等待,等A到达终点放了旗子后,B再立旗子跑去终点
OS体系
CPU之进程管理
进程的由来
单道程序:一个程序去取数据的时候,CPU都会先为它一个服务,只到结束。
多道程序:一个程序去取数据的时候,CPU不会傻等了,它会先不鸟它,看看其他程序需不需要服务。
多道程序分配图与状态图:
按照排队的顺序来,获取过CPU的就排在后面等待,假如现在456对应360qqlol:
因为I/O时间有长有短,假设360I/O时间长,当360放在(1)的时候,因为处于I/O中,所以就先放弃CPU,去到(6)的位置。(这样就会浪费CPU)
假设QQ和LOLI/O时间短,现在轮到QQ去(1)了,QQ已经I/O完了,那么它就呆在(1)这里,直到阻塞。
轮到LOL去(2)了,LOL也已经I/O完了,那么它就呆在(2)这里,直到阻塞。
分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。
多进程CPU分配流程图与状态图
在上面的基础上做优化,分为两队。就绪队列装I/O完的,阻塞队列装I/O中的。
分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。
时间方面来说:上下文切换时(当前进程切换到其他进程),假如有1w个进程,cpu要去1w个里面找到某一个的PCB,再去查看运行状态,很是浪费时间。
空间方面来说:假如QQ有1k行代码,运行到500行的时候,要去运行LOL了,这个时候cpu就会在这第500行的位置建立一个栈(书签)来记录,然后去运行LOL去,等到回QQ这里来继续运行的时候,会从501行开始了。栈是在内存里面操作系统规定好的一块地方,用多了会浪费空间。
进程的程序的区别及进程的特征
进程是程序加上pcb这个档案袋里面存储的状态变化的信息
UI:user interface
独立性:360和LOL的内存空间进水不犯河水
进程的组织
进程的状态与控制
程序要运行=PCB+内存+CPU
首先从磁盘copy到内存,再建立PCB,通过PCB知道入口位置,再跳到入口这个位置执行程序。
通过上面的图,回味一下:
1.每种状态拥有了哪些资源?(PCB 内存 CPU)
2.什么时候需要状态转变?
3.状态转变时要做什么事情?(分配,申请,归还,修改PCB)
进程通信
共享通信:复制粘贴
消息传递:邮递员OS派件
管道通信:OS与各程序建立管道
三级调度
中级调度:磁盘有7G的LOL,但是内存只有4G,通过一个方法解决:假如有150个英雄,7G去除150,平均几M一个英雄,开一局5v5的时候,cpu就从磁盘调用10个英雄,也就100M左右,放到内存运行,大大提高了内存的利用率。
当一局游戏结束开下一局选其他英雄时,内存和磁盘就会有一个交换的过程,这就是中级调度。
FCFS算法(先来先服务)+调度过程
算法思想:先排队先服务
调度方式:不可剥夺(非抢占)
比如先运行完QQ,才会去服务LOL,LOL不能抢,只能等
调度时机:一个进程结束
特点:利长不利短
利于CPU忙(处理完LOL才去处理其他),不利于I/O忙(假设处理LOL的时候,I/O了5次,花了5min,在这5minCPU是空闲状态的,相当于是个监工,再要求着I/O快点搞完)
不适于分时系统和实时系统
典型案例:打印机,银行窗口