实习准备——计算机基础知识复习

CPU

CPU是什么

CPU 的全称是Central Processing Unit,是计算机的核心组件,相当于大脑和人的关系。

CPU功能

CPU从程序中获取指令并执行计算。分为从系统的RAM(随机存取存储器,也叫主存,是与CPU直接交换数据的内部存储器,可以随时读写【刷新时除外】,且速度很快,通常为OS或其他正在运行的程序的临时数据存储介质)提取指令、解码指令内容和由CPU的相关部分执行指令三个步骤

CPU内部结构

程序运行机制

1、程序员用高级语言编写程序

2、程序编译转化为机器语言的exe文件

3、程序运行时在内存生成exe副本

*4、CPU解释并执行程序内容

CPU主要由控制单元(从内存中提取指令并解码执行)和算术逻辑单元(ALU,处理算数和逻辑运算)构成;

在物理层面,CPU和内存都是由许多晶体管组成的电子部件

从功能上看,CPU内部由寄存器、控制器、运算器和时钟四部分组成,各部分通过电信号通信

寄存器:暂存指令、数据和地址,可以看做是内存的一种。一个CPU内部会有20-100个寄存器

控制器:把内存上的指令、数据读入寄存器,根据指令的运算结果控制计算机

运算器:负责运算从内存中读入寄存器的数据

时钟:负责发出CPU开始计时的时钟信号

内存是与CPU沟通的桥梁,又被称为主存,其作用是存放CPU中的运算数据以及与硬盘等外部存储设备交换的数据。程序运行过程中,CPU会把运算数据调到内存中运算,完成后将结果传出。

CPU是寄存器的集合体

机器语言是二进制,只有计算机懂;汇编语言则是计算机和人都能懂,但是还是比较晦涩。因此出现了C、Java等高级语言。高级语言需要经过编译转换为机器语言,而汇编语言则需要经过汇编器。汇编语言采用助记符来编写,每一个原本是电信号的机器语言指令会有一个与之对应的助记符。通常将汇编程序转换为机器语言的过程称为汇编;反之则称为反汇编。

机器语言级别(包括汇编语言)的程序是通过寄存器处理的,通常是指令接寄存器名接待操作值:

mov eax, dword ptr [ebp-8]

上述语句表示把数值从内存复制到eax寄存器

CPU中寄存器一般有以下几类:除了基址寄存器、变址寄存器和通用寄存器之外,其他寄存器都有多个

在这里插入图片描述

程序计数器(PC)

PC用来存储下一条指令所在单元的地址。程序执行时,PC的初始值为第一条指令的地址,在顺序执行程序时,控制器首先按PC所指的指令地址从内存中取指令,分析并执行指令,PC值加1指向下一条执行指令(顺序执行)

当然,也会存在条件分支和循环分支的情况,这时候执行完一条指令之后,PC指向的地址可能并非+1

标志寄存器

条件和循环分支会用到jump(跳转指令)。跳转前需要判断是否需要跳转,这就需要用到标志寄存器。判断的执行机制其实是在做减法运算,即假如A和B比较,则执行A-B,分别得出正零负三种可能,而标志寄存器会分别用三个字节位来保存这三种可能(第一位标记正,第二位标记零,第三位标记负)

CPU指令执行过程

1、取指令:将内存中的指令读取到CPU中寄存器的过程,程序寄存器用于存储下一条指令所在的地址
2、指令译码:按照预定的指令格式,对取回的指令进行拆分和解释,识别区分出不同的指令类型以及各种获取操作数的方法
3、执行指令:完成指令所规定的各种操作,实现指令的功能
4、访问取数:根据指令需要,从内存中提取数据。即根据指令地址码,获取操作数在主存中的地址,并读取
5、结果写回(WB):将指令运行结果写会到某种存储形式:经常被写到CPU的内部寄存器中,以便快速存取

内存

概念

是程序与CPU沟通的桥梁,计算机中所有程序都是在内存中运行的,又称为主存,其作用是存放CPU中的运算数据以及与硬盘等外部存储设备交换的数据。只要计算机在运行,CPU就会把需要运算的数据调到主存中运算,并送出运算结果

三种存储器:

1、随机存储器(RAM):可存可写,断电时数据丢失
2、只读存储器(ROM):只读,断电不丢失
3、高速缓存(Cache):有三级缓存,位于内存和CPU之间,读写比内存快。CPU向内存写数据时,写入的是高速缓存;CPU取数据时,也从高速缓存中读取,如果没有才从内存中读取

虚拟内存

虚拟内存是内存和磁盘交互的第二个媒介。虚拟内存是指把磁盘的一部分作为假象内存来使用,这是一种计算机系统内存管理的技术,他使得应用程序认为他拥有连续可用的内存(实际上一半是多个物理碎片和部分外部磁盘管理器空间),在必要时进行数据交换。

通过虚拟内存,内存不足时仍可运行程序,但虚拟内存的空间需要和内存中的空间进行置换

虚拟内存与内存的交换方式

有分页式和分段式两种,win采用分页式,指把运行的程序按照一定大小的页进行分割,并以页为单位进行置换。把磁盘内容读入内存为Page In,反之则为Page Out。

节约内存

通过DLL文件实现函数共有

DLL( Dynamic Link Library)是动态链接库文件,在程序运行时刻动态加载。把常用功能作为DLL,如果多个应用需要用到这一功能,则只需要加载这一个DLL文件,而不用多次加载相同资源,造成资源浪费

磁盘的物理结构

指的是磁盘存储数据的形式,磁盘通过在物理表面划分成多个空间使用的。划分的方式有可变长方式和扇区方式。前者将物理结构划分成长度可变的空间,后者是将磁盘结构划分成固定长度的空间,一般windows使用的硬盘和软盘都是扇区。扇区中,把磁盘表面分成若干个同心圆的空间就是磁道,把磁道按固定大小的存储空间划分的就是扇区,同一列的多个小扇区构成扇面。

在这里插入图片描述扇区是对磁盘进行物理读写的最小单位。Windows所用磁盘一般一个扇区512字节。但Windows在逻辑方面对磁盘进行读写的单位是扇区整数倍“簇”。1簇可以是多个扇区。

不管是硬盘还是软盘,不同文件不能存储在同一簇中,否则导致只有一方的文件不能删除。因此不管多小的文件,都会占用1簇的空间。(这就符合了有些不足4KB的文件,占用空间却有4KB的现象)
在这里插入图片描述

操作系统环境

CPU只能解释其自身固有的语言。不同的CPU能解释的机器语言的种类也是不同的。机器语言的程序成为本地代码,而高级语言编写的程序仅是文本文件,为源代码,通过对其进行编译,得到本地代码。

Windows软件中,键盘输入、显示器输出并不是直接向硬件发送至零,而是通过向Windows发送指令实现的,因此不用注意内存和IO地址的不同构成。即Windows操作的是硬件,软件通过操作Windows系统达到控制硬件的目的。
在这里插入图片描述操作系统的类型不同,应用程序向操作系统传递指令的途径也不同,即API不同。所以Windows应用程序不能直接移植到linux操作系统上。

FreeBSD Port移植

其机制是结合当前运行环境的硬件环境来编译应用的源代码,进而得到可以运行的本地代码。如果目标应用的源代码再硬件上找不到,ports就会使用FTP下载代码。FreeBSD上应用的源代码大多数是用C语言标注的。

使用虚拟机获取环境

虚拟机是指具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能完成的工作在VM中也能实现

Java语言编译后生成的是字节代码,其运行环境就是Java虚拟机(JVM),JVM一遍将字节码转换为本地代码一遍运行。

BIOS和引导

BIOS(Basic Input/Ouput System)存储在ROM中,是预先内置在计算机主机内部的程序。BIOS除了硬盘、磁盘和显卡等基本控制外,还有引导程序功能。引导程序是存储在启动驱动器的小程序。操作系统的启动驱动器一般是硬盘。不过也可能是CD-ROM或软盘(重装系统时?)

电脑开机后,会先确认硬件是否正常运行,没异常则直接启动引导程序,即把在硬盘等记录的OS加载到内存中运行。也就是说OS不能启动自己,是通过引导程序来启动的。

操作系统功能的历史

操作系统其实也是一种软件。其原型是仅具有加载和运行程序功能的监控程序
在这里插入图片描述
人们发现利用监控程序编写程序的过程中有很多公共部分,比如键盘文字输入,显示器数据展示等,因此这种基本输入输出程序被追加到监控程序中,这是早期的OS

在这里插入图片描述
随着这一思路的发展,更多应用程序被追加到监控程序中,就形成了和现在OS差异不大的OS。也就是说,OS是多个程序的集合体
在这里插入图片描述

系统调用

操作系统控制硬件的功能是通过一些小的函数集合体的形式来提供的。这些函数以及调用函数的行为称为系统调用。高级语言编写的应用在编译后,就转换成利用系统调用的本地代码。

通过系统调用,程序员不必直接编写控制硬件的程序,而且通过高级语言,有时也无需开率系统调用的存在,其往往是自动触发的。

Windows提供多任务功能

通过时钟分割实现多任务功能,即在短时间间隔内,多个程序切换运行的方式,在用户看来像多个程序同时运行,其底层是CPU时间切片,是多线程多任务的核心。
在这里插入图片描述

Windows提供网络功能和数据库功能

网络功能是作为标准功能提供的,数据库功能有时候也会在后面追加。网络功能和数据库功能不是OS不可或缺的,但因为和OS很接近,所有被统称为中间件而不是应用。即处于操作系统和应用的中间层,OS和中间件组合在一起,成为系统软件。
在这里插入图片描述

通过即插即用实现设备驱动的自动设定

即插即用指新设备连接后即可直接使用的机制,新设备连接后,计算机会自动安装和设定用来控制该设备的驱动程序

外围设备的中断请求

IRQ(Interrupt Request)表示中断请求,用于暂停当前正在运行的程序,并跳转到其他程序运行的必要机制,该机制被称为处理中断。中断处理在硬件控制中担当者重要的角色。如果没有中断处理,就有可能无法顺畅进行处理的情况。

从中断处理开始到请求中断的程序(中断处理程序)运行结束之前,被中断的程序(主程序)的处理是暂停运行的。类似于我们正在处理文档时有电话打入,电话就相当于中断请求,假如没有中断处理的发生,必须等到文档处理完才能接电话。而接完电话后会返回到原来的文档作业中继续处理。同理,中断程序处理完成后,也会返回主程序中继续运行。

发起中断请求的是外围设备的IO控制器,负责实施中断处理的是CPU。外围设备的中断请求会使用不同于IO端口的其他编号,该编号称为中断编号。

如果有多个外围设备进行中断请求,CPU需要选择处理,为此,可在IO控制器和CPU之间设置中断控制器的IC来进行缓冲。中断控制器会把多个外围设备发出的中断请求有序的传递给CPU。
在这里插入图片描述
CPU在接收到中断请求后,会把当前正在运行的任务中断,并切换到中断处理程序。中断处理程序的第一步处理,就是把CPU所有寄存器的数值保存到内存的栈中。在中断处理程序中完成外围设备的输入和输出后,把栈中保存的数值还原到CPU寄存器中,然后继续进行主程序的处理。
在这里插入图片描述

用中断来实现实时处理

中断是指计算机运行过程中,出现某些意外情况需要主机干预时,及其能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又还原被暂停的程序继续运行。

中断有很多正面影响:
1、实时处理外部输入的数据。若没有中断,则主程序需要通过轮询来检查外围设备是否有输入,这将导致处理效率降低
2、提高计算机系统效率。处理器处理速度远高于外围设备的工作速度,通过中断协调他们的工作。
3、维护系统正常可靠工作。主存往往有很多程序各自的存储空间,在程序运行过程中,如果出现越界访问,可能引起程序混乱或相互破坏信息。因此,一旦出现这种情况,就会向处理器发出中断请求,采取保护措施
4、满足实时处理要求。
5、提供故障现场处理手段。一旦发现故障或错误,立即发出中断请求,进行故障现场记录和隔离,为进一步处理提供必要的依据。

利用DMA实现短时间内大量数据传输

DMA(Direct Memory Access)是指在不通过CPU,外围设备直接和主存进行数据传输。
在这里插入图片描述计算机主机通过软件控制硬件时所需信息的最低要求,是外围设备的IO端口号,而IRQ和DMA则对特定需要的外围设备来说是必须的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值