Author Archives: Niall Cooling

About Niall Cooling

Co-Founder and Director of Feabhas since 1995.
Niall has been designing and programming embedded systems for over 30 years. He has worked in different sectors, including aerospace, telecomms, government and banking.
His current interest lie in IoT Security and Agile for Embedded Systems.

Mutex vs. Semaphores – Part 3 (final part): Mutual Exclusion Problems

As hopefully you can see from the previous posting, the mutex is a significantly safer mechanism to use for implementing mutual exclusion around shared resources. Nevertheless, there are still a couple of problems that use of the mutex (in preference to the semaphore) will not solve. These are:

Circular deadlock
Non-cooperation

Circular Deadlock
Circular deadlock, often referred to as the “deadly embrace” problem is a condition where two or more tasks develop a circular dependency of mutual exclusion. Simply put, one task is blocked […]

Posted in RTOS | Tagged , , , , , | 14 Comments

Mutex vs. Semaphores – Part 2: The Mutex

In Part 1 of this series we looked at the history of the binary and counting semaphore, and then went on to discuss some of the associated problem areas. In this posting I aim to show how a different RTOS construct, the mutex, may overcome some, if not all, of these weaknesses.

To address the problems associated with semaphore, a new concept was developed during the late 1980’s. I have struggled to find it’s first clear definition, but the major use […]

Posted in RTOS | Tagged , , , | 17 Comments

Mutex vs. Semaphores – Part 1: Semaphores

It never ceases to amaze me how often I see postings in newsgroups, etc. asking the difference between a semaphore and a mutex. Probably what baffles me more is that over 90% of the time the responses given are either incorrect or missing the key differences. The most often quoted response is that of the “The Toilet Example (c) Copyright 2005, Niclas Winquist” . This summarises the differences as:

A mutex is really a semaphore with value 1

No, no and no […]

Posted in RTOS | Tagged , , , | 30 Comments

Getting started is always the hardest thing…

I’ve been procrastinating for the best part of a couple of months now getting this blog started. First of all I do feel a little late to the party, has blogging been surpassed by tweeting? Strangely I’ve actually been using twitter in anger since late march (@feabhas) and I’ll cover my experiences of that in a later post.So what is the aim of this blog? My hope is to cover, in a no-nonsense manner, aspects centered on Real-Time and Embedded […]

Posted in General | 5 Comments