文章笔记主要引用:
说一下你理解中的内存?他有什么作用呢?
在多道程序环境下,为了区分各个程序的数据存放位置,操作系统采用了以下主要的技术和策略:
-
进程和地址空间:操作系统为每个进程分配一个独立的地址空间,即虚拟地址空间。虚拟地址空间是每个进程所独立拥有的地址范围,用于存放进程的代码、数据和堆栈等信息。每个进程的虚拟地址空间都从0开始,因此各个程序的数据存放在各自的虚拟地址空间中,彼此相互隔离。
-
内存分页:为了更高效地管理内存和实现进程间的内存隔离,操作系统使用内存分页技术。内存被分割成大小相等的块,称为页。每个进程的虚拟地址空间也被分成大小相等的块,称为虚拟页。操作系统使用页表来映射虚拟页到物理页(实际内存中的页)的对应关系。每个进程的页表都是独立的,使得不同进程的虚拟页可以映射到不同的物理页,实现了内存隔离。
-
内存保护:为了防止进程之间相互干扰和访问彼此的数据,操作系统通过内存保护机制来限制每个进程对内存的访问。在页表中,可以设置页的访问权限,比如只读、可写、可执行等。操作系统会根据进程的访问权限来设置页表项,确保进程只能访问自己所拥有的内存区域,而不能访问其他进程的内存。
-
进程切换:在多道程序环境下,CPU会在不同的进程之间进行切换,以实现并发执行。当一个进程被调度执行时,操作系统会将该进程的页表装载到内存管理单元(MMU)中,从而使得进程的虚拟地址能正确映射到物理地址。当进程切换时,MMU会切换到下一个进程的页表,从而实现进程间内存隔离。
通过以上技术和策略,操作系统能够区分各个程序的数据存放位置,并保证各个进程之间的数据和内存隔离,从而实现多道程序的并发执行。这样每个程序都能在独立的地址空间中运行,相互之间不会干扰,保障了系统的稳定性和安全性。
冯诺依曼结构有哪几个模块?分别对应现代计算机的哪几个部分?(百度安全一面)
- 存储器:内存
- 控制器:CPU中控制单元,南桥北桥
- 运算器:CPU中逻辑运算单元
- 输入设备:键盘
- 输出设备:显示器、网卡
CPU
寄存器、控制单元和逻辑运算单元
常见的寄存器种类:
- 通用寄存器,用来存放需要进行运算的数据,比如需要进行加和运算的两个数据。
- 程序计数器,用来存储 CPU 要执行下一条指令「所在的内存地址」,注意不是存储了下一条要执行的指令,此时指令还在内存中,程序计数器只是存储了下一条指令「的地址」。
- 指令寄存器,用来存放当前正在执行的指令,也就是指令本身,指令被执行完成之前,指令都存储在这里。
总线
总线是用于 CPU 和内存以及其他设备之间的通信,总线可分为 3 种:
- 地址总线,用于指定 CPU 将要操作的内存地址;
- 数据总线,用于读写内存的数据;
- 控制总线,用于发送和接收信号,比如中断、设备复位等信号,CPU 收到信号后自然进行响应,这时也需要控制总线;
当 CPU 要读写内存数据的时候,一般需要通过下面这三个总线:
- 首先要通过「地址总线」来指定内存的地址;
- 然后通过「控制总线」控制是读或写命令;
- 最后通过「数据总线」来传输数据;
32 位和 64 位 CPU 最主要区别在于一次能计算多少字节数据:
- 32 位 CPU 一次可以计算 4 个字节;
- 64 位 CPU 一次可以计算 8 个字节;