最近准备i面试,抽时间回顾一下计算机操作系统原理. -2018.10.1
1、硬件基础
计算机的构成:
处理器(CPU):主要包括运算器、控制器内存(主存储器)输入输出设备
详细的讲,CPU内部包括:
存储器地址寄存器
MAR: 用于确定下一个要读写的存储器地址存储器缓冲寄存器
MBR: 用于存放要写入存储器的数据,或者从存储器中读取的数据输入/输出地址寄存器
IO AR: 用于确定一个输入输出设备输入/输出缓冲寄存器
IO BR: 用于在输入输出模块和处理器间交换数据 2.指令,内存,中断
基本指令的执行周期包括:
开始-->取指-->执行指令-->检查中断-->停止 (取指和执行指令循环进行)
中断处理的方法:
处理一个中断时,禁止其他中断设置中断优先级,高优先级打断低优先级的中断处理程序
内存有:
随机存储器(RAM):也有SDRAM静态随机存储器(DDR2,DDR3,DDR4)
虚拟内存:使用计算机硬盘模拟的内存
只读存储器(ROM):存放固化的指令 ,一般存储最底层的IO软件操作:读键盘,写屏幕,磁盘IO操作等
CMOS存储器和EEPROM:CMOS保存计算机系统配置信息,EEPROM基本取代了CMOS,CMOS需要供电保存信息,EEPROM不需要持续供电也能持续保存信息
高速缓存:
因为处理器取指令至少需要访问一次内存,通常还要访问存储器用于取操作数或保存结果;处理器速度大于内存的速度,降低指令执行速度,因此设置高速缓存.
CPU<--->高速缓存(1级或多级)<--->内存
3.地址空间和内存管理
存储管理器:
操作系统中管理分层存储体系的部分称为存储管理器.
分层存储体系:
体系中包括千兆级别,昂贵且易失性的高速缓存(Cache),数千兆级别,价格适中同样易失性的内存(DDR3等),几兆兆(TB)低速,廉价,非易失性的磁盘存储,以及其他可移动存储设备.
存储器存在着以下规律:
存取速度越快,每位价格越高;容量越大,每位价格越低;容量越大,存取速度越低; 关于应用程序的内存分配(堆和栈)
这篇论坛讨论的非常好:memory manager
blog:内存映射
一个应用程序的虚拟内存区域组成(从低到高):
保留区域:Reserved区通常不对应具体的物理地址,因此不可直接访问
代码区域:
全局变量区:包含初始化区域(初始化的全局,静态变量),未初始化区域(未初始化的静态,全局变量)
堆:堆区域大小在代码开始运行时给出,不过在运行过程中
大小可变.内存中空闲内存块按照链表形式存储,申请堆时,按照需要申请的堆的大小去遍历链表,知道找到足够大的空闲内存块 ,将其分配给程序,多余的小的内存块仍然以链表形式插入在空闲内存块中.因此堆的最大尺寸由硬件条件决定.进程空间大小-内核空间大小(1G左右)-栈大小-全局空间。
内存映射区:硬盘内容直接映射到内存,一般为文件运行时的动态链接库
用户栈:在代码运行时分配,
大小固定,不过通过IDE或其他方式可以修改.
内核空间:大小固定,操作系统装载,不允许程序直接访问
PS:值得一提的是,一个进程可能包括多个线程,但是一个进程通常只有一个堆区域(除非应用申请多个不同类型的堆),而线程各自拥有各自的栈!堆区域为线程共享.
虚拟内存的分页和分段:
基本概念
面对越来越大的程序,常常产生程序>内存的问题,为解决这种问题,虚拟内存的概念得到普及.
虚拟内存的基本思想是:每个程序都拥有自己的地址空间,这个空间被分割成多个 块,每个块被成为一页或页面.
程序运行时,并不是所有页都在物理内存中:
当程序引用一部分在物理内存的地址空间时,由硬件直接执行必要的映射;当程序引用一部分不在物理内存的地址空间时,有操作系统将缺失的页装入物理内存,并重新运行
分页 分页访问过程:
CPU中包含
MMU内存管理单元,用于管理虚拟地址空间到物理内存地址的映射.假设物理内存地址大小为32k,每4k为一个页框.虚拟地址空间分页,每个页面大小等于一个页框当程序想要访问一个虚拟地址x,指令将x送到MMU,MMU根据x的虚拟地址,判断其对应的页面是否在物理内存中:若在,MMU将x转化为物理内存地址y若不在,则进行缺页中断,操作系统在物理内存中找到一个使用较少的页面回收掉,将需要访问的页面读到被回收的页面处,再将x转化为物理内存地址访问
这个链接很好的解释了分段:分段和分页的联系与区别
程序运行前先分段,段中再分页。页是为了内存管理。
分段和分页的区别:
(1)页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.
(2)页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.
(3)分页的作业地址空间是一维的.分段的地址空间是二维的.