Skip to content

Shehapp/FOS_OS

Repository files navigation

FOS

An operating system capable of executing various programs.
It optimizes CPU usage through its multiprocessing features
and offers a user interface with commands for program execution.

1. Virtual Memory Management

Kernel creates a separate 4GB virtual memory space for each process.
This virtual space is connected to RAM or Disk using Paging Address Translation.
Both virtual memory and physical memory are divided into Pages of size 4KB.
This allows processes to seamlessly use memory beyond the physical RAM constraints
while also providing memory protection and sharing capabilities.
Virtual Memory layout

2. Kernel Memory

Kernel Memory starts from a constant point, KERNEL_BASE, and extends up to the base plus 265MB in Virtual Memory
and is mapped in RAM from 0 to 256MB.
kernel Memory allocates executable files (.exe) of programs that need to run,
along with page tables and directory tables, among other things. It includes it own heap and stack.
Memory in the kernel heap can be allocated (show code) using first fit (show code) and best fit (show code) strategies,
and it also supports memory freeing (show code) and reallocation (show code).

2. User Memory

User Memory from 0 and extends up to KERNEL_BASE in Virtual Memory.
The User Memory allocates Program Code and Data, It includes it own heap and stack.
Memory in the User heap can be allocated (show code) and it also supports memory freeing (show code).

3. Process

When a process needs to run, kernel creates a structure called 'Env' for it.
This structure contains metadata about the process such as its id, status, and current working set (see more).
kernel handles this allocation and creates a 'working set' structure for each frame it allocates.
We utilize both LRU (show code) and FIFO (show code) strategies to manage the working set of a process.

3. Kernel Mode

  • Solve competition in Memory by virtual memory (RAM + DISK):
    FOS can run programs with size greater than RAM.
    the system can select a victims from environments and add em to DISK if RAM becomes full.

  • Solve competition in CPU through multiprocessing:
    This allows FOS to run multiple processes simultaneously.
    The Round Robin (RR) (show code) and Berkeley Software Distribution (BSD) (show code) strategies are used to manage this.

4. User Mode

FOS provides a command line interface (CLI) which allows users to load, execute and kill programs.

My Image

  • enable FIFO strategy

    FOS> fifo
  • enable LRU strategy

    FOS> lru 2
  • enable BSD strategy

    // to enable BSD by 64 priorities and  5 quantum
    FOS> schedBSD 64 5

5. code example

//run merge sort and quick sort by lru and BSD
FOS> lru 2
FOS> schedBSD 64 10
FOS> load qs 5000 100  // active list of size 5000 and second list of size 100
FOS> load ms1 100 20 
FOS> runall
FOS> kill 2048 // call env_free to free up exit env
FOS> kill 2049

6. References

6. Contribution

If you think that anything can be improved in any way, please do suggest :
Open pull request with improvements
Discuss ideas in issues.

About

Memory and CPU Management

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •