parent
1f568dd6e1
commit
d75447ab6d
@ -1,18 +0,0 @@
|
||||
/*
|
||||
* The application of lab3_1.
|
||||
* it simply forks a child process.
|
||||
*/
|
||||
|
||||
#include "user/user_lib.h"
|
||||
#include "util/types.h"
|
||||
|
||||
int main(void) {
|
||||
uint64 pid = fork();
|
||||
if (pid == 0) {
|
||||
printu("Child: Hello world!\n");
|
||||
} else {
|
||||
printu("Parent: Hello world! child id %ld\n", pid);
|
||||
}
|
||||
|
||||
exit(0);
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* The application of lab3_2.
|
||||
* parent and child processes intermittently give up their processors.
|
||||
*/
|
||||
|
||||
#include "user/user_lib.h"
|
||||
#include "util/types.h"
|
||||
|
||||
int main(void) {
|
||||
uint64 pid = fork();
|
||||
uint64 rounds = 0xffff;
|
||||
if (pid == 0) {
|
||||
printu("Child: Hello world! \n");
|
||||
for (uint64 i = 0; i < rounds; ++i) {
|
||||
if (i % 10000 == 0) {
|
||||
printu("Child running %ld \n", i);
|
||||
yield();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
printu("Parent: Hello world! \n");
|
||||
for (uint64 i = 0; i < rounds; ++i) {
|
||||
if (i % 10000 == 0) {
|
||||
printu("Parent running %ld \n", i);
|
||||
yield();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
exit(0);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in new issue