fork.c源代码读后理解

fork.c源代码读后理解
fork.c源代码读后理解

FORK.C的读后理解

在本次操作系统的实习中,我按照老师给出的流程要求,在熟悉linux系统的基本操作上,花了一天半的时间,专门阅读的有关文献,和参看了linux系统的fork.c 文件的源代码。

收获了许多东西,下面,将我的体会列出如下:、

首先,在linux系统中,只有唯一一个函数可以参与系统或者用户子进程的创建,那就是fork.c中间的fork函数。

1是一个十分重要的系统调用,一位一个进程想要创建他的一个或者多个子进程,只能通过1函数调用。其具体的工作流程大致如下,首先,进程向系统发出调用1的请求,系统通过执行1函数,复制出一个几乎和父进程一样的子进程,这个子进程除了进程的id号不同之外,机会和它的父进程拥有相同的资源。包括uid和gid,如果系统要让子进程运行其他的任务,可以调用相关函数,必如execve函数,将目标代码段复制进入子进程的空间中。在这个期间,父子进程可以平行执行。

例如linux系统的初始化,通过1函数一步一步的创建出用户进程

1号进程->tty终端进程->Login进程->用户进程

其次,1函数在调用的过程中,有它独有的特性,必如调用一次,返回两次值,一次是给父进程返回子进程的id,表示父进程可以产生多个子进程,表示所属关系,而子进程返回id值为0,表示从属关系,同时子进程也可以通过相关函数实现对父进程的获取。如getfatherid()函数。

另外,父进程和子进程,在通过1函数调用之后,可以共享很多的资源,可以实现在同样的资源池里分享资源。必如:

实际用户I D、实际组I D、有效用户I D、有效组I D。

?添加组I D。

?进程组I D。

?对话期I D。

?控制终端。

?设置-用户- I D标志和设置-组- I D标志。

?当前工作目录。

?根目录。

?文件方式创建屏蔽字。

?信号屏蔽和排列。

?对任一打开文件描述符的在执行时关闭标志。

?环境。

?连接的共享存储段。

?资源限制。

但是在1函数的作用下,父子进程也有许多不相同的地方必如:

? fork的返回值。

?进程I D。

?不同的父进程I D。

?父进程设置的锁,子进程不继承。

?子进程的未决告警被清除。

但是在调用1函数的时候,也是有风险的,必如在系统已经存在进程过多,无法分配足够的id给新进程的时候,在改父进程的子进程过多,超过限定值,处于失控状态的时候。

最后,是我在阅读了相关代码和书籍之后,总结出来的fork.c文件在系统创建子进程的流程图。

相关主题
相关文档
最新文档