操作系统
操作系统
操作系统概述
1、操作系统的概念和定义
定义:是指控制和管理整个计算机系统的硬件和软件资源,并合理的组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境,他是计算机系统中最基本的系统软件。
1、操作系统是系统资源的管理者
2、向上提供方便易用的服务
3、是最接近硬件的一层软件
2、操作系统的功能和目标 —–作为系统资源的管理者
1、处理机管理(CPU)
2、存储器管理
3、文件管理
4、设备管理
3、操作系统的功能和目标—–向上提供方便易用的服务
提供了哪些服务?
GUI:图形化用户接口
联机命令接口也称为交互式命令接口也就是cmd
脱机命令接口也称为批处理命令接口类似于windows的搜索功能,一次搜一堆
程序接口通过程序代码间接使用就比如打印helloworld,printf函数就是使用了操作系统提供的功能。系统调用也称之为广义命令。
4、操作系统的功能和目标—最接近硬件的软件
需要实现对硬件机器的拓展
我们把覆盖了软件的机器成为扩充机器,又称为虚拟机。
将裸机改造成为功能更强,使用更方便的机器。
操作系统的四个特征
1、并发
并发是指两个或者多个事件在同一时间间隔发生。这件事情在宏观上实同时发生的,但是在微观上是交替发生的。
容易混淆的概念并行:并行是指两个或者多个事件在同一时刻同时发生
操作系统的并发性是指计算机系统中“同时”运行多个程序,这些程序在宏观上看是同时运行的,而微观上看是交替运行的。
操作系统就是伴随着“多道程序技术”而出现的。因此,操作系统和程序并发是一起诞生的。
重要考点:
单核CPU同一时刻只能执行一个程序,各个程序只能并发的执行
多核CPU统一时刻可以同时执行多个程序,多个程序可以并行的执行
2、共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
所谓的“同时”往往是宏观上的,而在微观上这些进程可能是交替的对该资源进行访问的(也就是分时共享)。
例子:
互斥共享:就是用QQ和微信视频聊天。同一个摄像头只能分配给其中一个进程
同时共享:用QQ发送文件A,微信发送文件B,虽说是宏观上是同时读取并发送文件,但微观上两个进程是交替访问硬盘的。
总结:并发和共享的关系
所以说并发和共享是互为存在条件
3、虚拟
一个是空分复用技术和时分复用技术
4、异步
操作系统的发展和分类
1、手工阶段
2、 批处理阶段
单道批处理系统
多道批处理系统
3、分时操作系统
缺点就是不能优先处理一些紧急的任务。
4、实时操作系统
5、其他操作系统
操作系统的运行机制
1、两种指令
预备知识:程序是如何运行的?
2、两种程序
在这里要区分内核程序和应用程序
CPU设计和生产的时候就划分了特权指令和非特权指令。
3、两种处理器状态
那么如何实现这两个状态的切换?
中断和异常
1、中断的作用
2、中断的类型
内中断
也称为异常(陷入(程序故意引发),故障(由错误条件引起有可能修复比如缺页故障),终止(致命的错误,比如整数除0))
与当前执行的指令有关 ,中断信号来源于CPU内部
内中断的例子
黑客的例子,在用户态的时候执行不了特权指令,然后CPU就会转换成内核态然后执行中断信号。
或者是除法指令的时候除数为0。
在用户态的时候想要请求操作系统内核的服务就会执行这条特殊的指令叫陷入指令,然后就会转换为内核态来执行内部的中断信号。
外中断
时钟中断、I/O中断请求
与当前执行的指令无关,中断信号来源于CPU外部
3、中断机制的基本原理
系统调用
什么是系统调用,有什么作用?
系统调用与库函数的区别
为什么系统调用是必须的?
系统调用的过程
首先先执行应用程序,然后一次执行,当他想要发出系统调用的时候需要想CPU的寄存器传送参数的指令,比如fork指令操作系统会根据参数来判断需要哪种服务,当他判断需要系统调用服务就会执行陷入指令,然后就会转换成内核态然后进入系统调用入口程序,然后会根据寄存器中的参数判断用户需要哪种系统调用服务然后会执行fork函数的处理程序处理完会后会返回用户态继续执行用户程序。
操作系统的体系结构
那么就出现了大内核和微内核对的两种体系结构
注意:
操作系统内核需要运行在内核态
操作系统的非内核功能运行在用户态
操作系统的体系结构下
分层结构
操作系统的内核分多层,每层只能调用相邻那一层的接口
这种结构的调试和验证非常方便只需要自底向上的测试但是效率低,不可以跨层调用。
模块化
优点:模块间逻辑清晰易于维护,确定模块间的接口后,可以多模块同时开发。
支持动态加载新的内核模块,增强OS的适应性,不需要消息发送
操作系统的引导
什么是操作系统引导
当你在开机的时候如何让操作系统运行起来就是操作系统引导做的事情。
磁盘里有哪些相关的数据
磁盘里内部一开始是空的,然后再磁盘里安装操作系统是安装在C盘里面的,然后再磁盘的开头会有主引导记录(MBR)(这里面包含磁盘引导程序和分区表)
操作系统引导的过程
虚拟机
传统的计算机
虚拟机
第一类的就是本身没有操作系统,第二类是本身就有操作系统
进程
进程的概念
进程的组成
PCB进程控制块
当进程创建时系统会给进程一个唯一的PID
程序段和数据段
例子:
总结
进程的特征
进程的状态与转换
进程的状态- - 创建态、就绪态
运行态
阻塞态
当等待的事件空闲就会从阻塞态转换为就绪态,当一个进程执行完就会执行exit的系统调用,请求操作系统终止该进程。
总结
进程的组织–链接方式
进程的组织– 索引方式
总结
进程控制
什么是进程控制
如何实现进程控制
用原语
如何实现原语的“原子性”‘
利用到开中断指令和关中断指令
进程控制相关的原语
程序是如何执行的
寄存器不是独属于某一个进程的
所以需要跑存这个进程的运行环境
进程通信
什么是进程通信
IPC是指两个进程之间产生数据交互
进程通信需要操作系统的支持?
共享存储
消息传递
直接通信方式
间接通信方式
管道通信
线程
什么是线程,为什么要引入线程?
引入线程机制之后,有什么变化
线程的属性
线程的实现方式
用户级线程
内核级线程
多线程模型
一对一模型:就是上面那个例子
多对一模型:
多对多模型:
线程的状态与转换
线程的组织与控制
处理机调度
调度基本概念
高级调度
低级调度
中级调度
总结
进程同步和互斥
什么是进程同步
什么是进程互斥
)、
进程互斥的软件实现方法
单标志法
双标志先检查
双标志后检查
Peterson算法
进程互斥的硬件实现方法
中断屏蔽方法
TestAndSet(TS指令、TSL指令)
Swap指令(XCHG指令)
互斥锁
信号量机制
总结上面的问题
整形信号量
记录型信号量
用信号量机制实现的进程的同步和互斥
实现进程互斥
实现进程同步
实现进程的前驱
总结
生产者消费者问题
问题描述
如何实现
能否交换相邻给PV操作顺序
总结
多生产者多消费者问题
问题描述
问题分析
如何实现
如果没有设互斥量
总结
吸烟者问题
问题描述
问题分析
具体实现
读者-写者问题
问题描述
问题分析
具体实现
问题描述
问题分析
如何实现
死锁
什么是死锁
死锁产生的必要条件
什么时候会发生死锁
死锁的处理策略
预防死锁
破坏互斥条件
破坏不剥夺条件
破坏请求和保持条件
破坏循环等待条件
避免死锁
什么是安全序列
安全序列、不安全状态、死锁的关系
银行家算法
死锁的监测
死锁的解除
内存的基础知识
什么是内存
内存是存放数据,程序在执行之前需要放到内存中才能被CPU处理 – 缓和CPU和硬盘之间的速度矛盾