Program to show that Linux provides time sharing environment to processes

Time-sharing means sharing of computing resources among many users (processes) by means of multiprogramming and multitasking. By allowing a large number of users to interact concurrently, time-sharing dramatically lowered the cost of providing computing capability.

Many operating system including Windows, Linux and many others provides time-sharing mechanism to different processes.
Here, our task is to show that Linux provides time-sharing mechanism using a simple program.

Approach : Here, two process (parent and child) is created using fork() system call having some print statement in loop. In output we will see that print statement of these two process will execute alternatively showing time-sharing mechanism between two processes.



filter_none

edit
close

play_arrow

link
brightness_4
code

// C program to demonstrate that Linux is
// time-sharing
#include<stdio.h>
#include<unistd.h>
  
// Child process
void child()
{
    int i;
    for (i = 0; i < 50; i++)
        printf("I am child %d\n", i);
}
  
// Parent process
void parent()
{
    int i;
    for (i = 0; i < 50; i++)
        printf("I am Parent %d\n", i);
}
  
// Driver code
int main()
{
    pid_t pid = fork();
  
    // fork() error
    if (pid < 0)
        printf("Fork Failed");
  
    // child
    else if (pid == 0)
        child();
  
    // parent
    else
        parent();
  
    return 0;
}

chevron_right


Output:
In the below screenshot, we can see that both print statement is executing concurrently and not one after completion of other.

This article is contributed by Aditya Kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up