一·计算机的组成

一套完整的计算机系统分为:计算机硬件,操作系统,软件。
 
硬件系统:运算器,控制器和存储器 ,输入设备,输出设备。
1.运算器:负责算数运算和逻辑运算,与控制器一起组成CPU。
2.控制器:发送和接收指令
3.存储器:存储程序代码和数据
4.输入设备:比如键盘鼠标
5.输出设备:比如显示器。
 
软件系统:为完成某一特定的工作而开发的程序,分为系统软件和应用程序。
系统软件:操作系统,控制和协调计算机及外部设备,支持应用软件的开发和运行的系统。
应用软件:比如QQ等。

二·编程语言的作用,以及与操作系统和硬件的关系:

我们使用编程语言去开发具体的应用程序,完成某一特定目标,而这个应用程序是运行在我们所使用的操作系统之上的,通过调用操作系统的相应的接口去完成去与底层具体的硬件的数据交互。

三·CPU->内存->磁盘

CPU:运算器和控制器合称为CPU(Central Processing Unit),它的功能主要是解释计算机指令及处理计算机软件的数据。
内存:程序运行于内存之中,内存会暂时存储CPU的运算数据以及与硬盘等外部存储器交换的数据,掉电丢失。
磁盘:外部数据存储器,存储大量数据,是非易失性的。

四·CPU与寄存器

CPU与寄存器:寄存器是CPU的组成部分,是用于高速有限存储数据的一类部件,可以用来暂存指令,数据和地址;访问速度比访问内存要快很多,CPU通过提供指令集来完成寄存器与内存的数据交互。
程序状态字寄存器是寄存器中非常重要的一种,它的内容中包含了各种控制位,系统调用和IO操作都与它有关。可以通过它切换模式(用户态和内核态)。

五·内核态与用户态

内核态:特权模式,CPU可以访问内存所有数据,包括外围设备,CPU自己也可以进行程序切换。
用户态:非特权模式,执行的代码收到硬件限制,不允许访问外围设备,占用CPU的能力被剥夺。
我们的软件都是运行在用户态下,但有时候会有操作硬件的需求,所以必须要切换至内核态,由于对内核态中的指令的保护,只能跳到制定位置去加载指令,称为系统调用(System Call),系统调用完成后,重置CPU为用户态并返回执行结果。
这个写的不错,推荐http://www.cnblogs.com/zemliu/p/3695503.html

六·存储器系列

L1缓存: 集成在CPU内部中,用于CPU在处理数据过程中数据的暂时保存。高速缓存存储的信息越多,CPU与内存之间的数据交换次数就越少,CPU运算执行效率就能够越高。但是由于与CPU集成在一起,容量不可能做的太大。
L2缓存:位于CPU与内存之间的临时存储器,可以理解为一级缓存的缓冲器,用于存储那些CPU处理时需要用到但又无法存储在以及内存中的数据,容量比内存小但是交换速度快。
缓存的工作原理:当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存;正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。(百度百科)
内存RAM(Random Access Memory):掉电即失的存储单元,存储系统的主力。
E2PROM:电可擦除的ROM,非易失性的存储单元。
闪存(Flash):存储数据不会掉电丢失,而且访问速度非常快,容量较小,是数码相机的胶卷, MP3的存储磁盘,还应用于固态硬盘。
CMOS与BISO电池:计算机领域指保存计算机基本启动信息(如日期,启动设置等)的芯片,用来保存BIOS硬件配置和用户对某些参数的设定,由一块纽扣电池驱动供电,保证数据不丢失,由于程序耗电量不大,所以可以运行很久。

七·磁盘结构与虚拟内存

磁盘结构:磁盘绕着一根中心主轴旋转,磁盘上有磁道,磁道是一圈圈的同心圆,由机械臂带着磁头进行数据的读取。
 
平均寻道时间:计算机发出寻址命令后磁头移动到数据所在的磁道所用的平均时间。
平均延迟时间:由于数据存放在不同的扇区中,磁头到了对应的磁道,还要等待磁头移动到数据所在的扇区,这段时间是平均延迟时间。
虚拟内存:特别多的程序的大小都大于计算机内存容量,而计算机可以执行这样的程序就是因为使用的是虚拟内存机制,通过把暂时不需要执行的程序放到磁盘上的一块区域,而这块区域就成为了所谓的虚拟内存,在Linux中是Swap,解决内存容量不足。
MMU(Memory Management Unit):内存管理单元, 用来管理虚拟内存,负责快速映射内存地址。
Context Switch:程序之间的快速切换,与MMU一起显著提高了计算机系统的运行处理性能。

八·磁带

数据读取和写入速度比硬盘低很多,但是同等价钱下,拥有更多的存储容量,而且容易转移,经常在大型的数据库中作为数据备份使用。

九·控制器与设备驱动

控制器:控制器负责控制相对应的设备,目的是是为操作系统屏蔽掉具体底层对于硬件的直接复杂和具体的控制
设备驱动: 设备驱动是操作系统和IO设备间的粘合剂。驱动负责将操作系统的请求传输,转化为特定的控制器能够理解的命令。

十·总线与北桥和南桥

总线(Bus): 总线是一种内部结构,它是cpu、内存、IO设备传递信息的公用通道,各个部件之间通过总线相连接,
北桥:北桥芯片就是主板上离CPU最近的芯片,这主要是考虑到北桥芯片与处理器之间的通信最密切,是PCI桥,连接高速信号。
南桥:离CPU插槽较远,连接的IO总线众多,负责一些外设接口的控制,是ISA桥,连接低速信号。
 

十一·BIOS和操作系统的启动流程

BIOS(Basic Input Output system):一组固化到计算机主板上一个ROM芯片上的程序小型操作系统,主要功能是为计算机提供最底层最直接的硬件设置和控制。
操作系统启动流程:上电->运行BIOS,进行系统自检->读取CMOS参数,启动相应的设备->读取扇区内容->读入bootloader启动装载模块,启动操作系统->检查每种设备的驱动程序

十二·应用程序启动流程

应用程序启动流程:操作系统监视输入设备(鼠标或键盘)操作的请求,如果出现相对应的操作,找到所需要执行文件在硬盘中的位置,将所需要执行的程序加载到内存中,应用程序就开始执行了。

Python之路-计算机基础的更多相关文章

  1. python note 01 计算机基础与变量

    1.计算机基础. 2.python历史. 宏观上:python2 与 python3 区别: python2 源码不标准,混乱,重复代码太多, python3 统一 标准,去除重复代码. 3.pyth ...

  2. python第一章计算机基础

    第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 / 显示器 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 操作系统用 ...

  3. Python学习 之 计算机基础

    第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 等组成,只有硬件但硬件之间无法进行交流和通信 1.2 操作系统 操作系统用于协同或控制硬 ...

  4. Python学习之计算机基础

    计算机基础: (1)计算机俗称电脑,是现代用于高速计算的电子计算器,可以进行数值计算也可以进行逻辑计算,还有存储记忆功能.是能够按照程序运行,自动,高速处理海量数据的现代化智能 电子设备. (2)物理 ...

  5. Python学习(001)--计算机基础

    操作系统发展历史 操作系统并不是与计算机硬件一起诞生的,它是在人们使用计算机的过程中,为了满足两大需求:提高资源利用率.增强计算机系统性能,伴随着计算机技术本身及其应用的日益发展,而逐步地形成和完善起 ...

  6. python之路——网络基础

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

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

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

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

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

  9. Python学习day01 - 计算机基础

    第一天 什么是编程 语言就是用来交流的. 语言+火构成了人类的文明 Python语言用来和计算机交流 通过他和计算机交流,然后完成很多程序员想要完成的事情,就叫编程. 为什么要编程 节省劳动力,更高效 ...

随机推荐

  1. DLL 导出函数

    DLL的链接方式分为两种:隐式链接和显式链接 DLL导出的函数 和 导出类在调用时,有些区别,这里暂时不讲,直说简单的导出函数: 隐式链接: #include "stdafx.h" ...

  2. WDCP下安装PHPWind

    创建整站跟新建站点的区别是创建整站会一并生成ftp跟mysql数据库 这边只要填写一个域名(如果你有域名就填写下域名 如果你没有域名 或者跟我一样到这步去申请域名的可以填写ECS公网ip否则无法访问新 ...

  3. 在IntelliJ IDEA 13中配置OpenCV的Java开发环境

    准备工作: 下载IDEA 13(这里以版本13为例,后面简称IDEA): 下载Java JDK(用于配置基本的Java开发环境): 下载OpenCV 2.4.9(这里以版本2.4.9为例,据这篇文章说 ...

  4. jQuery_第四章_思维图

    ---------------------------------------------------------------------------------------------------- ...

  5. 2013~2014年度 NOIP~GDOI总结

    滚回去撸一年中考撸完之后就迎来了NOIP2013(话说初赛差点被坑了有木有= =)想想当年10月还是那样的天真的去了广州,结果就被虐成翔的回来了= =只做了三道签到题的渣渣就是弱= =DAY1T2死活 ...

  6. iOS使用StroryBoard页面跳转及传值

    之前在网上iOS的页面跳转大多都是按回以前的那种xib的形式,但鄙人是使用storyboard的.这篇就只介绍利用storyboard进行页面跳转与传值. 新建页面 iOS的程序也是使用了MVC的思想 ...

  7. thinkcmf,thinkphp,表格导入(PHPexcel)的实现,新手向

    对于新手来说,可以把表格中的数据导入进数据库那是十分好玩的一件事,我自己实现了一下网上的写法,基于PHPexcel实现的表格导入,踩了2个小时的坑,最终实例! 因为在thinkcmf中自己添加了php ...

  8. 【CNMP系列】CentOS7.0下安装FTP服务

    一个小插曲,安装一个FTP服务,便于和远程服务器的文件沟通.后续我们会讲到如何使用Capistrano配合git完成服务器的代码部署以及发布流程.现在,代码先走FTP吧,挺稳. FTP简介 FTP 是 ...

  9. hibernate切换数据源

    起因: 公司的当前产品,主要是两个项目集成的,一个是java项目,还有一个是php项目,两个项目用的是不同的数据源,但都是mysql数据库,因为java这边的开发工作已经基本完成了,而php那边任务还 ...

  10. 【转】Spring源码编译

    原文地址: http://www.flyoung.me/2013/08/02/springcodecompile/ 参考资料: https://github.com/spring-projects/s ...