Project Description for Operating System

Get a brief introduction to "Operating System" and learn which features we'll be building in this project.

We'll cover the following

Introduction

A modern Operating System (OS) is a complex piece of software. It must manage finite, yet complex hardware resources while efficiently providing services to user software. In terms of hardware management, the OS must handle the management of processing, storage, and input/output resources. Another important part of the OS is the user shell, which handles user interactions.

The scenario and problems we will discuss in this chapter relate to the memory and process manager modules of operating system software.

Statement

Suppose you are a developer on a famous OS engineering team. Your team is working on several features related to the scheduling of processes as well as efficient allocation of memory to processes. Another module that you are working on deals with the efficient encoding of files on disk.

Features

To implement the above-mentioned functionalities, we will need to introduce the following features:

  • Feature #1: First, we need to determine the number of possible ways one or more running processes with contiguous memory allocation can be preempted to free up memory for a new process.

  • Feature #2: Second, we need to locate the nth process to resume from a list of process IDs that are currently in memory.

  • Feature #3: Order the processes in such a way that whenever a process is scheduled, all of its dependencies are already met.

  • Feature #4: Deploy a compression strategy to identify and isolate all concatenated words.

  • Feature #5: Recover corrupted files by removing the minimum number of unmatched start or end delimiters.

  • Feature #6: Make a file management system to add files and perform wildcard searches.

  • Feature #7: Serialize and deserialize the file systems that are rooted at a specific directory to a remote machine.

  • Feature #8: Compress a file by replacing consecutive repeating characters with their count.

  • Feature #9: Search files in a file directory system, using regular expression matching.

  • Feature #10: Reverse engineer a message digest function to validate if a message digest is possible with a given set of operators.

  • Feature #11: Create a directory tree iterator to iterate through every file and directory in the file system.

  • Feature #12: Validate a potential sequence of priority updates in a multi-processing system.

  • Feature #13: Correct the order of the commands by reversing them in a log file.

  • Feature #14: Release the process lock by finding the process that did not release it.

  • Feature #15: Reconstruct a process queue, using a process’ priority and the number of processes with a higher priority.

Understanding these feature requests and designing their solutions will help us implement the requested functionality into the operating system.

In the next few lessons, we’ll discuss the recommended implementations of these features. Before we start, think about how you would implement these features. As you do, you’ll realize some of the underlying problems that you’ll need to solve. The solutions to these basic problems are also applicable to other common coding interview questions.

Level up your interview prep. Join Educative to access 80+ hands-on prep courses.