os

内存

3.1、固定分区、动态分区、分段式存储管理和分页式存储管理的区别
    内存分配分为连续分配和非连续分配管理两种。

3.1.1、内存连续分配
1、单一连续分配:分为系统区和用户区,系统区供给操作系统使用,用户区供给用户使用,内存中永远只有一道程序。

2、固定分区分配:最简单的一种多道程序管理方式,它将用户内存空间划分为若干个固定大小的区域,每个分区只装入一道作业。【方法一:分区大小相等;方法二:分区大小不等,划分为含有多个较小的分区,适量的中等分区及少量的大分区】

3、动态分区分配:又称为可变分区分配,是一种动态划分内存的方法。这种分区方法不预先将内存划分,而是在进程装入内存时,根据进程的大小动态的建立分区,并使分区的大小正好适合进程的需要。因此系统中分区的大小和数目是可变的。

3.1.2、非连续分配
1、分页式存储管理:分页存储管理是将一个进程的地址(逻辑地址空间)空间划分成若干个大小相等的区域,称为页,相应地,将内存空间划分成与页相同大小(为了保证页内偏移一致)的若干个物理块,称为块或页框(页架)。在为进程分配内存时,将进程中的若干页分别装入多个不相邻接的块中。【只需给出一个地址,所以是一维】

分页系统中,允许将进程的每一页离散地存储在内存的任一物理块中,为了能在内存中找到每个页面对应的物理块,系统为每个进程建立一张页面映射表,简称页表。页表的作用是实现从页号到物理块号的地址映射。【若给定一个逻辑地址为 A,页面大小为 L,则页号 P = INT[A / L],页内地址 W=A MOD L】

分页系统中,CPU每次要存取一个数据,都要两次访问内存(访问页表、访问实际物理地址)。为提高地址变换速度,增设一个具有并行查询能力的特殊高速缓冲存储器,称为“联想存储器”或“快表”,存放当前访问的页表项。

2、分段式存储管理:在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段是一组完整的逻辑信息,如有主程序段、子程序段、数据段及堆栈段等,每个段都有自己的名字,都是从零开始编址的一段连续的地址空间,各段长度是不等的。【因为每段的长度是不确定的,所以不能只给一个逻辑地址通过整数除法得到段号,求余得出段内偏移,所以一定要显式给出(段号,段内偏移),因此分段管理的地址空间是二维的】

3.1.3、两者的区别
1.分页式管理方式是从计算机的角度考虑设计的,以提高内存的利用率,提升计算机性能,且分页通过硬件机制实现,对用户完全透明;

2.分段式管理方式的提出则是考虑了用户和程序员,以满足方便编程、信息保护和共享、动态增长及动态链接等多方面的需要。

3.分页式存储管理的作业地址空间是一维的,分段式的存储管理的作业管理地址空间是二维的。【页式系统中,逻辑地址的页号和页内偏移量对用户是透明的【用户提供一个逻辑地址即可】,但在段氏系统中,段号和段内偏移量必须由用户显式提供(在高级程序设计语言中,这个工作由编译程序完成)】

页面置换算法有哪些?

最佳置换算法、先进先出置换算法、最近最久为使用置换算法 LRU、时钟置换算法、最少使用置换算法

1、最佳置换算法(Optimal):即选择那些永不使用的,或者是在最长时间内不再被访问的页面置换出去。(它是一种理想化的算法,性能最好,但在实际上难于实现);

2、先进先出置换算法 FIFO:总是淘汰最先进入内存的页面;

3、最近最久未使用置换算法 LRU(Least Recently Used):即选择最近最久未使用的页面予以淘汰。【系统在每个页面设置一个访问字段,用以记录这个页面自上次被访问以来所经历的时间 T,当要淘汰一个页面时,选择 T 最大的页面。】

4、时钟(Clock)置换算法:也叫最近未用算法 NRU(Not RecentlyUsed)。该算法为每个页面设置一位访问位,将内存中的所有页面都通过链接指针链成一个循环队列。当某页被访问时,其访问位置“1”。在选择一页淘汰时,就检查其访问位,如果是“0”,就选择该页换出;若为“1”,则重新置为“0”,暂不换出该页,在循环队列中检查下一个页面,直到访问位为“0”的页面为止。由于该算法只有一位访问位,只能用它表示该页是否已经使用过,而置换时是将未使用过的页面换出去,所以把该算法称为最近未用算法。

5、最少使用置换算法LFU:该算法选择最近时期使用最少的页面作为淘汰页。

逻辑地址、物理地址、虚拟内存、操作系统的内容

1、物理地址:它是地址转换的最终地址,进程在运行时执行指令和访问数据最后都要通过物理地址从主存中存取,是内存单元真正的地址。

2、逻辑地址:是指从应用程序角度看到的内存地址,又叫相对地址。编译后,每个目标模块都是从 0 号单元开始编址,称为该目标模块的相对地址或逻辑地址。不同进程可以有相同的逻辑地址,因为这些相同的逻辑地址可以映射到主存的不同位置。用户和程序员只需要知道逻辑地址。

3、虚拟内存:虚拟内存是一些系统页文件,存放在磁盘上,每个系统页文件大小为 4K,物理内存也被分页,每个页大小也为 4K,这样虚拟页文件和物理内存页就可以对应,实际上虚拟内存就是用于物理内存的临时存放的磁盘空间。页文件就是内存页,物理内存中每页叫物理页,磁盘上的页文件叫虚拟页,物理页+虚拟页就是系统所有使用的页文件的总和。

虚拟内存技术:允许将一个作业分多次调入内存。可以用分页式、分段式、段页式存储管理来实现。

基于局部性原理,在程序装入时,可以将程序的一部分装入内存,而其余部分留在外存,就可以启动程序执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统将所需要的部分调入内存,然后继续执行程序。另一方面,操作系统将内存中暂时不使用的内容换出到外存上,从而腾出空间放入将要调入内存的信息。这样,系统就好像为用户提供了一个比实际内存大得多的存储器,称为虚拟存储器。

4、操作系统主要包括:进程和线程的管理、存储管理、设备管理、文件管理

局部性原理

时间局部性: 如果程序中某条指令一旦执行,不久后该指令可能再次执行;如果某数据被访问过,不久后该数据可能再次被访问。【原因:因为在程序中存在着大量的循环操作】

空间局部性: 一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也将被访问。【原因:因为指令通常是顺序存放、顺序执行的;数据也一般是以向量、数组、表等形式簇聚存储的】

中断、系统调用、库函数

1、中断
    就是指在计算机执行程序的过程中,由于出现了某些特殊事情,使得 CPU 暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类:

1.内部异常中断:由计算机硬件异常或故障引起的中断;

2.软中断:由程序中执行了引起中断的指令而造成的中断;

3.外部中断:由外部设备请求引起的中断;

2、系统调用
    系统调用是通向操作系统本身的接口,是面向底层硬件的。通过系统调用,可以使得用户态运行的进程与硬件设备(如CPU、磁盘、打印机等)进行交互。

用户进程需要发生系统调用时,内核将调用内核相关函数来实现(如sys_read(),sys_write(),sys_fork())。用户程序不能直接调用这些函数,这些函数运行在内核态,CPU 通过软中断切换到内核态开始执行内核系统调用函数。

系统调用和中断的关系就在于,当进程发出系统调用申请的时候,会产生一个软中断。产生这个软中断以后,系统会去对这个软中断进行处理,这个时候进程就处于核心态了。

3、库函数
    库函数是把函数放到库里,供别人使用的一种方式。【系统调用是为了方便使用操作系统的接口,而库函数则是为了人们编程的方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值