编程架构思考
admin
2023-02-10 03:20:08
0

一、架构,作为程序员是必须的,好的架构提供代码重用的可能性(因为模块化/对象化,而且模块/对象间松散耦合),提供灵活的扩展性(方便加入其他模块和功能),代码维护性和可读性好 。
二、人类的认识总是连续性上升的,不会飞跃,所以随着时间推移,架构技术也在更新,所以你需要关心一些新的架构技术、新的通信技术、新的框架。例如ROS机器人系统第一代使用master方式,ROS2使用新的DDS技术方式。
三、其实很多技术的相似的,思想是相似的,你需要自己提炼一下,理解好,实际操作实践一下,从而提高自己水平。
四、《设计模式》是你必须学习的,设计模式其实不单单可以应用于某个程序编程,还可以应用于通信协议等等方方面面的思想上。取决于你如何提取各种事物的共性,如何思考他们的差异。永远记住:任何代码架构的问题都可以通过加入中间层解决。即模块化、对象化、去耦合。归根结底,各种设计模式就是研究把各种可能变化的设计点封装起来,以适应这种变化,从而实现代码可扩展和重用。
五、代码可以找参考的,算法可以找到参考例子,架构也可以找参考的。天下代码一大抄,并没有不妥。
六、正如写驱动,需要首先确定下层硬件接口使用的什么总线,从而确定对下使用什么总线API,然后确定要对上实现的功能,是网卡、sensor还是什么,也就可以确定对上层应用暴露的接口, 从而选择子系统,例如iio、input子系统等。也就是你得知道驱动作为架构中的一个中间层而已。同理你设计架构时得懂得分层的概念。驱动的架构相对固定,你需要思考的内容也相对固定,无非就是代码执行的上下文、函数的重入性、如何支持管理下层多设备、如何支持多个上层client等,就像神经网络的M:N网状链接关系,基本涉及《linux设备驱动模型》和《如何编写linux设备驱动》提及的那些内容。各种代码执行上下文包括中断、软中断、tasklet (基于软中断实现)、hrtimer (软中断或硬中断环境下执行)、timer (基于软中断实现)、kernel thread、普通线程内核态;代码执行过local_irq_disable、local_bh_disable、preempt_disable后的上下文。具体参考我的视频课程《linux设备驱动模型》和《如何编写linux设备驱动》。
七、linux的内存管理架构,其实就是围绕如何高效管理虚拟地址空间、物理内存。所谓高效就是随时代变迁利用各种技术做到安全、快速分配和释放、减少碎片提高分配大内存的可能性、各种方式节省物理内存(包括先文件映射后面用时才分配、写时复制等技术、ELF文件的section合并segment、linux VMA映射技术等)。具体参考我的课程《深入linux内核》和《elf file linker and loader与linux结合》

1、架构的通用性思考,《设计模式》等的松耦合,主要考虑的是通用性和可扩展性。越是通用,往往性能会有损耗,这需要权衡。
2、架构性能的思考,
(1)各种对慢设备访问的缓冲技术,cpu的cache、页表的TLB缓冲、目录项的缓冲、磁盘文件读写的内存页高速缓存、DMA访问方式;各种减少重复查找的技术和各种减少反复分配释放的技术,dlmalloc的dv记录、jemalloc的Tcache线程缓冲、kmem_cache的slab/slub/slob缓存、bitmap方式整体判断的f标记位的记录方式。
(2)各种减少拷贝技术,例如skbuff指针移动技术、写时复制技术、共享内存技术。
(3)更加高效的数据结构和算法,例如红黑树,具体参见《算法导论》
3、架构的安全性的思考,面向数据的数据安全的各种锁保护机制、数据完整性的检查、数据纠错的各种checksum方法、数据访问权限的各种保护(包括SeLinux的措施等)。
4、各种思想, 面向过程、面向对象、面向服务、面向数据,等等思想。都是你应该理解和思考的。
5、考虑到系统调用会有一定的性能损失,所以要区分进程间通信、进程内通信、机器内同一个SOC的各中子模块之间通信、不同机器(PC)间通信的不同。
(1)进程内,直接用函数直接调用、函数指针callback回调方式、queue队列传递、链表、树、hash表、全局变量等即可;没必要用socket通信、sharememory等涉及系统调用的相对低性能的方式交换数据和信息。
(2)进程间可以使用sharememory、socket等各种进程间通信方式。 同一个SOC的各个子模块,例如高通的Application arm cpu和modem dsp核模块之间,采用sharememory共享物理内存方式、总线通信方式、socket网络通信方式。
(3)不同PC机器之间采用socket网络通信方式、各种通信总线方式。

某些内容具体参考我的视频课程:
https://edu.51cto.com/lecturer/8896847.html
https://edu.51cto.com/topic/2385.html

相关内容

热门资讯

晒出317万年终奖后,腾讯一员... 近日,有网友晒出疑似腾讯内部发布的通报:WXG某项目组负责人叶某在职期间,因私自泄露公司敏感信息,被...
公安部:国际打击电信网络诈骗联... 今天(24日)上午,国务院新闻办公室举行“开局起步‘十五五’”系列主题新闻发布会,公安部相关负责人介...
数学之外的邓煜:INTJ、知乎... 在23日于美国费城宾夕法尼亚州会展中心举行的2026年国际数学家大会开幕式上,中国数学家邓煜、王虹获...
新晋菲尔兹奖得主,当天宣布加入... 刚拿到数学界最高荣誉,转头就宣布:我要去OpenAI了。Jacob Tsimerman,这位领奖台上...
竞逐百亿赛道,北京十条政策卡位... 从基础模型到框架性能、推理效率、行业应用,半年来北京以智能体为牵引不断精进。作为我国AI发展的引领者...
共促数智交融 共启丝路新篇—... 本报记者 亓玉昆7月22日,2026年世界互联网大会数字丝路发展论坛在陕西西安举行。论坛以“智汇丝路...
赛里木湖景区通报“工作人员殴打... 2026年7月23日17时许,赛里木湖景区入口处发生多名景区工作人员殴打旅游车司机事件,我们深感痛心...
继英伟达黄仁勋后,AMD苏姿丰... IT之家 7 月 24 日消息,随着中国开源 AI 模型的不断变强,近期美国业界出现了关于 AI 是...
辰奕智能获得实用新型专利授权:... 证券之星消息,根据天眼查APP数据显示辰奕智能(301578)新获得一项实用新型专利授权,专利名为“...
湖南湘江新区文化创意产业出海观... 中新网长沙7月23日电(胡语桐)在日本大型量贩门店的货架上,中国研发的视频创意软件实体产品陈列其中;...