知识卡片

运行架构的三个核心设计任务:进程、线程与中断服务程序

普通读书笔记卡

内容

运行架构关注进程、线程、中断服务程序等运行时控制流,以及相关的并发、同步、通信问题——它和开发架构的关系是:开发架构偏重程序包在编译期的静态依赖关系,运行架构关注这些程序运行起来之后形成的线程、进程、中断服务程序,以及它们引用的类实例、传递的数据;运行架构的设计对性能、可伸缩性、持续可用性、安全性这类运行期质量属性有重大影响。核心设计任务有三个。并发技术选型:控制流是在处理机上顺序执行的动作系列,实现控制流最常用的三种手段是进程(重量级控制流,既是处理机资源又是其他计算机资源的分配单位)、线程(轻量级控制流,仅是处理机资源的分配单位,一个进程内多个线程共享该进程的其他资源)、中断服务程序(ISR,在没有OS支持却要实现并发时更是必不可少)。控制流划分:确定引入哪些控制流没有固定套路,但有几点必不可少的考虑——物理架构中每个节点上至少要有一条控制流;为实现节点间通信通常要专门引入一条控制流负责;具有主动行为的节点(设备)要为其引入专门控制流(如中断服务程序);需求一级描述中本身就并行/并发的场景要引入多条控制流;来自用户或外部系统的并发访问常要求后端服务支持多控制流;如果控制流关系复杂,可以考虑引入专门负责协调其他控制流的控制流。控制流间同步关系:一旦系统存在不止一条控制流,除了控制流本身的创建销毁,还要考虑控制流之间的通信机制(共享内存或消息等)、同步关系,若存在资源争用还要引入加锁机制——这一步的复杂度会随控制流数量增长而快速上升,是运行架构设计里最容易埋下并发缺陷的环节。

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第10章《细化架构设计》"10.3.4 运行架构=技术选型+控制流划分+同步关系"节(源文件:_epub-src/OEBPS/text00013.html) - 结论依据:原文说明"最常用于实现控制流的手段有3种:进程、线程、中断服务程序",并逐一给出定义("线程(Thread)是轻量级控制流,仅仅是处理机资源的分配单位"),列出控制流划分的多条考虑点,直接支撑本卡片结论。 - 原始内容:进程(Process)是重量级控制流,既是处理机资源的分配单位,又是其它计算机资源的分配单位。线程(Thread)是轻量级控制流……中断服务程序(Interrupt Service Routine,ISR)也是常见的控制流实现机制。