进程初始化:
在内核态下运行的进程不能被其他进程抢占,内核在执行临界区代码时会禁止一切中断。
任务0是最原始的进程,宏move_to_user_mode对该进程从内核态移动到用户态,从而完成任务0的“净身”。
为何要“净身“?因为任务0是一切有系统fork()创建的进程的模板,都是通过复制任务0得到的。
fork()一个新进程时,新进程的任务数据结构还没有完成时,该进程状态为不可中断的等待状态TASK_UNINTERRUPTIBLE。
fork.c中sys_fork()调用了两个函数:find_empty_process()和copy_process(),这就是进程创建的两个步骤:进程表中寻找空的位置,然后copy父进程。
新进程创建时的Copy On Write技术:子进程和父进程在最初是同一个内存页面,只有当子或父进程有一个写操作时,系统才会为
执行写操作的进程分配独立的内存页面。
fork()结束前,新进程被置为可运行状态,同时返回新进程号。
fork()和extc()完全不同,fork()纯复制父进程的代码和数据区,exec()将清空父进程的代码和数据区,然后再加载exec()
参数指明的代码和数据并执行。
进程调度:
Linux进程是抢占式的,被抢占的进程仍然出于TASK_RUNNING状态,进程的抢占发生在进程处于用户态执行阶段,
在内核态执行时是不能被抢占的。在内核模式下运行时,如果任务没有主动sleep(),不会让内核切换任务。
进程切换,简而言之就是tss的切换。
终止进程:,这里有很多要注意的。
1、用户程序调用exit()时,内核会执行do_exit(),该方法释放调用进程的内存页面,关闭打开的文件,同步所有i节点。
2、如果进程有子进程,则init进程作为该进程所有子进程的父进程。
3、如果进程是会话头进程并且有控制终端,则释放控制终端,向该绘画的所有进程发送ISGHUP信号。比如Secrt关掉了一个窗口,该窗口
所有启动的进程都可能会被中断。
4、do_exit()之后,该进程状态为僵死状态TASK_ZOMBIE,同时向其父进程发送SIGCHLD。但如果父进程一直没有取得该子进程数据结构,则该子进程
的数据结构将一直保留。这就是僵尸进程的来源。
进程组:一个或者多个进程的集合。每个进程组都有唯一的进程组标识号gid,进程组有个组长,组长的进程pid等于进程组的gid。
管道就是一个进程组。
终端环境初始化:init--fork()-->agetty--exec()-->login--exec()-->shell
fork()和exec()是有很大区别的,init不可能将自己销毁。agetty和login分别做完终端初始化和验证之后就没必要存活了,所以用exec().
引导启动程序一章没看6
初始化进程一章没看前面的7
内核代码一章没看8
信号--第八章--307页,要看
分享到:
相关推荐
Linux内核完全注释最新版2.01(2007-6-6修改)<br>带书签<br>内含Linux 0.11注释的源代码<br>赵炯编写,里面有详细的注释,十分适合初学者
Linux内核完全注释-赵炯pdf Linux内核完全注释
赵炯编著的0.11版linux内核完全注释
linux内核完全注释根据linux0.11编写的。搭配内核设计的艺术2版,学习linux内核的神组合。学习内核建议从linux0.11看起,初始版本内容比较简单,但包含的都是内核的精髓。先上手,学到了方法,后面再看最新版本就更...
0.12版源码注释。非常详细。
ISA桥 51<br>5.5 PCI-PCI 桥 51<br>5.5.1 PCI-PCI桥:PCI I/O和存储地址<br> 空间的窗口 51<br>5.5.2 PCI-PCI桥:PCI配置周期和PCI<br> 总线编号 52<br>5.6 Linux PCI初始化 53<br>5.6.1 Linux内核PCI数据结构 53<br...
《Linux 0.11内核完全注释》
Linux内核0.11完全注释 PDF+WORD版本,阅读方便。
linux-0.11内核完全注释 v1.9.5
Linux内核完全注释-修正版1.9.5.rar
本书对早期的linux操作系统内核(v0.11)全部源代码文件进行了详细的注释和说明,旨在让读者能够在短时间内对linux的工作机理获得全面而深刻的理解,为进一步学习和研究linux系统打下坚实的基础。书中首先介绍了...
Linux内核0.11完全注释-V3.0.pdf 是学习linux原始精髓的利器
增加书签版本的Linux内核完全注释,可编辑,方便阅读。
linux内核详细注释,文件为pdf格式,学习linux的会有帮助。
linux内核分析----初始化 linux内核分析----初始化 linux内核分析----初始化 linux内核分析----初始化
本书对linux早期操作系统内核(v0.11)全部代码文件进行了详细全面的注释和说明,旨在使读者能够在尽量短的时间内对linux的工作机理 获得全面而深刻的理解。 注:配合我的资源中提供的linux-0.11源码阅读更+。
赵炯老师的书,Linux0.11内核完全注释,V3.1版本
子系统的系统结构 330<br>2.1 进程调度程序系统结构 330<br>2.1.1 目标 330<br>2.1.2 模块 330<br>2.1.3 数据表达 331<br>2.1.4 依赖性、数据流和控制流 331<br>2.2 内存管理程序系统结构 331<br>2.2.1 目标 331<br>...
linux0.11内核源码 + linux内核完全注释(配套) linux0.11内核源码和linux内核完全注释配套阅读。
Linux内核进程调度与控制 本文档详细说明了Linux内核进程调度与控制