操作系统笔记整理一

前言

     最近在回顾操作系统的知识,故综合整理下知识笔记。我看的是清华大学的OS课程在B站上有,陈渝老师讲的非常不错,链接在https://www.bilibili.com/video/BV1js411b7vg?p=98。笔记参考:https://www.cnblogs.com/Amyheartxy/p/9262165.html。     学习操作系统,基本是分为OS基础知识概念了解,然后按照内存管理,进程管理,I/O管理,文件管理这些顺序下来如图1-1所示,这些管理从宏观上看其实都是对空间、时间资源分配的管理,主要的管理算法也是大致相同的几种,比如FIFO,LRU等。

第一章、操作系统介绍(OS概念,启动过程,特性)

       操作系统定义 是控制和管理计算机系统的硬件和软件资源,合理的组织计算机工作流程以及方便用户使用,是一种系统软件,理解清楚OS就是一个大型程序,OS作用就是将CPU抽象成进程,磁盘抽象成文件,内存抽象成地址空间。经过操作系统抽象之后,将这三者提供给应用程序使用。OS相当于是用户(电脑使用者、应用程序)和电脑硬件中间的一层,面向用户的接口就是称之为Shell,而面向硬件部分的就是内核kernel如图1-2。

       此外要了解OS是如何启动的,电脑启动后,先运行BIOS,然后BIOS加载bootloader,bootloader再加载OS,图中就是内存空间中的变化,可以看到先有bootloader后有OS。DISK:硬盘。(硬盘中存放着OS和bootloader),一般bootloader放在硬盘的第一个扇区,方便BIOS寻找。BIOS:基本I/O处理系统,一般都是主机出场自带,在主机主板的一个闪存中。

下面是这章主要知识点记录:

现代操作系统主要特征

1 )并发性

单处理机、多道程序 处理时,宏观上并发,微观上 交替执行。并发指的是进程,操作系统是一个并发系统。

2 )共享性

多个进程共享有限的计算机系统资源,系统合理分配,资源在一个时间段内 交替被多个进程所用。

3 )虚拟性

一个 物理实体映射为若干个 对应的逻辑实体(分时或分空间)。虚拟是操作系统 管理 系统资源的 重要手段,可提高资源利用率。

4 )异步性

异步性也称不确定性,指进程的执行顺序和执行时间及执行 结果的不确定性:A程序执行结果不确定,不可再现  B多道程序设计环境下, 程序按异步方式运行。

操作系统主要功能:

1 )处理机管理:

2 )存储管理

3 )设备管理

4 )信息管理

5 )用户接口

 

                                                                                         图1-1

                        

                                                                             图1-2

第二章、内存管理(内存分配方式、虚拟内存、页面置换算法)

      内存管理其实就是对应我们实际用电脑中的内存,我们执行的各种程序(动态应该说是进程)都在内存上运行,而OS就是来管理对这些进程的内存分配。内存管理分为连续内存管理和非连续内存管理。

连续内存分配:优点分配管理简单开销小,缺点内存利用率低,有外碎片、内碎片的问题。

非连续内存分配:更好的内存利用和管理,允许共享代码与数据,支持动态加载和动态链接。缺点,开销大。

      本章核心问题就是建立逻辑地址映射到物理地址的方法。*例子:一个C语言程序的逻辑地址生成过程,C文件转换成汇编,然后成机器码。其过程中的逻辑地址空间不断在变化。最终生成的机器码,编译器会根据代码符号生成对应的逻辑地址,然后放到内存中去运行,但此时图中程序看到的还是逻辑地址空间。两者是映射关系,逻辑地址映射到物理地址。逻辑地址转换到物理地址是通过CPU中的MMU,内存管理单元会根据映射表(页表)去查找相应的物理地址。

      页表的概念很重要,页表是由操作系统完成的,前面三位标志位,后面几位是对应帧号。页表功能就是完成逻辑地址到物理地址的映射,页式管理为了减少碎片化,页式管理页内连续但是页与页不连续。当逻辑地址空间很大的时候,页表的空间也相应增大了很多,这时候便可以利用多级页表、反向页表等方式来减少开销。

      虚拟内存计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间)。而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换虚拟内存技术是完成了两件事,1.通过逻辑地址映射物理地址(通过页表转换,内存大时会用到多级页表)具体如图2-1. 2.用到了扩容技术,将部分数据暂时存放到外存上(一般是硬盘),当需要时再读取到内存上。

       扩容技术包括:

      1.覆盖技术  首先按照程序的逻辑结构,划分为若干个功能相对独立的模块,程序的必要部分放入内存,剩余程序分时占用剩下内存,剩余程序不在内存时,存入外存。即一个程序的切换存放。

       2.交换技术  一个程序已经完全可以在内存中运行,但多个程序还是不太行,故提出了交换技术,相对于覆盖技术是程序的一部分导入导出变成了一整个程序的导入导出。这个过程具体实现还是较为复杂,涉及到性能各种问题,整个过程是由操作系统来完成的。

      3.虚拟技术:虚拟技术结合以上两种技术,即可以像覆盖技术对一个程序分模块导入导出。也可以像交换技术把整个程序导入导出(在内存和外存中切换,一般外存就是硬盘)。执行程序首先还是去访问内存,若内存页中无该数据,即产生缺页中断,然后去外存中读数据并置换到内存。所以涉及到程序的局部性,程序内存空间上局部性好,就会减少上述现象,减少时间开销。

                                                                                            图2-1

       

      访问虚拟内存,就是两种情况,第一种内存页中有,第二种是缺页,缺页即缺页中断处理去外存中读取数据到内存来,发生页面置换过程。 这部分最后的主要内容就是讲页面置换算法,页面置换算法是发生缺页时候,选择内存中哪个物理页面被置换掉的策略算法。

1.OPT最优页面置换算法,当缺页发生时,对于保存在内存中的每个逻辑页面,计算它下次访问时间,选择等待时间最长的那个并置换。这是一种理想情况,因为OS无法知道每个页面要等待多久被访问。

 2.FIFO(先进先出算法),把内存驻留时间最久的页面给置换掉。性能较差,被置换的页面可能是经常被访问的页面。

3.LRU最近最久未使用算法,与OPT近似但它是选择最久未使用的那个页面置换,注意FIFO是选择最早用到的页面,两者不同。

4.CLOCK时钟页面置换算法,与LRU近似,对FIFO的一种改进,具体如图2-4.

5.LFU最不常用算法,选择访问次数最少的那个页面被置换掉,注意与LRU不同,这个是讲究使用频率而不是时间顺序。

    

                                                                                          图2-2

                                                                          图2-3

                                                                           图2-4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值