自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 《操作系统 真相还原》第九章 线程

在高级语言中,线程是运行函数的另一种方式,也就是说,构建一套线程方法,让函数正在此线程中调用,然后处理器去执行这个函数,因此线程的实际功能就是相当于调用了这个函数,从而让函数执行。那么他跟普通的函数调用有什么区别呢?在一般的函数调用中,它是随着此函数所在的调度单元一块上处理器运行的,这个调度单元可能是这个进程,但也可能是某个线程,你可以当他是顺便执行的,也就是说咱们的处理器并不是单独的执行它。

2024-04-23 22:51:25 695

原创 《操作系统 真相还原》第八章 内存管理系统

内存池可以看成一个资源库,什么是资源呢?其实顾名思义,资源当然就是内存了。在前面的章节中,咱们实现了分页机制,所以现在地址分为了虚拟地址和物理地址,为了有效地分配他们,所以这里我们需要实现虚拟地址的内存池和物理地址的内存池。

2024-04-09 09:45:25 1788

原创 《操作系统真想还原》第七章 中断

首先我们梳理一下过程:IRQ0引脚的时钟中断信号频率是由8253计数器0设置的,所以我们要使用计数器0时钟中断信号肯定要循环,所以这里我们采用方式2计数器初值我们采用11932,这是因为计数器0的工作频率是1.19318MHz,这里我们为了实现100Hz的中断信号,所以我们需要1.19318M/100,这样就得出了我们需要的初始值了。本次我们构建一个device目录,然后目录下创建timer.c程序100//咱们所期待的频率1193180//计数器平均CLK频率。

2024-03-22 16:51:17 892 1

原创 《操作系统真相还原》第六章 加载内核

我们之前直接使用BIOS中断或者是往显存中写入我们的字符。之前我们还学了点显卡的知识,但是不多,没有详细的介绍显卡的端口,如同硬盘控制器那样,我们先看看显卡中的寄存器介绍如图,这是寄存器的目录,上面的目录是寄存器的分组,前四组寄存器被分为了两类寄存器,即Address Register和Data Register。

2024-03-12 16:18:18 866 1

原创 《操作系统真相还原》第五章 保护模式进阶,向内核迈进 下

举个例子,我们有一座房子,我们是房子的主人,我们当然可以自由进出,但是对于外人来说,必须经过我们的同意才可以进入。没有我们的同意他也就不可以进入。相当于对于这个房子来说,我们的特权级是高于其他人的。在计算机中,我们的特权级分为4中情况,分别是0,1,2,3,我们从计算机的启动到mbr再到loader以及内核都是0级特权级,下面就是各特权级的使命门结构是使得处理器从低特权级转移到高特权级的唯一途径,门结构是记录一段程序起始地址的描述符,它用来描述一段程序。

2024-03-08 17:20:40 1765 1

原创 分段机制源码分析

DS的Access Byte=0x93,意味着P=1(合法的Entry Pr必须为1),DPL=0,S=1,这里该段只能在Ring 0下访问,该段是数据段。CS的Access Byte=0x9b,意味着P=1(合法的Entry Pr必须为1),DPL=0,S=1,这里该段只能在Ring 0下访问,该段是代码段。CS和DS的flags为0xc0,所以G=1,意味着4K为一个页面,B/D为1,1-32位段;其中flags代表了40-47位的access byte和52-55位的flags。

2024-02-28 10:51:19 360

原创 《操作系统真相还原》第五章 保护模式进阶,向内核迈进 上

在linux2.6内核中,使用detect_memory函数来获取内存容量,其函数本质上是通过BIOS中断0x15实现的,分别是BIOS中断0x15的3个子功能,子功能号需要存放到寄存器EAX或AX中,下面介绍一下这三种模式。EAX=0xE820:遍历主机上全部内存AX=0xE801:分别检测低15MB和16MB~4GB内存,最大支持4GBAH=0x88:最多检测64MB内存,实际内存超过此容量也按照64MB返回。

2024-02-27 21:31:36 882

原创 《操作系统真相还原》第四章 保护模式入门

保护模式下内存段不再是段寄存器加载一下段基址就好了,段变得复杂起来,段的信息也开始增加,我们需要提前把段定义好再开始使用。全局描述符表就是保护模式下内存段的登记表。我们看张图就能理解这个图片展示的很清晰了。这章从为什么有保护模式到保护模式下的寄存器,寻址,运行模式,指令的扩展,到保护模式特有的全局描述符表。后面的全局描述符表部分还是十分的复杂而且有难度,还是需要反复的思考和揣摩。参考添加链接描述添加链接描述。

2024-01-18 18:46:48 897 1

原创 《操作系统真相还原》第三章 完善MBR

首先我们得先了解什么是地址,一句话概括就是各符号相对于文件开头的偏移量。编译器的给各符号进行编址。将源代码中的每一个符号都按照本硬件平台的特性分配空间,这些符号在空间上都是彼此相连,连续分布,他们在程序中距第一个符号的距离就是它们在程序中的地址。其实偏移量的本质就是地址,每个变量的地址是前一个变量的地址+前一个变量的内存空间大小。汇编命令反汇编命令0x7c00表示起始地址。我们应该根据我们的实际代码对其进行修改。接下来我们看一个汇编程序来真实的感受一下地址mov ax,$$

2023-11-28 17:37:04 844

原创 进程管理的学习

程序:程序通常是指完成特定任务的一系列指令集合或一个可执行文件,不具有生命力。进程:进程是一段执行中的程序。一个进程包括代码段,用户栈,数据段,内核栈和堆。进程是操作系统分配内存,cpu时间片等资源的基本单位。进程是用来实现多进程并发的实体,用于实现对cpu的虚拟化,让每个进程都感觉拥有cpu。实现cpu虚拟化的核心技术是上下文切换以及进程调度。

2023-11-13 16:59:20 51

原创 《操作系统真相还原》第二章 编写MBR主引导记录,让我们开始掌权

BIOS的中文位基本输入输出系统。BIOS的主要工作就是检测,初始化硬件,硬件提供了一些初始化的功能调用,BIOS直接调用就好了。BIOS还建立了中断向量表,可以通过“int中断号“来实现相关的硬件调用,也就是对硬件进行I/O操作,也就是输入输出。但是BIOS的空间很小,只有64KB,所以可以做到的I/O操作很少,也是因为BIOS毕竟是在实模式下,只需要选择一些重要的,可以保证计算机运行的基本操作就可以了。这也就是BIOS被称为基本输入输出系统的原因。

2023-11-13 16:58:51 88

原创 通过inode初步认识文件系统

在Linux 文件系统中,inode值相同的文件是硬链接文件,也就是说,不同的文件名,inode可能是相同的,一个inode值可以对应多个文件。理解链接文件并不难,看看例子就会了。在Linux中,链接文件是通过ln工具来创建的。(1) 硬链接,以文件副本的形式存在。但不占用实际空间。(2) 不允许给目录创建硬链接。(3) 硬链接只有在同一个文件系统中才能创建。(4) 删除其中一个硬链接文件并不影响其他有相同 inode 号的文件。

2023-11-02 09:50:27 144 1

原创 系统调用的学习

1.应用程序调用用户空间实现的应用编程接口来编程,而不是直接执行系统调用。一个接口函数可以由一个系统调用实现,也可以由多个系统调用实现,甚至完全不使用任何系统调用实现。2.系统调用可以理解为一个应用程序要调用系统功能的入口,而操作系统通过把守这个入口,来协调管理应用程序对系统功能的调用,来保证系统的安全性。3.发出系统调用请求是在用户态,而对系统调用的响应处理是在核心态下进行。

2023-10-28 14:20:06 81 1

原创 打印进程的虚拟地址空间

一个可执行文件被执行的同时也伴随着一个新的进程的创建。Linux会为这个进程创建一个新的虚拟地址空间,然后会读取可执行文件的文件头,建立虚拟地址空间与可执行文件的映射关系,然后将CPU的指令指针寄存器设置成可执行文件的入口地址,然后CPU就会从这里取指令执行。一个可执行文件包含可被CPU执行的指令和待处理的数据,上CPU之前,指令和数据全部被翻译成成二进制的形式。在可执行的文件的内部,划分出了一些专门的段,如代码段,数据段,BSS段等。

2023-10-16 22:31:29 209 1

原创 李治军老师操作系统实验合集

实验一 熟悉实验环境实验环境和工作模式准备环境进入到 oslab 所在的文件夹$ cd /home/shiyanlou/oslab/解压,并指定解压到 /home/shiyanlou/这样的话,在 /home/shiyanlou/oslab/中就能找到解压后的所有文件解压代码$ tar -zxvf hit-oslab-linux-20110823.tar.gz \ -C /home/shiyanlou/查看是否解压成功$ ls -al除了压缩包hit-oslab-linux-201

2023-10-09 18:53:42 2534 1

原创 Linux内核模块大扩展-作业

6. 内核模块中采用红黑树算法,并输出树中的每个节点(参考内核代码)第5和第6目前还未完成,在接下来的学习中会逐步解决。5. Makefile文件中,至少有2个以上的文件。不知为何前面两次传入参数0709和0608失败。

2023-09-18 10:02:03 48

原创 中断的打印和定时中断

当中断事件发生时,中断处理程序会在中断上下文中快速响应,然后将处理工作推迟到下半部分处理,以提高系统的响应性。当模块加载时,它初始化一个定时器,设置了1秒的触发间隔,然后定时器每1秒触发一次中断处理函数,该函数在触发时输出一条信息。定时中断是计算机系统中的一种事件触发机制,它允许系统按照预定的时间间隔执行特定的任务,定时中断通常由硬件定时器或系统时钟生成,以确保系统在不同的时间点执行特定的操作。模块参数:声明两个模块参数,irq 和 devname,用于在模块加载时接收用户指定的参数。

2023-09-12 19:47:58 185

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除