摘要:现代操作系统的重要特征就是支持实时多任务——同时运行多个程序。运行中的程序被称为进程。在类UNIX操作系统的设计者看来,操作系统的核心就是进程。 所谓的操作系统就是若干个正在运行、操作的进程构成的系统。按照这个思路,进程的创建只可能由进程承担,也就是父子进程创建机制。在任何情况下,至少得有 一个进程
阅读全文
摘要:1. 使用模块机制 测试模块hello.c #include <linux/init.h> #include <linux/module.h> static int __init hello_init(void) { printk("Hello world\n"); return 0; } stat
阅读全文
摘要:1. 挂载文件系统 当前系统已经完成了根文件系统的挂载,将要挂载新的文件系统。 新的文件系统挂载在根文件系统的某个目录的inode上。 1)将硬盘的超级块读出,载入系统的super_block[8]中 2)从根文件系统读出指定的inode,载入inode_table[32] 3)将硬盘的超级块挂接到
阅读全文
摘要:现在已经有进程0,进程1,并挂载根文件系统,接下来创建进程2,并加载shell。 1. 打开标准输入,标准输出,标准错误 加载完根文件系统后,进程1调用open打开标准输入 open产生软件中断 int0x80,根据在IDT中的偏移,进入sys_open函数。 sys_open 分配 文件描述符,分
阅读全文
摘要:0. 前言 现在已经有了处于特权3的进程0,将使用fork出进程1,之后的进程也使用fork。 void main() { sti(); move_to_user_mode(); // 切换到特权3 if (!fork()) { init(); // 进程1进行init } for(;;) paus
阅读全文
摘要:1. 上电时发生了什么 CS寄存器和IP寄存器被置位,让cpu运行BIOS程序。这个步骤是硬件实现。 CS寄存器为 code segment register,ip/eip : instrucation pointer 这时BIOS被执行,BIOS之所以能被执行,还因为他被写入ROM中,ROM是掉电
阅读全文
摘要:1. 前言 Linux 0.11是一个支持多进程的现代操作系统。这就意味着,各个用户进程在运行过程中,彼此不能相互干扰,这样才能保证进程在主机中正常地运算。然而,进程自 身并没有一个天然的“边界”来对其进行保护,要靠系统“人为”地给它设计一套“边界”来对其进行保护。这套“边界”就是系统为进程提供的进
阅读全文