操作系统概念——系统架构

第一章 简介
1.1 操作系统做什么
用户角度:人机界面,提供操作环境,易用性体验为主
系统角度:资源分配管理,协调各个程序正确运行

1.2 计算机组织和运行
cpu、内存以及各硬件通过设备控制器组成计算机系统,内存总线
运行结构:硬件事件产生中断通知,软件产生软中断(系统调用)
存储结构:多层存储金字塔模型
IO结构:硬件驱动程序、DMA

1.3 计算机体系架构
单处理器系统:一个通用的cpu,多个硬件控制器(专用)
多处理器系统:
非SMP:各个处理器不对等,如其中一个是控制角色,其他为worker
SMP:各个处理器角色相同相互独立,当前主流
NUMA:非一致性内存访问,同一个cpu访问不同区块的内存可能耗时不同
多核设计:在同一个芯片上,core之间交互更快
集群系统:提供高可用、高性能、并行计算、分布式等服务场景

1.4 操作系统架构
多任务系统、分时系统:任务调度、swap、虚拟内存、文件系统、任务间同步和通信

1.5 操作系统运行机制
由中断驱动,由于用户和系统共享资源,需要一种隔离运行异常的机制
多运行模式:用户模式和内核模式,特权指令只能在相应模式下调用
用户模式通过系统调用进入内核模式,内核代表用户程序执行特权指令
定时器:统计程序运行时长,强制执行切换调度

1.6 进程管理
进线程cpu调度/创建或删除用户和系统进程/挂起或恢复执行/提供进程间同步和通信机制

1.7 内存管理
内存分配追踪/硬盘交换管理/分配和释放内存空间

1.8 存储管理
文件系统管理:创建和删除文件、目录/系统操作原语/文件和硬盘映射
磁盘管理:剩余空间/空间分配/磁盘调度
缓存管理:多级缓存设计/缓存一致性问题
IO子系统:缓存管理/通用驱动界面/具体硬件驱动

1.9 保护和安全性
权限系统等

1.10 内核数据结构
链表/栈/队列/树/哈希表/位图

1.11 计算环境
PC环境/移动设备/分布式系统/Client-Server/P2P网络/虚拟化/云计算/实时嵌入式系统

1.12 开源操作系统
Linux/BSD/Solaris

第二章 操作系统架构
2.1 操作系统提供的服务
交互界面/程序装载和执行/IO操作/文件系统操作/进程通信/错误检测/资源分配/统计/保护和安全性服务

2.2 用户和操作系统界面
命令行解释器/GUI

2.3 系统调用
提供操作体系的底层服务
API: 可移植编程接口

2.4 系统调用的类型
进程控制/文件管理/设备管理/信息维护/进程通信/保护

2.5 系统程序
在系统调用之上, 方便应用程序开发和执行的一系列工具/服务

2.6 操作系统设计和实现
设计目标:
总体:硬件类型/系统类型 (批处理/分时/单用户/多用户/分布式/实时/通用)
用户角度:易用、可靠、安全、快速响应
系统角度(开发者):设计和实现简单、易于维护、灵活伸缩、可靠、无错、高效
机制和策略:
策略(Policy)和机制(Mechanism)分离原则
机制:how to do; 策略:what to do
通用的实现机制可以方便策略灵活改变,如Solaris通过可加载表支持灵活选择各种调度策略
实现:
早起一般用汇编实现,现在多数用c/c++或其他高级语言
好处是开发快、轻便、理解和调试相对友好、可持续得益编译器优化技术、方便不同平台下移植

2.7 操作系统架构
简单架构:单任务系统、如MSDOS、只有单一运行模式;
早期Unix,所有内核功能在单一模块中(monolithic),较难维护,但性能较好
分层架构:M层使用M-1层的接口,并为M+1层提供相应的接口
好处是结构清晰方便构建和调试(bug按层隔离),缺点是复杂系统层次设计清晰较难做到
效率可能不高,请求要经过多层调用,因此一般层次较少
微内核:内核仅保留最小功能集,其他都移到用户态应用层实现
内核提供消息机制,应用程序请求其他服务都经过微内核
好处是内核扩展非常方便,修改量小,用户态运行服务更加安全(隔离性),但性能不理想
模块化:内核提供核心服务,其他服务在启动或运行时加载进来(同一内核空间)
类似分层结构模块接口清晰独立,但可以互相调用更灵活;
类似微内核结构只有一个最小内核,需要提供模块的加载和通信机制
模块间直接通信无需走内核消息传递,因此性能也较好
Linux的设备驱动和文件系统是模块化的
现在操作系统一般采用混合的架构,综合考虑性能、安全性和可用性等方面。

2.8 操作系统调试
内核crash:crash dump,文件放在特殊位置而非一般的文件系统,供开机后review
内核调试/调优工具:Dtrace,可编程获取一切

2.9 操作系统具化(generation)
操作系统安装时,需要根据当前硬件环境定制系统
定制化手段:重新编译代码/生成表和预编译模块选取和链接/运行时选取
权衡考虑内核大小和硬件变更时的操作便利性

2.10 系统初始化
reset signal->指令寄存器设置为rom初始化程序地址->运行bootstrap->运行磁盘启动块代码(如GRUB)->加载OS并运行

发表评论

电子邮件地址不会被公开。