现代操作系统 - 导论

什么是操作系统

操作系统为了提供用户一个更好, 更简单, 更清晰的计算机模型, 并管理硬件设备

  • 给底层提供抽象. 进程是cpu的抽象, 虚拟地址是对物理内存的抽象, 文件系统是对磁盘的抽象
  • 作为资源管理者, 在相互竞争的程序之间有序地控制处理器, 储存器以及其它I/O设备

计算机硬件

处理器

  • 计算机的大脑, 每个处理器都有一套可执行的专门指令集
  • 有程序计算器, 堆栈指针
  • 流水线cpu
    • 读取指令 → 解码 → 执行
  • 超标量cpu
    • 多个读取指令的单元 → 多个解码单元 → 缓冲区 → 多个执行单元
  • 多线程和多核芯片
    • 多线程: 允许cpu保存两个不同的线程转态, 然后切换 (这里的切换就是一个线程进入sleep后, 调用scheduler, 运行其它线程)

存储器

包括寄存器, 高速缓存, 内存和磁盘

寄存器: 寄存器是最快的, 跟cpu相同的材料做成, 访问它们没有延时

高速缓存: cpu提供了两个高速缓存, L1和L2

内存: 断电了内容就没了, 属于易失性

磁盘: 即使在断电之后也不会丢失数据

I/O设备

IO包括了控制管理器和设备本身. 为了能够使用设备, 需要有设备驱动程序, 把驱动装到OS中, 方法有

  1. 将内核与设备驱动程序重新连接, 然后重启系统. 许多UNIX以这种方式工作
  2. 在一个操作系统文件中设置一个入口, 并通知文件需要一个驱动程序, 然后重启系统, 重启之后OS寻找所需设备的驱动并装载.Window的做法
  3. 系统启动时, 操作系统去寻找所需的设备, 立即安装好. 比如USB

实现输入和输出

方法1: 用户发出系统调用, 然后设备驱动在I/O并忙等待直接完成, 并返回

方法2: 设备驱动在操作完成时产生一个中断, 设备驱动程序在这个时刻返回

方法3: 直接储存器访问

总线

总线把各种设备连接在一起

PCI: 数据并行处理. 多个设备需要发送数据时, 需要决定哪个设备可以使用总线

PCIe: 串行总线结构, 可以并行发送消息

DDR3: CPU通过DDR3与内存对话

USB: 集中式总线, 每个设备1ms轮训一次I/O设备

操作系统的种类

大型机OS: 数据中心的OS, Linux主导

服务器OS: 服务器提供打印服务, 文件服务或者web服务. 奠定的系统有Solaris, FreeBSD, Linux和Windows Server

多个处理器系统: 将多个CPU连接成单个系统, 或者不目前现代很多个人计算机也是多核系统了. 主流的Windows和Linux都可以运行在多核处理器上

个人计算机系统: Windows, Linux和MacOS等

掌上计算机操作系统: 主导的是Android和iOS

嵌入式操作系统: 主导的是Linux, QNX和VxWorks

传感器节点操作系统: 这些节点是一种可以批此通信并且使用无线通信基站的微型计算机, TinyOS是一个著名的系统

实时操作系统: 时间作为关键参数, OS有eCos

操作系统的概念

进程

本质上是一个正在执行的程序, 在内存上有相关的地址空间. 在switch进程时候, 进程所有信息回保存下来等待scheduler下一次的调度

地址空间

用来保存正在执行的程序. 有一种虚拟内存的技术, 操作系统可以把部分地址空间装入主存, 不分留在磁盘上, 并且在需要的时候回来交换它们. 本质上操作系统创建了一个地址空间的抽象, 做为进程可以引用地址的集合. 该地址空间与机器的物理内存解耦, 可能大于也可能小于物理空间

文件

隐藏了磁盘和其它I/O设备的细节特性, 提供一个独立于设备的抽象文件模型

系统调用

用户如果需要一个系统的服务, 比如读取文件, 就需要执行一个系统调用, trap, 把控制转移到操作系统, 执行系统调用, 然后返回给用户. 只有系统调用才能进入内核

系统调用包括了

  1. 进程管理 i.e. fork()
  2. 文件管理 i.e. open(file…), close(fd), read(fd, buffer, nbytes)

操作系统的结构

单体系统

整个操作系统在内核态以单一程序运行. 比如Linux

层次式系统

输入输出是一层, 内存管理是一层, 进程管理是一层 (不是大众使用的OS)

微内核

减少出错, 把核心放在内核, 其它放在了用户态. 在实时, 工业中流行.

虚拟机

第一类虚拟机: 同时运行多个操作系统的最终用户服务

第二类虚拟机: 利用了宿主操作系统并通过文件系统创建进程, 存储文件等. 这类虚拟机其实是宿主操作系统的文件系统中的一个大文件

小结

操作系统有效管理系统的各个部分, 提供给用户比实际机器更便于运用的抽象, 比如进程, 地址空间, 文件. 它的核心是可处理的系统调用集, 包括读写文件, 进程创建和终止, 目录管理等

你可能感兴趣的:(网络,操作系统,现代操作系统,OS)