进程销毁 内核销毁流程 当用户程序调用exit()函数的时候,触发了系统调用,最后调用到kernel/exit.c中的sys_exit()函数,最后底层调用int do_exit(long code)。该函数会释放进程的代码段和数据段占用的内存 关闭当前进程打开的所有文件,对当前的目录和inode节点进行同步 如果当前要销毁的进程有子进程,那么就让…
进程调度 进程调度相关概念 多任务操作系统就是能同时并法地交互执行多个进程的操作系统,多任务系统分为两类: 非抢占式操作系统 抢占式操作系统 linux是抢占式的多任务模式,它由调度程序决定什么时候停止一个进程的运行,以便其他的进程能够得到执行机会 策略 策略决定调度程序在何时让什么进程运行 进程可以分为I/O消耗型和处理器消耗型,I/O消耗型指的…
0.1版本的中断流程 Linux中断工作流程 中断处理过程: 将所有寄存器的值入栈 将异常码(中断号)入栈 将当前的函数返回值入栈(为了能够在中断执行完成后恢复到被中断的地方) 中断执行过程:调用对应的中断执行函数 中断恢复过程 函数返回值出栈 寄存器值出栈 Linux0.11的内核版本还没有中断上下半部的产生,内核代码非常精简,其设计哲学就是简单…
进程初始化与创建 Linux进程表示 Linux内核对于进程的表示使用的是task_struct结构体,它的定义在<include/sched.h>中,每一个进程都被抽象为一个task_struct结构体 而所有进程是用一个task_struct链表来管理 struct task_struct * task[NR_TASKS] …
进程运转方式 系统时间 Linux 0.11 的系统当前时间计算方式是: 当前 Unix 时间 = 启动时的 Unix 时间 + 开机后的运行秒数 = startup_time + jiffies / HZ 开机时间获取 CPU内部有一个系统时间RTC(cmos),会在上电的时候调用mktime函数计算出从1970年1月1日0时到当前开机时间经过的…