文档详情

Linux内核体系结构.ppt

发布:2024-04-19约3.54千字共25页下载文档
文本预览下载声明

Linux内核体系结构内核模式

进程控制

系统调用

中断机制

系统定时

内存管理Linux内核模式应用程序

系统服务

支持函数

Linux内核系统用户程序库函数系统调用接口文件子系统高速缓存字符设备设备驱动程序块设备硬件控制硬 件进程间通讯调度程序内存管理进程控制子系统用户级内核级硬件级进程管理什么是进程?什么是线程?进程(process)是一个执行中的程序实例。本质上是操作系统进行调度的实体。在Linux中进程和线程没有本质区别。只是共享的内容不一样而已。进程管理进程描述符及任务队列structtask_structunsignedlongstate;intprio;unsignedlongpolicy;structtask_struct*parent;structlist_headtasks;pid_tpid;…structtask_structunsignedlongstate;intprio;unsignedlongpolicy;structtask_struct*parent;structlist_headtasks;pid_tpid;…structtask_structunsignedlongstate;intprio;unsignedlongpolicy;structtask_struct*parent;structlist_headtasks;pid_tpid;…structtask_structunsignedlongstate;intprio;unsignedlongpolicy;structtask_struct*parent;structlist_headtasks;pid_tpid;…进程描述符任务链表进程管理分配进程描述符current_thread_info()栈指针最高的内存地址栈首structthread_struct进程内核栈最低的内存地址threadinfo有一个指向进城描述符的指针进程的task_struct结构structthread_info{structtask_struct*task;…unsignedlongflag;__u32cpu;…}进程管理进程状态现存的任务调用fork()函数并且创建一个新进程TASK_RUNNING(准备就绪但还未投入运行)TASK_RUNNING(正在运行)TASK_ZOMBIE(任务被终止)TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE(等待)调度程序将任务投入运行:schedule()任务通过do_exit()函数退出任务被优先级更高的任务抢占为了等待特定事件,任务在等待队列上睡眠等待的事件发生后任务被唤醒并且被重新置入运行队列中进程管理-进程运行状态◆运行状态(TASK_RUNNING)当进程正在被CPU执行,或已经准备就绪随时可由调度程序执行,则称该进程为处于运行状态(running)。进程可以在内核态运行,也可以在用户态运行。当系统资源已经可用时,进程就被唤醒而进入准备运行状态,该状态称为就绪态。这些状态在内核中表示方法相同,都被成为处于TASK_RUNNING状态。◆可中断睡眠状态(TASK_INTERRUPTIBLE)当进程处于可中断等待状态时,系统不会调度该进行执行。当系统产生一个中断或者释放了进程正在等待的资源,或者进程收到一个信号,都可以唤醒进程转换到就绪状态(运行状态)。进程管理-进程运行状态◆暂停状态(TASK_STOPPED)当进程收到信号SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU时就会进入暂停状态。可向其发送SIGCONT信号让进程转换到可运行状态。◆僵死状态(TASK_ZOMBIE)当进程已停止运行,但其父进程还没有询问其状态时,则称该进程处于僵死状态。◆不可中断睡眠状态(TASK_UNINTERRUPTIBLE)与可中断睡眠状态类似。但处于该状态的进程只有被使用wake_up()函数明确唤醒时才能转换到可运行的就绪状态。进程管理进程上下文当一个进程执行了系统调用或触发了某个异常,它就陷入的内核空间。此时。我们称内核“代表进程执行”并处于进程上下文中。此时上下文中的current宏是有效的。进

显示全部
相似文档