热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python零基础学习之路01计算机硬件

一套完整的计算机系统分为:计算机硬件,操作系统,应用软件,如下图。因而我们的python编程之路分为计算机硬件基础ÿ

  一套完整的计算机系统分为:计算机硬件,操作系统,应用软件,如下图。因而我们的python编程之路分为计算机硬件基础,操作系统基础,和python编程三部分,而我们便是最先从计算机硬件开始学习的。

一 计算机硬件介绍

  计算机硬件有五大部分:

    1、控制器:计算机的指挥系统。控制器通过地址访问存储器,从存储器中取出指令,经译码器分析后,根          据指令分析结果产生相应的操作控制信号作用于其他部件,使得各部件在控制器控制下有条不紊地协调工作。

    2、运算器:实现算术运算和逻辑运算的部件。

    3、存储器:是计算机用来存放所有数据和程序的记忆部件。他的基本功能是按指定的地址存入或者取出信息。计算机中的存储器分为两大类:一类是内存储器,简称内存或主存;另一类是外存储器(辅助存储器),简称外存或辅存。存储器由若干个存储单元组成,每个存储单元都有一个地址,计算机通过地址对存储单元进行读写。一个存储器所包含的字节数称为存储容量,单位有B、KB、MD、GB、TB等。

    4、输入设备:是向计算机中输入信息(程序、数据、声音、文字、图形、图像等)的设备。常见的输入设备有:键盘、鼠标、图形扫描仪、触摸屏、条形码输入器、光笔等。 外存储器也是一种输入设备。

    5、输出设备:主要有显示器、打印机和绘图仪等。外存储器也当作一种输出设备。

 

  总结来说:控制器+运算器=CPU,CPU是人的大脑,负责控制全身和运算;内存是人的记忆,负责临时存储;硬盘是人的笔记本,负责永久存储;输入设备是耳朵或眼睛或嘴巴,负责接收外部信息存入内存,输出设备是你整个身体的肢体动作,负责经过处理后输出的结果。以上所有的设备都通过总线连接,总线相当于人的神经。

 

二 中央处理器  

  1、将运算器和控制器合称为中央处理器(Central Processing Unit,CPU)。其中运算器用来主要负责程序运算与逻辑判断,控制器则主要协调各组件和各单元的工作,所以CPU的工作主要在于管理和运算。可以说计算机的大脑就是CPU,它从内存中取指令->解码->执行,然后再取指->解码->执行下一条指令,周而复始,直至整个程序被执行完成。既然CPU的重点在于进行运算和判断,那么要被运算与判断的数据是从哪里来的?CPU读取的数据都是从主存储器(内存)来的!主存储器内的数据则是从输入单元所传输进来!而CPU处理完毕的数据也必须先写回主存储器中,最后数据才从主存储器传输到输出单元。

  2、内核态与用户态

    内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)

    用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的。

 

三 存储器

  寄存器即L1缓存&#xff1a;用与cpu相同材质制造&#xff0c;与cpu一样快&#xff0c;因而cpu访问它无时延&#xff0c;典型容量是&#xff1a;在32位cpu中为32*32&#xff0c;在64位cpu中为64*64&#xff0c;在两种情况下容量均<1KB。

  高速缓存即L2缓存&#xff1a;主要由硬件控制高速缓存的存取&#xff0c;内存中有高速缓存行按照0~64字节为行0&#xff0c;64~127为行1。。。最常用的高速缓存行放置在cpu内部或者非常接近cpu的高速缓存中。

  内存&#xff08;RAM)称为随机访问存储RAM&#xff1a;是我们通常所说的内存&#xff0c;容量一直在不断攀升&#xff0c;所有不能再高速缓存中找到的&#xff0c;都会到主存中找&#xff0c;主存是易失性存储&#xff0c;断电后数据全部消失。

  非易失性随机访问存储&#xff08;ROM)&#xff1a;在电源切断之后&#xff0c;非易失性存储的内容并不会丢失&#xff0c;ROM只读存储器在工厂中就被编程完毕&#xff0c;然后再也不能修改。

  EEPROM&#xff08;Electrically Erasable PROM&#xff0c;电可擦除可编程ROM&#xff09;和闪存&#xff08;flash memory&#xff09;也是非易失性的。

  CMOS&#xff1a;是易失性的&#xff0c;许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递增时间的电路由一小块电池驱动&#xff0c;所以&#xff0c;即使计算机没有加电&#xff0c;时间也仍然可以正确地更新&#xff0c;除此之外CMOS还可以保存配置的参数&#xff0c;比如&#xff0c;哪一个是启动磁盘等&#xff0c;之所以采用CMOS是因为它耗电非常少&#xff0c;一块工厂原装电池往往能使用若干年&#xff0c;但是当电池失效时&#xff0c;相关的配置和时间等都将丢失。

 

四 磁盘&#xff1a;数据都存放于一段一段的扇区&#xff0c;即磁道这个圆圈的一小段圆圈&#xff0c;从磁盘读取一段数据需要经历寻道时间和延迟时间。

  &#xff08;虚拟内存&#xff1a;许多计算机支持虚拟内存机制&#xff0c;该机制使计算机可以运行大于物理内存的程序&#xff0c;方法是将正在使用的程序放入内存取执行&#xff0c;而暂时不需要执行的程序放到磁盘的某块地方&#xff0c;这块地方成为虚拟内存&#xff0c;在linux中成为swap&#xff0c;这种机制的核心在于快速地映射内存地址&#xff0c;由cpu中的一个部件负责&#xff0c;成为存储器管理单元(Memory Management Unit MMU)

 

五 启动计算机 

1.计算机加电

2.BIOS开始运行&#xff0c;检测硬件&#xff1a;cpu、内存、硬盘等

3.BIOS读取CMOS存储器中的参数&#xff0c;选择启动设备

4.从启动设备上读取第一个扇区的内容&#xff08;MBR主引导记录512字节&#xff0c;前446为引导信息&#xff0c;后64为分区信息&#xff0c;最后两个为标志位&#xff09;

5.根据分区信息读入bootloader启动装载模块&#xff0c;启动操作系统

6.然后操作系统询问BIOS&#xff0c;以获得配置信息。对于每种设备&#xff0c;系统会检查其设备驱动程序是否存在&#xff0c;如果没有&#xff0c;系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序&#xff0c;操作系统就将它们调入内核。然后初始有关的表格&#xff08;如进程表&#xff09;&#xff0c;穿件需要的进程&#xff0c;并在每个终端上启动登录程序或GUI

 

  


转载于:https://www.cnblogs.com/liuzeng/p/9061376.html


推荐阅读
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文介绍了如何在 Node.js 中使用 `setDefaultEncoding` 方法为可写流设置默认编码,并提供了详细的语法说明和示例代码。 ... [详细]
  • Linux环境下C语言实现定时向文件写入当前时间
    本文介绍如何在Linux系统中使用C语言编程,实现在每秒钟向指定文件中写入当前时间戳。通过此示例,读者可以了解基本的文件操作、时间处理以及循环控制。 ... [详细]
  • 解决Windows下创建子进程时代码重复执行的问题
    在Windows系统中,当启动子进程时,主进程的文件会被复制到子进程中。由于导入模块时会执行该模块中的代码,因此可能导致某些代码在主进程和子进程中各执行一次。本文探讨了这一现象的原因及其解决方案。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • Nature Microbiology: 人类肠道古菌基因组目录
    本研究揭示了人类肠道微生物群落中古细菌的多样性,分析了来自24个国家、农村和城市人群的1,167个非冗余古细菌基因组。研究鉴定了多个新分类群,并探讨了古菌对宿主的适应性及其与社会人口特征的关系。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
author-avatar
紫竹林素食坊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有