The term multi-user system denotes operating system or application software in which concurrent access is possible by many users on a computer system. This is also known as time-sharing. There are many systems for batch processing in mainframe computers that can also be termed as 'multi-user'. The concept has come from the fact that CPU is much faster than any peripheral device and CPU remains idle when certain input/output operations are awaited. This multi-user concept combined with multi-tasking ensures maximum utilization of CPU. Thus, a multi-user operating system accommodates many users for using the same computer simultaneously and/or at different times. UNIX and Linux are such operating systems that are multi-user. Linux is used as a generic term that refers to UNIX like operating systems having Linux kernel. An operating system contains a set of software packages for managing interactions with hardware parts of the operating system.
Essential three elements are, Kernel for performing the basic functions of managing process, memory, files, inputs/outputs as well as functionality for communication; shell that allows communication with OS using a language for control by which user is able to control the computer hardware without knowledge of hardware and third is file system that allows information to be recorded as files in a tree-like structures. In a multi-user environment, a Linux PC can be connected to many terminals such that every user gets an impression that he/she is using that as a standalone computer. During start up, a UNIX/Linux initializes and booting process first and comes to a single user mode and then it goes to multi-user mode. In Linux, control flows from BIOS to boot loader and then to kernel. It is kernel that starts the scheduler that in turn starts a process to enable multi-tasking and runs first userland program 'init' that lies outside the kernel space. This program (init) sets up user environment allowing users to interact with computer after logging on. After this kernel becomes idle but becomes active only when called by user externally. Following actions are done in the start up and moving to multi-user environment:
Read Also :
1. BIOS, takes startup tasks that are specific to hardware-platform.
2. After recognizing the hardware BIOS loads and then executes the code for partition boot from the boot device that is designated and it contains first phase of the Linux boot loader. This loads the second phase that contains boot loader code.
3. This boot loader presents a menu for the user for booting options. Operating system is then loaded into memory, setting up essential hardware and memory paging and then calls start_kernel (). 4. This called function start_kernel () performs main system setup. This starts the 'init' process
5. After this scheduler takes over the control for managing the system and multi-user functionality is given. Kernel becomes idle and wakes up only on call.
6. The 'init' process has responsibility of executing scripts as may be needed to set up all services and structures that are non-operating and allows creating user environment giving them a login screen in a multi-user environment.