摘要:
一、进程的创建1.系统调用clone()与fork()的区别:资源的继承方式参数区分父进程与子进程的方法fork()全部复制,即父进程的所有资源全部通过数据结构的复制传给子进程无参数父进程与子进程,从fork()返回时的返回值不同,以此区分二者。子进程返回0.父进程返回子进程的pidclone()有选择地将资源复制给子进程,没有复制的资源通过指针复制的方式与子进程共享(共享与复制的关系见2)有参数,用于设置资源复制的方式clone()所产生的子线程的PID有可能是0,因此采用比较系统堆栈指针的方法来区分二者。note:(1)为什么返回值的方式对fork()适用?因为fork()后子进程拥有独立 阅读全文
摘要:
1.进程切换是指:保存prev进程的上下文,用next的上下文替代。其中上下文包括:页全局目录、内核态堆栈、硬件上下文。2.80x86为进程切换提供的硬件支持:第一种:通过任务门第二种:通过JMP和CALL指令:把硬件上下文存在TSS中,执行这条指令时,通过硬件自动切换TSS,完成硬件上下文的过程TSS是任务状态段,只能存放在GDT中,不能存放在LDT中3.Linux使用的硬件上下文切换方法:通过一组MOV指令逐步执行切换,手动模拟1的过程因为这样效率较高,也便于各种检查和保护4.Linux的进程切换不使用80x86提供的硬件方法,但是为了与80x86兼容,仍会为每个CPU创建一个TSS(按照 阅读全文