In the following set of articles, we attempt to understand different aspects of linux Kernel locking mechanisms and the need for locking mechanisms. The following set of articles try and explain the different locking primitives and the way it prevents concurrency issues and race conditions. code examples and linux kernel snippets are provided in the […]
Allocating memory in the Linux Kernel Module – Kernel APIs
The current article tries to outline some of the memory allocation APIs that are used in the Linux kernel. There are more APIs present, however, this list should get the interested reader started in their journey for development on the Linux kernel. A list of some of the APIs are provided below for reference. Kernel […]
Linux – Proc File system – Part 2
The interested reader can check the part 1 of the series at the link below https://www.hitchhikersguidetolearning.com/2020/11/02/linux-proc-file-system-part-1/ Let us look at some of the outputs of different files in the “/proc” folder. /proc/meminfo – This provides statistics about memory usage on the system. Snippet shown below /proc/version – This string identifies the kernel version that is […]
Linux – Proc File system – Part 1
The Proc file system is interesting in the sense it provides information on various processes and kernel data structures dynamically. It is loaded at boot time to a mount point termed “/proc”. The proc filesystem is a pseudo/virtual file system. If you check the file size of any file in the /proc directory – the […]
Compiling the Linux Kernel – Part 2
The interested reader can refer part 1 of this series at the link below https://www.hitchhikersguidetolearning.com/2020/11/02/compiling-the-linux-kernel-part-1/ Now that the Linux 5.9.1 kernel code is downloaded and untarred, traverse to the linux-5.9.1 folder and open the “changes.rst” that contains the minimal requirements needed to compile the Linux kernel. The “changes.rst” will be present under the folder “Documentation/process” […]
Compiling the Linux Kernel -Part 1
Many occasions, we wish to develop our own modules, look into various aspects of the Linux kernel code or need to develop our own version of our kernel for specific purposes. This article tries to cover the topic of compiling the Linux kernel code. Some requirements that will be needed Linux operating system to compile […]
Posix Threads – An Introduction
Historically, many independent thread implementations by different hardware vendors were present. This caused portability between different Hardware problematic and a common interface was needed to be standardized. The IEEE POSIX 1003.1c standard was a step in this direction. Implementations that follow the above standard are termed as POSIX threads (or Pthreads in short). The below […]
Advantages and Disavantages of Threads
Threads have a lot many advantages and a disadvantage as well. The article tries to outline the advantages and disadvantages of using threads in Linux. ADVANTAGES Parallelism and blocking I/O – With Most multi-core systems, threads provide a means of achieving parallelism. If a particular thread is waiting for I/O, another thread can still continue […]
What is Multi-threading?
The Concept of running multiple instances of a certain process can be termed as multi-threading. A Process is the basic block of a running program, the unit of execution of a process is a thread. A process with a single unit of execution is termed a single threaded process and a process that runs more […]
Threads in Linux
A thread is unit of execution of a process. A process can execute multiple threads. The Process that executes only one thread, it is termed as a single threaded process. Multiple threads can be executed by a process and can execute concurrently. Parallel execution of threads is possible on a multi-processor system. A depiction of […]