Code:#include "mpos-app.h" volatile int counter; void run_child(void); void start(void) { pid_t p; int status; counter = 0; while (counter < 1025) { int n_started = 0; // Start as many processes as possible, until it fails to start // a process or it has started 1025 processes total. while (counter + n_started < 1025) { p = sys_fork(); if (p == 0) run_child(); else if (p > 0) n_started++; else break; } if (n_started == 0) break; // Retrieve old processes' exit status with sys_wait(), // to make room for new processes. for (p = 2; p < NPROCS; p++) (void) sys_wait(p); } sys_exit(0); } void run_child(void) { int input_counter = counter; counter++; console_printf("Process %d lives, counter %d!\n", sys_getpid(), input_counter); sys_exit(input_counter); }