01-什么是操作系统
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 虚拟机监控器 将一台计算机虚拟成多台计算机