美文网首页操作系统学习笔记
进程管理(二)Ucore实现

进程管理(二)Ucore实现

作者: minlover | 来源:发表于2017-06-08 16:33 被阅读8次

    1、0号进程

    Ucore的初始进程:idleproc,PID=0,所有进程或内核线程都是idle的后代,是idle的clone,idle是静态创建启动的。

    state状态始终为PROC_RUNNABLE运行态;系统堆栈为bootstack;need_resched始终为1(需要调度),一直循环检查是否有就绪的,随时准备将CPU让出;context和trapframe为空(做完1好进城,需要调度后,0号进程失去CPU,保存现场,使context有内容);idle不在proc_list和hash_list中。


    2、1号进程

    initproc是一号进程,idle进程动态创建,是一个内核线程。

    内核线程 --> kernel_thread  只能在内核中使用 ;用户进程 --> fork  常在用户空间使用。

    均由do_fork实现,具体ucore过程见ppt。


    3、用户进程

    init创建的第一个用户进程。

    到用户堆栈后特权级变为3,内核态为0。

    (详见ppt)


    4、系统调用

    (1)fork —— 用户进程使用的进程创建函数

    (2)exec —— 用户进程使用的加载函数

    (3)yield —— 告诉内核可以让一下CPU

    (4)exit —— 请求终止自己。

    idle和init进程不能终止。

    (5)wait —— 由父进程调用,回收已经终止的子进程

    (6)kill —— 用于杀死指定进程

    相关文章

      网友评论

        本文标题:进程管理(二)Ucore实现

        本文链接:https://www.haomeiwen.com/subject/gxctqxtx.html