首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
CODERLIHAO
掘友等级
站在巨人的肩膀上
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
99
文章 99
沸点 0
赞
99
返回
|
搜索文章
最新
热门
linux0.11源码分析-添加设备请求
blk_dev先定义了系统可以使用的一些块设备,数量也就是7个。该数组使用主设备号作为索引,在代码中就会看到blk_dev[major]这样找到 blk_dev_struct结构的,实际内容将在各种块设备驱动程序初始化时填入。 在读写磁盘时,先使用open方法,触发中断,中断程…
linux0.11源码分析-sleep_on与wake_up
如果一个资源没有加锁,就表示还没有被使用,一旦加上锁后,在没有解锁前,其他进程想要使用该资源就要释放cpu等待了。注意执行到schedule()方法时,下面的代码就不会执行了,需要等待调度才能运行,CPU会将该进程的状态保存到进程的TSS中,包括当前进程执行到的位置信息,等待下…
linux0.11源码分析- 页中断
实模式下使用段基址+偏移地址来寻址,因为实模式下应用可以无阻碍的访问任何内存地址,所以有了保护模式,保护模式下,地址线也扩展到32位,可以访问到4GB内存地址,我为了管理内存,把内存划分成为页为单位,1M以下的地址不使用页管理,通常1页大小是4KB,那么每个进程的数据都可以离散…
linux0.11源码分析-向硬盘写入数据
为什把这个方法单独拿出来说,因为别的专题再把这个方法加进去,文章就太长了。偷懒~😁 这个方法对应着硬盘的操作,相对应的对虚拟盘操作就是do_rd_request,对软盘得操作就是do_fd_request,所谓得操作就是读和写。进程先在自己的空间(用户空间)修改数据后,同步到…
linux0.11源码分析-缓冲区
缓冲区的作用是提高系统效率,相对CPU来说,低速的IO设备是CPU受不了的,那就把IO设备中的数据先读取到缓冲区中,然后再复制到用户空间,如果想写数据到IO设备,进程先修改自己空间中的数据(用户空间),然后复制到缓冲区,然会就会等待系统同步数据到IO了。那么我们使用的open、…
linux0.11源码分析-fork进程
fork函数先从当前任务表(task)里找到一个任务号(进程pid),如果可以找到,就会复制当前进程current结构体的数据(task_struct),然后复制进程页表项,将RW置位0,为以后写时复制做准备。子进程与父进程共享内存。然后处理信号。切换进程后,CPU会自动的加载…
linux0.11源码分析-初始化进程0
内核经过划分物理内存格局、设置缓冲区、虚拟盘、主内存、IDT等初始化后,接下来就要初始化进程0。 内核已经初始化好一个进程(init_task)数据结构,接下来往GDT中添加任务0的TSS与LDT数据,并设置好TR寄存器与LDTR寄存器,设置时钟中断与系统调用中断。下一步等待调…
Ext文件系统
MBR占据一个扇区的大小,MBR位于磁盘的第1个扇区,CHS的表示方法是0柱面,0磁头,1扇区;LBA的表示方法就是0扇区。 CPU加电复位后,利用BIOS就会把该MBR加载到内存中,用来引导操作系统的启动。 Ext2和Ext3是许多Linux操作系统发行版本的默认文件系统,一…
linux0.11源码分析-写时复制
假如现在有A进程和B进程共享一个页帧frame,那么这个frame对应的页表项的RW标志为0,现在B进程修改frame,引发中断page_fault,可以根据出错码和cr2寄存器上的地址信息来判断是因为页不存在还是由于没有权限导致的,显然这里是没有写权限,这样就是调用do_wp…
linux0.11源码分析-共享页帧
当引发缺页中断时,share_page可能会被do_no_page被调用。 try_to_share先检查P进程中对应的页帧是否存在,不存在就返回0。然后查看这个页帧是否干净,不干净也返回0,然后查看这个地址有没有在主内存中,到这里已经满足一半的条件。接着检查当前进程对应的页帧…
下一页
个人成就
文章被点赞
57
文章被阅读
38,513
掘力值
1,256
关注了
2
关注者
14
收藏集
4
关注标签
45
加入于
2016-01-31