程序 指令+数据组成 储里器面存放着数据和指令linux
cpu包含运算器和控制器ios
控制器:读取指令,并在指令的控制下,去读取要执行的运算,包括数据或者计算,控制器会控制告诉计算器到哪里去取数据,数据取过来,运算器开始运算,运算结果由控制器输出到存储器CPU暂时存储器程序员
运算器:运算器须要去存储里面读取指令web
寄存器:cpu暂时存储器,shell
地址总线:内存寻址编程
数据总线:传输数据小程序
控制总线:控制指令缓存
地址总线的位数决定了CPU可直接寻址的内存空间大小,好比8位微机的地址总线为16位,则其最大可寻址空间为2^16=64KB,16位微型机的地址总线为20位,其可寻址空间为2^20=1MB。通常来讲,若地址总线为n位,则可寻址空间为2^n位。[1] 安全
地址总线宽度 地址总线数据宽度决定了CPU能够访问的物理地址空间,简单地说就是CPU到底可以使用多大容量的内存。对于486以上的微机系统,地址线的宽度为32位,最多能够直接访问4096 MB(4GB)的物理空间。Pentium Pro/Pentium Ⅱ/Pentium Ⅲ为36位,能够直接访问64GB的物理空间。网络
Cup缓存:CUP是从内存读取数据,缓存是从三级到一级层层缓存。可是CPU的处理速度依然远远大于内存,CPU依然须要等待大量的时间从内存读取数据,CPU性能被浪费,因此CPU引入了一级缓存,一级缓存分为指令缓存和数据缓存 他的容量很小,只有几十K左右,但他的读写速度却已经与CPU处理速度很是接近了。
但由于这样的一级缓存成本很是很是高,因此是不可能作的很大的,但这么小的几十K跟内存成百上千M的容量比,实在是不够用,一级缓存与内存的数据传递又成了瓶颈,出于成本考虑一级缓存不可能增大太多,因此又加入了二级缓存,他的速度比一级缓存要小的多,但成本低,并且能够作到比一级缓存大不少,因此就出现了二级缓存,如今二级缓存基本都是1M以上的了,甚至都6M的了。
2.存储
Ram:全部数据都在来自于Ram 随机访问存储器 ,如今主流使用的都是ram
Rom 只读存储器 此前适用于这台计算的一堆指令。
3.输入输出设备称为I/O设备
用来与用户进行交互
I输入设备:键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、游戏杆、语音输入装置等都属于输入设
o输出设备:显示器、打印机、绘图仪、影像输出系统、语音输出系
默认输出设备也叫标准输出
默认输入设备也叫标准输入
标准输入通常都指的是:键盘
标准输出和错误输出:显示器
I/O重定向:改变了数据的输出来源和输入来源
内存分为三段:post加电自检之后 bios自动映射到内存 第一段实现加电自检,第二段内核空间(kernel space)载入操做系统内核,第三段被多个应用程序彼此共享
Interrupt含义: 中断 能够理解为硬件通知机制 那么咱们怎么知道 中断是鼠标或者键盘,计算机内部有个可中断编程控制器,这个控制器和CUP是针脚相连的,cup有多跟线,每一根线对应一个设备,这样CUP就能够知道是哪里出现中断了
南桥:低速控制总线 链接大量I/O外围设备(键盘,鼠标,显示器) 汇总后经过同一根线交给北桥,北桥经过控制器传给CUP
北桥:高速控制总线 cup和内存打交道,Cup和内存须要总线相连,因此须要大量数据传输,须要高频率快速数据交换
如今为了高效率 内存直接链接CUP了 北桥只负责链接南桥,由于北桥速度快,所以能够将固态硬盘直接链接到北桥,实现更高效率,这就是一种硬件调优
缓存工做要遵循 程序局部性原理,
时间局部性:刚访问的数据,可能最近还须要访问 缓存下来
空间局部性:若是访问一个数据,离周围的数据很是近,因此把周围的数据一块儿载入进来
机器只能识别二进制编程为了方便编程,cpu芯片会有微码也叫微程序,称为汇编语言 人类认识的语言,在用编译器(编译器也是软件),转换为机器语言,微码是芯片是自带的,每一个厂家的芯片不同,因此没法相互使用。
API(Application Programming Interface):应用编程接口 为了让不一样厂家的芯片能够互相使用,可让cup直接相互经过编程接口 把指令往上传输 就跟翻译器是一个道理
硬件架构:cpu芯片的不一样系列 由于ntel公司 发展出了代号为8086,因此这种架构的CUP叫作x86
主流架构
手持智能设备:硬件架构 移动硬件架构叫作 ARM (啊木)
X86
X86-64 也叫AMD64
32位 计算机中的位数指的是CPU一次能处理的最大位数,一次最多能处理32位数据
64位计算机中的位数指的是CPU一次能处理的最大位数,一次最多能处理64位数据
32位和64位操做系统是指:CPU一次处理数据的能力是32位仍是64位。换而言之, 32位系统的处理器最大只支持到4G内存,而64位系统最大支持的内存高 达亿位数。
支持内存的大小 这是根据他们的CUP处理的数据宽度决定的
运行的程序称之为进程,进程是有生命周期的,处理完毕进程就结束了,而程序在内存里保留的 因此进程和程序是不同的,
进程的原理:CUP运算是根据时间的流逝完成的CPU是时间驱动的。因此将CPU样件切分为CPU的时间片time slice
time sluce
第一个程序运行5ms
第二个程序运行5ms
来回交替运行
内存能够经过访问不动的段来进行交替也称分段机制,例如第一个程序访问第一段,第二个程序访问第二段,每一个程序都是从头开始的,那么内存如何知道我要去访问相应的段落呢? CPU内部也能够分段,内部会把不一样的任务放入相应的段落里,来进行相互交替 ,内存分段由CPU完成
操做系统基本组成
操做系统也是个软件,运行在硬件上,负责管理硬件资源,将硬件资源所提供的计算能力,分配给不一样程序,CUP分红多个片,内存分红为多个段,而且负责协调,协调包括程序的启动,终止和回收等工做,还负责程序切换等工做
负责协调硬件和程序。有了操做系统,进程不能和硬件直接打交道
要想使用硬件必须经过操做系统进行协调 进程向操做系统内核进行程序调用,
由系统内核把程序从内存中取出来返还给应用层程序和进程,
操做系统是由system cal(系统调用)进行协调,可是因为这种方式过于底层 ,使用起来比较麻烦,因此将底层系统调用一个或者多个,把功能封装打包起来,作出更高级的接口,那么这个高级接口称做为库,库不能独立运行,只能被调用。
除了系统调用还有库调用(library),库对于操做系统或者内核叫:应用编程接口API
程序员开发程序都是经过库去开发,windos和linux库不一样。因此windos开发的程序不能再linux上使用 ,先要程序通用如何windos和linux使用的库同样,彷佛就能够
因此操做系统 底层是硬件 操做系统就是经过系统调用
Shell:人机交互接口, 为何咱们双击就能点开word呢 就是经过shell实现,把计算机的功能经过人类容易操做的方式,输出一个接口,经过这个接头才能操做计算机
Shell分两种
1.GUI图形用户界面
2.CLT命令行接口
内核:操做系统的核心,内核负责管理硬件资源,而且将
硬件资源虚拟提供给上层所须要的运行程序。如何程序运行在硬件上那么这个程序就能够控制硬件的各类属性,若是多个程序同事运行,相互之间就会产生干扰,因此须要内核负责管理和协调,内核确认硬件的运算能力经过系统调用的方式,返还给程序
程序的执行过程:有了操做系统,内核负责整个系统的监控和上层程序的监控,可以和程序进行交互的只有内核,软件程序输入信息先到达CPU,CPU通知内核进行处理,在由内核转交给应用程序
操做系统也是一种程序,程序是由指令+数据组成,因此内核的数据再也存储器(内存里),若是有恶意的应用程序访问内核那么系统的稳定性没有保障,因此有保护机制把应用程序和内核隔离开,因此CPU分为4个级别,只有内核能运行在特权级别下(0级别),而其余程序运行在最外围级别上,cup会把级别映射到存储器的(内存)
内核的功能:
进程管理
内存管理
文件系统
网络功能
硬件驱动
安全机制
ABI应用二进制接口 每一个CPU的编译器不同,使用ABI能够实现交叉编译
全部程序都须要进行编译,由于计算机内核只认识二进制,因此就有了第三方公司专门作编译,把程序编译完 打包封装给系统使用,这就是redhat 红帽公司 这些公司都不是开发者他们只是将·源代码格式的linux在通用的计算机上编译成通用格式,其余人就不用编译了,因此红帽这些公司是linux的发行商,内核有Linux之父 李纳斯维护 软件由GNU 组织戈怒维护的 redhat负责包装发行,可是由于红帽有些是要服务费 升级补丁是要钱的,后来成立了组织centOS 开放社区版的linux 由于免费因此若是任何事情致使系统崩溃centOS不负责任
LINUX基本原则
IDE: 集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,通常包括代码编辑器、编译器、调试器和图形用户界面等工具
DLL文件:动态连接库文件 一个软件的运行有可能调用库里文件,若是库文件缺失软件就没法正常运行。
一个操做系统 只要有内核,shell所依赖的库文件和shell ,一个操做系统就彻底能够运行了算是一个操做系统的架构,若是配置一个web服务,只须要web程序和程序所依赖的库把东西填充在架构里,就彻底能够运行了