当前位置: 首页 > news >正文

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

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

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

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

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

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

                                                                                

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

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

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

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

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

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

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

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

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

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

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

4.进程调度的相关属性

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

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

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

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

                                                                                 

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

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

http://www.lryc.cn/news/91232.html

相关文章:

  • 若依框架快速搭建(二)
  • 为建筑物的供暖系统实施MPC控制器的小型项目(Matlab代码实现)
  • 【概率论】中心极限定理(二)
  • Blender UV展开流程
  • Flutter 笔记 | Flutter 核心原理(二)关键类和启动流程
  • Android:主题切换
  • terminalworks ASP.NET Core PDF 浏览器-Crack
  • Rust每日一练(Leetday0020) 最后单词的长度、螺旋矩阵II、排列序列
  • 短视频矩阵源码如何做应用编程?
  • 【运维知识进阶篇】Ansible实现一套完整LNMP架构
  • Spring Boot 自动配置一篇概览
  • 深入理解设计原则之接口隔离原则(ISP)【软件架构设计】
  • IMX6ULL裸机篇之I2C实验主控代码说明二
  • 【计算机组成原理与体系结构】数据的表示与运算
  • 如何入门编程
  • SQL中CONVERT转化日期函数的使用方法
  • SpringBoot2-核心技术(一)
  • mac host学习
  • Java之~指定String日期时间,5分钟一截取时间
  • 【chatGPT4结对编程】chatGPT4教我做图像分类
  • Different romantic
  • learn C++ NO.7——C/C++内存管理
  • SDUT数据库原理——第十章作业(参考答案)
  • My Note of Diffusion Models
  • 【P37】JMeter 仅一次控制器(Once Only Controller)
  • cleanmymac要不要下载装机?好不好用
  • DNS风险分析及防护研究(五):常见的DNS威胁与防御(中科三方)
  • 使用geoserver发布shp和tiff数据
  • 谷歌周彦祺:LLM浪潮中的女性科学家多面手丨智源大会嘉宾风采
  • Burp模块