计算机的软件硬件及工作原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机的软件硬件及工作原理相关的知识,希望对你有一定的参考价值。

1 编程语言的作用

     编程语言是一种交互工具,是程序员与计算机进行沟通的一种语言。通过编程语言,程序员可以发送一些指令给计算机,计算机就会
执行这些指令,完成一系列操作,最终达成程序员想要看到的结果。

2 编程语言与操作系统和硬件的关系

计算机系统一般分为软件系统,操作系统,硬件系统。编程语言所写此软件,并不能直接访问底部硬件,必须通过操作系统来实现对硬件的访问和控制。

3 CPU相当于计算机的大脑,计算机所有指令都在CPU中完成计算。

 内存相当于计算机的临时记忆。内存中数据并不是一成不变的,而且内存中的存储基于“电”,断电会消失。

 磁盘相当于笔记本。存储基于“磁”,数据断电并不会消失。与内存相比,存储速度很慢。

 内存从磁盘中读取相关数据,而CPU从内存中读取相关数据,进行计算。由于CPU从内存读取数据远远快于内存从磁盘中读取速度,所以会造成CPU效率低下,不能发挥全部发挥CPU 功率的现象。寄存器的出现就解决了这种情况。寄存器是CPU的组成部分,有非常高的存储读取速度,但是造价昂贵,一般只有几Mb。在CPU集中处理一批指令时,将一些关键变量和临时数据存储在寄存器中,这样CPU从寄存器中读取时,速度非常快,大大缩短了时间。

4 内核态 用户态的区别

内核态与用户态时两种工作状态,并且可以相互转化。

内核态,CPU可以执行所有指令,并且可以对硬件进行操作。

用户态,CPU只能执行部分指令,不能对硬件进行操作。

用户态下软件并不能直接访问硬件,但有些情况下软件必须要访问硬件,这种情况下。用户态 先通过 系统调用 机制切换为 内核态,但是不能获得在内核态中的指令。软件通过操作系统,以软件的名义进行操作。

5 L1缓存,L2缓存,内存(RAM),EEPROM和闪存

 L1缓存,即寄存器,与CPU一样材质造成,CPU访问无延迟。

 L2缓存,即高速缓存,造价成本高,容量有限。

 内存,存储基于“电”,断电消失,大小1G-16G。

 EEPROM,带电可擦除可编程ROM,非易失性

 闪存,非易失性,存储速度快于硬盘,是固态硬盘的材料。

 CMOS,易失性,但是耗电量非常小,一小节电池可以用数年之久。主要存储当前时间和日期,保留配置参数,比如哪一个是启动磁盘。 

 Bios,basic input/output system。是固定在主板上的一个程序。保存着计算机最基本的输入输出的程序,开机后自检程序,系统自启动程序,还可从CMOS中读取系统设备的信息。

6 磁盘结构

 磁盘有单面双面,磁盘的参数一般有每分钟多少转,和存储量有多少GB。数量越大越好,价格也越贵。

磁盘读取时有机械臂在磁盘表面,用磁头进行读取数据。

磁道,磁盘表面相同半径下的圆形。

扇区,是磁盘的最小读取单位,为512Bytes。磁道等分为的若干弧段。

平均寻道时间

磁头从开始移动到数据所在的磁道所花的平均时间,此时还没有找到数据所造的具体位置。

平均延迟时间

磁头从找到数据所在磁道开始,找到数据所造的扇区所花的时间。

7虚拟内存

当执行的软件将内存占用完后,计算机将硬盘中的一部分拿出来,作为内存使用,缓解内存紧张不够用的情况,这部分硬盘空间成为虚拟内存。

Linux中成为swap。

MMU,内存管理单元,CPU中用来管理虚拟内存。

8 总线 是一种内部结构,是CPU,内存,输入输出设备传递信息的公共通道。

北桥即PCI桥,连接内存,CPU等高速设备

南桥即ISA桥,连接磁盘,声卡,打印机等慢速设备。

9  操作系统的启动流程

    1 计算机通电

    2 bios程序启动,检查CPU,声卡

    3 BIOS读取cmos中数据,选择启动设备

    4 从启动设备中读取信息,包含引导信息,分区信息。

    5根据分区信息启动操作系统

    6操作系统询问bios,获取配置信息。检查各种设备的驱动是否存在,并提示安装。最终启动成功。

 

 

以下为网上资料摘要

存储器的区别

只要能存储数据的器件都可以称之为存储器,它的含义覆盖了寄存器,缓存,内存,硬盘。cpu访问快慢的速度依次为

寄存器-> 缓存->内存->硬盘

寄存器是中央处理器的组成部分,是一种直接整合到cpu中的有限的高速访问速度的存储器,它是有一些与非门组合组成的,分为通用寄存器和特殊寄存器。cpu访问寄存器的速度是最快的。那为什么我们不把数据都存储到寄存器中呢,因为寄存器是一种容量有限的存储器,并且非常小。因此只把一些计算机的指令等一些计算机频繁用到的数据存储在其中,来提高计算机的运行速度。

 

缓存其实是内存中高速缓存(cache),它之所以存在,是因为当cpu要频繁访问内存中的一些数据时,如果每次都从内存中去读,花费的时间会更多,因此在寄存器和内存之间有了缓存,把cpu要频繁访问的一些数据存储在缓冲中,这样效率就会更高,但需要注意的是,缓冲的大小也是很小的,不能存放大量的数据,并且缓存中存放的数据会因为cpu的访问而被替代,必须某个数据开始被cpu频繁访问,但后来不再频繁,那这个数据的空间会被其他访问频繁的数据所占据(那些数据会被暂时存储在缓存中是算法问题)。缓存又可以分为一级和二级缓存,一级的速度大一二级的速度。因此cpu在访问数据时,先到缓存中看有没有,没有的话再到内存中读取。

 

内存分为只读(ROM)和随机存储器(RAM)一级最强悍的高速缓存存储器(cache)。其中RAM应用非常广泛,例如在平常用的开发板中的内存指的就是RAM,还有我们电脑上的内存条指的就是RAM。

 

硬盘、U盘等存储器都归入外存储器,它们的访问速度是最慢的。

二  内核态与用户态的区别

内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序

用户态: 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺, CPU资源可以被其他程序获取

为什么要有用户态和内核态

由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 -- 用户态 和 内核态

用户态与内核态的切换

所有用户程序都是运行在用户态的, 但是有时候程序确实需要做一些内核态的事情, 例如从硬盘读取数据, 或者从键盘获取输入等. 而唯一可以做这些事情的就是操作系统, 所以此时程序就需要先操作系统请求以程序的名义来执行这些操作.

这时需要一个这样的机制: 用户态程序切换到内核态, 但是不能控制在内核态中执行的指令

这种机制叫系统调用, 在CPU中的实现称之为陷阱指令(Trap Instruction)

他们的工作流程如下:

  1. 用户态程序将一些数据值放在寄存器中, 或者使用参数创建一个堆栈(stack frame), 以此表明需要操作系统提供的服务.
  2. 用户态程序执行陷阱指令
  3. CPU切换到内核态, 并跳到位于内存指定位置的指令, 这些指令是操作系统的一部分, 他们具有内存保护, 不可被用户态程序访问
  4. 这些指令称之为陷阱(trap)或者系统调用处理器(system call handler). 他们会读取程序放入内存的数据参数, 并执行程序请求的服务
  5. 系统调用完成后, 操作系统会重置CPU为用户态并返回系统调用的结果

以上是关于计算机的软件硬件及工作原理的主要内容,如果未能解决你的问题,请参考以下文章

计算机的基本组成及工作原理

冯 · 诺依曼结构原理及层次结构分析

cpu的工作原理是啥?

LVS原理详解(3种工作模式及8种调度算法)

WINDOWS工作的基本原理

冯诺依曼结构原理及层次分析