00 写在前面
本系列内容主要是对李治军老师的《操作系统》课程的笔记整理。
b站地址:https://www.bilibili.com/video/BV1d4411v7u7?spm_id_from=333.337.search-card.all.click
01 操作系统的核心
操作系统的核心就是管理计算机硬件:CPU、内存等等。
1、多进程图像是操作系统的核心,因为把CPU管理好了,其他硬件自然也会带动管理好
02 CPU工作原理
要管理CPU,就要会使用CPU
CPU如何工作? 取指执行
只要把PC设置好,CPU自动取指执行
管理、使用CPU,最直观的方法,就是设置好PC指针;
03 CPU这样工作,效率低(IO指令特别慢)
后面的指令有可能依赖于IO的结果,所以不能跳过去。(比如:IO是输入银行卡号密码,知道密码之后才能继续执行)
如何解决?多个程序在内存中,即多道程序、交替执行
04 此时ax和bx没有切换
静态程序和运行程序不一样的地方,运行的程序要记录切换时候相关信息,即新名字:进程
05 什么是多进程图像?为了支持这个多进程图像,需要做几件事?多进程图像的样子:
上层用户启动多个运行程序,即启动多条进程;在OS中,就是用3个PCB来记录这个信息;
06 Linux里面的shell就等于Windows里面的桌面
07 Windows下如何查看进程
发现电脑特别慢,就打开任务管理器,发现哪个进程的CPU利用率特别高,就代表着这个进程占用CPU的资源比较多
07 操作系统要知道各个PCB存放的位置
08 就绪态 → 运行态 (由OS来控制)
09 如何交替的切换?
阻塞态
将这个进程放在阻塞磁盘等待队列上
Schedule 切换函数(重点);
Swith_to完成切换
Getnext获得下一个进程 调度(选择哪一个进程合适)
Pcur、pNew 就是PCB
10 进程的调度?通常一个调度怎么做
最基本的调度:
FIFO:第一个先
Priority:优先级的方式
PCB1现场需要先保存下来,将CPU里面的东西,放到PCB1(将寄存器的值保存到PCB结构体中)
把PCB2进程中的信息赋值给CPU
因为需要用精细的控制,所以要用汇编代码来写;
11 多个进程都会在内存中,进程1的100有可能是进程2的100,这种访问会导致进程2崩溃;
此时都是用户态程序,DPL都等于3,CPL==3;
解决办法:通过映射表
12 进程1和进程2都觉得此时是空闲的,如果是顺序执行就不会有问题,但因为是交替执行,所以会乱掉
13 解决方法