OS.StudyLog.Ch1.Concepts.概念
学习思路与大纲
OS实验部分将单独记录在一个专栏内,本专栏重点是基础知识扫盲
操作系统实验:
0-准备
1-系统启动和中断
2-物理内存管理
3-虚拟内存管理
4-内核线程管理
5-用户进程管理
6-CPU调度
7-同步与互斥
8-文件系统
操作系统的定义
没有明确定义,但是通过功能可以划分
用户角度(对上):控制软件==>管理app,为app提供服务,杀死app
内部管理(对下):资源管理==>管理外设,分配资源
CPU抽象成进程 硬盘抽象成文件 内存抽象成地址空间
操作系统架层次结构:硬件之上,应用程序之下
层次由高到低:程序-软件-OS-硬件,如图。
Shell&Kernel概念的引入
GUI图形化标识:是属于Shell外壳部分。字符命令也是shell部分,这两个接口部分是操作系统对外提供的一种可见的服务。我们研究的OS更注重内部kernel部分(随着以后的学习会进一步解析,此处先引入这个概念,需要一定CSA基础)
关注操作系统的细节,OS内部细化
硬件资源:CPU、内存、磁盘(最主要)、网卡声卡显卡……
==>CPU管理:CPU调度,进程线程管理
==>内存管理:物理内存管理,虚拟内存管理(给上层应用提供相对独立,尽可能大的一块内存空间去使用,在有限的物理内存基础上独立虚拟出一个更方便安全的环境)
==>Disk:磁盘块作为读写单位,不方便存储数据。OS将他抽象成文件系统,以文件的形式给数据提供访问、保存等操作。
==>底层相关-硬件直接打交道:中断处理和设备驱动
OS中很重要的功能单元,基于中断才能真正完成应用程序的各种命令。
OS Kernel特征(4个特点)
△并发:一段时间内有多个程序运行
同时跑多个程序,需要OS管理和调度,ex)哪个先执行
并行:在一个时间点有多个程序运行,一般计算机内要有的多个CPU才能实现
△共享:OS为了有效地让资源共享给需要资源的应用程序。分为互斥共享和同时共享。
同时共享:表面上是同时访问,但是OS内部变为互斥访问或者分时访问。在时间点上只有一个程序可以访问一个资源。这与资源的粒度有关。
※如果CPU隔离为两块,则可以令两个程序同时访问两个资源,根据资源特征区分如何共享。
△虚拟:把硬件虚拟化(Ex,CPU虚化为进程)后,利用多道程序设计,让每个用户感到有一个计算机专门为他们服务。
△异步:程序的执行往往不是一贯到底,各种走停,向前推进的速度不可预知。但只要运行环境(没有硬件损坏问题或病毒木马等)相同,OS需要保证程序运行结果也要不变。
操作系统的重要性
结合了许多课程:DA,Algorithm,CSA, Language etc.
甚至包括了材料、技能、概念和原理、代码。顶级会议相当于交替举行一年一届。
OS的基本要求
OS代码必须是高效的。低耗CPU、内存(Memory)、磁盘(disk)。
操作系统的代码管理原始硬件:时间依赖行为,非法行为,硬件故障等。因此操作系统实现上会比较复杂。
操作系统需要权衡:空间与时间、性能与可预测性、公平和性能。
我们希望OS性能尽量高,希望程序的执行尽量可以预测(什么时候开始、结束、切入)。尽量令整个系统的资源能够更公平、高效的使用。
能够管理我们的硬件:
操作系统的结构:MS-DOS(最早的OS)
不分模块的OS,受制于硬件。容易被攻击且很难扩张,受制于CPU,硬件限制非常大。
分模块如图示(unix初代)
通过模块化概念,提供更加有效的系统软件的设计实现。当时用C语言实现,与汇编语言有很大的区别。汇编语言与机器绑定所以不具有可移植性。但是C有很好的移植性,所以让应用很好的扩展到不同的计算机系统里去。
微内核&外核
各模块之间用函数调用实现(单体)【一般架构】
微内核:学术界将内核变得尽量小,使得不同功能让更外层的模块存在,模块之前不用函数,而用消息传递来实现。内核放基本功能(中断处理、消息传递)【文件系统内存管理、网络协议栈放在外围,用进程、程序、系统服务形式存在。服务之间通过内核消息传递机制进行通讯】,是一种松耦合架构。这种方式非常灵活、安全。但是性能低,产业界很少采用微内核技术,主要是因为性能问题
外核架构:内核分为两块,一块负责硬件功能的复制(和硬件打交道);另一块称为lib OS,和具体应用打交道。
Ex)浏览器访问面向browser的LIB OS,然后lib OS访问外核、再访问硬件。针对不同应用程序,对应的lib OS访问外核从而访问硬件。(应用和OS成为紧耦合架构)
APP==>不同的lib os==>ex kernel(外核)==>对硬件的管理和访问
不同的lib os可以并发访问外核且安全有效地使用硬件资源。
优点:速度快
VMM:虚拟机监控器
虚拟出多个计算机系统,给上层操作系统使用。一台计算机可以变成多台计算机。VMM虚拟出的计算机连外设都有,所以OS感知不到虚拟机,会把他当成真实的物理机。OS之下,硬件之上。
CPU计算能力越来越强,甚至一台计算机可以有多个CPU。因此硬件资源过剩的情况经常发生(一般应用用不完这些资源)。所以设计初衷就是一台计算机同时给多个人服务,充分发挥计算机资源的效率。
拓展:历史
CPU高速发展,速度提升但是性能未得到充分利用。
批处理阶段:
OS并发特征的雏形(具体内容请参考CSA流水线章节)
CPU重用
多道程序设计:提高CPU利用率
程序1指定read这个IO操作时,OS完成切换,让程序2占用CPU去执行,此时程序1在等待外设把需要的数据读进来。
程序2执行过程中,如果程序1提出的read外设已经完成,那么会产生一个中断,通知OS,OS可以再切换,令程序2暂停,先让程序1执行。
※中断的概念下一章详解。
多道程序设计确实提高了CPU利用效率,但是交互性不够好。为了更好的交互,提出分分时调度的思路。
时钟定期产生中断,在很小的时间间隔内(人感觉不出差距)操作系统不断切换,令程序1执行一个时间段后程序再执行一个时间段,不断轮换。
ex)千分之一秒一次分时,控制权不断轮流切换给程序1、2。人感觉起来相当于两个人同时占用这个计算机在操作,让人感觉不到。
个人电脑
硬件价格下降很快,使用的应用越来越广泛,从早期的单纯计算到多媒体……
应用的需求也发生变化,OS也就随之变化。现在操作系统的更需要安全与交互性的提高。
集成电路发展越来越强大,一个CPU可以继承多个CPU核,网络也同时飞速发展。使得很多工作不需要放在本机来操作,丢到数据中心即可。==>分布式操作系统
前端(一般用户)使用,计算和存储工作由数据中心完成,中间由Internet完成。
通过网络,形成一个松耦合的交互,使得更加及时有效
数据中心中,一个紧耦合的系统,如何让这个系统更好的完成计算的功能(集体地)。需要OS更好的管理协调工作。
当前正在不停的发展和演化中,随着云计算的深入。未来的发展趋势将从一个计算机为一群人服务变成一群计算机为一个人服务的形式。(物联网相关知识)