【Linux】进程概念I --操作系统概念与冯诺依曼体系结构

img

Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法…感兴趣就关注我吧!你定不会失望。

本篇导航

  • 1. 冯诺依曼体系结构
    • 为什么这样设计?
  • 2. 操作系统概念
    • 为什么我们需要操作系统呢?
    • 操作系统怎么进行管理?

在这里插入图片描述

计算机是由两部分组成的:硬件+软件.与硬件相关的为冯诺依曼体系结构,与软件相关的为:操作系统.

1. 冯诺依曼体系结构

如今大多数计算机(笔记本,服务器等)大多数都遵守冯诺依曼体系结构.实际中的模型细节较为复杂.这是抽象后的简单模型.其结构模型为:

bf9b4e7ba426b5cf8416ca9e992684c

在这张图中,红色为数据传输信号,而黑色则为控制信号

其中输入设备为:键盘,鼠标,硬盘等设备

输出设备为:显示器,打印机,硬盘等设备

运算器与控制器我们统称为CPU

这里的存储器是指内存,而不是硬盘.

为什么这样设计?

输入设备,输出设备的速度远远慢于CPU的速度.而存储器的速度在这二者之间.

由木桶效应可知.性能往往由短板决定.

image-20230826170459034

若直接由CPU对接输入输出设备,则会造成CPU大多时候都在等待IO设备,CPU并不能被很有效的利用起来.

而加入了存储器这个介质,可以较大程度上解决这个问题.提高CPU的利用率.

那么为什么不选择最快的cache呢?

根据存储金字塔来看,越往上的价格越高,且速度越快.若全部采用最快的cache.计算机就会因为造价昂贵而无法普及了

一句话说:所有的设备都只能跟内存打交道

关于冯诺依曼体系结构,我们可以试着从以下这两个例子来理解

  1. 你登上qq后跟你的朋友进行聊天.(不涉及网络传输层面)

    首先键盘作为输入设备,我们输入数据,接着这些数据被放入到内存当中由CPU进行处理.处理完后被放入到输出设备,此时为 网卡.

    发送给你的朋友的电脑.

    同样,他的电脑也满足这个体系结构.网卡作为输入设备,收到消息后将消息放到内存中,cpu对消息进行处理后,显示在输出设备 屏幕

7bdcc5af99426bfbb2949a57573a0c9

  1. 通过qq来传输文件

    首先硬盘作为输入设备,我们输入数据,接着这些数据被放入到内存当中由CPU进行处理.处理完后被放入到输出设备,此时为 网卡.

    发送给你的朋友的电脑.

    同样,他的电脑也满足这个体系结构.网卡作为输入设备,收到文件数据后将文件数据放到内存中,cpu对文件数据进行处理后,存储在输出设备 硬盘

1aa497326af28e1501e009b51e52fa5

2. 操作系统概念

操作系统是一款管理的软件,上面的冯诺依曼体系结构展现的是硬件层面.但一个个硬件如何进行协同工作的呢?这就是操作系统的意义所在.

为什么我们需要操作系统呢?

  1. 帮助用户管理好软硬件资源
  2. 为了给用户提供一个高效的运行环境.使用电脑的可以粗略的分为两类人,一类是普通用户,一类是程序员.前者使用的大多为程序员开发的软甲.而程序员才是真正使用操作系统的那一部分人.

因为操作系统不相信用户,对自己进行了封装,我们大多时候无法看见它的细节.为了能维护自身安全,也能给用户提供服务,用户只能通过其提供的接口去访问.也就是 系统调用接口

也就是说:**任何访问操作系统的行为,都只能通过系统调用去完成.**这样保证了系统的安全稳定.

操作系统怎么进行管理?

我们先设想一个场景:

在学校中,校长如何管理每一个学生呢?

首先,先描述数据,将每一个学生的信息按照某种特定的格式记录,之后组织数据,将其放入excel表方便管理.之后想要找到某位学生,只要按照特定属性进行寻找即可.

在操作系统中也是一样的,将每一个需要管理的对象先按照特定的格式进行 描述数据,之后通过数据结构在进行组织即可.

所以**,在操作系统中,管理任何对象都可以将其转换为对某类数据结构的增删查改.**

具体怎么做的我们之后再说.

我们之前写过的通讯录不就是,先将每个人描述,在组织起来的过程嘛.其在某种方面上,与操作系统是相同的

//描述
struct Person{int age;int tel;string address;
};
//组织
struct Contact
{Person p[100];  
};

6bb2ef0104c16313701e6047fb28c4b

当我们在调用printf()函数的时候,在做什么呢?

每一个调用硬件的函数,其内部封装了系统调用的接口,所以也是通过系统调用的接口去访问驱动程序,硬件,最终显示在屏幕上.
image-20230905164632777

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

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

相关文章

性能监控-grafana+prometheus+node_exporter

Prometheus是一个开源的系统监控和报警工具。它由SoundCloud开发并于2012年发布,后来成为了一个独立的开源项目,并得到了广泛的应用和支持。 Prometheus的主要功能包括采集和存储各种系统和应用程序的监控数据,并提供强大的查询语言PromQL来…

算法:数组中的最大差值---“打擂台法“

文章来源: https://blog.csdn.net/weixin_45630258/article/details/132737088 欢迎各位大佬指点、三连 1、题目: 给定一个整数数组 nums,找出给定数组中两个数字之间的最大差值。要求,第二个数字必须大于第一个数字。 2、分析特…

【数据结构】搜索树MapSet

目录 1.搜索树 1.1概念 1.2查找 1.3插入 1.4删除 2.Map 2.1map说明 2.2TreeMap和HashMap 2.3常用方法 3.Set 3.1set说明 3.2TreeSet和HashSet 3.3常用方法 1.搜索树 1.1概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者具有以下性质&…

静态工厂模式,抽象工厂模式,建造者模式

静态工厂模式 ublic class FruitFactory {public static Fruit getFruit(String name) {Fruit fnull;switch (name){case "APPLE":{fnew Apple();}case "BANANA":{fnew Banana();}default :{System.out.println("Unknown Fruit");}}return f;} …

机器学习算法系列————决策树(二)

1.什么是决策树 用于解决分类问题的一种算法。 左边是属性,右边是标签。 属性选择时用什么度量,分别是信息熵和基尼系数。 这里能够做出来特征的区分。 下图为基尼系数为例进行计算。 下面两张图是对婚姻和年收入的详细计算过程(为GINI系…

2023.09.10 学习周报

文章目录 摘要文献阅读1-1 题目1-2 创新点1-3 本文工作2-1 题目2-2 什么是图2-3 图神经网络2-4 信息传递3-1 题目3-2 创新点3-3 本文工作 深度学习1.GNN的构建步骤2.构建图的方法3.GNN的简单样例 总结 摘要 本周阅读了三篇文章,第一篇是基于物理信息深度学习和激光…

【C++】学习STL中的list

❤️前言 大家好!,今天为大家带来的一篇博客是关于STL中的list,内容主要包括list的介绍使用、list的模拟实现。以及list与vector的对比。 正文 list的介绍和使用 首先,让我们看看list的文档介绍: list是可以在常数范…

PaddleOCR学习笔记3-通用识别服务

今天优化了下之前的初步识别服务的python代码和html代码。 采用flask paddleocr bootstrap快速搭建OCR识别服务。 代码结构如下&#xff1a; 模板页面代码文件如下&#xff1a; upload.html : <!DOCTYPE html> <html> <meta charset"utf-8"> …

数据挖掘的学习路径

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

Docker实战:docker compose 搭建Sonar

1、docker-compose-sonar文件准备 进入/home/docker目录&#xff0c;新建docker-compose-sonar.yml文件&#xff0c;内容如下&#xff1a; version: 3 services: sonar:image: sonarqube:8.9.6-communityrestart: always container_name: sonarqubevolumes:# 设置与宿主机时间…

Redis常见命令

命令可以查看的文档 http://doc.redisfans.com/ https://redis.io/commands/ 官方文档&#xff08;英文&#xff09; http://www.redis.cn/commands.html 中文 https://redis.com.cn/commands.html 个人推荐这个 https://try.redis.io/ redis命令在线测试工具 https://githubfa…

Hive_Hive统计指令analyze table和 describe table

之前在公司内部经常会看到表的元信息的一些统计信息&#xff0c;当时非常好奇是如何做实现的。 现在发现这些信息主要是基于 analyze table 去做统计的&#xff0c;分享给大家 实现的效果某一个表中每个列的空值数量&#xff0c;重复值数量等&#xff0c;平均长度 具体的指令…

9、补充视频

改进后的dijkstra算法 利用小根堆 将小根堆特定位置更改,再改成小根堆 nodeHeap.addOrUpdateOrIgnore(edge.to, edge.weight + distance);//改进后的dijkstra算法 //从head出发,所有head能到达的节点,生成到达每个节点的最小路径记录并返回 public static HashMap<No…

分享 8 个 VSCode 插件,提升你的编码体验

大多数开发者都在不断寻找让开发工作更轻松的方法&#xff0c;我也是如此。合适的工具可以帮助你实现这一目标。 在本文中&#xff0c;我们将探讨我个人使用的八个扩展&#xff0c;以优化我的编码体验。让我们来看看这些扩展的列表&#xff0c;亲自体验它们如何改善你的编码体验…

leetcode897. 递增顺序搜索树(java)

递增顺序搜索树 题目描述中序遍历代码演示 递归专题 题目描述 难度 - 简单 LC - 897. 递增顺序搜索树 给你一棵二叉搜索树的 root &#xff0c;请你 按中序遍历 将其重新排列为一棵递增顺序搜索树&#xff0c;使树中最左边的节点成为树的根节点&#xff0c;并且每个节点没有左子…

如何让 Llama2、通义千问开源大语言模型快速跑在函数计算上?

:::info 本文是“在Serverless平台上构建AIGC应用”系列文章的第一篇文章。 ::: 前言 随着ChatGPT 以及 Stable Diffusion,Midjourney 这些新生代 AIGC 应用的兴起&#xff0c;围绕AIGC应用的相关开发变得越来越广泛&#xff0c;有呈井喷之势&#xff0c;从长远看这波应用的爆…

解除百度安全验证

使用chrome浏览器用百度浏览时&#xff0c;一直弹百度安全验证&#xff1a; 在设置里进行重置&#xff1a; 然后重启浏览器就可以了。

Leetcode:【169. 多数元素】

题目 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 难度&#xff1a;简单 题目链接&#xff1a;169. 多数元素 示例 1&#xff…

“系统的UI”——SystemUI

SystemUI的实现 以StatusBar为例&#xff0c;来分析下Android系统具体是如何实现它们的。 相关代码分为两部分&#xff0c;即&#xff1a; Service部分 代码路径&#xff1a;frameworks/base/services/java/com/android/server。 应用部分 代码路径&#xff1a;frameworks…

对接西部数据Western Digital EDI 系统

近期我们为国内某知名电子产品企业提供EDI解决方案&#xff0c;采用知行之桥 EDI 系统作为核心组件&#xff0c;成功与西部数据Western Digital&#xff08;简称西数&#xff09;建立EDI连接&#xff0c;实现数据安全且自动化传输。 EDI实施需求 EDI连接 传输协议&#xff1a;A…