Giter VIP home page Giter VIP logo

kos-mos's People

Contributors

marineltinnirello avatar

Stargazers

 avatar

Watchers

 avatar  avatar

kos-mos's Issues

Create file system

Develop your fsDD to insulate and encapsulate the implementation of the kernel-level I/O operations (noted above) from the byte-level details of your individual blocks on the local storage.

Implement virtual memory

Allow the OS to execute four or more concurrent user process by writing roll-out and roll-in routines to:

  • Take a ready process and store it to the disk via your fsDD
  • Load a swapped-out process from disk and put it in the ready queue
  • Your ready queue should denote which processes are where

Formatting options

Implement command line options for format:

  • quick: Initialize the first four bytes of every directory and data block
  • full: Same as quick and also initializes bytes 4-63 in directory and data blocks too

Shell commands

Add the following shell commands:

  • clearmem: clear all memory partitions
  • runall: execute all programs at once
  • ps: display the PID and state of all processes
  • kill : kill one process
  • killall: kill all processes
  • quantum : let the user set the Round Robin quantum (measured in CPU cycles)

Validate user's code

Validate code if and only if it's in hex digits or spaces.

  • load: validate the user code in the HTML5 text area (id= “taProgramInput”)

Modify the load command

Modify the load command to copy the 6502a machine language op codes into main memory.

  • Put the code at location $0000 in memory.
  • Assign a Process ID (PID).
  • Create a Process Control Block (PCB).
  • Return the PID to the console and display it.

Store multiple programs in memory

Store multiple programs in memory, each in their own partition /segment, allocated by the client OS (which obviously needs to keep track of available and used partitions/segments).

CPU in host OS

Develop a CPU prototype and implement it in the host OS.

Implement context switching

Implement context switches with software interrupts. Be sure to update the mode bit (if appropriate), the PCBs, and the Ready queue.

Disk shell commands

Add the following shell commands:

  • create: Create the file filename and display a message denoting success or failure
  • read: Read and display the contents of filename or display an error if something went wrong
  • write: Write the data inside the quotes to filename and display a message denoting success or failure
  • delete: Remove filename from storage and display a message denoting success or failure
  • format: Initialize all blocks in all sectors in all tracks and display a message denoting success or failure
  • ls: List the files currently stored on the disk

Run command

Add a shell command, run , to run a program already in memory.

Hidden Files

Support hidden files (that do not show up in ls output) with file names that begin with a period

Session storage

Implement a File system in HTML5 session storage as discussed in class.

Host display

Enhance the host display with a graphic task bar that displays

  • current date and time
  • status : status messages as specified by the user

Load file system

Load the fsDD in a similar manner as the keyboard device driver.

Add base and limit registers

Add base and limit registers to your core memory access code in the host OS and to your PCB objects in the client OS.

Update memory status

As the programs executes, update and display the memory, PCB, and CPU status (program counter, instruction reg, accumulator, X reg, Y reg, Z Glag) in real time.

Shell commands

Add some new shell commands:

  • date: displays the current date and time
  • whereami: displays the users current location (or made up location)
  • original command

Error handling

Detect and gracefully handle errors like invalid op codes, missing operands (if you can detect that), and most importantly, memory out of bounds or access violation attempts.

Scroll in CLI

Implement scrolling in the client OS console/CLI.

CLI-side enhancements

Other console/CLI enhancements

  • Accept and display punctuation characters and symbols
  • Handle backspace appropriately
  • Implement command completion with the tab key
  • Provide command history recall via the up and down arrow keys

Display files

Include a file system viewer in your OS interface.

Scheduling shell commands

Add the following shell commands:

  • setschedule: Allow the user to select a CPU scheduling algorithm
  • getschedule: Return the currently selected CPU scheduling algorithm

File shell commands

Add the following shell commands:

  • ls -l: Lists all file names (even hidden ones) as well as their size and create date
  • copy
  • rename
  • check disk and file system disk-like utilities

Ready queue

Create a Ready queue for the running processes.

Execute program

Execute the running program (including displaying memory, CPU, and PCB status as well as any output). Be sure to synchronize the CPU execution cycles with clock ticks.

Create scheduler using round-robin processing

Develop a CPU scheduler in the client OS using Round Robin scheduling with the user-specified quantum measured in CPU cycles (default = 6).

  • Make the client OS control the host CPU with the CPU scheduler.
  • Log all scheduling events.

BSOD

Display a BSOD message (on the CLI) when the kernel traps an OS error, also accessible via a command.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.