A note to readers: The following content is completely oriented for developers, especially in C. In case you find it difficult to understand certain terms, please help yourselves to google around and understand the concepts. I have tried including links wherever necessary in order to effectively interpret the article(see provided links towards the end). Last but not least, as per POSIX documentation, deadlock detection is guaranteed for locks between different processes and not between different threads inside a process or between threads belonging to different processes.
As you can see from the heading of this article, I am aiming at explaining the source code for detecting POSIX deadlocks. Before that let me quickly brief the concept of deadlock in operating systems. A deadlock is a situation where two processes sharing the same resource are preventing each other from accessing the resource which will result in an undefined wait for those resources. Following are the four necessary conditions(Coffman conditions) which leads to a deadlock scenario:
* Mutual exclusion
* Hold and Wait
* No pre-emption
* Circular wait
Package management is one the key areas in the world of GNU/Linux system administration. Not only for system administrators but also for normal linux users it is an inevitable part that they need to be aware of in their day to day job. Even though hundreds of linux distros exist around us, number package management systems are very limited (in numbers). dpkg used by Debian with .deb format, RPM created by Red Hat with .rpm format, pacman used in Arch linux, portage by Gentoo etc are some of the popular ones among them. Considering the most used RPM and DEB packages, they both have proven to work flawless. It’s just a matter of personal taste to select one from the other. Here we discuss on how to build RPM based packages for different distros which makes you of .rpm to install softwares. Here is how a rpm package would like:
where <name> is samba, <version> is 4.2.3, <release> is 1.fc23 and <architecture> is x86_64. <release> part is often a combination of a positive integer with a distribution tag appended at its end. See here for more details.
I don’t know how many of you have heard about this term called “PPPoE” which stands for Point-to-Point-Protocol over Ethernet. Even though this article is not intended to explain in detail about this protocol, in order to have a general understanding let’s go through the common concepts of PPP and PPPoE briefly.
PPPoE as a derivate of PPP
Point-to-Point Protocol (PPP) is a data link protocol used to establish a direct connection between two nodes. It can provide connection authentication, transmission encryption and compression. PPP is also used over internet access connections. Two derivatives of PPP, Point-to-Point Protocol over Ethernet (PPPoE) and Point-to-Point Protocol over ATM (PPPoA) are most commonly used by Internet Service Providers (ISPs) to establish a Digital Subscriber Line (DSL) internet service connection with customers. The Point-to-Point Protocol over Ethernet (PPPoE) is a network protocol for encapsulating PPP frames inside ethernet frames.
Establish a PPPoE connection
This would normally require a authenticated DSL connection via phone line, trunk line, optical fibre etc. So I would assume that you have Continue reading