操作系统之 进程控制 发表于 2018-12-05 分类于 操作系统 进程切换 (上下文切换)暂停当前运行进程 从运行状态变成其他状态调度另一个进程从就绪状态变成运行状态进程切换的要求切换前 保存进程上下文(寄存器 CPU状态 内存地址空间(大部分不用保存 因为两个进程的内存地址空间不会被覆盖))切换后 恢复进程上下文快速切换阅读全文 »
操作系统之 进程和线程 发表于 2018-12-02 分类于 操作系统 进程指一个具有一定独立功能的程序在一个数据集合上的一次动态执行的过程进程的组成进程包含了正在运行的程序所有状态信息代码数据状态寄存器CPU 状态 CR0指令指针 EIP通用寄存器进程占用的系统资源打开文件已分配内存阅读全文 »
使用 Github Webhook 自动部署 博客 发表于 2018-11-27 分类于 搞东搞西 使用 Github Webhook 前在搭建 这个 Blog 的早期 还没有用到自动部署因此 每次发布 一篇新的文章 亦或是 修改了 Blog 的一些设置或者内容时 至少要经历以下几件事情生成 Blog 静态页面将其 git push 到 git 仓库ssh 登录 服务器服务器 git pull 更新 Blog 静态页面每次都要经历以上四件事情 实在是太繁琐了 因此决定使用 Github Webhook 进行自动部署阅读全文 »
操作系统 uCore Lab 3 含 Challenge 发表于 2018-11-27 分类于 操作系统 Lab 3 练习补充在练习开始之前 先讲讲 两个数据结构1234567891011121314struct mm_struct { // 描述一个进程的虚拟地址空间 每个进程的 pcb 中 会有一个指针指向本结构体 list_entry_t mmap_list; // 链接同一页目录表的虚拟内存空间 的 双向链表的 头节点 struct vma_struct *mmap_cache; // 当前正在使用的虚拟内存空间 pde_t *pgdir; // mm_struct 所维护的页表地址(拿来找 PTE) int map_count; // 虚拟内存块的数目 void *sm_priv; // 记录访问情况链表头地址(用于置换算法)};struct vma_struct { // 虚拟内存空间 struct mm_struct *vm_mm; // 虚拟内存空间属于的进程 uintptr_t vm_start; // 连续地址的虚拟内存空间的起始位置和结束位置 uintptr_t vm_end; uint32_t vm_flags; // 虚拟内存空间的属性 (读/写/执行) list_entry_t list_link; // 双向链表 从小到大将虚拟内存空间链接起来};阅读全文 »
操作系统之 虚拟存储页面置换算法 发表于 2018-11-23 分类于 操作系统 页面置换算法概念功能当出现缺页异常时 需调入新页面且内存已满 置换算法选择被置换的物理页面设计目标尽可能地减少页面调入调出次数把未来不再访问 或 短期内不访问的页面调出页面锁定 (Frame locking)描述必须常驻内存的逻辑页面操作系统的关键代码要求响应速度的代码和数据页表中的锁定标志位 (Lock bit)阅读全文 »
操作系统之 虚拟存储概念 发表于 2018-11-21 分类于 操作系统 为什么需要虚拟存储?计算机系统常出现内存空间不够用如何解决内存空间不够用?覆盖(Overlay)应用程序 手动 把需要的指令和数据保存在内存中 (将代码分成若干模块 彼此无调用关系的 将其附庸到一块区域 需要用户自己来确定何时将其模块加入程序 开发难度高)交换(对换 Swapping)操作系统 自动 把暂时不能执行的程序保存到外存中 (因为对换的是一个进程的整个地址空间 所以开销会比较大)虚拟存储在有限容量的内存中 以页为单位自动装入更多更大的程序阅读全文 »
微信摇一摇签到 解决方案 发表于 2018-11-20 分类于 搞东搞西 所在学校在2016年的时候 使用了 微信摇一摇作为签到的系统摇一摇签到是基于 iBeacon(低功耗蓝牙通信)iBeacon 组成iBeacon 由 UUID Major Minor 组成那么 理论上我们只要获取到了以上信息 就能在任何地方(一般都会进行定位认证 所以任何地方是有条件的)发射出一个教室的信号 进行摇一摇签到阅读全文 »
操作系统 uCore Lab 2 发表于 2018-11-19 分类于 操作系统 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 分类于 操作系统 为什么需要非连续内存分配连续内存分配有缺点分配给程序的物理内存必须连续存在外碎片 和 内碎片内存分配的动态修改困难 (难以动态的增加内存和减少内存)内存利用率低之前连续物理内存地址分配 给进程分配内存 必须给其分配连续的物理内存区域 若内存中没有满足需要的内存大小的连续内存区域 分配内存就会失败非连续内存分配目标提高内存利用效率和管理灵活性允许程序使用非连续物理内存空间允许共享代码与数据 (两个进程共用一个函数库的时候)支持动态加载和动态链接阅读全文 »
操作系统之 物理内存管理 连续内存分配 发表于 2018-11-07 分类于 操作系统 计算机体系结构计算机体系结构 由 CPU 内存 I/O设备 组成CPU 组成结构寄存器 容量小ALU 控制逻辑高速缓存 L1 L2MMU 内存管理单元阅读全文 »