随笔分类 -  Linux0.11

vmware运行linux0.11
摘要:vmware运行linux0.11 阅读全文

posted @ 2023-02-22 10:21 sudochen 阅读(211) 评论(0) 推荐(0) 编辑

Linux0.11 BADNESS宏分析
摘要:BADNESS宏主要在getblk函数中使用,用于获取一个进可能开销小的缓冲区 定义 #define BADNESS(bh) (((bh)->b_dirt<<1)+(bh)->b_lock) 通过以上的宏可以看出 一个b_dirt和b_lock的缓冲区开销最大 其次是一个b_dirt的缓冲区 再次是 阅读全文

posted @ 2023-02-13 14:30 sudochen 阅读(43) 评论(0) 推荐(0) 编辑

Linux0.11 临界区
摘要:在学习Linux驱动程序设计的过程中,最重要的是要学会临街区的使用,不睡眠的临界区保护主要是使用了禁用中断和自旋锁,为什么会产生临界区,是因为语句可能会被中断打断导致数据的错误或者不完整例如如下语句int ivoid add(){ i++;}如上函数,一个全局变量i自加,假设有两个内核控制路径(进程 阅读全文

posted @ 2022-11-21 11:19 sudochen 阅读(199) 评论(0) 推荐(0) 编辑

Linux0.11 修改为使用4GB虚拟内存
摘要:WHY 为什么是新体验,目前的Linux内核代码对于学习操作系统来说不太合适,其代码量非常庞大,而被用来学习Linux内核的0.11版本和现代的操作系统相比较有如下缺点: 1,Linux0.11的进程共享一个页表,每个进程的地址空间有64MB,第一个进程是0-64MB,第二个进程是64-128MB, 阅读全文

posted @ 2022-09-22 17:20 sudochen 阅读(350) 评论(0) 推荐(0) 编辑

Linux0.11 块驱动之电梯算法
摘要:电梯算法的本质就是将用户的request插入到合适的位置,减少磁头的移动,提高性能 1, IN_ORDER宏 /* * This is used in the elevator algorithm: Note that * reads always go before writes. This is 阅读全文

posted @ 2022-09-09 15:26 sudochen 阅读(111) 评论(0) 推荐(0) 编辑

Linux0.11 get_base问题分析
摘要:在进行Linux0.11实验的时候发现一个问题,记录一下 static inline unsigned long _get_base(char * addr) { 0: 83 ec 10 sub $0x10,%esp __asm__("movb %3,%%dh\n\t" "movb %2,%%dl\ 阅读全文

posted @ 2022-09-02 17:44 sudochen 阅读(35) 评论(0) 推荐(0) 编辑

Linux0.11 sleep_on函数分析
摘要:/* * 将当前进程设置为不可中断的睡眠状态 * 只能通过wake_up进行唤醒 * */ void sleep_on(struct task_struct **p) { struct task_struct *tmp; if (!p) return; /* * task[0]不允许睡眠 */ if 阅读全文

posted @ 2022-09-01 17:48 sudochen 阅读(190) 评论(0) 推荐(0) 编辑

Linux0.11 move_to_user_mode分析
摘要:/* * IRET * 当使用IRET指令返回到相同保护级别的任务时,也就是当前的CS中的DPL和堆栈中的DPL相同时 * IRET会从堆栈弹出代码段选择子及指令指针分别到CS与IP寄存器, * 并弹出标志寄存器内容到EFLAGS寄存器。 * * 当使用IRET指令返回到一个不同的保护级别时,也就是 阅读全文

posted @ 2022-09-01 14:24 sudochen 阅读(132) 评论(3) 推荐(0) 编辑

Linux0.11内核栈切换的一些问题分析
摘要:在网上流传的方法如下 以及如下 以上两个代码段,当进行第一次fork时,看似没有问题,但是如果在Linux0.11上的根文件系统里编译Linux0.11源码时,可能会出现一些程序错误,我们深入分析会发现,在后续的任务调度中,当程序执行到switch_to时,理论上来说是需要保护所有的寄存器现场,但如 阅读全文

posted @ 2022-09-01 13:40 sudochen 阅读(113) 评论(0) 推荐(0) 编辑

Linux0.11任务0中fork和pause的内嵌问题
摘要:产生进程1的fork和pause为什么要用内联函数而不能使用函数掉用的原因,网上的很多回答都是创造一个干净的用户态堆栈,至于不干净的用户堆栈空间会带来什么影响,无人提及 在理解下面代码的前,我们需要理解一下fork函数的特殊性, fork会“两次返回”,一次子进程返回0,一次父进程返回子进程的pid 阅读全文

posted @ 2022-04-20 16:37 sudochen 阅读(450) 评论(0) 推荐(0) 编辑

Linux0.11使用串口进行输入输出
摘要:在使用qemu时我们将Linux0.11修改为使用串口作为标准输入输出,从而在文本模式下进行学习调试,补丁如下 diff --git a/Makefile b/Makefile index 3ca10f3..d418782 100644 a/Makefile +++ b/Makefile @@ -8 阅读全文

posted @ 2022-03-30 13:38 sudochen 阅读(278) 评论(0) 推荐(0) 编辑

Linux0.11 Not owner
摘要:关于 rm, chmod 一类命令提示 Not owner 的问题,是由于 0.11 版无 lstat 系统调用。可以直接从 0.12 版复制新加的系统调用,补完即可,相信看过这部分代码后,大家都能做到。#define __NR_sigsuspend 72#define __NR_sigpendin 阅读全文

posted @ 2022-03-25 15:31 sudochen 阅读(252) 评论(0) 推荐(0) 编辑

Linux switch_to(n)理解
摘要:任务门+ + + + + + + +| 16bits | P | DPL(2bit) | 5 bits | 8 bits | 16bits | 16bits |+ + + + + + + +| NA | 1 | 00 | 00101 | NA | TSS | NA |+ + + + + + + +通 阅读全文

posted @ 2022-03-21 18:31 sudochen 阅读(257) 评论(0) 推荐(0) 编辑

Linux0.11 head.s
摘要:# # 32位指令,在这就进入到保护模式了 # 在本模块中,内核的起始地址为0xC0000000,用户程序的起始地址为0x00000000 # 我对原来的Linux0.11中的内存相关进行了修改,对于一个进程使用1GB的内核空间和3GB的用户空间 # .code32 # # 此处运行在绝对地址0x0 阅读全文

posted @ 2022-03-14 14:22 sudochen 阅读(81) 评论(0) 推荐(0) 编辑

Linux0.11 setup.s
摘要:综述 setup程序利用BIOS终端读取硬件参数,并将这些数据保存到0x90000开始处,此处原本是bootsect的地址,bootsect跳转至setup模块后其所在的地址空间就没什么用了,主要读取的参数如下: 读取完参数后将system模块从0x10000整体向下移动到0x0000处,接下来加载 阅读全文

posted @ 2022-03-14 10:35 sudochen 阅读(129) 评论(0) 推荐(0) 编辑

Linux0.11 bootsect.s
摘要:概述 如下图是Linux内核完全注释的一副图,表示各个模式在系统的运行大概情况,我们首先分析bootsect.s程序 # # BIOS系统调用 # 80386在实模式下虽然是16位的地址,但是经过段映射后可以形成20位的地址共寻址1MB的地址空间 # BOIS会在地址0处建立1KB字节的中断向量表, 阅读全文

posted @ 2022-03-14 10:04 sudochen 阅读(111) 评论(0) 推荐(0) 编辑

bochs-2.4.5-config-params
摘要:此配置用于xv6实验 ./configure --enable-smp --enable-vmx=2 --enable-configurable-msrs --enable-x86-64 --enable-a20-pin --enable-acpi --enable-pci 阅读全文

posted @ 2022-02-24 13:54 sudochen 阅读(36) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示