プログラミングアーキテクチャの考え方

    架构,作为程序员是必须的,好的架构提供代码重用的可能性(因为模块化/对象化,而且模块/对象间松散耦合),提供灵活的扩展性(方便加入其他模块和功能),代码维护性和可读性好 。
    人类的认识总是连续性上升的,不会飞跃,所以随着时间推移,架构技术也在更新,所以你需要关心一些新的架构技术、新的通信技术、新的框架。例如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のキャッシュ、ページ・テーブルTLBバッファ、バッファのディレクトリエントリ、ディスクファイルメモリページのキャッシュを読み書き、DMAアクセスモード、それぞれを還元技術と低減技術の様々な種類の繰り返し分配リリースで、DV記録dlmalloc、jemalloc Tcacheスレッドバッファ繰り返し、スラブ/スラブ/ SLOBキャッシュ、ビットマップ全体決意記録モードフラグfがいるkmem_cache。
(2)様々な複写技術、例えばskbuffポインタ移動技術、コピーオンライト技術、共有メモリ技術の減少を。
(3)より効率的なデータ構造とアルゴリズムを、例えば赤、黒の木、特に「アルゴリズムの概要、」を参照してください
3、のアーキテクチャの安全の考え方、様々なデータセキュリティロック保護のためのデータ、データの整合性チェック、データ様々な方法チェックサムエラー訂正、(対策のSELinuxを含む)データアクセス様々な保護。
4、すべての種類のアイデア、プロセス指向、オブジェクト指向、サービス指向、データ指向、そしてそう思いました。すべてのあなたが理解し、考慮する必要があります。
5、異なる中性子SOCモジュールシステムとの間で通信するために考慮に異なるマシン(PC)との間の通信を取ることは、プロセス間通信、プロセス内の内部通信、同一の機械を区別するために、いくつかのパフォーマンスの損失が存在することになる呼び出します。
(1)プロセスにおいて、関数直接直接呼び出し、コールバック関数のポインタをコールバック・モードにより、キューの転送キュー、リンクリスト、ツリー、ハッシュテーブル、グローバル変数、等することができ;ソケット通信を使用する必要がなく、比較的低い性能を伴うsharememory他のシステムコールデータと情報の交換。
インター(2)プロセス間は、各種処理のsharememory、ソケット通信等を使用することができます。sharememory実施形態では、バス通信、ソケット通信ネットワークを使用して物理メモリを共有ハイパスおよびモデムDSPアプリケーションアームCPUコアモジュールとの間、例えば、各サブモジュールとSOC、。
ソケット通信ネットワーク、通信バス(3)異なるPC機との間のさまざまな方法を使用して。

私が何か特定のビデオレッスンを参照してください。
https://edu.51cto.com/lecturer/8896847.html
https://edu.51cto.com/topic/2385.html

おすすめ

転載: blog.51cto.com/8906847/2440589