操作系统
cpu
CPU 的全称是 Central Processing Unit
CPU 的核心是从程序或应用程序获取指令并执行计算。此过程可以分为三个关键阶段:提取,解码和执行。CPU从系统的主存中提取指令,然后解码该指令的实际内容,然后再由 CPU 的相关部分执行该指令。
在这个流程中,CPU 负责的就是解释和运行最终转换成机器语言的内容。
CPU 主要由两部分构成:控制单元
和 算术逻辑单元(ALU)
- 控制单元:从内存中提取指令并解码执行
- 算数逻辑单元(ALU):处理算数和逻辑运算
寄存器
是中央处理器内的组成部分。它们可以用来暂存指令、数据和地址。可以将其看作是内存的一种。根据种类的不同,一个 CPU 内部会有 20 - 100个寄存器。控制器
负责把内存上的指令、数据读入寄存器,并根据指令的结果控制计算机运算器
负责运算从内存中读入寄存器的数据时钟
负责发出 CPU 开始计时的时钟信号
在中央处理器(CPU)内部,指令和数据的处理流程可以分为几个主要步骤
取指(Fetch):
- 控制器从内存中读取指令。程序计数器(PC)指向当前要执行的指令地址。
- 指令被加载到一个特定的寄存器中(通常是指令寄存器IR)。
译码(Decode):
- 控制器对指令进行译码,解析指令的操作码和操作数。
- 根据指令的类型,确定需要进行的操作以及涉及的寄存器。
执行(Execute):
- 运算器根据译码后的指令,从寄存器中读取所需的数据。
- 运算器执行具体的计算或逻辑操作。
访存(Memory Access):
- 如果指令需要访问内存(如加载数据或存储结果),控制器会发出相应的信号,从内存中读写数据。
写回(Write Back):
- 将运算结果或数据写回寄存器或内存。
更新程序计数器(PC):
- 控制器更新程序计数器,指向下一条指令的地址。
时钟信号:
- CPU的时钟会定期发出信号,控制整个流程的节奏,确保各个步骤按照固定的时间间隔进行。
寄存器的种类
种类 | 功能 |
---|---|
累加寄存器 | 存储运行的数据和运算后的数据。 |
标志寄存器 | 用于反应处理器的状态和运算结果的某些特征以及控制指令的执行。 |
程序计数器 | 程序计数器是用于存放下一条指令所在单元的地址的地方。 |
基址寄存器 | 存储数据内存的起始位置 |
变址寄存器 | 存储基址寄存器的相对地址 |
通用寄存器 | 存储任意数据 |
指令寄存器 | 储存正在被运行的指令,CPU内部使用,程序员无法对该寄存器进行读写 |
栈寄存器 | 存储栈区域的起始位置 |
内存
内存(Memory)是计算机中最重要的部件之一,它是程序与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存对计算机的影响非常大,内存又被称为`主存`,其作用是存放 CPU 中的运算数据,以及与硬盘等外部存储设备交换的数据。只要计算机在运行中,CPU 就会把需要运算的数据调到主存中进行运算,当运算完成后CPU再将结果传送出来,主存的运行也决定了计算机的稳定运行。
内存的内部是由各种 IC 电路组成的,它的种类很庞大,但是其主要分为三种存储器
- 随机存储器(RAM): 内存中最重要的一种,表示既可以从中读取数据,也可以写入数据。当机器关闭时,内存中的信息会
丢失
。 - 只读存储器(ROM):ROM 一般只能用于数据的读取,不能写入数据,但是当机器停电时,这些数据不会丢失。
- 高速缓存(Cache):Cache 也是我们经常见到的,它分为一级缓存(L1 Cache)、二级缓存(L2 Cache)、三级缓存(L3 Cache)这些数据,它位于内存和 CPU 之间,是一个读写速度比内存
更快
的存储器。当 CPU 向内存写入数据时,这些数据也会被写入高速缓存中。当 CPU 需要读取数据时,会直接从高速缓存中直接读取,当然,如需要的数据在Cache中没有,CPU会再去读取内存中的数据。
内存和磁盘的关系
磁盘缓存
指的是把从磁盘中读出的数据存储到内存的方式,这样一来,当接下来需要读取相同的内容时,就不会再通过实际的磁盘,而是通过磁盘缓存来读取。某一种技术或者框架的出现势必要解决某种问题的,那么磁盘缓存就大大改善了磁盘访问的速度。
虚拟内存
是内存和磁盘交互的第二个媒介。虚拟内存是指把磁盘的一部分作为假想内存
来使用。这与磁盘缓存是假想的磁盘(实际上是内存)相对,虚拟内存是假想的内存(实际上是磁盘)。
通过借助虚拟内存,在内存不足时仍然可以运行程序。例如,在只剩 5MB 内存空间的情况下仍然可以运行 10MB 的程序。由于 CPU 只能执行加载到内存中的程序,因此,虚拟内存的空间就需要和内存中的空间进行置换(swap)
,然后运行程序。
虚拟内存与内存的交换方式
虚拟内存的方法有分页式
和 分段式
两种。Windows 采用的是分页式。该方式是指在不考虑程序构造的情况下,把运行的程序按照一定大小的页进行分割,并以页
为单位进行置换。在分页式中,我们把磁盘的内容读到内存中称为 Page In
,把内存的内容写入磁盘称为 Page Out
。Windows 计算机的页大小为 4KB ,也就是说,需要把应用程序按照 4KB 的页来进行切分,以页(page)为单位放到磁盘中,然后进行置换。
压缩算法
文件存储
文件是将数据存储在磁盘等存储媒介的一种形式。程序文件中最基本的存储数据单位是字节
。文件的大小不管是 xxxKB、xxxMB等来表示,就是因为文件是以字节 B = Byte
为单位来存储的。
文件就是字节数据的集合。用 1 字节(8 位)表示的字节数据有 256 种,用二进制表示的话就是 0000 0000 - 1111 1111 。如果文件中存储的数据是文字,那么该文件就是文本文件。如果是图形,那么该文件就是图像文件。在任何情况下,文件中的字节数都是连续存储
的。
压缩算法的定义
有损和无损
无损压缩:能够无失真地
从压缩后的数据重构,准确地还原原始数据。可用于对数据的准确性要求严格的场合,如可执行文件和普通文件的压缩、磁盘的压缩,也可用于多媒体数据的压缩。该方法的压缩比较小。如差分编码、RLE、Huffman编码、LZW编码、算术编码。
有损压缩:有失真,不能完全准确地
恢复原始数据,重构的数据只是原始数据的一个近似。可用于对数据的准确性要求不高的场合,如多媒体数据的压缩。该方法的压缩比较大。例如预测编码、音感编码、分形压缩、小波压缩、JPEG/MPEG。
操作系统
api
应用程序向系统传递指令的途径称为 API(Application Programming Interface)
因为不同操作系统的 API 是有差异的。所以,如何要将同样的应用程序移植到另外的操作系统,就必须要覆盖应用所用到的 API 部分。
Windows 操作系统的特征
- Windows 操作系统有两个版本:32位和64位
- 通过
API
函数集成来提供系统调用 - 提供了采用图形用户界面的用户界面
- 通过
WYSIWYG
实现打印输出,WYSIWYG 其实就是 What You See Is What You Get ,值得是显示器上显示的图形和文本都是可以原样输出到打印机打印的。 - 提供多任务功能,即能够同时开启多个任务
- 提供网络功能和数据库功能
- 通过即插即用实现设备驱动的自设定
32位操作系统
这里表示的32位操作系统表示的是处理效率最高的数据大小。Windows 处理数据的基本单位是 32 位。这与最一开始在 MS-DOS
等16位操作系统不同,因为在16位操作系统中处理32位数据需要两次,而32位操作系统只需要一次就能够处理32位的数据,所以一般在 windows 上的应用,它们的最高能够处理的数据都是 32 位的。
比如,用 C 语言来处理整数数据时,有8位的 char
类型,16位的short
类型,以及32位的long
类型三个选项,使用位数较大的 long 类型进行处理的话,增加的只是内存以及磁盘的开销,对性能影响不大。
现在市面上大部分都是64位操作系统了,64位操作系统也是如此。
通过 API 函数集来提供系统调用
Windows 是通过名为 API
的函数集来提供系统调用的。API是联系应用程序和操作系统之间的接口,全称叫做 Application Programming Interface
,应用程序接口。
当前主流的32位版 Windows API 也称为 Win32 API
,之所以这样命名,是需要和不同的操作系统进行区分,比如最一开始的 16 位版的 Win16 API
,和后来流行的 Win64 API
。
API 通过多个 DLL 文件来提供,各个 API 的实体都是用 C 语言编写的函数。所以,在 C 语言环境下,使用 API 更加容易,比如 API 所用到的 MessageBox()
函数,就被保存在了 Windows 提供的 user32.dll 这个 DLL 文件中。
提供采用了 GUI 的用户界面
GUI(Graphical User Interface)
指得就是图形用户界面,通过点击显示器中的窗口以及图标等可视化的用户界面,举个例子:Linux 操作系统就有两个版本,一种是简洁版,直接通过命令行控制硬件,还有一种是可视化版,通过光标点击图形界面来控制硬件。
通过 WYSIWYG 实现打印输出
WYSIWYG 指的是显示器上输出的内容可以直接通过打印机打印输出。在 Windows 中,显示器和打印机被认作同等的图形输出设备处理的,该功能也为 WYSIWYG 提供了条件。
借助 WYSIWYG 功能,程序员可以轻松不少。最初,为了是现在显示器中显示和在打印机中打印,就必须分别编写各自的程序,而在 Windows 中,可以借助 WYSIWYG 基本上在一个程序中就可以做到显示和打印这两个功能了。
提供多任务功能
多任务指的就是同时能够运行多个应用程序的功能,Windows 是通过时钟分割
技术来实现多任务功能的。时钟分割指的是短时间间隔内,多个程序切换运行的方式。在用户看来,就好像是多个程序在同时运行,其底层是 CPU 时间切片
,这也是多线程多任务的核心。
提供网络功能和数据库功能
Windows 中,网络功能是作为标准功能提供的。数据库(数据库服务器)功能有时也会在后面追加。网络功能和数据库功能虽然并不是操作系统不可或缺的,但因为它们和操作系统很接近,所以被统称为中间件
而不是应用。意思是处于操作系统和应用的中间层,操作系统和中间件组合在一起,称为系统软件
。应用不仅可以利用操作系统,也可以利用中间件的功能。
相对于操作系统一旦安装就不能轻易更换,中间件可以根据需要进行更换,不过,对于大部分应用来说,更换中间件的话,会造成应用也随之更换,从这个角度来说,更å换中间件也不是那么容易。
通过即插即用实现设备驱动的自动设定
即插即用(Plug-and-Play)`指的是新的设备连接(plug) 后就可以直接使用的机制,新设备连接计算机后,计算机就会自动安装和设定用来控制该设备的`驱动程序
设备驱动是操作系统的一部分,提供了同硬件进行基本的输入输出的功能。键盘、鼠标、显示器、磁盘装置等,这些计算机中必备的硬件的设备驱动,一般都是随操作系统一起安装的。
有时 DLL 文件也会同设备驱动文件一起安装。这些 DLL 文件中存储着用来利用该新追加的硬件API,通过 API ,可以制作出运行该硬件的心应用。
时钟周期(GHZ)
什么是时钟周期?计算机处理器或 CPU 的速度由时钟周期来确定,该时钟周期是振荡器两个脉冲之间的时间量。一般而言,每秒脉冲数越高,计算机处理器处理信息的速度就越快。 时钟速度以 Hz 为单位测量,通常为兆赫(MHz)或千兆赫(GHz)。 例如,一个4 GHz处理器每秒执行4,000,000,000个时钟周期。
计算机处理器可以在每个时钟周期执行一条或多条指令,这具体取决于处理器的类型。 早期的计算机处理器和较慢的 CPU 在每个时钟周期只能执行一条指令,而现代处理器在每个时钟周期可以执行多条指令。
进程
进程的本质就是操作系统执行的一个程序。你可以把进程看作是容纳运行一个程序所有信息的一个容器。
对进程建立一种直观感觉的方式是考虑建立一种多程序的系统。考虑下面这种情况:用户启动一个视频编辑程序,指示它按照某种格式转换视频,然后再去浏览网页。同时,一个检查电子邮件的后台进程被唤醒并开始运行,这样,我们目前就会有三个活动进程:视频编辑器、Web 浏览器和电子邮件接收程序。操作系统周期性的挂起一个进程然后启动运行另一个进程,这可能是由于过去一两秒钟程序用完了 CPU 分配的时间片,而 CPU 转而运行另外的程序。
地址空间
地址空间是指一个计算机系统中可用于地址标识的内存范围。简单来说,它是指 CPU 或操作系统可以访问的内存地址的集合。地址空间通常分为以下几种:
- 物理地址空间:这是计算机物理内存的实际地址范围。每个物理地址对应于一个实际的内存单元。
- 虚拟地址空间:现代操作系统使用虚拟内存技术,给每个进程提供一个独立的地址空间。这意味着每个进程认为自己拥有整个地址空间,而实际的物理内存则通过操作系统管理和映射。
- 用户空间与内核空间:地址空间通常分为用户空间和内核空间。用户空间是普通应用程序运行的地方,而内核空间是操作系统核心运行的地方,具有更高的权限。
管道(pipe)
是一种虚文件,他可以连接两个进程
如果 A 和 B 希望通过管道对话,他们必须提前设置管道。当进程 A 相对进程 B 发送数据时,它把数据写到管道上,相当于管道就是输出文件。这样,在 UNIX 中两个进程之间的通信就非常类似于普通文件的读写了。
标签:API,操作系统,指令,内存,数据,CPU From: https://www.cnblogs.com/cloudwangsa/p/18521406