首页 > 代码库 > 操作系统学习笔记

操作系统学习笔记

一、操作系统引论

1、操作系统作用

          1)为用户与计算机硬件系统之间提供接口。2)管理计算机系统资源;3)对计算机资源进行抽象。

2、操作系统发展:

          1)无操作系统的计算机系统:用户直接使用操作系统。

          2)单道批处理系统:将作业输入到磁带上。每次调用一道作业进入内存;

          3)多道批处理系统:将作业输入到磁带上,每次调用几道作业同一时候进入内存;特点:提高了CPU、内存、I/O设备的利用率,添加系统的吞吐量。

          4)分时系统:按时间片,调入内存中的作业轮流运行;特点:人机交互,多用户使用

          5)实时系统

3、微机的发展

          1)单用户单任务操作系统:仅仅同意一个用户上机。且仅仅同意用户程序作为一个任务执行,MS_DOS

          2)单用户多任务操作系统:MS_WINDOWS

          3)多用户多任务操作系统:能够同一时候同意多个用户使用,Unix。Linux

4、操作系统特性

          1)并发性:进程与线程是并发的基础。进程:资源分配的基本单位。线程:独立执行和调度的基本单位。

          2)共享性:系统中的资源能够供多个应用程序共同使用。

          3)虚拟技术:包含时分利用(虚拟处理器、虚拟设备)和空分复用(虚拟磁盘、虚拟内存)。

          4)异步性:进程仅仅能在获得资源后才干运行,在获取到指定资源之前处于等待状态。

5、操作系统主要功能:CPU管理、内存管理、设备管理、文件管理



二、进程管理

1、进程三种状态

        1)就绪状态:等待分配CPU開始运行;

        2)运行状态

        3)堵塞状态:因为I/O或资源请求,临时放弃处理机;

2、进程控制模块(PCB)

        1)PCB是进程存在的唯一标志;

        2)PCB模块包括的信息:进程标识符、处理机状态、进程调度信息、进程控制信息;

3、原子操作:要么不做、要么做完。系统对进程的控制要採用原子操作。

4、进程的创建

        1)申请空白的PCB。

        2)为新进程分配资源;

        3)初始化PCB;

        4)将新进程插入到就绪队列。

5、进程的删除

         1)依据被终止进程的标志符找到其PCB,从中读取进程状态;

         2)若该进程正在运行,应马上终止该进程的运行。

         3)若该进程还有子进程,还应终止其全部子进程;

         4)归还进程申请的全部资源。要么归还给父进程、要么归还给系统。

         5)移除PCB信息;

6、进程同步主要任务:对多个相关进程在运行次序上进行协调,以使并发运行的多个进程之间能有效地共享资源和相互合作。从而使程序的运行具有可再现性。

7、进程同步机制

        1)信号量:用S记录系统中可供訪问的某一资源。S是一个整型变量,但这一整型量仅仅能由两个原子操作訪问:wait(S)和signal(S)。

              a、整型信号量:但S<=0时,进程会不停測试,直至S>0,占用CPU资源。

              b、记录型信号量:S<=0时,进程自我堵塞,放弃处理机,并将该进程增加至等待链表中;

              c、AND型信号量:当进程须要多个临界区资源时,为防死锁,要么一个都不分配。要么所有分配。

        2)管程(资源管理程序):全部进程訪问临界资源都须要向管程申请,管程来决定该进程是进入临界区还是等待。另外。还须要多个条件变量记录正在调用管程的进程运行情况,如堵塞原因等。

8、进程通信

       1)共享存储器

       2)消息传统系统

       3)管道通信系统

9、线程特性

       1)线程能够理解为轻型进程。其本身拥有较少的资源(TCB、寄存器等),但能够共享进程资源;是独立执行和调度的最小单位。

       2)引入线程后。进程不再是一个可运行的实体。

       3)线程所占资源少、且一个进程中的多个线程具有同样的地址空间,所以线程切换代价比进程切换代价小。

       4)同一个进程中的线程间切换不会引起进程切换。但不同进程间线程的切换会引起进程切换。

10、线程间同步和通信

      1)相互排斥锁;2)条件变量;3)信号量

11 、调度算法

      1)先来先服务调度算法:有利于长作业,不利于短作业

      2)短作业优先调度算法:不利用长作业

      3)优先权调度算法:静态优先权、动态优先权(优先权随时间改变)

      4)时间片轮转调度算法

      5)多级反馈队列调度算法:设置多个就绪队列,为各个队列设置不同的优先级。不同优先级队列相应的时间片不同,优先级越高,时间片越短;新进行内存的进程排在优先级最高的队列,当时间片结束还未运行完成则转入第二队列的队尾;仅仅有当前一优先级队列为空时才干运行下一优先级队列。

12、产生死锁的必要条件

      1)相互排斥使用:对于某一资源。一段时间内仅仅同意一个进程使用。

      2)请求与保持:进程已经保持了至少一个资源,但又提出了新的资源请求;

      3)不剥夺条件:在资源使用结束之间。其它进程不能剥夺该进程的使用权。

      4)环路等待条件:发生死锁时。必定有还有一进程占用着当前进程所须要的资源。而还有一进程又在等待该进程占用的资源;

13、预防死锁:

      1)摒弃“请求与保持”条件:进程必须一次性申请其所需的全部资源;

      2)摒弃“不剥夺条件”:当一进程申请资源失败时应该马上释放其所占用的资源。

      3)摒弃“环路等待”条件:全部进程对资源的请求必须严格依照资源序列递增的次序提出;

14、死锁的检測与解除

      1)解除方法:剥夺资源、撤销进程

三、存储器管理

1、多级存储器

      1)存储层次能够分为三层:寄存器、主存(内存)、辅存(磁盘);

      2)不同层次之间还有对应的快速缓存以减小不同层次间读写速度不匹配程度;简单来说,主存也即寄存器和辅存之间的快速缓存;

      3)不同层次的存储器读写效率不一样,读写速度越快。成本越高。

      4)寄存器、主存、快速缓存等属于操作系统管理的范畴,断电后数据会丢失;而磁盘属于设备管理的范畴。断电后数据不会丢失。

2、程序装入

      1)绝对装入方式:程序的逻辑地址和实际内存地址全然一致,不须要重定位,这样的方式仅仅适合单道批处理系统;

      2)可重定位装入方式:将程序装入内存后,马上又一次计算其绝对地址。

      3)动态执行时装入方式:将程序装入内存后,不马上计算其绝对地址,而是等真正须要该模块时才又一次计算其绝对地址。

3、程序链接方式

      1)静态链接:直接把目标模块及所须要的库链接成为一个总体。链接完毕后不再拆开。

      2)装入时动态链接:在程序装入内存时。边装入边链接。

      3)执行时动态链接:当一个模块须要时才去链接。

4、内存分配方式

      1)连续分配:程序装入到一块连续的内存区域其中

      a、单一连续分配:仅仅适用于单用户单任务操作系统

      b、固定分区分配:把内存区域划分为多个分区,每一个分区装入一个程序;固定分区大小的划分有两种方式:相等、不相等,相等时可能引起内存浪费或部分大型程序无法运行

      c、动态分区分配:建立空暇分区链或空暇分区表。当须要内存时,去链中寻找大小匹配的内存区域。

          分区匹配算法:首次适应算法(第一个块大小能满足的区域)、循环首次适应算法(从上次一次查找的地方開始向后查找,相较于前一种方法,能够使空暇分区更均匀)、最佳适应算法(能满足要求。且是当前最小的空暇分区。导致非常多小的碎片无法再利用)、高速适应算法(建立多个链表。大小相等的空暇分区放置到同一链表其中,须要使用时,直接取出对应链表的第一块分区给程序使用,不进行分割;但会导致分区回收复杂)。

     d、伙伴系统:不管已分配分区还是未分配分区,其大小均是2的k次幂。这样的方法分配和回收时都可能会引起多次分割。

     e、哈希算法:以分区大小作为keyword,使用时取出相应分区的地址;

     f、可重定位分区分配:当分区大小总和大于程序所须要内存时,能够通过“紧凑”的方法将内存进行整理。将分散的区域拼接在一起,其它程序须要重定位。

     g、对换:将内存中临时不能执行的进程或临时不用的程序和数据调出到外存上,以腾出足够的内存空间。

对换的单位能够是:进程、页、段。

     2)离散分配方式

     a、分页式存储:将进程的逻辑地址空间划分成若干大小相等的页面,将内存空间也划分成大小相等的存储块。将进程的页装入到内存空间的存储块其中,并建立页表即页至物理块的映射。

     b、分段式存储:将程序按功能划分为若干大小不同的段,段的存储位置能够不连续;

     c、分页和分段的差别:页是信息的物理单位,页本身没有实际含义。主要是为了提高内存的使用效率,而段是信息的逻辑单位。段有其完整的的信息,主要是为了满足用户须要;页的大小固定且相等,其大小由系统决定。而段的大小并不固定,其大小由用户所编写的程序决定;页的地址空间是一维的。而段的地址空间是二维的;段更适合信息共享。

     d、段页式存储:将每一个段分成若干页,地址结构:段号、段内页号、页内地址

5、虚拟存储器

     当作业非常大或都有大量作业须要执行时,引起内存不足。解决方式:扩展逻辑内存。

     1)基础:

             局部性原理:即在一较短时间内,程序的运行仅仅局限于某个部分;对应地,它所訪问的存储空间也局限于某个区域。

     2)虚拟存储:

            程序执行之前,没有必要将全部模块装入内存,仅将须要的页或段装入内存,其余部分暂留在盘上;当内存不足时,将临时不须要的段或页对换到盘上;相当于扩展内存。

     3)虚拟存储器特征:多次性。一个作业被分成多次调入内存执行。对换性,同意作业在执行时被换出。虚拟性,用户看到的内存容量远大于实际容量。

     4)虚拟存储器实现方法:

      (I)分页存储管理方式

         a、三要素:页表机制、缺页中断机构、地址变换机构

         b、页面置换算法:最佳置换算法(所被淘汰的页面将是以后永不使用的,也许是在最长时间内不再被訪问的页面。该方法无法实现。仅仅能用于评价其它方法)、先进先出页面置换算法(总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰)、近期最久未使用置换算法(选择近期最久未使用的页面进行置换,须要硬件支持)、最少使用置换算法(选择近期时期他用最少的页面作为淘汰页,须要硬件支持)、页面缓冲算法(将要被淘汰的页临时不移出内存,而是放移动到一个链表后部。当达到一定数量后再移出)

        (II)分段存储管理方式

          a、三要素:段表机制、缺段中断机构、地址变换机构


四、设备管理


未完待续...

           

操作系统学习笔记