Linux is the most commonly used open source operating system today. As an operating system, it sits underneath all of the other software, receiving requests from other software programs and relaying these requests to the computer's hardware.
In this article we will go through linux operating systems concepts and applications. You will get guidance with relevant theory and practical source code programs, illustrations to understand how linux is practically used in the system to implement project requirements.
Learn to develop embedded systems, interfacing electronic peripherals through real time projects and get required practical skills for software jobs
An operating system works closely with the hardware system. The operating system acts as the interface between user and hardware. So in order to fully understand the Linux operating system, you need to understand the basics of the underlying hardware. At minimum a computer system consists of a CPU or microprocessor, the memory and a number of slots for the peripheral controllers.
CPU calculates, performs logical operations and manages data flows by reading instructions from memory and then executing them. CPU operates on binary data where each digit represents a power of 2. Generally numbers are represented by hexadecimal where each digit represents a power of 16. So 8 is written in binary as 0b1000 and in hex as 0x08. Similary 14 is written in binary as 0b1110 and in hex as 0x0E.
The CPU execution is driven by the system clock(e.g. 100MHz) which generates regular clock pulses to the processor and at each clock pulse, the cpu does some work. For example an instruction can be to read the contents of memory at location A into register B. So CPU executes one or more instruction every clock pulse. Registers are the CPU's internal storage, used for storing data and performing operations on it and can be 32 bit/64 bit wide.
Most CPUs have special purpose registers such as Program Counter which points to the next instruction to be executed, Stack pointer which helps in accessing, saving and restoring large amount of external read/write RAM for facilitating temporary storage of data, processor status to hold information like the current state of the processor(e.g. kernel mode and user mode).
Instructions have to be fetched from memory as they are executed. Read only memory(ROM) are used to store permanent data and RAM is used for temporary storage of data. System bus is divided into three logical functions, the address bus which specifies the memory locations (addresses) for the data transfers, the data bus((bidirectional and allows data to be read into the CPU and written from the CPU) which holds the data transfered and the control bus contains various lines used to route timing and control signals throughout the system. Peripherals are real devices, such as graphics cards or disks controlled by controller chips on the system board or on cards plugged into it.
Linux is a unix-like operating system. In linux all commands are run using a terminal provided by the linux system. The linux terminal can be used to do all administrative tasks. The linux commands are broadly divided into File System Commands, Process Management Commands, File Permission Commands, Searching commands, System Info Commands, File Compression Commands, Networking Commands, Process Management commands. All these category of commands are illustrated here by examples.
A process is an active program i.e. a program that is under execution. It is more than the program code as it includes the program counter, process stack, registers, program code etc. Compared to this, the program code is only the text section. All the practical aspects of how to create different types of processes, running the process and observing the process in the linux process list are illustrated here
A thread is a lightweight process that can be managed independently by a scheduler. It improves the application performance using parallelism. A thread has to be created by a parent process. All the practical aspects of how to create threads, managing threads are illustrated here here
Following are the difference between a linux process and thread.