操作系统概念 -第七版-重要概念的理解-(41-55)

41.在对临界区的操作时会借助一个同步工具--锁,同时操作系统必须提供一套原子级别的指令用于对锁的操作,保证在加锁和解锁的时候不会被CPU中断。


42.管程是有一种特殊的实体,特殊点:所有操作方法都是同步的,即一个方法只能被一个进程所执行。


43.CPU所有操作的存储有寄存器(只需要一个CPU周期),和cache高速缓存,内存。


44.任何程序的内存访问有基地址寄存器和界地址寄存器来决定。


45.当CPU访问内存的时候,该内存的地址需要被多个“地址比较器”拦截比对,是否越界,这个方法是用来保护内存不被其他进程恶意修改用的。


46.硬盘上有个进程“输入队列”,里面装载着等待调入内存以便执行的进程(注意,这里只是等待调入,而不是调进来后就必须马上执行),编写好的程序需要经过“编译”--》“链接”---》加载----》执行


47.刚刚编写好的代码的变量地址和指令地址都只是一个符号,并没有特使真正内存中的地址,只有通过“地址绑定”映射成真正的绝对地址,这个“地址绑定”可以发生在编译过程,加载过程,运行时。


48.如果在编译时绑定,那么生成的叫绝对代码,如果不是在编译时绑定,那么编译时生成的叫可重定位代码。


49.通用计算机基本都是在运行时才会进行地址绑定。


50.程序访问内存会经过“内存管理单元”,内存管理单元有个“重定位寄存器”用来将程序想要访问的逻辑地址转化为实际上内存设备上的物理地址。


51.当程序本身比较大(内存不够),可以只加载部分需要的子程序到内存去执行,而不需要的暂时留在硬盘,直到需要用到硬盘上的子程序才去加载并执行,这种技术叫“动态加载技术”,这个技术实现完全可以由用户程序自己实现,操作系统不需要提供技术支持,当然也有部分操作系统提供动态加载库方便用户使用。这里要强调,“动态加载”是一种延迟加载,意思是说,程序本身是一个存放在 硬盘上的完整二进制文件,只是切成多个部分加载。


52.而动态链接技术则是把链接延迟到执行来做,相当于程序存放在硬盘上不是完整的二进制文件,而是分成很多块的二进制文件,在执行的时候,才去加载并链接需要的二进制块(相当于这时候的编写程序流程:编译---》加载---》链接---》执行)。


53.动态链接技术节约了硬盘空间,也节约了内存空间,所有进程都共用一个子程序二进制副本,如果该副本不存在,就去硬盘加载,如果已经有副本存在内存,则复制一块过来并链接起来执行。这些子程序被称为“共享库”。


54.动态链接和动态加载不同,动态链接需要操作系统的支持,因为内存是受到操作系统保护的,在链接程序需要操作系统才有权利(链接系统需要进行内存检测)。


55.内存不够用的时候,可以采用虚拟内存的技术,在硬盘上建立交换区,将内存中的程序交换出去。这个交换区不属于文件系统,访问速度相对于文件访问要快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值