操作系统
操作系统自从毕业后再未接触,当时学的也不是很好,这次重头在学,争取精通os的算法和概念.
什么是OS
不同角度
用户角度
- 控制电脑
- 管理应用程序
- 为应用程序提供服务
计算机
- 管理资源
- 管理外设,分配资源
架构
- 应用程序之下
- 硬件之上
以LINUX为例,操作系统其实分内核(kernel)和外部应用(shell) 我们更应该关注内核细节
操作系统管理的硬件资源有三大块
- CPU (调度)
- 内存 (物理,虚拟内存管理)
- 磁盘 (文件系统)
IO (中断处理与设备驱动)
OS的特征:
- 并发(一段时间内多个程序同时运行,和并行不同,并行是同一时刻同时运行,单核不可能做到)
- 共享 (将计算机资源共享给其他进程,通过互斥的方法做到”同时“访问)
- 虚拟 (将计算机硬件虚拟化,内存虚拟化为地址空间,硬盘虚拟化为文件等)
- 异步 (程序执行不是一贯到底,而是走走停停,OS要保证程序运行结果每次相同)
操作系统实例
- UNIX家族
- FreeBSD
- MacIOS
- solaris
- ….
- Linux家族
- redhat
- suse
- centos
- ubuntu
- arch
- …
- windows家族
OS设计的发展
- 在一开始的时候,数据都是存储在纸带上,OS只是起到一个监视的作用,单道程序设计
- 后来CPU速度提升,最好处理过程能够流水线话–批处理阶段
- 内存进一步扩大后,CPU可以将多个程序加载到内存中使用,这样可以并发重用CPU,这样程序的IO开销减少 – 多道程序设计
- CPU造假贵,如何让CPU尽量的忙,当一个程序需要执行等待IO的时候让CPU去执行其他进程,外设读取完后发出中断信号,通知CPU可以切换到原来的进程
- 以上都是不需要人参与的,为了能够和计算机交互,将CPU的执行时间分片 一片千分之一秒,程序执行一片后控制权给其他进程 – 分时操作
- 为什么CPU每千分之一秒能被打断,是因为 时钟 时钟是个外设设备,每隔一个时间片发出中断信号
- 网络快速发展后,很多工作可以丢给数据中心做 — 分布式操作系统