一套完整的计算机系统分为:计算机硬件,操作系统,应用软件,如下图。因而我们的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缓存:用与cpu相同材质制造,与cpu一样快,因而cpu访问它无时延,典型容量是:在32位cpu中为32*32,在64位cpu中为64*64,在两种情况下容量均<1KB。

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

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

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

  EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的。

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

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

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

五 启动计算机 

1.计算机加电

2.BIOS开始运行,检测硬件:cpu、内存、硬盘等

3.BIOS读取CMOS存储器中的参数,选择启动设备

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

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

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

  

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

python 零基础学习之路-01 计算机硬件相关推荐

  1. 第10期:Python零基础学习路线

    大家好,我是你们的老朋友老王随聊,今天和大家讨论的话题--Python零基础应该怎么学? 通过这段时间和群里同学们交流,发现很多大学生甚至职场小白对Python学习路线不是很清晰,所以我花了一些时间给 ...

  2. python零基础能学吗 知乎-Python零基础学习能学好吗?老男孩Python面授班

    零基础学习Python真的可以学习好吗?我想对于这个问题,是大部分想要学习Python的人都会纠结考虑的问题吧,也是很多小白最关注的的问题,今天为大家详细的解释一下. Python语言因为具有一定的独 ...

  3. Python零基础学习 | 分享一个使用Python画出太极阴阳八卦图的代码

    大家好,我是王某人. 一.写在前面 前几天在Python技术交流群有个小伙伴分享一个使用Python画出太极阴阳八卦图的代码,这里拿出来给大家分享下,一起学习下. 不过这里他的代码是有点问题的,不过不 ...

  4. 全套Python零基础学习资料,电子书整理好了,想要进行技术提升,转行的自取!

    今天分享Python入门级宝典 所有资料都是专业大佬总结整理出来的 Python的知识体系,从0开始学习Python看这一篇就够了! <Python入门思维导图> <看漫画学Pyth ...

  5. 一份超级详细的Python零基础学习资料(仅此一家,可能会被404抓紧收藏)

    一.学习Python必备技能图谱 二.0基础如何系统学习Python? 一.Python的普及入门 1.1 Python入门学习须知和书本配套学习建议 1.2 Python简史 1.3 Python的 ...

  6. 【jq】c#零基础学习之路(1)Hello World!

    从今天起我会持续发表,这个就是一个日记型的,学习编程是枯燥的,况且我们还是零基础. 学前准备 1.编译环境 vs2010.vs2012.vs2015...(本人用的是vs2010旗舰版).vs2010 ...

  7. Java零基础学习之路(十三)Java super

    Java super的定义 本章节目标: 掌握super都可以用在哪里?理解super在内存方面的存储位置.掌握怎么通过子类的构造方法调用父类的构造方法.super什么时候可以省略,什么时候不能省略 ...

  8. Python零基础学习

    1.python 1.Python是用来编写应用程序的高级编程语言.Python为我们提供了非常完善的基础代码库,覆盖了网络.文件.GUI.数据库.文本等大量内容,被形象 地称作"内置电池( ...

  9. Python零基础学习系列之三--Python编辑器选择

    上一篇文章记录了怎么安装Python环境,同时也成功的在电脑上安装好了Python环境,可以正式开始自己的编程之旅了.但是现在又有头疼的事情,该用什么来写Python程序呢,该用什么来执行Python ...

最新文章

  1. Autowired byType 与 byName 策略
  2. docker容器内部使用vim
  3. php系统构建,增加知识: 如何使用PHPstudy为后端系统构建PHP源网站
  4. IOS8 兼容本地推送
  5. elasticsearch中rollover的用法
  6. LiveVideoStackCon 2017 Day 1 专场回顾 —— 多媒体与浏览器专场
  7. Churchman University简介:
  8. C#学习常用类(1003)---Timer类(System.Timers.Timer)
  9. 关于time_wait状态的理解
  10. android代码设置drawable,Android:Textview 通过代码设置 Drawable
  11. C# 判断电脑是否装Arcgis软件
  12. bzoj2286: [Sdoi2011]消耗战
  13. 使用vue-ui可视化管理工具来创建项目并安装vue-cli-plugin-element插件
  14. 美股-史考特(Scottrade)开户详细说明
  15. CMOS相机和CCD相机的区别
  16. python脚本自动消除安卓版_微信跳一跳脚本重出江湖,python实现安卓iOS自动版与手动版!...
  17. 神经网络中的对抗样本
  18. 记录 Org 和 Markdown 的一些异同
  19. python numpy库作用_python数据分析之numpy库
  20. 检测设备是否为模拟器,是否root,禁止截屏

热门文章

  1. 【GIT】Github上传本地代码详解
  2. Task中的异常处理
  3. 完美世界推穿戴式设备:能消灭“宅玩家”吗?
  4. Android驱动开发第五章
  5. http 的一生: 一、特点与 URL解析
  6. Windows 7任务栏图标特别说明
  7. 基于visual Studio2013解决面试题之0209最大堆排序
  8. 服务器返回的json数据,通过本地解析调用SBjson的类
  9. Android开发之程序员必须要懂得Android的重要设计理念
  10. 看图说OpenGL之三:是什么在改变物体的颜色