进程初始化:
在内核态下运行的进程不能被其他进程抢占,内核在执行临界区代码时会禁止一切中断。
任务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内核完全注释:基于0.11内核(V5.0)》,开发者不仅可以了解早期Linux内核的设计思想,还可以学习到适用于现代Linux内核的基本原理和编程技巧。这对于系统管理员、软件工程师、内核开发者以及对操作...
Linux内核是操作系统的核心部分,负责管理系统的硬件资源、提供系统调用接口以及调度进程等。《Linux内核完全注释2.01》是一本针对Linux 0.11内核的详细注释版,由赵炯编著,特别适合初学者了解和学习Linux内核的...
在阅读《Linux内核完全注释(修正版v5.0)》时,你可以了解到每个模块的实现细节,包括数据结构设计、函数接口、同步原语等。这不仅有助于理解Linux内核的工作原理,也有助于开发人员编写更高效的系统级代码,解决性能...
### Linux内核完全注释知识点概览 #### 一、书籍基本信息 - **书名**:《Linux内核完全注释》 - **版本**:0.11 (0.95) - **作者**:赵炯 - **联系方式**: - 邮箱:gohigh@sh163.net - 网站:www.oldlinux.org ...
- **子系统概述**:解释了Linux内核中各个子系统的初始化过程,特别是PCI子系统的初始化流程。通过具体例子,帮助读者理解不同子系统是如何逐步建立起来的。 - **入口函数**:讨论了内核启动过程中涉及的关键函数,...
《Linux内核完全注释0.11内核(修正版V3.0)》是一部深入解析Linux操作系统核心的珍贵文献,它详细解读了Linux 0.11版本的源代码,为理解Linux内核的工作原理提供了宝贵的资料。在这个早期版本的内核中,我们可以洞察...
- **初始化过程**: 描述了Linux内核启动时的初始化流程,包括引导扇区、设置以及初始化程序等。 - **Makefile 文件**: 详细解释了如何通过Makefile文件来编译内核。 ##### 4.3 文件系统 - **Ext2 文件系统**: 对比...
《Linux内核完全注释-赵炯》是深入理解Linux内核的重要参考资料,由专家赵炯精心编写,全面解析了Linux内核的工作原理和技术细节。这本书涵盖了从版本3.0开始的内核知识,对于想要深入研究Linux系统、提高技术水平的...
《Linux 0.11内核完全注释》是一本深度解析早期Linux内核源码的书籍,PDF格式使得读者可以方便地电子阅读和查阅。这本书对于理解Linux操作系统的工作原理,以及内核开发有着重要的参考价值。以下是该书可能涵盖的...
《Linux内核分析 0.11版内核完全注释》是一本深入解析Linux操作系统内核的专业书籍,由赵炯先生编著。该书详细注释了Linux 0.11版本的内核源码,是理解Linux内核工作原理、学习操作系统核心概念的重要参考资料。书中...
赵炯编写的《Linux内核完全注释》是深入理解Linux内核的重要参考资料,尤其对于开发者和系统管理员而言,这本书具有极高的学习价值。 首先,Linux内核的注释有助于我们理解其复杂的源代码结构。Linux内核源码是开源...
Linux内核是操作系统的核心部分,它负责管理计算机的硬件资源,提供系统调用接口供应用程序使用,以及管理和调度进程。这份“Linux内核完全注释”文档无疑是对Linux内核源代码的重要解析,有助于深入理解其工作原理...
《Linux内核完全注释》是由赵炯编著的一本专为Linux爱好者和开发者准备的深入解析Linux内核的书籍。这本书详细注释了Linux内核的源代码,旨在帮助读者理解这个开源操作系统的核心机制。以下是一些主要的知识点: 1....
Linux内核是操作系统的核心部分,负责管理系统的硬件资源,调度进程,处理中断,管理内存,以及与设备驱动程序交互等任务。0.11版本虽然相对现代内核来说功能较为有限,但它包含了基本的进程管理、内存管理、文件...
《Linux内核完全注释》是一部深度解析Linux内核的重要参考书籍,由赵炯编著。这个修正版v2.0包含了800页的详细注释和源码,为学习和理解Linux内核提供了宝贵的资源。压缩包中的三个文件分别是不同格式的Linux 0.11...
本书对早期的linux操作系统内核(v0.11)全部源代码文件进行了详细的注释和说明,旨在让读者能够在短时间内对linux的工作机理获得全面而深刻的理解,为进一步学习和研究linux系统打下坚实的基础。书中首先介绍了...
通过阅读《Linux内核完全注释》并对照源代码,初学者不仅可以了解到操作系统的基本原理,还能掌握实际操作技巧,从而为进一步研究更复杂的Linux内核版本打下坚实基础。对于想要从事操作系统开发或系统级编程的人员来...
Linux内核完全注释(修正版v3.0)是一本深入讲解Linux内核代码的参考书籍。它旨在帮助读者通过详细注释的方式,更深入地理解Linux内核的构建和运作机制。这本书籍适用于那些希望提升自身在操作系统底层编程能力的...