操作系统基础:

大学四年我是怎么写操作系统和计算机网络的?掏心掏肺的分享! - 小林coding - 博客园 (cnblogs.com)

计算机基本结构为 5 个部分, 分别是中央处理器(CPU)、内存、输⼊设备、输出设备、总线

image-20220123120224775

内存:

内存也是存储介质,内存里存放的数据其实也是只是存放0或者1这两个二进制数字,所以可以内存里有海量的小格子,每1个格子是1个bit,小格子里面就只能存放0或1。
那么如果要表示数值255需要几个格子来放呢?
根据二级制算法就是用8个格子,每个格子都是1,来表示255.
计算机规定8bit=1byte 就是1字节=8位。硬件结构:

数据存储的单位是⼀个⼆进制位(bit),即 0 或 1。最⼩的存储单位是字节(byte),1 字节等于 8 位。

在这里插入图片描述

中央处理器

中央处理器也就是我们常说的 CPU,32 位和 64 位 CPU 最主要区别在于⼀次能计算多少字节数据:

  • 32 位 CPU ⼀次可以计算 4 个字节
  • 64 位 CPU ⼀次可以计算 8 个字节

通⽤寄存器: ⽤来存放需要进⾏运算的数据,⽐如需要进⾏加和运算的两个数据。

程序计数器:⽤来存储 CPU 要执⾏下⼀条指令「所在的内存地址」,注意不是存储了下⼀条要执⾏ 的指令,此时指令还在内存中,程序计数器只是存储了下⼀条指令的地址。

指令寄存器:⽤来存放程序计数器指向的指令,也就是指令本身,指令被执⾏完成之前,指令都存储 在这⾥

总线

总线是⽤于 CPU 和内存以及其他设备之间的通信,总线可分为 3 种:

  • 地址总线:⽤于指定 CPU 将要操作的内存地址;
  • 数据总线:⽤于读写内存的数据;
  • 控制总线:⽤于发送和接收信号,⽐如中断、设备复位等信号,CPU 收到信号后⾃然进⾏响应,这时 也需要控制总线

CPU 要读写内存数据的时候,⼀般需要通过两个总线:

⾸先要通过「地址总线」来指定内存的地址

再通过「数据总线」传输数据;

计算器寻址方式:

关于寻址方式一篇就够了 - 知乎 (zhihu.com)

操作系统的内存管理主要是做什么?

操作系统的内存管理主要负责内存的分配和回收,另外地址转换也就是将逻辑地址转换成相应的物理地址等功能也是操作系统内存管理做的事情

操作系统的内存管理机制了解吗?内存管理有哪几种方式?

​ 简单分为连续分配管理方式非连续分配管理方式这两种。连续分配管理方式是指为一个用户程序分配一个连续的内存空间,常见的如 块式管理 。同样地,非连续分配管理方式允许一个程序使用的内存分布在离散或者说不相邻的内存中,常见的如页式管理段式管理

  1. 块式管理 :远古时代的计算机操系统的内存管理方式。将内存分为几个固定大小的块,每个块中只包含一个进程。如果程序运行需要内存的话,操作系统就分配给它一块,如果程序运行只需要很小的空间的话,分配的这块内存很大一部分几乎被浪费了(不论需要都分配固定的大小)。这些在每个块中未被利用的空间,我们称之为碎片。
  2. 页式管理 :把主存分为大小相等且固定的一页一页的形式,页较小,相对相比于块式管理的划分力度更大,提高了内存利用率,减少了碎片。页式管理通过页表对应逻辑地址和物理地址
  3. 段式管理 :页式管理虽然提高了内存利用率,但是页式管理其中的页实际并无任何实际意义。段式管理把主存分为一段段的,每一段的空间又要比一页的空间小很多 。但是,最重要的是段是有实际意义的,每个段定义了一组逻辑信息,例如,有主程序段 MAIN、子程序段 X、数据段 D 及栈段 S 等。段式管理通过段表对应逻辑地址和物理地址。

段页式管理机制 。段页式管理机制结合了段式管理和页式管理的优点。简单来说段页式管理机制就是把主存先分成若干段,每个段又分成若干页,也就是说 段页式管理机制 中段与段之间以及段的内部的都是离散的。

我和面试官之间关于操作系统的一场对弈!写了很久,希望对你有帮助! (qq.com)

计算机单位转换

计算机最小的单位是位(bit),每8位组成一个字节(Byte),字节(B)也是存储器的最小存储单元。
b、B、Kb、KB、Mb、MB、Gb、GB之间的单位换算如下:

1TB=1024GB

1GB=1024MB

1MB=1024KB

1KB=1024B1B = 2的3次方优先级队列(PriorityQueue)

(40条消息) Java基本数据结构——优先级队列(堆)_1485Lucifer的博客-CSDN博客

(40条消息) 【Java每日一题】Java笔试100题(1)_1485Lucifer的博客-CSDN博客_java每日一题

b = 2的20次方B
1Gb = 2的30次方
b
1GB = 2的33次方b = 2的30次方B
4Gb = 2的32次方b
4GB = 2的35次方
b = 2的32次方*B

在这里插入图片描述

什么叫寻址空间?

​ 寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ,CPU在运算的时候需要把数据提取出来就需要知道数据在那里 ,这时候就需要挨家挨户的找,这就叫做寻址,但如果地址太多超出了CPU的能力范围,CPU就无法找到数据了。 CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位。
​ 通常人们认为,内存容量越大,处理数据的能力也就越强,但内存容量不可能无限的大,它要受到系统结构、硬件设计、制造成本等多方面因素的制约,一个最直接的因素取决于系统的地址总线的地址寄存器的宽度(位数)。
​ 计算机的寻找范围由总线宽度(处理器的地址总线的位数)决定的,也可以理解为cpu寄存器位数,这二者一般是匹配的。
​ Intel公司早期的CPU产品的地址总线和地址寄存器的宽度为20位,即CPU的寻址能力为2^20=10241024字节=1024K字节=1M字节;286的地址总线和地址寄存器的宽度为24位,CPU的寻址能力为2^24=1024410244B=410244KB=16M;386及386以上的地址总线和地址寄存器的宽度为32位,CPU的寻址能力为2^32=4096M字节=4G字节。 也就是说,如果机器的CPU过早,即使有很大的内存也不能得到利用,而对于现在的PⅡ级的CPU,其寻址能力已远远超过目前的内存容量。
由此推出:地址总线为N位(N通常都是8的整数倍;也说N根数据总线)的CPU寻址范围是2的N次方字节,即2^N(B)。

例题:若内存容量为4GB,字长为32,则______。
A.地址总线和数据总线的宽度都为32
B.地址总线的宽度为30,数据总线的宽度为32
C.地址总线的宽度为30,数据总线的宽度为8
D.地址总线的宽度为32,数据总线的宽度为8
答案:A
内存容量为4GB,即内存单元的地址宽度为32位。字长为32位即要求数据总线的宽度为32位,因此地址总线和数据总线的宽度都为32。

16位、32位、64位通常指的是什么?

从CPU的发展史来看: 从以前的8位到现在的64位,8位也就是CPU在一个时钟周期内可并行处理8位二进字符0或是1,那么16就以此类推是64位就64位二进制.
从数据计算上来讲 :理论上64位比32快一半。但因为电脑是软硬相配合才能发挥最佳性能的.所以操作系统也必须从32位的到64位的,而且系统的硬件驱动也必须是64位的.在64CPU的计算机上要安装64位操作系统64位的硬件驱动,32位的硬件驱动是不能用的,只有这样才能发挥计算机的最佳性能.如果64CPU装32操作系统的话,那性能不会有明显的提升。

总而言之,8位的CPU一次只能处理一个字节,而32位的CPU一次就能处理4个字节,同理字长为64位的CPU一次可以处理8个字节。

为什么是2的N次方,而不是其他数的N次方?

​ 因为计算机是采用二进制计算的。 假设一台计算机,它只有1根地址线,请问它最多能对几个存储单元寻址?

答案是:2个.因为在任何2进制计算机中,所有物理元件只有 0,1两种状态,对应这个例子,我们假设已经把这唯一的一根地址线与两个存储单元a和b连上了,那么究竟怎么确定何时读a何时读b?

有一个办法,当地址线上的电压是高电压时我们读a,相反是低电压时,我们读b.如此一来,一根地址线的情况下,只能对2个存储单元进行寻址 依次类推**,2根地址线时可以对4个存储单元进行寻址**,对应的电压情况可以是:低低,低高,高低,高高;继续想下去,3根地址线就可以对8个存储单元进行寻址(3个1和3个0不同组合情况:111、110、100、000、101、100、001、011),4根就是16个,也就是说,当有n根地址线时,可以对2的n次方个存储单元进行寻址。(就是说同时进行读写的情况
一根线是怎么连接到两个存储单元的?好像不同于一根电话线吧,他有两个线芯或才网线,有八个小线(线芯)?

什么是存储单元?

存储单元一般应具有存储数据和读写数据的功能,一般以8位二进制作为一个存储单元,也就是一个字节。每个单元有一个地址,是一个整数编码,可以表示为二进制整数。程序中的变量和主存储器的存储单元相对应。变量的名字对应着存储单元的地址,变量内容对应着单元所存储的数据。

为什么计算机采用二进制?

(1)技术实现简单,计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示。

(2)简化运算规则:两个二进制数和、积运算组合各有三种,运算规则简单,有利于简化计算机内部结构,提高运算速度。

(3)适合逻辑运算:逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好与逻辑代数中的“真”和“假”相吻合。

(4)易于进行转换,二进制与十进制数易于互相转换。

(5)用二进制表示数据具有抗干扰能力强,可靠性高等优点。因为每位数据只有高低两个状态,当受到一定程度的干扰时,仍能可靠地分辨出它是高还是低。

CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。

地址总线

(1)CPU是通过地址总线来指定存储单元的。

(2)地址总线决定了cpu所能访问的最大内存空间的大小。eg: 10根地址线能访问的最大的内存为1024位二进制数据(1B)

(3)地址总线是地址线数量之和。
若CPU的地址总线宽度是32位,那么CPU的寻址范围是4G,所以最多支持4G内存。

数据总线

(1) 是CPU与内存或其他器件之间的数据传送的通道。

(2)数据总线的宽度决定了CPU和外界的数据传送速度。

(3)每条传输线一次只能传输1位二进制数据。eg: 8根数据线一次可传送一个8位二进制数据(即一个字节)。

(4)数据总线是数据线数量之和。

数据总线的位数决定CPU单次通信能交换的信息数量

数据总线的宽度对CPU的性能的影响

  1. 首先,总线的速度(即:CPU的主频,CPU的性能指标之一)决定CPU和外设互换信息的速度。
  2. 其次,数据总线的宽度也是表示CPU性能的参数之一(通常,我们说“64位的CPU”是指CPU的数据总线的宽度是64位)。
    如:64位数据总线的CPU一次就能取出64bit的数据,8位数据总线的CPU一次只能取出8bit的数据,在相同频率的情况下,8位数据总线的CPU就得连续取8次数据,数据量才能和64位数据总线一次取出的数据量相同,单就比较取数据的性能就相差8倍。况且,通常CPU中的寄存器的位数与数据总线的宽度一样,所以在数据处理方面,64位的CPU又比8位的CPU快很多。
  3. CPU的地址总线位数和数据总线可以不同(典型代表就是51单片机),但是一般都相同。