01-什么是操作系统
操作系统
什么是操作系统,没有一个明确的定义。
用户角度上,操作系统是一个控制软件
管理应用程序
为应用程序提供服务
杀死应用程序
资源管理
管理外设、分配资源
虚拟化
操作系统将cpu虚拟化为进程
磁盘虚拟化为文件
内存虚拟机化为地址空间
操作系统的层次架构
硬件之上
应用程序之下
应用程序指办公软件、视频播放软件
操作系统位于应用软件之下,为应用软件提供服务支撑
学习操作系统我们主要学习什么
Linux、Windows、Android的界面属于外壳(Shell), 而不是内核(kernel)Kernel是我们的研究重点,在Shell之下
Kernel-操作系统内部组件 包括
CPU调度器
物理内存管理
虚拟内存管理
文件系统管理
中断处理与设备驱动
OS kernel的特征
- 并发
在一段时间内有多个程序可以运行,与并行不同,并行是指在一个时间点上有多个程序可以执行 (有多个cpu才能实现并行)
计算机系统中同时存在多个运行的程序,需要OS管理和调度 - 共享
同时访问
互斥共享 - 虚拟
利用多道程序设计技术,让每个用户都觉得有一个计算机专门为他服务 - 异步
程序的执行不是一贯到底,而是走走停停,向前推荐的速度不可预知
但只要运行环境相同,OS需要保证程序运行结果也要相同
为什么要学习操作系统?
一门综合课程
- 程序设计语言
- 数据结构
- 算法
- 计算机体系结构
- 材料
- 操作系统概念和原理,源代码
- 技能
- 操作系统的设计和实现
已经有了很多操作系统。例如windows、linux
为什么要学习操作系统?
操作系统还在不停的发展、在工控能各种领域有强烈的需求
操作系统很酷、很有用、有挑战
有趣!
操作系统是计算机科学研究的基石之一
是计算机系统的基本组成有硬件的发展和应用需求所驱动
学术和工业的持续推进
顶级会议
SOSP
USENIX
操作系统很大 windows xp 有4500万行
实际操作系统 挑核心的去了解
操作系统管理并发 并发导致有趣的编程挑战
操作系统代码管理原始硬件 时间依赖行为、非法行为、硬件故障
操作系统代码必须是高效的,低耗CPU、内存、磁盘的
操作系统出错,就意味着机器出错
操作系统是系统安全的基础
操作系统需要权衡
空间与时间
性能和可预测性
公平和性能
如何学习操作系统
动手
操作系统实例
面向桌面 面向服务 面向终端 面向工控
操作系统的历史
顺序执行->批处理
内存的容量越来越大,CPU执行多个程序 多道程序设计
为了更好的利用极大算计资源,并且更好的和用户交互,出现了分时系统 分时系统就是如果同一时刻有两个程序在运行,假如分时系统的时间是千分之一秒,那么每千分之一秒程序就进行切换一次,人的感觉就好像两个程序在同时运行
个人操作系统
多核多处理操作系统 紧耦合
分布式操作系统 松耦合
操作系统结构
简单操作系统 MS-DOS(1981-1994) 不分模块的单体内核
单体模块化的操作系统 例如:Unix操作系统 文件系统 内存管理 调度 进程线程管理 使用时钟,磁盘,中断服务等实现硬件的管理
微内核的设计,尽可能把内核功能移到用户空间 中断处理,消息传递在内核中完成 文件系统、内存管理放在外围,以程序的方式存在,相互之间通过消息传递的方式联系,实现松耦合,性能比较低 现在工业界使用比较少
外核 有一层SO kernel 外层有很多lib OS类似于应用,lib OS和SO kernel之间采用紧耦合 仅在学术界有研究
VMM 虚拟机监控器 将一台计算机虚拟成多台计算机