38 1234
发新话题
打印

操作系统的一些问题(都是考研真题)

操作系统的一些问题(都是考研真题)

1,NT操作系统线程状态转移图

2 改进的多级目录结构的组织方式,及优点。

3 理发师算法

4 NTFS 目录结构,并说明它对文件检索性能的影响。

5 给出下面程序的输出结果,并说明为什么。

#include "stdio.h" int main(void) { int I,A,B; A=100;B=200; while((I=fork())==-1); printf("Test....\n"); if(I!=0) { printf("It is parent process.\n"); A+=B; wait(NULL); printf("In parent : A=%d, B=%d,\n",A,B); printf("My Child Process,ID number %d exited.\n",I); exit(); } else { printf("It is child process.\n"); B+=A; printf("In child: A=%d, B=%d\n",A,B); } printf("It is child or parent process.\n"); exit(); }

TOP

我自己大概说一下的想法。我猜想的答案。(正确答案我也不知道了。很希望知道了。)

It is parent process

It is child process

In child: A=300, B=500

In parent : A=300 B=500

My Child Process,ID number 1 exited

It is child or parent process

没什么把握对错。。主要是句子的先后顺序了。。估计A,B的值是对的吧!!别的句子的先后我就没把握了。

TOP

运行结果居然是

Test.... It is child process. In child: A=100, B=300 It is child or parent process. Test.... It is parent process. In parent : A=300, B=200, My Child Process,ID number 1008 exited.

TOP

fork( )系统调用:
fork( )系统调用拷贝当前进程的内容,产生一个新的进程。调用fork( )的进程称为父进程,而所产生的新进程则称为子进程。子进程会继承其父进程的一切特性,但拥有自己的数据段,子进程对所属变量的改变不会影响到父进程的变量值。

TOP

TOP

又一结果。

Test....

It is parent process. Test....

It is child process. In child: A=100, B=300 It is child or parent process. In parent : A=300, B=200, My Child Process,ID number 4578 exited.

TOP

这样吧,我们一起研究,我也是今年cs的考生,应该和你是考同一个地方的,hoho

我的邮箱是:gundam0083@163.com

那个程序,我曾上机试过,过几天告诉你结果,hoho.交个朋友.

TOP

请教:wait(NULL)需要有别的进程发消息吗?

landdyking@sohu.com

TOP

To makefriend8: 你的最后一个结果是对的,我在自己的linux系统上运行过了。 1 #include "stdio.h" 2 int main(void) 3 { 4 int I,A,B; 5 A=100;B=200; 6 while((I=fork())==-1); 7 printf("Test....\n"); 8 if(I!=0) 9 { 10 printf("It is parent process.\n"); 11 A+=B; 12 wait(NULL); 13 printf("In parent : A=%d, B=%d,\n",A,B); 14 printf("My Child Process,ID number %d exited.\n",I); 15 exit(); 16 } 17 else 18 { 19 printf("It is child process.\n"); 20 B+=A; 21 printf("In child: A=%d, B=%d\n",A,B); 22 } 23 printf("It is child or parent process.\n"); 24 exit(); 25 }

是这样的,我们假设首先运行的那个进程为父进程,其PID为1,那么当运行到第11行时,父进程中的A为300,B为200。然后父进程挂起自己, 等待子进程(假设PID为2)结束。子进程开始运行,printf语句打印出与前面父进程相同的句子。当子进程运行到第8行时,通过if条件语句 跳到第17行,然后打印出"It is child process.\n"以及"In child: A=%d, B=%d\n",再然后是"It is child or parent process.\n"。然 后,子进程结束。父进程继续运行。打印出"In parent : A=%d, B=%d,\n"以及"My Child Process,ID number %d exited.\n",最后通过 exit语句结束。

TOP

欢迎大家一起来交流关于OS的问题[em04]

TOP

 38 1234
发新话题