我在一个二本类院校,对于linux是不在课程范围的,属于个人爱好吧。自己学习了一些,操作系统上学期开了,老师很水,就期末最后两天学了整本书。
上学期去图书馆借了一本《linux内核设计与实现》当时看的是第二版,但是没有看完,其实收获还是挺多的。
说回正题,前两天有个好朋友给我讲他们操作系统还有实验课,当时我就懵了,确实差距大。于是让他把实验课题发给我,我想看看。很多只有做过实验,才能深刻体会。
编制一段程序,使用系统调用fork( )创建两个子进程,这样在此程序运行时,在系统中就有一个父进程和两个子进程在活动。每一个进程在屏幕上显示一个字符,其中父进程显示字符A,子进程分别显示字符 B和字符C。试观察、记录并分析屏幕上进程调度的情况。
设计思路:
进程的出生:
随着一句fork,一个新进程呱呱落地,但它这时只是老进程的一个克隆。
调用fork创建的子进程,将共享父进程的代码空间,复制父进程数据空间,此时子进程会获得父进程的所有变量的一份拷贝。
系统调用 fork(),在fork函数调用完,如果创建成功就会返回两个进程,一个是father进程和一个新的进程son1(fork的一次调用两次返回)。
fork()返回值意义如下:
=0:在子进程中,表示当前进程是子进程。
>0:在父进程中,返回值为子进程的id值(唯一标识号)。
-1:创建失败。
再在返回的father进程里面调用fork()创建一个新的进程son2.
然后分别在进程打印A,B,C,然后实验一下。