一、两个先导知识点
- 日常使用的GUI和Shell并不是操作系统的一部分
- 操作系统分为两种运行状态1、内核态(管态) 2、 用户态(目态)
分为内核态和用户态主要是为了安全,特定的系统调用只能通过陷入内核态进行调用
二、操作系统的概念
重要思想:抽象
操作系统是资源的管理者资源包括处理器,存储器,时钟,磁盘等等操作系统的的任务就是在相互竞争的程序之间协调好处理合理的分配(多道程序设计资源共享问题),当然在有效的管理上,随着硬件资源的越来越强大,需要提高资源的利用率,提高用利用率的主要有两种方式实现资源的多路复用
- 时间:多道程序中cpu时间片的合理划分
- 空间:多道程序下内存共享
三、操作系统的历史
趣事:第一个程序员是女的
1、第一代:穿孔卡片
纯机器码实现,将程序在纸上打成一个个孔,放入机器中执行
2、第二代:晶体管批处理系统
将程序录在磁带中,把一个个磁带放到机器中运行,可以批量运行
3、第三代:集成电路和多道程序设计
和批处理不同的是多道程序可以来回切换,催生了分时系统(每个用户一个终端)
4、第四代:个人计算机
ms-dos 等等 个人用户机
四、计算机硬件介绍
1、处理器:(重点)
计算机的大脑,从内存中取出指令并执行,一个周期为取出,解码,接着执行,取址 解码 下一个指令
由于用来访问内存已得到的指令或数据的时间要比执行指令要花更长的时间多,因此所欲的CPU内都有一些用来保存关键变量和临时数据的
寄存器
常见的寄存器:
- 通用寄存器:存一些数据
- 程序计数器:保存下一条指令的指令
- 堆栈指针: 当前栈的顶端
- 程序状态字(PSW):主要用来控制内核态和用户态
操作系统必须知晓所有的寄存器,在时间多路复用CPU中,操作系统经常会终止正在运行的某个程序启动,终止另一个程序,每终止一个必须保存所有的寄存器,当该程序再次被运行时会被这些寄存器会重新载入
内核调用的过程:只要通过PSW的一个二进制位来控制两种模式,当进入系统调用时调用TRAP
指令进入到内核状态,完成后再将控制权交给用户态
多线程切换:并不是真正意义上的并行处理而是一个时间片执行一个线程(假象)
2、存储器:
存储器分为很多种 寄存器,高速缓存,内存,磁盘,磁带等等 价格依次便宜,速度依次更慢
RAM: 关机失效
ROM: 只读存储 如CMOS,出厂时就被写入
L1缓存 快于 L2缓存 和 L3缓存
缓存是解决CPU和内存之前速度匹配问题
3、磁盘:
成本低,速度慢
4、IO设备:
主要分为两部分:
- 驱动器:接受指令用来控制设备运行在内核态
- 设备:硬件设备
实现输入输出的三种方式:
- 忙等待:一个运行完了 下一个才能运行称为忙等
- 中断:无需等待执行完后发送中断信号给调用者
- 内存:直接访问内存
###五、操作系统类型
重点的三个
- 批处理系统:批量运行,多道程序切换
- 实时操作系统:对响应时间要求严格用在军事上和工业上
- 分时操作系统:每个用户一个终端,分为前台任务和后台任务
六、操作系统概念
1、进程:
cpu时间片的抽象,没什么玄乎的就是一段代码执行的实例,进程的底层其实也就一对应一个数据结构Linux 中叫做task_struct
进程之间存在父子关系,树形结构。
2、内存:
为了支持多道程序设计,需要让多个进程之间的内存不会 互相干扰所以需要保护机制,另外进程数量较多的情况下如何保证有限的内存够用主要涉及到两个重要的知识点
- 分页的原理
- 页置换算法(如:LRU)
3、文件:
磁盘的抽象,和内存的分页原理类似,将物理地址划分成虚拟的文件块进行文件存储,在Unix中一切皆文件,外部设备也是文件重要知识点
- 目录和文件的结构
- inode以及文件块
4、系统调用:
操作系统不仅要为系统提供资源管理,还需要为程序员以及用户提供接口,称为系统调用是一个特殊的过程调用,系统调用往往需要硬件的支持,如果一个集成正在用户态运行一个用户指令,当需要一个系统调用时,随之会陷入一个系统调用,控制权交给操作系统,找到对应的系统调用,检查参数,然后返回结果,在切回到用户态,通常系统调用会阻塞调用者,比年继续执行
七、操作系统的结构
1、单体:
整个操作系统以过程集合方式编写,链接成一个大的可执行文件
2、层次
上层是在下层的基础上构建的
3、微内核
划分成不同的模块,只有其中的一个模块运行在内核态上,弱些的功能运行在用户态上
4、虚拟机
允许在有限的硬件资源上运行多个不同的操作系统,充分利用资源主要分为两种
- 虚拟机管理程序:直接在裸机上去跑
- 主机操作系统: 运行在操作系统上的虚拟机管理程序
八、其他
1、 大型工程主要通过make 程序进行编译主要通过makefile 来组织顺序
待续