Processes and Process Management

  • A process is basically a program in execution

  • The execution of a process must progress in a sequential fashion.

  • when we execute a program (ie one programmed like a jar running on a jvm), it becomes a process which performs all the tasks mentioned in the program.

  • When a program is loaded into the memory and it becomes a process, it can be divided into four sections ─ stack, heap, text, and data.

    • Stack: The process Stack contains the temporary data, such as:

      • method/function parameters, return address, and local variables.

    • Heap: This is dynamically allocated memory to a process during its run time.

    • Text: This includes the current activity represented by the value of Program Counter and the contents of the processor’s registers.

    • Data: This section contains the global and static variables.

  • When a process executes, it passes through different states. These stages may differ in different operating systems, and the names of these states are also not standardized.

    • Can have one of 5 states at a time

      • Start: The initial state when a process is first started/created.

      • Ready: The process is waiting to be assigned to a processor.

        • Ready processes are waiting to have the processor allocated to them by the operating system so that they can run.

        • A process may come into this state after the Start state, or while running it by but getting interrupted by the scheduler to assign CPU to some other process.

      • Running: Once the process has been assigned to a processor by the OS scheduler, the process state is set to running and the processor executes its instructions.

      • Waiting: the process moves into the waiting state if it needs to wait for a resource,

        • such as waiting for user input, or waiting for a file to become available.

      • Terminated or Exit: Once the process finishes its execution, or it is terminated by the operating system, it is moved to the terminated state where it waits to be removed from main memory.

  • A Process Control Block is a data structure maintained by the Operating System for every process. The PCB is identified by an integer process ID (PID). A PCB keeps all the information needed to keep track of a process:

    • Process State: The current state of the process

      • whether it is ready, running, waiting, or whatever.

    • Process Privileges: This is required to allow/disallow access to system resources.

    • Process ID: Unique identification for each of the processes in the operating system.

    • Pointer: A pointer to the parent process.

    • Program Counter: Program Counter is a pointer to the address of the next instruction to be executed for this process.

    • CPU Registers: Various CPU registers where processes need to be stored for execution for running state.

    • CPU Scheduling Information: Process priority and other scheduling information which is required to schedule the process.

    • Memory Management Information: This includes the information of page table, memory limits, and segment table, depending on the memory used by the operating system.

    • Accounting Information: This includes the amount of CPU used for process execution, time limits, execution ID, and so on.

    • IO Status Information: This includes a list of I/O devices allocated to the process.

Last updated