- 博客(6)
- 资源 (3)
- 收藏
- 关注
原创 0.11之路(六):创建进程1
进程0要做的第一件事就是作为父进程调用fork函数创建第一个子进程——进程1。内核用last_pid来存放系统自开机以来累计的进程数,也将此变量用作新建进程的进程号。BTW,linux 0.11 的task[64]只有64项,最多只能同时运行64个进程。fork函数中有个很重要的函数叫 copy_process() 函数。 进程0依靠它完成对进程1的创建: 1) 为进程1创建task_st
2015-04-21 20:26:37 1483
原创 0.11之路(五):激活进程0
linux的第一个进程——进程0。 Linux 0.11 是一个支持多进程的现代操作系统,所以我们需要进程管理信息数据结构:task_struct、task[64]、GDT等的支撑。
2015-04-18 21:33:25 1454 1
原创 0.11之路(四):从实模式到保护模式
关中断并将system移动到内存地址起始位置 0x00000将CPU的标志寄存器(EFLAGS)中的中断允许标志(IF)置0。这样系统不会再响应中断,直到main函数中能够适应保护模式的中断服务体系重建完毕才会打开,那时候响应中断的服务程序将不再是BIOS提供的中断服务程序,而是系统自身提供的。 就是要完成实模式下的中断向量表和保护模式下的中断描述符表(IDT)的交接工作。借助关中断(cli
2015-04-16 21:57:10 1770
原创 0.11之路(三):system模块
现在载入第三批代码——system模块,仍然使用 int 0x13 中断。 这批代码要比之前多很多,所以需要一点时间,于是出现了 “Loading system …”的字样。但是,此时操作系统的main函数还没有执行,所以它是用汇编来实现的。 system模块被加载至内存的 0x10000 往后的120KB空间中。这样整个操作系统的代码都加载至内存,最后要再次确定一下根设备号。什么是根设备?
2015-04-14 15:30:42 1674
原创 0.11之路(二):加载setup
BIOS将bootsect这个引导程序载入内存后,接下来就要靠bootsect来加载第二批和第三批程序。bootsect首先要做的工作就是规划内存。 实模式下,寻址最大范围是1MB(0xFFFFF)。关于setup程序,在bootsect.s中要指定setup程序的扇区数和被加载到的位置(0x90200),此外还要指定启动扇区(也就是bootsect.s)被BIOS加载的位置(0x07c00)和将
2015-04-10 16:33:48 1709
原创 0.11之路(一):BIOS引导过程
BIOS在内存最开始的位置构建中断向量表,紧接着是BIOS数据区,此外还要有与中断向量表相应的中断服务程序。我们正是利用这些中断服务程序把内核加载到内存中。 中断是操作系统里的一个意义重大的概念,是一个技术手段。加载内核程序并为保护模式做准备对于Linux 0.11来说,计算机将分三批次逐次加载操作系统的内核代码,第一批由BIOS中断 int 0x19 把第一扇区 bootsect 的内容加载到内
2015-04-09 15:36:29 2304
cleanwipe14.2.5323.2000.rar
2020-08-24
Survey of Docker Service
2015-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人