[Main menu]

OS Maintained Tables

Process List


Purpose

The Process List is used in the system by the multitasking subsystem. The list contain all the processes running on the system.


Structure of the Process List

These fields are used in the Process List. One set of values for each process in the system. Each set of values take 32 bytes of memory. These are the fields:

Structure of the Process List
Field Name Field Size Description
Process ID32 bitsA unique ID which identify the process.
Task State Segment32 bitsThe Task State Segment of the process.
Code Segment32 bitsThe code segment in the TSS for this process.
CS Pointer32 bitsInstruction Pointer in the code segment.
Data Segment32 bitsThe primary data segment. Used with the distributed systems.
DS Pointer32 bitsData pointer in the data segment. Used with the distributed systems.
Priority16 bitsHow much priority this process has.
Privilege Level16 bitsThe process privileged level, this is initial given by the user.
Flags32 bitsOnly a distributed flag has been specified.

Process ID

A unique id in the system. The id is used in many of the other system tables, fx. the multitasking queues.

Task State Segment

The task states segment is were the system save a process' run-time enviroment, before swithing to another process. If hardware multitasking is used through the use of Intel TSS segment, only the first 16 bits are actually used of this field and they would point to a descriptor in the GDT. If software multitasking is used this field points to the linear address of the TSS in memory - and both with and without paging this is the same as the physical address.

Code & Data Segments

These are segment selectors for the Code Segment (CS) and Data Segment (DS) that the process is using. The reason for providing a DS field is when distributing the process, then the system would know which data segment to transfer. The CS value may not be used in some implementations. Again only the first 16 bits are used when using hardware multitasking, and 32 bits are used in software multitasking.

Code & Data Segment Pointers

The pointer to the code segment, is the same as the EIP. The pointer to the data segment, is used when the system is distributing a process.

Priority

The priority defines how often the process has the potential of being executed. The value here decides which suspended queue the process will be moved to when it needs to be executed. Look at the algorithm used to decide which suspended queue to fetch the next process from. A process will be fetched from queue 1 every 2. time the Process Dispatcher is run (as a result of an IRQ0 signal). Processes are fetched from queue 2 every 4th. time, from queue 3 every 8th time and queue 4 every 16th time. With every queue the amount of processing time is cut in half.

Privilege Level

This is a security feature. The way security works in the system looks much like the security features in protected mode of the Intel x86 architechture. But to put it in short:

Flags

These 32 flags will be used to store easy access information on what the system may do with a process. An example could be the flag which inform the system that the process may be distributed.

Process Flags
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
D Reserved 0000h

Distributable Flag

If the D flag is set the process may be micro-level distributed to other systems.