随笔分类 - 嵌入式Linux
摘要:字符设备驱动程序 大多简单的硬件设备都依赖于字符设备驱动程序 参考例程:scull驱动程序 注: 本笔记的内核以4.9.88版本为主 scll设计 设计驱动程序的第一步: 定义驱动程序能够提供的机制,即实现设备的抽象 源代码实现: scull0 ~ scull3: 由全局(多次打开共享数据)且持久(
阅读全文
摘要:构造和运行模块 在尝试运行模块之前,需要使用合适的系统(通常是封闭的)实现内核原代码的相应实验 Hello world模块 模块构造/析构: 使用module_init/module_exit宏装饰相应函数,实现内核模块的装载/移除 许可证: 使用MODULE_LICENSE(" ")实现对许可证的
阅读全文
摘要:23种设计模式-结构型模式 笔记模板 模式 前提 - 模式: 概念: 规则: 实现细节: 应用场景: 示意图: 代码实现: 创建型模式 适配器、桥接、组合、装饰、外观、享元、代理。 适配器模式 - 接口兼容思想 概念: 将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作
阅读全文
摘要:设备驱动程序简介 概述: Linux驱动程序的核心:作为一个黑盒子,使某个特定硬件相应相应的内部编程接口,如posix。其需要隐藏体的工作细节。 Linux驱动程序编写为什么简单:其是使独立于内核的其他部分而建立的,其是模块化的。 驱动程序的作用 驱动程序的妥协: 在编写驱动程序所需要的时间和驱动程
阅读全文
摘要:23种设计模式-创建型模式 笔记模板 模式 前提 - 模式: 概念: 规则: 实现细节: 应用场景: 示意图: 代码实现: 创建型模式 单例、工厂方法、抽象工厂、生成器、原型。 单例模式 - 共享独占资源 概念:创建型设计模式,保证一个类只有一个实例,提供全局访问点来对单个实例进行访问 规则: 私有
阅读全文
摘要:MIT 6.S081入门lab10 mmap 一、参考资料阅读与总结 1.Journaling the Linux ext2fs Filesystem 文件系统可靠性: 磁盘崩溃前数据的稳定性;故障模式的可预测性;操作的原子性 -论文核心: 将日志事务系统加入Linux的文件系统中; 事务系统的要求
阅读全文
摘要:MIT 6.S081入门lab9 文件系统 一、参考资料阅读与总结 1.xv6 book书籍阅读(Chapter 8 File system) 0.文件系统基础知识: 文件系统涉及的操作系统的概念:持久性 文件系统的核心诉求:作为纯软件,提供相应机制保证用户和操作系统在不同的存储设备上提供的视图相同
阅读全文
摘要:# MIT 6.S081入门lab8 锁 一、参考资料阅读与总结 1.xv6 book书籍阅读(Chapter 7: Scheduling:7.5 to end) 5.sleep与wakeup xv6使用了sleep-wake的机制,实现了进程交互的抽象(序列协调/条件同步机制) 这一机制的核心是防
阅读全文
摘要:MIT 6.S081入门lab7 多线程 一、参考资料阅读与总结 1.xv6 book书籍阅读(Chapter 7: Scheduling through Section 7.4) 1.概述: 由于操作系统往往运行比CPU数量更多的进程,因此需要对CPU进行虚拟化,使多个进程能够分时复用CPU资源
阅读全文
摘要:MIT 6.S081入门lab6 cow 由于本实验的前置课程包括2部分 Interrupts和 Multiprocessors and locking,因此本次实验记录也分为2部分 一、参考资料阅读与总结 1.xv6 book书籍阅读(chapter 5 Interrupts and device
阅读全文
摘要:MIT 6.S081入门lab5 懒分配 一、参考资料阅读与总结 1.xv6 book书籍阅读( Chapter 4 Section 4.6) 4.6 Page-fault Exceptions xv6对异常情况的处理:用户空间终止进程;内核空间停止内核执行。 缺页错误常常被用于写时复制方法,例如C
阅读全文
摘要:MIT 6.S081入门lab4.5 Q&A(lec7)、 这部分主要是Q&A部分课程的观看笔记,因此这一部分只有课程观看笔记 一、课程视频观看笔记 pagtbl实验: 基础知识回顾: 0x800以上是DRAM,以下是DEVICE;CPU通过MMU获取地址;注意:页表自身也是存在于内存中 可以从in
阅读全文
摘要:MIT 6.S081入门lab4 trap 本lab主要共分为两个部分,一个是对RISC-V调用约定的介绍(LEC5),一个是针对系统调用和系统陷阱的介绍和实验,因此分为两部分完成 一、参考资料阅读与总结 1.risc-v手册阅读(Calling Convention) 介绍了RV32和RV64的C
阅读全文
摘要:MIT 6.S081入门lab3 页表 一、参考资料阅读与总结 1.xv6 book书籍阅读(页表) a. 总览 页表:操作系统为每一个进程提供私有空间和内存的机制,使每一个进程有着自己的虚拟地址空间。本质上是基于分页的内存空间管理方法。 页表存储:其实就是MMU,其存储了从虚拟地址VA到物理地址P
阅读全文
摘要:MIT 6.S081入门lab2 系统调用 一、参考资料阅读与总结 1.xv6 book书籍阅读(操作系统架构) a. 总览 操作系统的核心: 对多个活动的支持,即多路复用、隔离、交互。 xv6前提: 64位操作系统;多核RISC-V:包括RAM、ROM、串口、磁盘;宏内核。 b.抽象系统资源 RT
阅读全文
摘要:MIT 6.S081入门lab1 操作系统及其接口 一、参考资料阅读与总结 1.xv6 book书籍阅读(操作系统接口) a.总览 操作系统的任务: 多个程序之间共享计算机(计算机的硬件管理+任务调度) 操作系统接口: 使用系统调用,调用内核服务为用户端程序提供给服务(即实现对进程的调度和硬件的管理
阅读全文
摘要:MIT 6.S081入门lab0 操作系统环境及其配置 闲话 由于不是正经计算机专业出身,但是又想做Linux内核/驱动开发,因此赶在暑假实习开始前把操作系统的课程补习一下。 之前自学的linux的驱动系统入门的笔记在这个寒假也会整理并发布(包括U-boot移植和驱动/应用开发入门)。 实验环境 U
阅读全文