操作系统课堂笔记

清华大学os网课笔记

操作系统的概述

  • 操作系统是一个控制程序

  • 管理应用程序,

  • 为应用程序提供服务

  • 杀死程序

  • 资源管理:管理外设,分配资源

  • 作为抽象层在物理层之上

  • 作为系统软件为应用软件提供支持

  • 面向应用程序的接口:shell

  • 面向计算机内部的接口:kernal

  • 硬件三大套:cpu 内存 磁盘

  • os kernel的特征:

  • *并发**:一段时间内多个程序同时运行

  • 并行*: 一个时间点内多个程序同时运行(多个cpu)

  • *共享**:同时访问,互斥共享

  • *虚拟**:cpu->进程,磁盘->文件,内存->地址空间。多道文件设计,让用户觉得自己独享整个计算机。

  • *异步**:程序的执行是走走停停的,向前推进的速度不可预知。到那时只要环境相同,运行的结果也要相同。

操作系统历史

  • 移动终端上linux应用广泛
  • cpu性能越越强
  • 多道程序设计
  • 分时调度:在于时钟会定时产生中断,每千分之一秒
  • 未来的发展趋势:多核多处理,分布式操作系统

操作系统结构

  • 微内核设计:尽然把内核服务放到用户空间。中断处理,消息传递 放到内核中。
    文件系统,网络协议放到用户空间,以服务的方式松耦合存在,而非函数调用的方式。
    代价是性能。

操作系统启动

  • bios->bootloader->os
  • disk:存放os
  • bios:基本io处理系统,开机检验外设
  • bootloader:加载os,让os从硬盘到内存中去
  • bios从一个特定的地址执行,cs:ip(cs:段寄存器,ip:指令寄存器)
  • bootloader一般放在disk的第一个主引导扇区(512字节)

操作系统中的事件:中断,异常和系统调用

  • 系统调用异步或同步,来源于应用程序,应用程序主动向os发出服务请求
  • 异常同步,来源于不良的应用程序,非法指令(内存出错)
  • 中断异步,来源于外设(鼠标的移动,键盘的输入),不同的硬件设备的计时器和网络的中断
  • 应用程序不能直接访问外设。内核是被信任的,内核统一的向程序暴露接口。

计算机体系结构/内存分层

  • 抽象:逻辑地址空间
  • 保护:独立地址空间
  • 共享:访问相同内容
  • 虚拟化:更多的地址空间
  • 主存:物理内存,接电从硬盘读数据到主存

地址空间

  • 物理地址空间—内存条代表的贮存,硬盘代表的磁盘
  • 逻辑地址空间—一个运行的程序所拥有的内存范围 (0,max)
  • cpu—mmu查找逻辑地址对应的物理地址,如果没找到就到内存中去找
    操作系统需要建立逻辑地址和物理地址的关系。
  • 操作系统的地址安全检测

连续内存分配

  • 空闲内存不能被利用
  • 外部碎片
  • 内部碎片

分区的动态分配

  • 首次适配(first fit):找到第一个满足 程序需求的连续空闲块
  • 优点*:简单
  • 缺点*:容易产生不合适的空闲块
  • 最佳匹配(best fit):使用最小的满足要求的空闲块
  • 优点*:简单
  • 缺点*:容易产生不合适的空闲块
  • 最差分配原则(worst fit):使用最大的满足要求的空闲快
  • *优点**:分配中等尺寸效果最好
  • *劣势**:

连续的内存分配算法

  • 压缩式
  • 交换式

非连续内存分配:分段

  • 难点在于逻辑地址到物理地址的映射
  • 操作系统维护段表

非连续内存的分配:分页

  • 划分物理内存大小—帧frame
    • 一个物理地址是一个二元数组(f,o)
    • f—帧号(F位,一共有2的F次方个帧)
    • o—帧内偏移位(s位,每帧有s的s次方字节)
    • 物理地址 2^s*f + o
  • 划分逻辑地址—页page
    • 一个程序的逻辑地址空间被划分为大小相等的页
    • 页内偏移的大小
  • 页表
    • 页表
  • 建立方案 转换逻辑地址为物理地址page to frames
  • cpu根据page number和 offeset在page table内寻址,之后根据找到的frame number 和offset去物理地址寻址
  • 快表TLB使用关联内存实现
  • 页表太大的问题:使用多级页表
    • 多级页表的最后一层才是真正的寻找物理地址
  • 反向页表
    *基于hash的方向页表:

虚拟内存

  • 覆盖技术:使用分时的方式用同一块内存空间,需要确定各个模块的覆盖关系。
  • 交换技术:操作系统管理程序,swap out吧一个进程的整个地址空间的内容包窜到外存中,
    而将外村中的某个进程的地址空间读入到内存中(swap in)。
    • 交换时机的确定:只有当内存空间不够或者有不够的危险时换出
    • 交换区的大小
    • 程序换入的重定位:换入换出在物理地址上不用在同一个地方,只需要更改页表,使得逻辑地址映射到同一个物理地址。

      虚存技术

  • 不是替换整个进程的内存空间,而是部分替换。