学习笔记 --《现代操作系统》

现代操作系统

1. 概述

  • 计算机有两种运行模式:内核态用户态.操作系统,它运行在内核态中。操作系统具有硬件的访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在用户态下。
    操作系统位置
  • 计算机包含运算器、控制器、存储器、输入设备、输出设备五个部分,是冯罗伊曼结构。各个部分通过总线相连。(CPU=运算器+控制器)
    • 运算器最主要的功能是对数据和信息进行加工和运算。
    • 控制器主要起到了控制命令执行的作用,完成协调和指挥整个计算机系统的操作。控制器是由程序计数器、指令寄存器、解码译码器等构成。
      体系结构图
  • 总线(Buses),在整个系统中运行的是称为总线的电气管道的集合,这些总线在组件之间来回传输字节信息。通常总线被设计成传送定长的字节块(64或32位)。
    总线示意图
    intel家族产品图

2.进程与线程

  • 进程(process)是程序的一次执行,是具有独立功能的程序在一个数据集合上的运行过程,系统资源调配的独立单位。
    • 严格意义来说,在某一个瞬间,一个CPU 只能运行一个进程
    • 进程是某一类特定活动的总和,它有程序、输入输出以及状态。
  • 进程的创建
    • 系统初始化(init):启动操作系统时,通常会创建若干个进程。
    • 正在运行的程序执行了创建进程的系统调用(比如 fork)。
    • 用户请求创建一个新进程。
    • 一个批处理作业的初始化。
  • 进程的终止
    • 正常退出(自愿的) : 多数进程是由于完成了工作而终止。这个调用在 UNIX 中是 exit ,在 Windows 中是 ExitProcess。
    • 错误退出(自愿的):比如执行一条不存在的命令,于是编译器就会提醒并退出。
    • 严重错误(非自愿的)
    • 被其他进程杀死(非自愿的) : 某个进程执行系统调用告诉操作系统杀死某个进程。在 UNIX 中,这个系统调用是 kill。
  • 进程状态
    • 运行态,运行态指的就是进程实际占用 CPU 时间片运行时
    • 就绪态,就绪态指的是可运行,但因为其他进程正在运行而处于就绪状态
    • 阻塞态,除非某种外部事件发生,否则进程不能运行
      进程状态
  • 进程的实现,
    • 操作系统为了执行进程间的切换,会维护着一张表,这张表就是进程表(process table)。
    • 该表包含了进程状态的以下重要信息。第一列内容与进程管理有关,第二列内容与存储管理有关,第三列内容与文件管理有关。
      进程表项
    • 一个进程在执行过程中可能被中断数千次,但关键每次中断后,被中断的进程都返回到与中断发生前完全相同的状态。
  • 线程,cpu是调度和分派的基本单位,是程序执行流的最小单位。
    • 多线程之间会共享同一块地址空间和所有可用数据的能力,这是进程所不具备的。
    • 线程要比进程更轻量级,由于线程更轻,所以它比进程更容易创建,也更容易撤销。
    • 线程必须在某个进程中执行。进程用于把资源集中到一起,而线程是cpu上被调度执行的实体。
      线程
    • 线程之间的状态转换和进程之间的状态转换是一样的。
  • 线程实现分为三种类型
    • 在用户空间中实现线程,内核对线程一无所知,它不知道线程的存在。
    • 在内核空间中实现线程,通过系统调用实现。
    • 在用户和内核空间中混合实现线程,采用了一种内核级线程的方式实现。
  • 进程间通信(Inter Process Communication, IPC)
    IPC
  • 当两个或两个以上的进程/线程处于就绪状态时需要采用一定的调度算法。因为不同的应用程序和不同的操作系统有不同的目标。也就是说,在不同的系统中,调度程序的优化也是不同的
    • 批处理(Batch) : 商业领域
      • 先来先服务、最短作业优先
    • 交互式(Interactive): 交互式用户环境
      • 轮询调度、优先级调度、多级队列、最短进程优先、保证调度、彩票调度、公平分享调度
    • 实时(Real time)分为硬实时(hard real time)与软实时(soft real time)

3.存储管理

  • 要使多个应用程序同时运行在内存中,必须要解决两个问题:保护重定位
    • 可以使用动态重定位技术或者基址寄存器和变址寄存器解决
      • 基址寄存器:存储数据内存的起始位置。变址寄存器:存储应用程序的长度。
      • 每当进程引用内存以获取指令或读取、写入数据时,CPU 都会自动将基址值添加到进程生成的地址中,然后再将其发送到内存总线上。同时,它检查程序提供的地址是否大于或等于变址寄存器 中的值。如果程序提供的地址要超过变址寄存器的范围,那么会产生错误并中止访问
  • 交换技术,用于解决内存不足。即把一个进程完整的调入内存,然后再内存中运行一段时间,再把它放回磁盘。
    交换技术
  • 虚拟内存,基本思想是每个程序都有自己的地址空间,这个地址空间被划分为多个称为页面(page) 的块。每一页都是连续的地址范围。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,硬件会立刻执行必要的映射。当程序引用到一部分不在物理内存中的地址空间时,由操作系统负责将缺失的部分装入物理内存并重新执行失败的指令。
    • 大部分使用虚拟内存的系统中都会使用一种分页的技术。
    • 程序生成的地址被称为虚拟地址(virtual addresses) 并形成虚拟地址空间(virtual address space){包含虚拟页号(高位部分)和偏移量(低位)},在没有虚拟内存的计算机上,系统直接将虚拟地址送到内存中线上,读写操作都使用同样地址的物理内存。在使用虚拟内存时,虚拟地址不会直接发送到内存总线上。相反,会使用MMU(Memory Management Unit)内存管理单元把虚拟地址映射为物理内存地址,像下图这样。
      MMU
      MMU pic
    • 页表给出虚拟地址与物理内存地址之间的映射关系。
      • 虚拟页号可作为页表的索引用来找到虚拟页中的内容。
      • 由页表项可以找到页框号(如果有的话)。
      • 然后把页框号拼接到偏移量的高位端,以替换掉虚拟页号,形成物理地址。
      • 页表的目的是把虚拟页映射到页框中。从数学上说,页表是一个函数,它的参数是虚拟页号,结果是物理页框号
        page
    • 页表项的结构
      页表项
  • 页面置换算法,当发生缺页中断(内存不足)时,操作系统必须在内存中选择一个页面将其换出内存,以便为即将调用的页面腾出空间。每次选用不常用的页面会提高性能
    • 最优页面置换算法
    • 最近未使用页面置换算法
    • 先进先出页面置换算法
    • 第二次机会页面置换算法
    • 时钟页面置换算法
    • 最近最少使用页面置换算法
  • 最好的页面置换算法是老化算法和WSClock算法。他们分别是基于 LRU 和工作集算法。他们都具有良好的性能并且能够被有效的实现
  • 空闲内存管理
    • 位图(bitmap),位图的大小取决于内存和分配单元的大小
      内存监控
    • 空闲列表(free lists),维护一个记录已分配内存段和空闲内存段的链表。
      • 内存使用算法有首次适配(first fit)、下次适配(next fit)、最佳适配(best fit)算法等。

4.文件系统

  • 文件系统,便于OS存储和管理文件信息,方便用户对文件的存取、共享和保护等,有效提高系统资源的利用率。
  • 文件是一种抽象机制,它提供了一种方式用来存储信息以及在后面进行读取。
  • 在创建一个文件后,它会给文件一个命名。当进程终止时,文件会继续存在,并且其他进程可以使用名称访问该文件。
  • 内存与磁盘之间的数据交换(即读/写操作、磁盘I/O)都是以为单位进行的。即每次读块,或每次写出一块。类似于内存分页。磁盘块是文件系统读写数据的最小单位
  • 文件的物理实现
    • 连续分配,实现简单、读取性能强,但会导致磁盘碎片化。
      连续分配
    • 链表分配,每个文件构造磁盘块链表,每个文件都是磁盘块的链接列表。可以充分利用每个磁盘块,但随机访问困难,指针也会占用一些字节。
      链表分配
    • 索引组织,在内存中使用表进行链表分配。取出每个磁盘块的指针字,把它们放在内存的一个表中,就可以解决上述链表的两个不足之处。缺点是需要内存存储文件分配表,不适合大磁盘。
      文件实现
    • i节点
  • 磁盘块与页的大小一般相等。

参考博客:
https://www.cnblogs.com/cxuanBlog/p/13297199.html
https://www.cnblogs.com/geaozhang/p/7041112.html

本文作者:oniisan

本文链接:https://www.cnblogs.com/oniisan/p/modernOS.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Oniisan_Rui  阅读(351)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起