Operating Systems are the heart of computers. Without it, we would not really be able to use computers as we do today. An Operating System is the software that controls the hardware and resources of a computer. Its job is to manage applications to use the CPU, RAM, Hard Disk and other peripherals that may be attached to a computer. In a way, you can think of an Operating System as the Government; they do not really do anything apart from providing an environment for people, and businesses to work in to perform useful tasks.
Let us first look at what a process is. Essentially, a process is a task that needs to be performed. The Operating System job is to ensure processes are completed and that the relevant hardware resources required can be accessible. If you are using Unix, you can see the processes running on a computer by using the PS or TOP commands, and on windows, you can use the Task Manager. It is important to note that a CPU can only perform one process at a time. So when multiple processes have to be performed, the Operating System ‘time-slices’ processes to ensure that all processes are completed. Processes also contain threads, which are simultaneous paths of execution.
There are two terms that you need to become family with – spawn and fork. Spawn are dependent processes that performs a task, and then performs another task that was dependant on the previous task. For example, a parent process cannot continue until the child process runs and feeds the information back to the parent process. However, fork is independent, so it essentially does not wait for the child process to run, and it makes the child process run in the background.
In a practical sense, think of it like cooking a sausage. With spawn, you butter your bread, once that is done, you put on the BBQ and cook your sausage. With fork, you put your sausage on first, and while it is cooking, you butter your bread.
Operating Systems Access Controls
As mentioned previously, the operating system is in charge of all the computers resources, so it needs to control them. However, not all parts of the system, or even users, need to be able to access the processes, so there is a need for access controls. Access controls are based on the system’s configuration and policies set by the administrator of the computer, or the Operating System itself. Therefore, there is a need to associated users with a set of permissions for system resources. What is required to be set is read, write, and execute.
In a conceptual level, each process and system resource has a single owner who belongs to a group. The owner can then give a group reading access, writing access, or execution access. However, the root user (UNIX), or the Administrator (Windows) can overwrite these permissions.
The file system is important for a computer as it stores all the information regarding the Operating System, and the applications and device drivers that the system uses. Hard Drives do need to be formatted with a particular file system. The file system structures the hard disk so that data can be easily written too and retrieved by the Operating System. The file systems that the Windows Operating System uses are FAT, FAT32, and NTFS; while UNIX uses ext2, ext3, ext4. The file system stores data into sectors and blocks (or clusters in Windows). Think of this like painting car park spaces. A sector could be a specific level of the car park, a block can be a row of car parking spaces, with the individual data being the cars in each space.
Hard Disks also contain Swap Space. This is used for the virtual memory for the operating system. This space provides a secondary storage location for the RAM for data that may not fit in the RAM.
Hard Disks may also be partitioned which essentially splits the hard disks into two sections. The benefits of this to allow two Operating Systems as each Operating System has its own boot manager, and data on each partition can be better managed, as one partition can be formatted, while the other partition is still intact.
There are a few other terms that Operating Systems use that should be mentioned:
· Device Drivers – A file or compiled code that allows higher-level computer programs to interact with a piece of hardware. For example, an Operating System requires device drivers for your sound card, network interface cards, and your graphics cards to be able to use those devices
· Kernel – The main codebase of your operating system
· Sources and Packages – Used in Unix: Sources is the binary file of source code, and packages are pre-configured binary files that are ready for distribution
· Initialisation Scripts – Are scripts that run to prepare files or configurations
· Symlink – Symlinks are categorised into Hard Link, and Soft Link and are used to essentially have two copies of the same file. A Hard link is an association between two or more files, usually one file storing information about another, or a Soft Link which is one file points to another file (like a shortcut in Windows)