编程(38)----------计算机的部分原理

news2024/12/28 18:43:19

本篇主要总结一些计算机的理论部分.

计算机在发展历程中,无论是最早的巨无霸机器,还是现在小到可以拿在手中的掌机.只要其本质上是计算机,在最基础的结构上,都是以冯诺依曼体系所构建的.

冯诺依曼体系大致将计算机分为几个最重要的部分:输入,输出,中央处理器,存储设备.也就是说,只要是一个计算机,必定会满足存在这几个部分.

常见的输入设备,如鼠标,键盘. 输出设备如显示屏,音响耳机. 当然也存在如触摸屏这样的输入输出一体的设备. 而在现如今的计算机中,除这些必备的硬件以外还有如显卡,散热器这些用于更方便使用计算机的硬件. 但无论如何, 冯诺依曼体系中提到的硬件, 是必须存在的.

当然,除此以外. 计算机想要运行, 也得有相应的操作系统, 其定位大概如下图所示:

                                                                                

从下往上, 硬件, 顾名思义就是电脑的主要配件. 键盘鼠标之类的.

驱动程序, 是用于计算机识别硬件的. 因为硬件种类繁多, 且各个厂所生产的也存在差异, 要想所有的硬件都能使用, 就得使计算机能够辨认出相应的硬件, 驱动程序存在的意义就在于此.

操作系统内核,是操作系统的核心功能.

系统调用,其作用是给应用程序提供api. 

也就是说,假设某个应用程序要调用相应的硬件,就得逐层调用. 先通过系统调用提供的api, 把命令告知于内核,内核在调用相应的驱动程序识别出相应的硬件,实现调用. 反之也是如此, 例如简单的在电脑桌面上双击打开一个应用程序,也是如此逐层调用.

当打开一个程序以后,程序开始运行. 这时打开电脑的任务管理器, 便可以找到该程序处于进程当中. 因此,所谓进程, 即是在运行中的程序. 若未运行, 则不存在所谓的进程.

系统内部要对每一个程序实行管理, 而对于进程, 系统也要进行秒速与组织. 组织类似于用一个链表的结构来进行管理. 重点在于描述.

在计算机中, 描述一个进程所使用的是用C语言实现的结构体, 也被起名为PCB. 组织就是将多个PCB以链表的形式连在一块. 既然是用于描述一个进程, 那它所描述的进程属性特征,有以下几个所组成:

1.pid 进程的唯一标识符, 类似于身份证号码.

2.内存指针, 主要描述进程所占用的内存有哪些.

3.文件描述符表, 进程使用的硬盘上的其他文件资源

4.进程调度的相关属性

这些相关属性又包含如进程的状态, 优先级, 上下午, 记账信息这些东西.

进程的状态分为就绪状态, 运行状态, 阻塞状态. 优先级则是对于某些进程系统可能会优先使其运行. 上下文, 记录运行的情况, 再下次运行时接着运行. 类似于游戏中的存档和读档机制. 记账信息, 则是记录每个进程在cpu上的时间, 执行次数等信息.

除此以外, 当程序运行有了进程时, 也会适当占用一部分内存. 注意是内存而不是所谓的硬盘的存储空间. 而以前所谓的类似于0x11111这种写法的地址实际上是虚拟的地址编号. 其作用是, 避免两个进程访问越界. 当出现访问越界时, 会优先在虚拟地址编号上发现越界, 并爆出错误, 不会实际影响到真正的内存地址访问越界.

这里所指的地址, 与内存实际的地址还有所差异. 硬件内存实际上是一个长条, 就类似于一个大走廊, 上面有一些小方块, 这些依次编号, 而这些编号其实就可以被认为是内存的物理地址. 这与电脑内的地址编号也是存在一些差异的.

                                                                                 

 这些小黑快也叫内存颗粒, 内部的结构是一系列的门电路, 构成一个个存储单元.

-----------------------------------------------最后编辑于2023.5. 28下午五点左右

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

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

相关文章

Meta Quest 3发布:超越虚拟现实全新境界

2023年6月2日凌晨,全球领先的虚拟现实技术公司Meta隆重推出了Meta Quest 3无线头戴式显示器。这款全新设计的头戴设备从内到外焕然一新,为用户提供了全方位的体验。 借助全新一代骁龙芯片,Meta Quest 3拥有比Quest 2更高两倍的GPU处理能力&am…

VanillaNet详解:极简的网络模型

VanillaNet详解:极简的网络模型 0. 引言1. 网络结构2. 如何提高简单网络的非线性2.1 深度训练策略2.2 基于级数启发的激活函数3. 实验4. 代码解析总结 0. 引言 深度学习模型架构越复杂越好吗? 自过去的几十年里,人工神经网络取得了显著的进…

chatgpt赋能python:Python在硬件开发中的作用

Python在硬件开发中的作用 随着物联网的快速发展,越来越多的硬件设备需要与互联网连接。Python在硬件开发过程中扮演着重要的角色。 Python的优势 作为一种高级编程语言,Python有以下几个优势: 简单易学:Python的语法简洁清晰…

chatgpt赋能python:Python做网页可以直接访问吗?

Python做网页可以直接访问吗? Python作为一门功能强大的编程语言,近年来在Web开发中也越来越受欢迎。很多人或企业都采用Python来开发网站和网页,那么问题来了,Python做的网页能否直接被搜索引擎访问和索引呢? Pytho…

MySQL5-事务隔离级别和锁机制

❤️ 个人主页:程序员句号 🚀 支持水滴:点赞👍 收藏⭐ 留言💬关注 🌸 订阅专栏:MySQL性能调优 原创博文、基础知识点讲解、有一定指导意义的中高级实践文章。 认真或有趣的技术分享。 该专栏陆…

【数据结构】数据结构与算法基础 课程笔记 第七章 查找

🚀Write In Front🚀 📝个人主页:令夏二十三 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:【数据结构】 💬总结:希望你看完之后,…

Emacs之解决gtags -i --single-update占用率100%卡死问题(一百零六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

python --自动化测试UiAutomator2

安装adb 安装adb后使用命令 adb devices 出现下图即可; 安装python依赖(uiautomator2,weditor) pip install uiautomator22.16.23 weditor0.6.8 -i https://pypi.doubanio.com/simple# 在手机上安装 atx-agent 应用 # 安装apk服务到手机上 python -m uiautomator2 init脚本…

基于 Docker 部署 Mysql8.0.27_单机_主从复制

文章目录 单机部署集群部署master 部署slave 部署错误记录 单机部署 通过 dockerhub 或 docker search 查找镜像。拉取 mysql 镜像。 docker pull mysql:8.0.27创建挂载目录,并赋予权限。 mkdir -p /var/docker_data/mysql/data mkdir -p /var/docker_data/mysql/co…

一些关于c++的琐碎知识点

目录 bool强转 const构成重载:const修饰*p 移动构造 new int (10)所做的四件事 this指针---为什么函数里面需要this指针? .和->的区别 new创建对象 仿函数 new和malloc的区别 c系统自动给出的函数有 delete和delete[ ]区别何在 检查有没有析构函数 e…

六一,用前端做个小游戏回味童年

#【六一】让代码创造童话,共建快乐世界# 文章目录 📋前言🎯简简单单的弹球游戏🎯代码实现📝最后 📋前言 六一儿童节。这是属于孩子们的节日,也是属于我们大人的节日(过期儿童&…

chatgpt赋能python:**Python免费编辑器:提高开发效率和便捷性**

Python 免费编辑器:提高开发效率和便捷性 Python 编程语言已经成为了越来越多开发者的首选。这是因为 Python 语言非常直观易懂,同时也拥有庞大的第三方开源库,方便开发人员快速实现项目功能。Python 编程之所以如此受欢迎,除了这…

Java基础编程

Java入门 1. JDK的安装目录介绍 目录名称说明bin该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。conf该路径下存放了JDK的相关配置文件。include该路径下存放了一些平台特定的头文件。jmods该路径下存放了JDK的各种模块。legal该路径下存放了JDK各模块的授权文…

使用kettle进行数据统计

1.使用kettle设计一个能生成100个取值范围为0到100随机整数的转换。 为了完成该转换,需要使用生成记录控件、生成随机数控件、计算器控件及字段选择控件。控件布局如下图所示 生成记录控件可以在限制框内指定生成记录的个数,具体配置如图所示 生成随机数…

chatgpt赋能python:Python免费教学:让编程更便捷

Python免费教学:让编程更便捷 Python是一门广泛应用于机器学习、数据分析、网络编程和自动化测试等领域的高级编程语言。随着人工智能和大数据分析的兴起,Python的应用广泛受到了各个行业的欢迎,越来越多的人开始学习Python。在这篇文章中&a…

STM32之任务的创建与删除

目录 1. 什么是任务? 2. 任务创建与删除相关函数 任务动态创建与静态创建的区别: xTaskCreate 函数原型 官方案例: vTaskDelete 函数原型 3. 实操 1. 什么是任务? 任务可以理解为进程 / 线程,创建一个任务&#…

【生物力学】《人体骨肌系统生物力学》- 王成焘老师 - 第2章 - 人体几何学测量与仿真建模

第1章回到目录第3章 文章目录 2.1 概论2.2 人体几何学测量2.2.1 人体外部几何形态2.2.2 人体尺寸测量与统计处理2.2.3 中国人体尺寸标准统计测量数据2.2.4 人体各部位比例及人体间尺寸换算2.2.5 人体活动范围测量 2.3 人体骨肌系统三维几何建模的数据来源2.3.1 冷冻切片数字摄像…

“微商城”项目(2准备工作)

一.安装Node.js 本项目使用Vue.js前端框架进行开发,在创建项目之前需要先下载Node.js环境。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它可以让JavaScript运行在服务器端。接下来对Node.js的下载和安装进行详细讲解。 打开Node.js官方网站&a…

RabbitMQ高频面试题

RabbitMQ的使用场景 异步发送消息(验证码、短信、邮件…)mysql、redis、es之间的数据同步分布式事务削峰填谷… 面试题:RabbitMQ如何保证消息不丢失 消息丢失原因 生产者发送的消息未到达交换机交换机未把消息路由到队列mq服务器宕机&…

辅助驾驶功能开发-功能算法篇(1)-ACC-多目标选择

1、总体架构 2、漏斗概念(Funnel) 路径漏斗是围绕着自车预测轨迹的一片区域。换言之,漏斗的中心应该根据预测的轨迹方向相应的弯曲。 2.1、普通&略宽漏斗(Normal Funnel & Wider Funnel) 普通漏斗用于选择路径中最近的目标车辆A和次近的车辆B。 更宽的漏斗用于选择…