计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。一个完整的计算机由硬件和操作系统组成。如果没有操作系统的计算机,可以称之为裸机。

2.计算机的组成:

  硬件部分:计算机硬件主要由cpu,输入设备,输出设备,存储器和系统总线组成。cpu就像人类的大脑一样,负责计算,处理事件,系统总线则是人的血管和神经一样,控制的输入,输出和存储设备(控制总线),将营养物质传输到身体各处(数据传输总线)。输入,输出设备则负责计算机与外界做交互,进行数据的输入和输出,图形的显示等作用。而存储设备则负责存储内容。

  软件部分:计算机的软件部分主要分为操作系统和应用软件。操作系统的出现,将计算机复杂的硬件结构进行了包装,给人们提供了一个简单,方便,优美的操作感受和视图界面。而应用软件的出现则是为了满足人们各种特定的需求,如暴风影音,游戏等。

3.硬件部分

   1.CPU:cpu的组成如下图所示,工作过程可以分为取指---解码--执行,这三个部分,分别再指令寄存器,指令译码器和ALU这三个地方完成。因为从内存读取数据的时间比cpu执行命令的时间要慢的多,所以计算机在内部有部分寄存器(和cpu同材质),寄存器主要分为以下几种类型:

  • 通用寄存器:用来保存变量和临时结果

  •    程序计数器:用来保存下一个要执行的指令的内存地址。

   程序状态字寄存器(PSW):用来标记区分访问状态(用户态内核态),cpu优先级等内容。

  •    堆栈指针寄存器:该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量。堆栈的特点是先进后出。

    

  

补充说明:

  内核态:为了保护硬件系统底层的安全和稳定性,只允许内核态进行操作硬件。一般操作系统处于内核态,而应用软件处于用户态

  用户态:只能操作cpu指令集的一个子集,无法操作底层硬件内容,如果需要操作底层硬件,需要将用户态转换为内核态。

  多线程:线程是cpu执行的基本单位,线程之间内存的共享的。多线程cpu可以保持两个不同状态的线程(休眠状态和运行状态),cpu来回切换这些线程,速度十分快,以致于让人们认为是并发处理的。cpu同一个时间只能处理一个线程。

  进程:进程是最小的资源单位,进程间内存是不共享的。一个进程最少要有一个线程。

  多核:增加了数个完整的cpu,这样就可以同时处理多个线程。每个cpu有个跟cpu材质一样的缓存区,称为一级缓存(L1),有个二级缓存(L2)链接着这几个cpu(inter架构)。

  

  2.存储器

       如下图,缓存的级别由上到下一次递增,寄存器为一级缓存,高速缓存为二级缓存,以此类推,缓存速度越快,容量就越小,造价就越昂贵。如果运行一个程序,所需要的内容已经在高速缓存中,即称为高速缓存命中,如果高速缓存未命中,则需要去内存读取数据,速度会慢很多。

    •  内存RAM为易失性存储,断电后数据全部消失。

    •  rom(Read Only Memory)为非易失性存储。

    •  flash(闪存):非易失性存储,固态硬盘,u盘都是有闪存进行存储。

    •  cmos:易失性存储,保存当前时间和日志,还有系统的一些参数。

  

    • 磁盘:磁盘由多个碟片,磁柱,磁头组成。每个磁盘又以扇区为单位进行划分。一个扇区为512B。最小的块单元由8个扇区组成,即4KB。

        磁盘读取数据会有一定延时,主要非为:

        1.平均寻道延时:即找到所需数据所在的扇扇道

        2.平均延时时间:在扇道上找到正确的扇区所需要的时间

        所以一块磁盘转速约快,他的延时时间就越短,读取速度就越快。

        我们还会划分一小部分磁盘作为内存来使用,防止运行软件过多,所需内存超过实际内存大小,而造成内存溢出,服务崩溃。虚拟内存虽然运行速度较慢,但是可以防止内存溢出的情况发生,保证服务的稳定。

    • 磁带:读取速度最慢,但是容易打,移动性高,虽然都用来做备份。

    

  I/O设备(input/output)

    I/O 一般分为设备控制器(需要安装驱动软件)和设备本身。

    设备控制器的作用是提供一个标准的接口来接入设备,驱动软件则是提供给系统操控设备的方法。各个设备控制器由I/O总线链接着。

    I/O总线分为北桥和南桥,北桥连接cpu,内存,二级缓存,南桥连接硬盘,键盘,打印机等运行速度较慢的设备。

4.操作系统

  

   操作系统的作用主要由两个:

  1.给用户提供一个简单,明了的硬件接口(工作在用户态),程序开发人员不需要再去了解如何去控制硬件,而是调用相应的硬件接口就可以使用。

  2.让线程的进程变得有序(工作在内核态)。如打印机同时打印a,b,c,如果是无序竞争,那么打印出来的内容会是a一行,b一行,这样混乱的内容。操作系统会使用锁 这个方法让竞争变得有序,如果a文件正常使用打印机,则会将打印线程锁住,只给a只有,那么b和c只有等a打印完之后才会使用打印机。

  操作系统与应用软件的区别: 

1.主要区别是:应用软件开发周期短,可修改,操作系统由内核保护着,不能被修改。

2.操作系统是一个大型(源码数量大)、复杂(提供复杂功能)、长寿(不会轻易被弃用)的软件

  

  多路复用(多道技术):

  1.时间上的复用:当一个资源在时间上复用时,不同的程序或用户轮流使用它。例如:cpu的 上下文切换:一个内核可处理多个进程, 在只有一颗 CPU 的情况下, 内核必须调度和平衡这些进程和线程。 每个线程在处理器上都拥有一个时间分配单元, 当一个线程超过自己的时间单元或被更高优先级的程序抢占时, 此线程及被传回队列而此时更高优先级的程序将在处理器上执行。

  2.空间上的复用(需要硬件上的支持,将内存在硬件层面上进行分区):多个程序同时进入不同的内存区域。且由操作系统控制,这比一个程序独占内存一个一个排队进入内存效率要高的多。 硬件层面的分割保证了安全性:应用程序不会操作到操作系统的内存区域    稳定性:释放应用程序内存时,不会同时释放掉操作系统的内存(即使是操作系统的部分内存),这样可以避免引起操作系统的崩溃。

参考博客链接:

    https://www.cnblogs.com/linhaifeng/p/6523843.html

    https://www.cnblogs.com/linhaifeng/p/6295875.html

python之路 ---计算机硬件基础的更多相关文章

  1. Python之路 day1 基础1 变量 for while 用户输入

    一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...

  2. python之路——网络基础

    你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好.但是如果这两个程序之间想要传递一个数据,你要怎么做 ...

  3. python之路 面向对象基础 XML

    一.面向对象基础 1.类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义 ...

  4. python之路: 基础篇

    )或>>> name = )    #按照占位符的顺序):]        #下标识从0开始的 wulaoer >>> print name[:]        # ...

  5. Python之路-计算机基础

    一·计算机的组成 一套完整的计算机系统分为:计算机硬件,操作系统,软件.   硬件系统:运算器,控制器和存储器 ,输入设备,输出设备. 1.运算器:负责算数运算和逻辑运算,与控制器一起组成CPU. 2 ...

  6. python之路 django基础

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  7. python之路 JavaScript基础

    一.JavaScript简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为 浏览器的一部分,广泛用于客户端 ...

  8. 百万年薪python之路 -- JS基础介绍及数据类型

    JS代码的引入 方式1: <script> alert('兽人永不为奴!') </script> 方式2:外部文件引入 src属性值为js文件路径 <script src ...

  9. Python之路-函数基础&局部变量与全局变量&匿名函数&递归函数&高阶函数

    一.函数的定义与调用 函数:组织好的.可重复使用的.用户实现单一或者关联功能的代码段.函数能够提高应用的模块性和代码的重复利用率.Python提供了很多内置的函数,比如len等等,另外也可以根据自己的 ...

随机推荐

  1. JqueryValidate 表单验证插件

    1.适用场景 表单 ( 支持自定义规则 ) 2.相关文章 jQuery Validate 3.实际问题 JqueryValidate表单相同Name不校验问题解决

  2. 基于虹软人证核验 2.0 Android SDK开发集成入门

    一.功能介绍虹软人证核验 2.0 SDK(以下简称SDK)包含人脸检测.人脸跟踪.人证核验等能力,主要实现人证的1:1比对.其中暴露对外的功能方法有:active 引擎激活init 引擎初始化inpu ...

  3. python测试相关小问题

    实操中的小问题 pycharm 一次运行多个test configuration 项目分层,分包之后,tests也分到不同层的不同project里了,tests也分开. 为了防止基层模块改动,影响上层 ...

  4. Codeforces Gym - 101102A - Coins

    A. Coins 题目链接:http://codeforces.com/gym/101102/problem/A time limit per test 3 seconds memory limit ...

  5. JAVA基础知识总结:十八

    一.进程和线程 1.进程 是一个程序的运行状态和资源占用的描述 进程的特点: a.独立性:不同的进程之间是独立的,相互之间资源不共享 b.动态性:进程在系统中不是静止不动的,而是一直活动的 c.并发性 ...

  6. 如何在windows下安装与配置Appium

    appium是一款open source 移动自动化测试框架,既支持Android 也支持IOS 工具/原料 JDK adt-bundle-windows node python appium rob ...

  7. 雷林鹏分享:XML 属性

    XML 属性 XML元素具有属性,类似 HTML. 属性(Attribute)提供有关元素的额外信息. XML 属性 在 HTML 中,属性提供有关元素的额外信息: 属性通常提供不属于数据组成部分的信 ...

  8. 【异常及源码分析】org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping

    一.异常出现的场景 1)异常出现的SQL @Select("SELECT\n" + " id,discount_type ,min_charge, ${cardFee} ...

  9. tomcat启动问题,卡在 preparing launch delegate 100% 的解决方法

    今天在打开eclipse中的tomcat时,每次用debug模式启动的时候总是会在preparing launch delegate到100%的时候卡主,起初以为是tomcat启动时间45s不够,于是 ...

  10. python基础之面向对象的多继承以及MRO算法

    内容梗概: 1. python多继承 2. python经典类的MRO 3. python新式类的MRO C3算法 1.python多继承 class Shen: def fly(self): pri ...