《计算机操作系统》读书笔记

458 阅读5分钟

计算机操作系统

操作系统

  • 并发是指一段时间内有多个事件发生,并行是指某个时刻有多个事件发生,因此,并行需要多处理机
  • 引入虚拟存储技术,使得一个应用程序能在远小于它的内存空间中运行
  • 为了确保进程只在自己的内存空间内运行,通常会设置两个界限寄存器,存放上界和下界。每条指令访问时都由硬件检查是否越界。
  • 编译后的应用程序的地址都是从“0”开始的,存储器管理将相对地址映射为内存里的物理地址,通常有硬件支持
  • 内存扩充功能允许在装入一部分用户程序和数据的情况下能启动程序,也允许内存空间不足时将暂时不用的部分调至盘上
  • 微内核的结构,将常用模块剥离出来,与服务端采用消息传递通信机制进行通信。降低了效率,但便于构建分布式网络系统

进程

  • 进程是由一组机器指令、数据和堆栈等组成的,一个进程需要CPU、存储及I/O设备等。引入进程后使得程序可以并发执行。(多处理机能并行?)
  • 进程是可拥有资源和可调度和分派的基本单位
  • 进程间通信。UNIX首创pipe,外存通信,数据量大,速度慢。消息传递系统,速度快

线程

  • 线程作为独立运行和独立调度的基本单位。引入线程是为了减小进程调度付出的开销
  • 线程基本不拥有系统资源,可以访问进程的资源
  • 在多线程OS中,进程不再是一个可执行的实体,但仍具有与执行相关的状态,且与状态管理相关的操作也会对其线程起作用
  • 内核支持线程,依靠系统内核对线程进行控制。优点是系统统一管理所有线程,缺点是用户态和内核态的频繁切换开销会很大
  • 用户级线程,依靠用户态对线程控制。优点是节省了模式切换的开销、进程专用调度算法、跨OS平台,缺点是系统调用阻塞进程时,该进程的所有线程被阻塞,内核每次分配一个CPU给进程,只有一个线程能执行

存储器管理

  • 存储层次三级:CPU寄存器、主存(高速缓存、磁盘缓存)、辅存(磁盘、可移动存储介质)
  • 用户源程序由编译程序编译成若干个目标模块
  • 程序的链接
  • 静态链接:链接程序将程序的目标模块链接成装配模块
  • 装入时动态链接:边装入边链接
  • 运行时动态链接:程序执行需要时链接
  • 程序的装入
    • 绝对装入方式:由程序自定义内存的绝对地址
    • 可重定位装入方式:由装入程序将相对地址加上在内存中的起始地址得到绝对地址
    • 动态运行时装入方式:将地址装换推迟到程序真正要执行时,需要重定位寄存器的支持
  • 内存的连续分配
    • 单一连续分配:分为系统区和用户区,只能用于单用户、单任务的OS
    • 固定分区分配:一种是所有分区大小相等,一种是大量小分区、适量中分区、少量大分区,根据程序大小分配相应的分区。有多少分区就允许多少并发
    • 动态分区分配;根据算法动态分配和回收内存
    • 动态重定位分区分配:连续分配中,要把零散的小分区利用起来,需要对程序进行移动,移动后的程序和数据的地址需要进行重定位(需要重定位寄存器的支持)
  • 内存的离散分配
    • 分页存储管理,将程序分配到不连续的内存中,以页为基本单位,大小固定,只是单纯的数据信息
    • 分段存储管理,将程序分配到不连续的内存中,以段为基本单位,大小不固定,包含逻辑信息
    • 虚拟存储器,具有(页/段)请求调入和置换功能,逻辑上对内存容量进行扩充。需要相应的硬件和软件支持。(这就能解释iPhone一直RAM小但是完美实现多任务)

名词解释

  • PCB:Process Control Block,进程控制块。常驻内存,系统通过它进行进程调度
  • Primitive:原语。由若干条指令组成,是“原子操作”,常驻内存,执行中不允许被打断
  • TCB:Thread Control Block,线程控制块。保留线程调度所需的少量信息
  • Swapping:对换。把内存中暂时不能运行或不用的程序和数据调出到外存上
  • LAN:Local Area Network,局域网
  • WAN:Wide Area Network,广域网

PS:只记录了感兴趣的部分

建了个微信圈子,欢迎对产品有实践兴趣的同学加入,一起来玩呀

用技术来做个小产品吧

写于2020-03-12

本篇文章由一文多发平台ArtiPub自动发布