计算机操作系统原理

最近准备i面试,抽时间回顾一下计算机操作系统原理.  -2018.10.1

1、硬件基础

计算机的构成:

  • 处理器(CPU):主要包括运算器、控制器
  • 内存(主存储器)
  • 输入输出设备

详细的讲,CPU内部包括

  • 存储器地址寄存器 MAR:  用于确定下一个要读写的存储器地址
  • 存储器缓冲寄存器 MBR: 用于存放要写入存储器的数据,或者从存储器中读取的数据
  • 输入/输出地址寄存器 IO AR: 用于确定一个输入输出设备
  • 输入/输出缓冲寄存器 IO BR: 用于在输入输出模块和处理器间交换数据

2.指令,内存,中断

基本指令的执行周期包括:

开始-->取指-->执行指令-->检查中断-->停止   (取指和执行指令循环进行)

中断处理的方法:

  1. 处理一个中断时,禁止其他中断
  2. 设置中断优先级,高优先级打断低优先级的中断处理程序

内存有:

  1. 随机存储器(RAM):也有SDRAM静态随机存储器(DDR2,DDR3,DDR4)
  2. 虚拟内存:使用计算机硬盘模拟的内存
  3. 只读存储器(ROM):存放固化的指令 ,一般存储最底层的IO软件操作:读键盘,写屏幕,磁盘IO操作等
  4. CMOS存储器和EEPROM:CMOS保存计算机系统配置信息,EEPROM基本取代了CMOS,CMOS需要供电保存信息,EEPROM不需要持续供电也能持续保存信息

高速缓存:

因为处理器取指令至少需要访问一次内存,通常还要访问存储器用于取操作数或保存结果;处理器速度大于内存的速度,降低指令执行速度,因此设置高速缓存.

CPU<--->高速缓存(1级或多级)<--->内存

3.地址空间和内存管理

存储管理器:

操作系统中管理分层存储体系的部分称为存储管理器.

分层存储体系:

体系中包括千兆级别,昂贵且易失性的高速缓存(Cache),数千兆级别,价格适中同样易失性的内存(DDR3等),几兆兆(TB)低速,廉价,非易失性的磁盘存储,以及其他可移动存储设备.

存储器存在着以下规律:

  • 存取速度越快,每位价格越高;
  • 容量越大,每位价格越低;
  • 容量越大,存取速度越低;

关于应用程序的内存分配(堆和栈)

这篇论坛讨论的非常好:memory manager

blog:内存映射

一个应用程序的虚拟内存区域组成(从低到高):

  1. 保留区域:Reserved区通常不对应具体的物理地址,因此不可直接访问
  2. 代码区域:
  3. 全局变量区:包含初始化区域(初始化的全局,静态变量),未初始化区域(未初始化的静态,全局变量)
  4. :堆区域大小在代码开始运行时给出,不过在运行过程中大小可变.内存中空闲内存块按照链表形式存储,申请堆时,按照需要申请的堆的大小去遍历链表,知道找到足够大的空闲内存块 ,将其分配给程序,多余的小的内存块仍然以链表形式插入在空闲内存块中.因此堆的最大尺寸由硬件条件决定.进程空间大小-内核空间大小(1G左右)-栈大小-全局空间。 
  5. 内存映射区:硬盘内容直接映射到内存,一般为文件运行时的动态链接库
  6. 用户栈:在代码运行时分配,大小固定,不过通过IDE或其他方式可以修改.
  7. 内核空间:大小固定,操作系统装载,不允许程序直接访问

PS:值得一提的是,一个进程可能包括多个线程,但是一个进程通常只有一个堆区域(除非应用申请多个不同类型的堆),而线程各自拥有各自的栈!堆区域为线程共享.

虚拟内存的分页和分段:

基本概念

面对越来越大的程序,常常产生程序>内存的问题,为解决这种问题,虚拟内存的概念得到普及.

虚拟内存基本思想是:每个程序都拥有自己的地址空间,这个空间被分割成多个 块,每个块被成为一页或页面.

程序运行时,并不是所有页都在物理内存中:

  • 当程序引用一部分在物理内存的地址空间时,由硬件直接执行必要的映射;
  • 当程序引用一部分不在物理内存的地址空间时,有操作系统将缺失的页装入物理内存,并重新运行

分页

分页访问过程:

  1. CPU中包含MMU内存管理单元,用于管理虚拟地址空间到物理内存地址的映射.
  2. 假设物理内存地址大小为32k,每4k为一个页框.虚拟地址空间分页,每个页面大小等于一个页框
  3. 当程序想要访问一个虚拟地址x,
  4. 指令将x送到MMU,
  5. MMU根据x的虚拟地址,判断其对应的页面是否在物理内存中:
  6. 若在,MMU将x转化为物理内存地址y
  7. 若不在,则进行缺页中断,操作系统在物理内存中找到一个使用较少的页面回收掉,将需要访问的页面读到被回收的页面处,再将x转化为物理内存地址访问

分段和分页的区别:

(1)页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.

(2)页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.

(3)分页的作业地址空间是一维的.分段的地址空间是二维的.

猜你喜欢

转载自blog.csdn.net/weixin_37058227/article/details/82899565