【linux】冯诺依曼架构

news2024/10/11 7:01:11

Alt

🔥个人主页Quitecoder

🔥专栏linux笔记仓

Alt

目录

    • 01.冯诺依曼体系结构
    • 02.操作系统(Operator System)
      • 如何理解“管理”
      • 操作系统中实现“管理的先描述再组织”
    • 03.系统调用与库函数
      • 系统调用
      • 库函数

01.冯诺依曼体系结构

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系
在这里插入图片描述
截至目前,我们所认识的计算机,都是由一个个的硬件组件组成

  • 输入单元:包括键盘, 鼠标,扫描仪, 写板等
  • 中央处理器(CPU):含有运算器控制器
  • 输出单元:显示器,打印机等

关于冯诺依曼,必须强调几点:

  • 这里的存储器指的是内存
  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取

一句话,所有设备都只能直接和内存打交道

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
冯·诺依曼架构是现代计算机的基础,其核心是将程序存储在计算机内存中并按顺序执行。数据流的理解涉及如何处理、存储和传输数据。下面我们通过使用QQ聊天和发送文件的例子来探讨这一过程。

  1. 登录QQ
  • 启动QQ应用: 当你点击QQ图标时,操作系统加载QQ程序到RAM中。
  • 程序执行: CPU开始执行程序代码,包括初始化网络连接、用户界面等。
  • 登录过程: 输入用户名和密码后,QQ客户端将这些信息封装成数据包,通过互联网发送到QQ服务器。
  • 身份验证: 服务器检查凭证,验证成功后返回登录成功的信息,并可能包括好友列表、聊天记录等数据。
  1. 发送消息
  • 打开聊天窗口: 选择一个好友开始聊天,此时客户端可能从本地缓存或服务器加载历史聊天记录。
  • 输入并发送消息: 输入文本并点击发送,QQ客户端将消息数据打包,并标记发送目标(好友的唯一标识符)。
  • 数据传输: 数据包通过你的网络连接发送到QQ服务器。
  • 服务器处理: 服务器接收到数据包,解析并确定接收者,然后将消息转发到对应的接收者。
  • 好友接收消息: 好友的QQ客户端通过其网络连接从服务器接收到消息,然后在其聊天窗口显示。
  1. 发送文件
  • 选择并发送文件: 在聊天窗口中选择文件发送选项,选择一个文件后,客户端会先读取文件内容。
  • 文件上传: 客户端可能会将文件分割成多个数据包,这些数据包依次上传到QQ服务器。
  • 文件存储: 服务器接收到所有文件数据后,将文件暂存到服务器上。
  • 通知接收方: 服务器向接收方的客户端发送有文件传来的通知,可能包括文件名、大小和下载链接。
  • 文件下载: 接收方可以选择接收并下载文件。点击下载后,客户端通过服务器提供的链接请求文件数据。
  • 文件传输完成: 文件数据通过网络传输到接收方的设备上,存储于指定位置,完成整个文件发送和接收过程。

在这整个过程中,数据流的管理和优化是至关重要的。这包括数据包的正确打包、有效的网络传输、数据安全和隐私保护等。通过这些例子,可以看到冯·诺依曼架构如何支持复杂的数据处理和传输活动,从而使得应用程序如QQ能够高效、安全地运行

02.操作系统(Operator System)

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。它是计算机系统中最基本的系统软件,提供了用户与整个计算机系统交互的基础环境。笼统的理解,操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell程序等等)

计算机系统体系结构成层状分布,操作系统起到承上启下的作用
在这里插入图片描述
设计OS的目的:

  • 与硬件交互,管理所有的软硬件资源
  • 为用户程序(应用程序)提供一个良好的执行环境

在计算机系统中,操作系统(OS)的核心角色可以理解为一个“管理者”。操作系统的管理功能涵盖了多个层面,主要包括对计算机硬件资源和软件应用的管理。这些资源包括CPU(中央处理器)、内存、存储设备和输入/输出设备等。以下是操作系统在这些方面的管理职责:

如何理解“管理”

“管理”在操作系统的语境中,指的是对计算机系统资源的有效分配、监控和调度,以确保系统的稳定运行和高效性能。操作系统通过一系列的程序和策略来实现这些管理任务,从而使得多个程序和用户可以高效、安全地共享计算机资源。

管理的例子

  1. 进程管理:操作系统负责创建、执行、暂停和终止进程。同时,它还负责进程间的同步和通信。
  2. 内存管理:操作系统管理所有程序在运行时的内存需求,确保每个程序获得足够的内存,并处理虚拟内存和物理内存之间的映射。
  3. 文件系统管理:操作系统负责文件的创建、删除、读取和写入。它管理磁盘空间的分配和文件的存储,提供用户级别的文件访问权限。
  4. 设备管理:操作系统通过设备驱动程序管理所有的硬件设备,如键盘、鼠标、硬盘等,控制硬件设备的数据输入输出操作。
  5. 用户界面提供:操作系统提供了与用户交互的界面,如命令行界面(CLI)或图形用户界面(GUI),让用户能够更方便地与计算机系统交互。

被操作系统管理的对象主要包括:

  • 硬件资源:CPU、内存、存储设备(硬盘、SSD等)、输入输出设备(键盘、鼠标、显示器等)。
  • 软件资源:应用程序、系统服务、用户数据和系统数据。

操作系统通过各种数据结构(如表格、队列和树)来组织被管理的对象

  • 进程表:用来跟踪各个进程的状态和资源占用。
  • 内存映射:包括虚拟内存地址到物理内存地址的映射。
  • 文件目录结构:用树状结构来组织文件系统中的文件和目录。
  • 设备队列:管理各个设备请求的队列,确保高效的资源访问。

通过这些管理职责,操作系统确保了计算机系统的高效、稳定和安全运行,允许用户和应用程序更好地执行其任务。

在操作系统的上下文中,管理的“先描述再组织”原则可以被解释为首先定义和明确资源或任务的特征,然后根据这些定义来规划和优化资源的分配和任务的调度。操作系统作为计算机系统资源的管理者,必须精确地理解各种资源的状态、需求和优先级,然后才能有效地组织和调配这些资源以满足系统和用户的需求。这一原则确保了资源使用的最大效率和系统性能的优化。

操作系统中实现“管理的先描述再组织”

  1. 资源描述

    • 硬件资源:如CPU、内存、存储设备和输入输出设备。操作系统需要详细识别每个硬件资源的特性,包括类型、性能参数、当前状态和使用情况。
    • 软件资源:如进程、线程、文件系统等。操作系统通过描述这些资源的属性(如进程的优先级、线程的状态、文件的权限等)来管理它们。
  2. 资源组织

    • 进程管理:操作系统首先通过进程表来描述所有进程的状态和属性。然后,基于这些描述信息,操作系统调度进程运行,管理它们的生命周期,优化CPU的使用效率。
    • 内存管理:操作系统描述每个内存块的状态(如已分配、空闲)、大小和位置。根据这些描述,操作系统通过内存分配算法(如分页、分段)来有效地组织内存资源,确保每个应用程序和服务都能得到所需的内存。
    • 文件管理:操作系统描述文件和目录的结构、权限和位置,然后根据这些信息来组织文件存储、执行文件访问控制和数据备份。
  3. 任务调度

    • 描述任务需求:操作系统描述每个任务的资源需求、优先级和截止时间。
    • 组织和调度:根据这些描述,操作系统安排任务执行的顺序,优化资源分配,以达到最小化响应时间、最大化吞吐量或其他优化目标。
  4. 性能管理

    • 系统监控:操作系统通过持续监控和描述系统性能参数(如CPU利用率、内存使用、IO操作等),获取系统运行的实时画像。
    • 资源再组织:根据性能监控的数据,操作系统可能会重新组织资源,调整任务优先级,或平衡负载,以保持系统性能的最优化。

通过这种方式,“先描述再组织”的管理策略帮助操作系统在不断变化的需求和资源状态中保持高效和稳定。这不仅优化了资源的使用,还提高了系统的整体性能和用户的满意度

03.系统调用与库函数

在理解操作系统和应用程序交互时,系统调用库函数是两个核心概念,它们在功能和执行层面有明显的差异。
在这里插入图片描述
如果我们开发直接调用系统调用接口,这样的代码我们成它不具有跨平台性

系统调用

系统调用是应用程序与操作系统之间的接口,是程序在执行期间请求操作系统提供特定服务的一种方式。这些服务包括硬件操作、创建和执行进程、管理文件系统等底层操作。系统调用允许用户级应用程序执行通常不允许的操作,确保系统稳定性和安全性。

  • 特点
    • 权限层级: 系统调用在较低的权限层级执行,通常是操作系统的核心层级。
    • 功能范围:涵盖底层硬件管理、进程控制、文件操作等。
    • 执行过程:执行系统调用时,CPU从用户模式切换到内核模式,这是一种权限升级。

库函数

库函数是一些预先编写好的、可以在程序中直接调用的函数,通常由各种标准或非标准库提供,如C标准库(libc),提供字符串处理、文件操作、数学计算等功能。库函数可以包含系统调用,但也可以只是执行算法或其他计算任务而不直接请求操作系统资源。
在这里插入图片描述

  • 特点

    • 权限层级:库函数通常在用户模式下执行,不涉及模式的切换。
    • 功能范围:可以非常广泛,从简单的数学计算到复杂的图形渲染等。
    • 依赖性:库函数可能调用系统调用来执行底层操作,如文件I/O。
  • 系统调用示例:open()read()write()fork()exec()等是典型的系统调用,它们直接与操作系统内核交互,管理硬件资源或进程等。

  • 库函数示例:printf()strcpy()malloc()等。这些函数可能在内部使用系统调用,例如printf()最终会调用write()系统调用来输出数据到标准输出,而malloc()可能会调用brk()mmap()系统调用来分配内存。

理解系统调用和库函数之间的区别对于系统编程和应用程序开发非常重要,因为它们影响代码的性能、安全性和可移植性。系统调用因涉及模式切换而通常比库函数调用成本更高;同时,对系统资源的直接控制能力也使得系统调用更加强大但使用时需要更加小心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2204464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSM(5)(动态sql <if>、<where>、返回主键值)

返回主键值&#xff1a; 方法一&#xff1a; useGeneratedKeys 为ture 声明 返回主键 keyProperty 表示要返回的值 封装到对象的属性中 但是这一种方法不支持Orcal数据库。 <insert id"save2" parameterType"com.findyou.entity.User" useGenerated…

[软件工程]—TFTP协议简要解析

TFTP协议简要解析 1.TFTP基本概念 TFTP&#xff08;Trivial File Transfer Protocol&#xff09;&#xff1a;是一个很小且易于实现的文件传送协议&#xff1a; TFTP使用客户服务器方式和使用UDP数据包&#xff0c;因此TFTP需要有自己的差错改正机制。TFTP只支持文件传输而不…

基于STM32 ARM+FPGA+AD的电能质量分析仪方案设计(一)硬件设计

电能质量分析系统硬件设计 3.1 电能质量分析系统设计要求 本系统实现对电能质量的高精度测量&#xff0c;根据国家相关电能质量分析仪器规定 标准以及对市场电能质量分析仪的分析&#xff0c;指定以下设计目标。 &#xff08; 1 &#xff09;电能质量参数测量精度&#xf…

基于 Prometheus+Grafana+Alertmanager 搭建 K8S 云监控告警平台(附配置告警至QQ、钉钉)

文章目录 一、机器规划二、部署安装 node-exporter、prometheus、Grafana、kube-state-metrics1、创建 monitor-sa 命名空间2、安装node-exporter组件2.1、说明2.2、应用资源清单2.3、通过node-exporter采集数据 3、k8s 集群中部署 prometheus3.1、创建一个 sa 账号3.2、将 sa …

智谱开放平台API调用解析

一、什么是智谱AI 智谱AI成立于2019年&#xff0c;由‌清华大学计算机系知识工程实验室的技术成果转化而来&#xff0c;是一家致力于人工智能技术研发和应用的公司。智谱致力于打造新一代认知智能大模型&#xff0c;专注于做大模型的中国创新。 二、智谱开放平台API调用 官方文…

遍历有向图链路(DFS算法)- 优化版

在上一节基础上&#xff0c;去除了节点的pre集合&#xff0c;只保留节点next的结合&#xff0c;对数据模型进行了优化&#xff0c;实现思想做了优化。 有向图示例&#xff1a; 基本思路 构建有向图数据模型校验有向图不能出现回路&#xff0c;即当前节点不能出现在历史链路中首…

Java控制台实现《多线程模拟龟兔赛跑》(实现Runnale接口,重写run()方法)

&#xff08;温馨提示&#xff1a;本题最重要的是学习思路&#xff0c;代码还有待优化和改进&#xff01;&#xff09; 下一篇博客进行优化。实现Callable接口&#xff1a;V call() throws Exception 。可以返回结果&#xff0c;以及可以抛出异常。&#xff08;启动线程比较麻烦…

spingboot项目打包到docker镜像[保姆级教程]

目录 1. 项目准备 2. 项目打包测试 3. docker配置 3.1 服务器端配置 3.2 开发IDEA配置 3.3 创建dockerfile 写在前面: 这博客一晃鸽了好久了,其实不是没有创作,只是懒得写博客了.日常都记录在自己的语雀小本本上了.好久没有出保姆级教程了&#xff0c;这次忽然想通过ide…

IP地址类型选择指南:动态IP、静态IP还是数据中心IP?

你是否曾经困惑于如何选择最适合业务需求的IP地址类型&#xff1f;面对动态IP、静态IP和数据中心IP这三种选择&#xff0c;你是否了解它们各自对你的跨境在线业务可能产生的深远影响&#xff1f; 在跨境电商领域&#xff0c;选择合适的IP类型对于业务的成功至关重要。动态IP、…

UART在Linux内核启动时突然不打印的问题

国庆前一天收到的任务&#xff0c;在一颗比较成熟的芯片的SDK基础上&#xff0c;移植一个新内核&#xff0c;让它能够在bitfile下跑在FPGA上。 看了芯片设计那边给的文档&#xff0c;对比过去的那颗&#xff0c;感觉也就改改寄存器&#xff0c;中断号&#xff0c;时钟&#xff…

聚焦AI|智享AI直播三代模型的出现,打破传统直播束缚!

聚焦AI|智享AI直播三代模型的出现&#xff0c;打破传统直播束缚! 在数字化浪潮的推动下&#xff0c;直播行业正经历着前所未有的变革与升级。其中&#xff0c;智享AI直播三代模型的出现&#xff0c;无疑成为了业界关注的焦点。这一创新技术不仅引发了关于无人直播未来发展方向的…

18709 魔法

### 思路 为了将所有白色奶牛排在前面&#xff0c;黑色奶牛排在后面&#xff0c;我们可以考虑两种策略&#xff1a; 1. 将所有的奶牛都变成白色。 2. 将所有的奶牛都变成黑色。 我们需要计算这两种策略所需的最少次数&#xff0c;并选择其中较小的一个。 具体步骤如下&#x…

从加载到对话:使用 Llama-cpp-python 本地运行量化 LLM 大模型(GGUF)

&#xff08;无需显卡&#xff09;使用 Llama-cpp-python 在本地加载具有 70 亿参数的 LLM 大语言模型&#xff0c;通过这篇文章你将学会用代码创建属于自己的 GPT。 建议阅读完 19a 的「前言」和「模型下载」部分后再进行本文的阅读。 代码文件下载 - Llama-cpp-python 文章目…

AI智能体:共塑企业变革新纪元,引领未来无限潜能

当我们被《银翼杀手2049》或《机械公敌》等科幻大片中那些远超人类能力、能够自主判断并行动的人工智能所震撼时&#xff0c;AI时代的“智能体”已经悄然渗透进我们的工作生活中&#xff0c;成为引领企业变革的先锋力量&#xff0c;将我们带入一个全新的纪元。 ​从辅助到共生&…

【Unity】背景图片随着背景里面内容大小而变化

今天制作项目里面的设置界面和暂停界面时&#xff0c;发现两个界面有很多重复部分&#xff0c;所以直接做一个界面就行了&#xff0c;但是两个界面的背景大小会有变化&#xff0c;图片在下面 这个是游戏暂停界面的&#xff0c;设置界面和这个界面有很多重复地方&#xff0c;仅仅…

学习博客写作

欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持&#x…

安卓手机平板远程访问内网服务器中安装的code-server编程开发实战

文章目录 前言1.Ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 前言 本文主要介绍如何在Linux Ubuntu系统安装code-server&#xff0c;并结合cpolar内网穿透工具配置公网地址&#xff0c;轻松实现使用安…

SQL 干货 | 使用 Having 子句筛选聚合字段

如果你编写 SQL 查询已有一段时间&#xff0c;那么你可能对 WHERE 子句非常熟悉。虽然它对聚合字段没有影响&#xff0c;但有一种方法可以根据聚合值过滤记录&#xff0c;那就是使用 HAVING 子句。本博客将介绍它的工作原理&#xff0c;并提供几个在 SELECT 查询中使用它的示例…

计次卡魔都千丝冥缘应用———未来之窗行业应用跨平台架构

一、魔都千丝冥缘作用 在本次卡购买种&#xff0c;涉及卡包表单、次卡表单&#xff0c;商品表单&#xff0c;提成表单&#xff0c;支付方式表单&#xff0c;职员表单 并且在商品表和次卡表单字段一样&#xff0c;元素name名称一样。 未来之窗魔都千丝冥缘&#xff0c;将功能…

字节跳动青训营开始报名了!

关于青训营&#xff1a; 青训营是字节跳动技术团队发起的技术系列培训 &人才选拔项目;面向高校在校生&#xff0c;旨在培养优秀且具有职业竞争力的开发工程师。 本次技术训练营由掘金联合豆包MarsCode 团队主办课程包含前端、后端和 A 方向&#xff0c;在这个飞速发…