【我的笔记】进程管理(二)Ucore实现

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 —— 用于杀死指定进程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,173评论 0 23
  • Linux 进程管理与程序开发 进程是Linux事务管理的基本单元,所有的进程均拥有自己独立的处理环境和系统资源,...
    JamesPeng阅读 2,512评论 1 14
  • 1 进程介绍 1.1 进程和程序 所谓进程是由正文段(text)、用户数据段(user segment)以及系统数...
    疯狂小王子阅读 1,263评论 0 7
  • 豆皮是家乡特色的主食,它的做法和面条之类的大致差不多,伴着吃、炒着吃抑或煮着吃,样样做法都有其独特的风味。我最喜欢...
    东土豆阅读 545评论 0 2
  • 一,千年 千年等待,早已浮生百变,换骨脱胎, 泣露山中,几千年来还是同样的景色,崖高岭危,峰岩重叠,涧壑弯环,松楠...
    覆白阅读 719评论 0 1