操作系统之 虚拟存储页面置换算法 发表于 2018-11-23 | 更新于 2024-01-20 | 分类于 操作系统 | 评论数: | 阅读次数: 页面置换算法概念 功能 当出现缺页异常时 需调入新页面且内存已满 置换算法选择被置换的物理页面 设计目标 尽可能地减少页面调入调出次数 把未来不再访问 或 短期内不访问的页面调出 页面锁定 (Frame locking) 描述必须常驻内存的逻辑页面 操作系统的关键代码 要求响应速度的代码和数据 页表中的锁定标志位 (Lock bit) 阅读全文 »
操作系统之 虚拟存储概念 发表于 2018-11-21 | 更新于 2024-01-20 | 分类于 操作系统 | 评论数: | 阅读次数: 为什么需要虚拟存储?计算机系统常出现内存空间不够用 如何解决内存空间不够用? 覆盖(Overlay) 应用程序 手动 把需要的指令和数据保存在内存中 (将代码分成若干模块 彼此无调用关系的 将其附庸到一块区域 需要用户自己来确定何时将其模块加入程序 开发难度高) 交换(对换 Swapping) 操作系统 自动 把暂时不能执行的程序保存到外存中 (因为对换的是一个进程的整个地址空间 所以开销会比较大) 虚拟存储 在有限容量的内存中 以页为单位自动装入更多更大的程序 阅读全文 »
微信摇一摇签到 解决方案 发表于 2018-11-20 | 更新于 2024-01-20 | 分类于 搞东搞西 | 评论数: | 阅读次数: 所在学校在2016年的时候 使用了 微信摇一摇作为签到的系统 摇一摇签到是基于 iBeacon(低功耗蓝牙通信) iBeacon 组成iBeacon 由 UUID Major Minor 组成那么 理论上我们只要获取到了以上信息 就能在任何地方(一般都会进行定位认证 所以任何地方是有条件的)发射出一个教室的信号 进行摇一摇签到 阅读全文 »
操作系统 uCore Lab 2 发表于 2018-11-19 | 更新于 2024-01-20 | 分类于 操作系统 | 评论数: | 阅读次数: x86 特权级 (Privilege Levels) RING 0(内核) RING 1(服务) RING 2(服务) RING 3(应用程序) 当前操作系统 一般只用到了 RING 0 和 RING 3 比如 Linux在访问数据段 页表 进入中断服务例程 (ISRs) CPU 会检查特权级 x86 特权级检查失败会提示 General Protection Fault 一般保护错误 阅读全文 »
操作系统之 物理内存管理 非连续内存分配 发表于 2018-11-10 | 更新于 2024-01-20 | 分类于 操作系统 | 评论数: | 阅读次数: 为什么需要非连续内存分配连续内存分配有缺点 分配给程序的物理内存必须连续 存在外碎片 和 内碎片 内存分配的动态修改困难 (难以动态的增加内存和减少内存) 内存利用率低 之前连续物理内存地址分配 给进程分配内存 必须给其分配连续的物理内存区域 若内存中没有满足需要的内存大小的连续内存区域 分配内存就会失败 非连续内存分配目标提高内存利用效率和管理灵活性 允许程序使用非连续物理内存空间 允许共享代码与数据 (两个进程共用一个函数库的时候) 支持动态加载和动态链接 阅读全文 »
操作系统之 物理内存管理 连续内存分配 发表于 2018-11-07 | 更新于 2024-01-20 | 分类于 操作系统 | 评论数: | 阅读次数: 计算机体系结构计算机体系结构 由 CPU 内存 I/O设备 组成 CPU 组成结构 寄存器 容量小 ALU 控制逻辑 高速缓存 L1 L2 MMU 内存管理单元 阅读全文 »
操作系统 uCore Lab 1 含 Challenge 发表于 2018-11-04 | 更新于 2024-01-20 | 分类于 操作系统 | 评论数: | 阅读次数: 练习1:理解通过make生成执行文件的过程 操作系统镜像文件ucore.img是如何一步一步生成的? 123456$(UCOREIMG): $(kernel) $(bootblock) $(V)dd if=/dev/zero of=$@ count=10000 $(V)dd if=$(bootblock) of=$@ conv=notrunc $(V)dd if=$(kernel) of=$@ seek=1 conv=notrunc从 MakeFile 里面 可以看出 生成 ucore.img 首先需要生成 大小为 10000字节 的空间然后 将 bootblock 和 kernel 依次写入到 那块空间之中 阅读全文 »
操作系统之 系统启动、中断、调用 发表于 2018-10-31 | 更新于 2024-01-20 | 分类于 操作系统 | 评论数: | 阅读次数: 系统启动CPU加电之后 初始化寄存器 从 CS:IP = 0xF000:FFF0 执行第一条指令 系统处于实模式 故 PC = 16 * CS + IP 此时物理地址为 0xFFFF0 20位地址总线 可用内存为 1MB 此时距离 1MB 只剩下 16个字节 16个字节够用吗?0xffff0 物理地址处为跳转指令 会长跳转到 BIOS 代码真正开始的地方 BIOS 初始化 基本输入输出 系统设置信息 开机后自检 硬件自检POST 检测系统中内存或显卡等关键部位的存在和工作状态 查找并执行显卡等接口的初始化程序 系统初始化 检测配置即插即用设备 更新 ESCD 扩展系统配置数据 系统自启动等 阅读全文 »