- 博客(44)
- 资源 (1)
- 收藏
- 关注
原创 005 【操作系统】汇编语言伪指令大全
伪指令不会生成机器码,而是告诉汇编器如何组织和布局程序,而机器指令是直接由 CPU 执行的。来区分它们与普通的机器指令。
2024-10-25 22:03:57 177
原创 【哈工大_操作系统实验】Lab9 proc文件系统的实现
本节将更新哈工大《操作系统》课程第九个 Lab 实验。按照实验书要求,介绍了非常详细的实验操作流程,并提供了。在 Linux 0.11上实现 procfs(proc 文件系统)内的 psinfo 结点。当读取此结点的内容时,可得到系统当前所有进程的状态信息。
2024-10-25 22:02:37 908
原创 【哈工大_操作系统理论】L31&32 目录与文件系统&目录解析代码实现
新增一层目录树抽象,与前面几层抽象进行连接:通过路径名得到文件的inode(FCB) -> 找到对应盘块 -> 放到电梯队列 -> 磁盘中断计算CHS -> 控制器驱动马达读写磁盘扇区。核心:如何通过找到1、树状目录的实现根目录的FCB中包含根目录的数据块,其中数据块中存放,包括: + (即指向的指针,避免目录下存放FCB占用太多空间)磁盘使用总结:get_dir目录解析过程:操作系统两大视图:1、多进程视图2、文件视图(访问IO)
2024-10-23 21:52:39 300
原创 【哈工大_操作系统实验】Lab8 终端设备的控制
本节将更新哈工大《操作系统》课程第八个 Lab 实验终端设备的控制。按照实验书要求,介绍了非常详细的实验操作流程,并提供了超级无敌详细的代码注释。
2024-10-23 21:51:15 914
原创 【哈工大_操作系统理论】L28&29&30 生磁盘的使用&从生磁盘到文件&文件使用磁盘的实现
磁盘访问时间主要是寻道时间和旋转时间,因此增大每次读写磁盘的基本单位(扇区->盘块),可以增大读写速度,但会降低空间利用率。代码显示,一个盘块左移一位即为扇区数,所以一个盘块对应两个扇区,而一个扇区512byte,多个进程将盘块号放在请求队列上,磁盘驱动从队列中取出。1、第三层抽象:引入文件,根据映射表可以找到。2、顺序结构:不适合于动态生长,但适合于读写。3、链式结构:适合于动态生长,但不适合于读写。2、第一层抽象:盘块号block。,用户不用关心盘块号。
2024-10-23 21:50:19 261
原创 【哈工大_操作系统理论】L26&27 IO与显示器&键盘
通过中断程序,根据扫描码得到相应的ASCII码。2、输出显示器 - 读入外设的。中的信息从父进程中来,即。读入的相应外设的信息。
2024-10-22 13:19:54 363
原创 【哈工大_操作系统实验】Lab7 地址映射与共享
本节将更新哈工大《操作系统》课程第七个 Lab 实验地址映射与共享。按照实验书要求,介绍了非常详细的实验操作流程,并提供了超级无敌详细的代码注释。
2024-10-22 13:12:05 1009
原创 【哈工大_操作系统实验】Lab6 信号量的实现和应用
本节将更新哈工大《操作系统》课程第六个 Lab 实验信号量的实现和应用。按照实验书要求,介绍了非常详细的实验操作流程,并提供了==超级无敌详细的代码注释==。
2024-10-18 17:39:13 954
原创 【哈工大_操作系统理论】L24&25 内存换入-请求调页&内存换出
如果缺页很少,容易出现全部R=1,则指针会转一圈,然后都为0后从第一个开始执行,顺序下去,退化为FIFO。用过去的历史预测将来:选最近最长一段时间没有使用的页淘汰(最近最少使用) -> 因为程序具有局部性。申请一页空间,从磁盘上将需要的页读入,并建立物理内存和逻这一页虚拟地址的映射。)来清除 R 位,用慢指针来选择淘汰页。3、LRU算法(least recent used)使用两个指针,一个移动速度快(体现。显然不合理,评价指标:缺页次数。核心是算法选择需要淘汰的页。将使用的页淘汰,是最优方案。
2024-10-18 17:38:20 270
原创 【哈工大_操作系统理论】L22&23 多级页表与快表&段页结合的实际内存管理
右移22位,得到页目录号,每个页目录号占4字节,所以乘4得到页目录号地址,则右移20位。,因为每个进程虚拟地址互不重叠,而使用32位虚拟地址前20位为页目录和页号,则页目录和页号不同,所以用同一套页表映射后物理地址是不同的。其中只有3个目录占用,只需要3个页号目录,每个页号目录也是2^10,则目录指向的页表象是4K,三个则12K。一页大小是4K,最大的浪费其实就是一页都空着,所以最大浪费是4K。原本1M个表象,每个表象4字节,需要4M的空间来存储页表。页目录号需要2^10个,每个4字节,需要4K。
2024-10-17 22:01:28 949
原创 【哈工大_操作系统理论】L20&21 内存使用与分段&内存分区与分页
程序编译生成是存放在磁盘上的,需要移动到内存上取值执行。1、重定位:将程序载入内存中,需要修改程序中的地址(相对地址)“编译时”重定位无法知道“载入运行时”之前空闲的位置是否还空闲,相比而言“载入时”更好然后,载入后如果阻塞还会被换入或换入,内存还需要移动,所以也不合适最佳时机:运行时重定位存放在 PCB 中2、分段1、如何在内存中找到一段空闲的分区2、分页可变分区造成的问题:导致存在很多内存碎片,需要内存紧缩(在50K+150K的空间中,无法存放160K数据)物理内存通过分页,减少浪费,避免碎片3
2024-10-17 21:56:53 249
原创 【哈工大_操作系统实验】Lab5 基于内核栈切换的进程切换
本节将更新哈工大《操作系统》课程第五个 Lab 实验 **基于内核栈切换的进程切换**。按照实验书要求,介绍了非常详细的实验操作流程,并提供了超级无敌详细的代码注释。
2024-10-17 21:54:13 828
原创 【哈工大_操作系统理论】L16&17&18&19 进程同步与信号量&信号量临界区保护&信号量的代码实现&死锁处理
隐蔽的队列:tmp作为局部变量,存放在当前进程内核栈中。下个进程PCB找到下个进程的内核栈,内核栈找到tmp;修改empty需要 mutex 保护,但其实mutex也是一个变量,将导致修改mutex也需要保护,修改mutex的保护也需要保护,没完没了。关中断:两个进程不能同时进入临界区 -> 阻止调度 -> 关中断(cli)。若empty修改到一半,跳转到其他进程运行,将导致少减一个。定义了一个信号量结构体,包含信号量名称、值、等待唤醒进程队列。磁盘读完后,睡眠的进程将由中断唤醒。
2024-10-10 21:57:43 836
原创 【哈工大_操作系统实验】Lab4 进程运行轨迹的跟踪与统计
本节将更新哈工大《操作系统》课程第四个 Lab 实验 进程运行轨迹的跟踪与统计。按照实验书要求,介绍了非常详细的实验操作流程,并提供了超级无敌详细的代码注释。
2024-10-06 22:14:26 1108
原创 【哈工大_操作系统理论】L14&15 CPU调度策略&一个实际的schedule函数
,避免某个进程长期占用CPU资源。如果该进程在规定的时间片内没有完成,就将它放回队列的末尾,等待下一轮调度。它将CPU时间公平地分配给每个就绪的进程,让所有进程轮流使用CPU执行一段固定的时间(counter:时间片(优先级)
2024-10-06 22:10:21 388
原创 【哈工大_操作系统理论】L11&12&13 内核级线程&内核级线程实现&操作系统之“树”
Linux0.11中真正完成进程切换是依靠任务状态段(Task State Segment,简称 TSS)的切换来完成的。linux0.11的切换是基于TSS(任务状态段),实验五则是基于内核栈的切换。切换进程,实际上是切换内核级线程,没有用户级进程说法,进程只能在内核中。(Task State Segment),它是一个特殊的内存区域,所以线程切换时是用户栈和内核栈这一套栈同时切换。并发:同时触发,交替执行,在一个核上。并行:同时触发,同时执行,在多个核上。1、核心级线程和用户级线程的区别。
2024-10-06 22:06:46 506
原创 【哈工大_操作系统实验】Lab3 系统调用
本节将更新哈工大《操作系统》课程第三个 Lab 实验 系统调用。按照实验书要求,介绍了非常详细的实验操作流程,并提供了超级无敌详细的代码注释。文末附完整标准答案代码,包括系统调用实现 和测试函数 、 以及超详细注释。
2024-10-02 20:32:10 1276
原创 【哈工大_操作系统实验】Lab2 操作系统的引导
本节将更新哈工大《操作系统》课程第二个 Lab 实验。按照实验书要求,介绍了非常详细的实验操作流程,并提供了。文末附完整bootsect.s和setup.s标准答案代码以及超详细注释。1、bootsect.s 能在屏幕上打印一段提示信息“XXX is booting…”,其中 XXX 是你给自己的操作系统起的名字,例如 LZJos、Sunix 等2、bootsect.s 能完成 setup.s 的载入,并跳转到 setup.s 开始地址执行。
2024-09-19 22:05:44 1295
原创 【哈工大_操作系统实验】Lab1 熟悉实验环境
本系列文章主要更新哈工大《操作系统》课程对应的9个Lab实验(包括熟悉实验环境),提供了非常详细的环境配置方法以及按照指导书展开的详细操作步骤,希望对大家有所帮助。
2024-04-22 17:50:45 1297
原创 01 【哈工大_操作系统】x86_64 常用寄存器大全
寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果以及一些CPU运行需要的信息。
2024-04-22 14:20:53 1019
原创 00 【哈工大_操作系统】Bochs 汇编级调试方法及指令
本文将介绍一下哈工大李治军老师《操作系统》课程在完成Lab时所使用到的 Bochs 调试工具的使用方法。
2024-04-15 21:32:46 1361
原创 003 【笔记神器】Obsidian:打造属于自己的万能工作台
Obsidian 是一款很多大神都在用的笔记软件,具有强大的功能,能够满足日常各种笔记的需求。
2024-04-15 13:13:19 5225 1
原创 【哈工大_操作系统理论】L4&5 操作系统接口 & 系统调用实现
希望通过这一系列文章,可以帮助大家巩固与学习李治军老师课程上的重点内容。同时,也为大家后续知识点遗忘提供了查阅的渠道,而无需去视频中寻找知识,故本系列文章图片均保留了课堂笔记。特权级: 核心态 = 0 OS服务 = 1/2 用户态 = 3。本节比较简单,故与第五节课程笔记一起发布。3、系统调用想进去内核应该通过什么手段?1、用户系统调用为什么不应该进入内核?是怎么穿过边界进入 操作系统。2、怎么做到不让用户进入内核?3、系统调用想进去内核应该。至此,本节课程已介绍完毕。做到不让用户进入内核?
2024-04-14 23:10:16 844 1
原创 【哈工大_操作系统理论】L3 操作系统启动
② 把 system 模块从 90000 移动到 00000,将OS的核心代码一直放在开头。:将 OS、GDT、IDT等代码放在内存的起始位置,将应用程序放到内存OS的上端。2、setup.s 模块:完成 OS 启动前的设置,OS 接管硬件。③ 启动保护模式,应用32位的汇编指令跳到 0 地址处执行。1、计算机上电时,操作系统在硬盘(磁盘)上,为了“1、理解 OS 启动过程发生了什么,理解。”,需要把操作系统代码放在内存里。① 读硬件参数(如内存大小)3、 system 模块。
2024-04-14 22:55:53 1167 1
原创 【哈工大_操作系统理论】L2 开始揭开钢琴的盖子
2、CS=0x07c0, IP=0x0000,磁盘0磁道0扇区的引导扇区bootsect.s -> 先把本身bootsect.s 移动到 CS=0x0900, IP=0x0000 腾出空间。4、CS=0x9020, IP=0x0000,还是执行 bootsect.s -> 打印logo,读入system模块,跳到(0x90200)准备执行 setup.s。1、CS=0xffff, IP=0x0000,ROM BIOS映射区 -> 检查RAM,键盘,显示器,软硬磁盘。(5) 将磁盘0磁道0扇区(OS。
2024-04-13 19:52:26 612
原创 【哈工大_操作系统理论】L1 什么是操作系统
特别是实验课,八个 Lab 实验涉及到了操作系统的核心部分,虽然 lab 不是在哈工大自创的 HITOS 上,但 linux-0.11 确实是一个非常好的选择。》课堂要点笔记,该课程应该算得上是国内最好的操作系统课程之一,也是哈工大CS课程含金量最高的课程之一。)-> 操作系统(Linux、Windows)-> 计算机硬件(CPU、内存、显存):能改操作系统(改CPU管理、改屏幕输出、改系统接口、改内存管理)从本期开始,笔者将出一系列哈工大的《、电源管理、磁盘管理、多核管理。》又基础不足的同学,
2024-04-13 19:44:34 545
原创 03 黑马C++_泛型编程
本文将接着上文(),继续更新本人在学习黑马C++过程所整理的笔记(本文序号将继续承接上文)。本文的使用方法:可以将本文作为一个工具书来使用,当编写程序或者阅读程序遇到不熟悉的知识点的时候,可以用 CTRL+F 按键 搜索关键词,查看该知识点。如:当忘记结构体定义方法,需不需要在括号后加分号,就可以 CTRL+F 搜索 “结构体”关键字,即可跳转到所需内容处。相较于使用 C++ Primer 感觉更加快速、便捷,希望对大家有所帮助。
2023-12-22 21:40:24 944 1
原创 09 蓝桥杯单片机设计与开发_基础模块_超声波测距
08 蓝桥杯单片机设计与开发_基础模块_NE555-CSDN博客,承接上文,本文将介绍最后一个蓝桥杯模块(超声波测距),为大家做出详细编程指导。
2023-11-26 14:50:04 729 2
原创 08 蓝桥杯单片机设计与开发_基础模块_NE555
07 蓝桥杯单片机设计与开发_基础模块_串口通信-CSDN博客,承接上文,本文将继续介绍剩余蓝桥杯涉及模块(NE555以及超声波测距),为大家做出详细编程指导。
2023-11-26 14:47:14 643 2
原创 07 蓝桥杯单片机设计与开发_基础模块_串口通信
06 蓝桥杯单片机设计与开发_基础模块_PWM-CSDN博客,承接上文,本文将继续介绍剩余蓝桥杯涉及模块(串口通信、NE555以及超声波测距),为大家做出详细编程指导。
2023-11-06 22:27:26 303 1
原创 06 蓝桥杯单片机设计与开发_基础模块_PWM
05 蓝桥杯单片机设计与开发_基础模块_AT24C02-CSDN博客,承接上文,本文将继续介绍剩余蓝桥杯涉及模块(PWM、串口通信、NE555以及超声波测距),为大家做出详细编程指导。
2023-11-06 21:55:03 164 2
原创 02 黑马C++_核心编程
将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制class 类名访问权限:属性 // 又称 成员属性/成员变量行为 // 又称 成员函数/成员方法。
2023-10-22 22:05:45 259 1
原创 01 黑马C++_基础语法入门
指针的类型需要与变量的类型一致int a = 10;// & 为取地址符// 10// 空指针,指向内存占编号为0的空间// 8/464位操作系统(VS上面的Debug选择x64)指针占8字节32为操作系统(VS上面的Debug选择x86)指针占4字节int age;}stu3;// 结构体变量创建方式3// 结构体变量创建方式1(struct可以省略)s1.name = "张三";Student s2 = {"李四", 18};// 结构体变量创建方式2。
2023-10-22 21:57:49 87 1
原创 05 蓝桥杯单片机设计与开发_基础模块_AT24C02
笔者将基于蓝桥杯官方给的赛点资源包([蓝桥杯单片机设计与开发_赛点资源数据包](https://download.csdn.net/download/weixin_53159274/18576531))进行编程,为大家讲解编程调用各语句的含义,帮助大家编写温度传感器的程序,也便于大家记忆。
2023-10-20 22:19:23 488 1
原创 04 蓝桥杯单片机设计与开发_基础模块_PCF8591
03 蓝桥杯单片机设计与开发_基础模块_DS1302-CSDN博客,承接上文,本文将继续介绍剩余蓝桥杯涉及模块(PCF8591、AT24C02、PWM、串口通信、NE555以及超声波测距),为大家做出详细编程指导。
2023-10-20 21:44:04 376 1
蓝桥杯_赛点资源数据包_单片机_2019.zip(免费)
2021-05-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人