前言
按照笔者对<深入理解计算机系统>(以下称"本书")的阅读和学习,应该进入基于I/O多路复用阶段的并发.但是在看了教材以及其他帖子对这部分内容的分析以后,产生了一点迷茫.这部分内容,要其他概念的支撑,此外有应用级代码,.在这个过程中,笔者想了一个软件开发的流程的示意图,写出来一起讨论(实际自己当笔记看)
引入
用一张图表达对软件开发流程的理解.
软件(模块)开发示意图
说明:不敢说笔者自创,只是把别人说过的东西图形化.
说明
从"目标"开始,设计模型和概念,然后是写代码(依托现有api),生成整个软件或一个模块,实现目标
1.模块开发是可以迭代的.把"软件/模块"(模块)放到"已有框架/库/内核",即表示迭代.也就是继续开发.
2.常说的"编程最重要是思想",思想体现在程序模型."程序模型及概念"也是其中最难的部分.
3.本图除了可以做软件分析,也可以做学习用.因为现有框架(模块)也可以看作按该流程开发.
4.对学习来说,把握的是"程序模型及概念"和"已有框架/库/内核"这两部分.学习框架,弄清概念以及代码.
5.把"目标"和"代码/库"联系起来,也可以看作写函数的流程(不过意义不是很大)
举例:进程管理
如前所述,"进程管理"可以看作是操作系统中的一个模块,他的开发图如下:
注:图中图片来源某百科
双向箭头表示相互关联,文字部分(上框)是概念,下面是他们的联系.而右边的函数是概念的实现.实现是由系统内核做的,也就是写操作系统的人写的(估计是用汇编或C写的).程序员背这些api的用法(源码不清楚如果能看懂更好)
对进程的详细描述,笔者引用了一篇帖子可以看看进程状态(一)---- 运行,阻塞,挂起_程序运行状态-优快云博客
进程的管理并不是这么简单.比如引用贴中提到每个状态都有对应的一个进程队列去管理,而这些进程队列中的元素(进程)在某些情况下切换.---所以模块开发不只是一张图那么简单,同时说明示意图的作用有限.
小结
软件(模块)开发的一个简单示意图