| ,创建idle进程时使用了CLONE_PID标志位。
在do_fork()中,新进程的属性设置为:
- state:TASK_UNINTERRUPTIBLE
- pid:如果设置了CLONE_PID则与父进程相同(仅可能为0),否则为下一个合理的pid
- cpus_runnable:全1;未在任何cpu上运行
- processor:与父进程的processor相同;子进程在哪里创建就优先在哪里运行
- counter:父进程counter值加1的一半;同时父进程自己的counter也减半,保证进程不能通过多次fork来偷取更多的运行时间(同样,在子进程结束运行时,它的剩余时间片也将归还给父进程,以免父进程因创建子进程而遭受时间片的损失)
- 其他值与父进程相同
子进程通过SET_LINKS()链入进程列表,然后调用wake_up_process()唤醒(见上"调度器工作时机")。
上一页 [1] [2] |