[架构之路-229]:计算机体硬件与系结构 - 计算机系统的矩阵知识体系结构
目录
一、纵向:目标系统的分层结构
1.1 目标系统的架构
1.2 网络协议栈
1.3 计算机程序语言分层
二、横向(构建目标系统的时间、开发阶段):软件工程
三、二维矩阵知识体系结构
一、纵向:目标系统的分层结构
1.1 目标系统的架构
[架构之路-106]:《软件架构设计:程序员向架构师转型必备》-16-常见的十余种软件分层架构_软件分层设计_文火冰糖的硅基工坊的博客-CSDN博客
计算机系统的分层知识体系是指计算机硬件和软件系统按功能和抽象程度的不同被划分为多个层次,每个层次负责不同的任务和功能。这种分层的设计有助于提高系统的可移植性、可扩展性和维护性,同时也方便不同层次的开发人员进行独立的开发和测试。
以下是计算机系统常见的分层知识体系:
-
硬件层:计算机系统的最底层是硬件层,包括处理器、内存、存储器、输入/输出设备等硬件组件。硬件层负责管理和控制硬件资源,并提供底层的执行能力。
-
网络/硬件驱动层:网络层位于硬件层和操作系统层之间,负责数据在不同计算机之间的传输和通信。网络层提供了数据传输的基本功能,包括数据的分组、路由选择、流量控制和错误检测等。它使用协议(如TCP/IP协议)来实现数据的可靠传输和通信。网络层实现了计算机之间的互联,使得计算机可以通过网络进行数据交换和通信。网络层的功能是支持应用程序的远程访问和数据传输。
-
操作系统层:操作系统层位于硬件层之上,负责管理计算机的资源和提供各种系统服务。它提供了进程管理、内存管理、文件系统管理、设备驱动程序等功能,以支持上层应用的运行。
-
中间件层:中间件层位于操作系统层之上,提供了更高级别的服务和功能,以方便应用程序的开发和部署。中间件层包括数据库系统、消息队列、Web服务器等,它们提供了不同的服务和接口,以满足应用程序的需求。
-
数据库层:数据库层位于中间件层和应用程序层之间,负责管理和组织数据。数据库系统提供了一种结构化的方式来存储和查询数据,以支持应用程序对数据的管理和访问。数据库系统具有数据持久性、数据一致性和数据安全性等特点。常见的数据库系统包括关系型数据库(如MySQL、Oracle)、非关系型数据库(如MongoDB、Redis)等。数据库层承担着数据的存储、查询、事务处理和并发控制等任务,为应用程序层提供数据支持。
-
应用程序层:应用程序层是计算机系统中最上层的层次,包括各种用户应用程序和应用软件。应用程序层通过中间件和操作系统层提供的服务来实现特定的功能,如办公软件、图像处理软件、游戏等。
整个计算机系统的分层知识体系可以用类似于金字塔形状的模型来表示,底层是硬件层,然后是操作系统层、中间件层和应用程序层。每个层次都依赖于下层提供的功能和服务,并为上层层次提供相应的接口和抽象。这种分层设计使得不同的开发人员可以专注于不同的层次进行开发,提高了系统的可维护性和可扩展性。
1.2 网络协议栈
在计算机系统的分层知识体系中,协议栈是一种按照不同层次组织的网络通信协议集合。
协议栈通过将通信功能和任务分解为多个层次,从而实现了对网络通信的有效管理和处理。
常见的协议栈是TCP/IP协议栈,它是互联网中最为广泛使用的网络通信协议栈。TCP/IP协议栈根据功能和抽象程度的不同分为多个层次,包括:
-
物理层:物理层负责传输和接收原始的比特流,使用物理媒介进行数据传输,如电缆、光纤等。
-
数据链路层:数据链路层通过帧的方式将比特流划分为数据包,并为其添加控制信息,以实现可靠地传输数据。在这个层次上,数据传输是局域网(LAN)内的直接通信。
-
网络层:网络层提供了数据包的路由和转发功能,负责确定数据从源到目的地的路径。它使用IP协议来处理网络地址和路由选择。
-
传输层:传输层提供端对端的通信服务,主要使用TCP协议和UDP协议。其中,TCP协议提供可靠的、面向连接的通信,而UDP协议提供不可靠的、面向无连接的通信。
-
应用层:应用层是最高层的协议层,包含各种应用程序和协议,如HTTP、FTP、SMTP等。应用层的协议负责处理特定应用领域的通信需求。
协议栈中的每个层次都有独立的功能和责任,下层向上层提供服务和接口,并通过协议交互来实现通信。上层向下层传递数据和请求,以使数据在网络中得到正确的处理和传输。协议栈的分层结构使得不同层次的协议能够独立进行开发、测试和升级,同时也提供了灵活性和可扩展性,以适应不同的应用场景和需求。
除了TCP/IP协议栈外,还有其他协议栈,如ISO/OSI七层模型、Ethernet协议栈等。不同的协议栈可能有不同的层次数量和名称,但都遵循类似的分层设计原则,以实现有效的通信和数据传输。
1.3 计算机程序语言分层
二、横向(构建目标系统的时间、开发阶段):软件工程
[架构之路-175]-《软考-系统分析师》-知识体系大全(图解)_文火冰糖的硅基工坊的博客-CSDN博客
软件工程是系统化、规范化地应用技术和方法,以开发高质量软件的学科和实践。软件开发过程是软件工程的核心,它描述了从需求分析到软件交付的全过程,并包括了软件设计、编码、测试、部署和维护等阶段。
常见的软件开发过程包括以下几个主要阶段:
-
需求分析:在需求分析阶段,开发团队与用户进行沟通和讨论,确保对用户需求和系统功能有清晰的理解。需求分析的目标是明确系统的功能需求、性能要求、用户界面等方面的需求。
-
软件设计:在软件设计阶段,根据需求分析的结果,设计软件系统的整体架构和模块的详细设计。软件设计包括系统结构设计、数据结构设计、算法设计等,旨在保证软件的可靠性、健壮性和可维护性。
-
编码与实现:在编码与实现阶段,开发团队根据软件设计的规范,将设计的模块实现为具体的编程代码。开发人员使用合适的编程语言和开发工具进行编码,并进行代码的单元测试。
-
软件测试:软件测试是为了评估软件是否满足预期需求和质量标准。测试可以分为单元测试、集成测试和系统测试等不同层次和类型。通过不同的测试手段,检验软件的功能正确性、性能、安全性和可靠性等方面。
-
软件部署与维护:在软件部署阶段,将已经测试通过的软件安装和部署到生产环境中。软件维护阶段则是在软件交付后,通过修复错误、改进功能、升级版本等方式来保障软件的运行和持续改进。
除了以上主要阶段,软件开发过程中还需要进行持续的需求管理、变更控制、配置管理、项目管理等工作,在整个开发过程中进行合理的管理和协调。
需要注意的是,不同的软件项目可能采用不同的开发方法和过程模型,如瀑布模型、敏捷开发、迭代开发等。具体的软件开发过程可根据项目的特定要求和团队的实际情况进行调整和选择。
三、二维矩阵知识体系结构
对于计算机二维知识体系结构,我们可以考虑以下两个维度:软件开发阶段维度和计算机分层维度。
-
软件开发阶段维度(人的维度、时间的维度):这个维度关注软件的开发生命周期,将软件开发过程划分为不同的阶段。常见的软件开发阶段包括需求分析、软件设计、编码与实现、软件测试和部署与维护。每个阶段都有不同的目标、方法和工具。
-
计算机分层维度(机器的维度、目标系统的维度):这个维度关注计算机系统的分层结构。常见的计算机分层模型是ISO/OSI七层模型和TCP/IP四层模型。ISO/OSI七层模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,它描述了计算机系统中各个层次的功能和协议。TCP/IP四层模型包括网络接口层、网络层、传输层和应用层,它是实际互联网中广泛使用的分层模型。
综合以上两个维度,我们可以构建如下的知识体系结构:
- 软件开发阶段维度- 需求分析- 软件设计- 编码与实现- 软件测试- 部署与维护- 计算机分层维度- 应用层- 表示层- 会话层- 传输层- 网络层- 数据链路层- 物理层
在实践中,我们需要学习和理解这两个维度的知识,掌握软件开发的各个阶段的技能和方法,并了解计算机系统中各层次的功能和协议。这有助于我们在实际的软件开发和计算机系统设计中应用相应的概念、技术和工具。
相关文章:

[架构之路-229]:计算机体硬件与系结构 - 计算机系统的矩阵知识体系结构
目录 一、纵向:目标系统的分层结构 1.1 目标系统的架构 1.2 网络协议栈 1.3 计算机程序语言分层 二、横向(构建目标系统的时间、开发阶段):软件工程 三、二维矩阵知识体系结构 一、纵向:目标系统的分层结构 1.1…...

第一章 visual studio下载安装
一、官网下载 地址:https://visualstudio.microsoft.com/zh-hans/ 点击免费visual studio 二、安装 运行下载好的exe文件,自定义安装目录 三、选择需要的组件安装 只需要选择标记组件,然后点击安装 等待安装完成就行 四、重启电脑 安装完之后…...

【服务器】在 Linux CLI 下安装 Anaconda
【服务器】在 Linux CLI 下安装 Anaconda 1 系统环境2 下载安装包3 安装 1 系统环境 查看系统信息 cat /etc/os-release2. 查看架构 uname -a # output # Linux localhost.localdomain 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00:20:22 UTC 2020 x86_64 x86_64 x86…...
Python中Lambda用法
在Python中,lambda函数是一种形式较短的函数,又称为匿名函数。与正常的函数不同,lambda函数没有名称,因此只能在定义时直接传递给其他函数或变量使用,而不能单独调用。 lambda函数的语法非常简单,格式如下…...

nodejs+vue养老人员活体鉴权服务系统elementui
系统 统计数据:统计报表、人员台账、机构数据、上报数据、核验报表等,养老人员活体鉴权服务是目前国家养老人员管理的重要环节,主要为以养老机构中养老人员信息为基础,每月进行活体鉴权识别并统计数据为养老补助等管理。前端功能&…...
解决caffe中的python环境安装的问题(补充)
上一篇(解决caffe中的python环境安装的问题_qiuchangyong的博客-CSDN博客)说到了安装过程中遇到的常见问题,其实还有一个忘了补充,就是在执行命令"sudo python -m pip install -r requirements.txt"后,出现p…...
面试常用排序查找算法
文章目录 1 二分查找2 冒泡排序3 堆排序4 插入排序5 快速排序6 选择排序7 希尔排序 1 二分查找 定义两个变量left和right,分别表示数组的左边界和右边界,初始值分别为0和len - 1,其中len是数组的长度。计算数组的中间位置mid,公式…...

CUDA C编程权威指南:1.1-CUDA基础知识点梳理
主要整理了N多年前(2013年)学习CUDA的时候开始总结的知识点,好长时间不写CUDA代码了,现在LLM推理需要重新学习CUDA编程,看来出来混迟早要还的。 1.CUDA 解析:2007年,NVIDIA推出CUDA(…...

讲讲项目里的仪表盘编辑器(四)分页卡和布局容器组件
讲讲两个经典布局组件的实现 ① 布局容器组件 配置面板是给用户配置布局容器背景颜色等属性。这里我们不需要关注 定义文件 规定了组件类的类型、标签、图标、默认布局属性、主文件等等。 // index.js import Container from ./container.vue; class ContainerControl extends…...
Qt模块、Qt开发应用程序类型、Qt未来主要市场、Qt6功能普及
Qt模块、Qt开发应用程序类型、Qt未来主要市场、Qt6功能普及 文章目录 1.Qt核心模块2.Qt的功能拓展3.Qt未来主要市场4.Qt6功能普及5.弃用的功能: Qt是一个跨平台的应用程序开发框架,提供了丰富的模块和工具来开发各种类型的应用程序。以下是Qt目前已有的…...
nodejs+vue高校校图书馆elementui
管理员输入书籍所在的书架位置,借阅提醒系统:可以查看个人借阅信息和图书到期提醒、挂失、检索、虚拟借书证不仅为群众提供了服务,而且也推广了自己,让更多的群众了解自己。 管理员页面: 第三章 系统分析 10 3.1需求分…...
CUDA C编程权威指南:1.2-CUDA基础知识点梳理
主要整理了N多年前(2013年)学习CUDA的时候开始总结的知识点,好长时间不写CUDA代码了,现在LLM推理需要重新学习CUDA编程,看来出来混迟早要还的。 1.闭扫描和开扫描 对于一个二元运算符 ⊕ \oplus ⊕和一个 n n n元…...
C语言—位运算符
目录 &(位与,AND): |(位或,OR): 位取反(~): 左移(<<): 右移(>>): &(位与,AND)&…...

怎么才能实现一个链接自动识别安卓.apk苹果.ipa手机和win电脑wac电脑
您想要实现的功能是通过检测用户代理(User Agent)来识别访问设备类型并根据设备类型展示相应的页面。您可以根据以下步骤进行实现: 选择后端语言和框架,例如:Node.js、Express。 创建一个新的Express项目。 编写一个…...

zookeeper选举机制
全新集群选举 zookeeper 全新集群选举机制网上资料很多说法很模糊,仔细思考了一下,应该是这样 得到票数最多的机器>机器总数半数 具体启动过程中的哪个节点成为 leader 与 zoo.cfg 中配置的节点数有关,下面以3个举例 选举过程如下 server…...
vcpkg切换 Visual Studio 版本
vcpkg切换 Visual Studio 版本 在使用vcpkg作为项目的包管理工具时,可能会遇到需要切换Visual Studio版本的情况。下面是一种简单的方法来实现这个目标,通过修改triplet文件来指定使用的Visual Studio版本。 步骤1: 创建或修改Triplet文件 首先&#…...

运算符重载
#include <iostream> using namespace std; class Num { private:int num1; //实部int num2; //虚部 public:Num(){}; //无参构造Num(int n1,int n2):num1(n1),num2(n2){}; //有参构造~Num(){}; //析构函数const Num operator(const Num &other)const //加号重载{Nu…...
Llama2-Chinese项目:7-外延能力LangChain集成
本文介绍了Llama2模型集成LangChain框架的具体实现,这样可更方便地基于Llama2开发文档检索、问答机器人和智能体应用等。 1.调用Llama2类 针对LangChain[1]框架封装的Llama2 LLM类见examples/llama2_for_langchain.py,调用代码如下所示:…...
ES6中数组的扩展
1. 扩展运算符 用三个点(...)表示,它如同rest参数的逆运算,将数组转为用逗号分隔的参数序列。扩展就是将一个集合分成一个个的。 console.log(...[1, 2, 3]); // 1, 2, 3可以用于函数调用 扩展运算符后还可以放置表达式 ...(x > 0 ? [a] : [])如…...

计算机考研 | 2016年 | 计算机组成原理真题
文章目录 【计算机组成原理2016年真题44题-9分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2016年真题45题-14分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2016年真题44题-9分】 假定CPU主频为5…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...