Non-Blocking Synchronization Between Real-Time and Non-Real-Time Applications

Real-time systems where applications with timing requirements coexist with applications without timing constraints are increasingly common. Furthermore, the processors used in desktops, smart phones or embedded devices are mostly multi-core, allowing the execution of applications in parallel. This a...

Full description

Bibliographic Details
Main Authors: Alejandro Perez Ruiz, Mario Aldea Rivas, Michael Gonzalez Harbour
Format: Article
Language:English
Published: IEEE 2020-01-01
Series:IEEE Access
Subjects:
Online Access:https://ieeexplore.ieee.org/document/9162643/
id doaj-1a918a3fd38647f7a8c9511bae27a94f
record_format Article
spelling doaj-1a918a3fd38647f7a8c9511bae27a94f2021-03-30T01:56:58ZengIEEEIEEE Access2169-35362020-01-01814761814763410.1109/ACCESS.2020.30153859162643Non-Blocking Synchronization Between Real-Time and Non-Real-Time ApplicationsAlejandro Perez Ruiz0https://orcid.org/0000-0002-3306-3345Mario Aldea Rivas1https://orcid.org/0000-0002-0430-5472Michael Gonzalez Harbour2https://orcid.org/0000-0003-1198-9275Software Engineering and Real-Time Group, University of Cantabria, Santander, SpainSoftware Engineering and Real-Time Group, University of Cantabria, Santander, SpainSoftware Engineering and Real-Time Group, University of Cantabria, Santander, SpainReal-time systems where applications with timing requirements coexist with applications without timing constraints are increasingly common. Furthermore, the processors used in desktops, smart phones or embedded devices are mostly multi-core, allowing the execution of applications in parallel. This article presents a set of non-blocking synchronization mechanisms to share data between real-time and non-real-time applications executing in different cores of a shared memory multi-core system. Four typical producer/consumer scenarios have been explored; a) shared data object with real-time reader, b) shared data object with real-time writer, c) shared queue with real-time writer, and d) shared queue with real-time reader. For these scenarios we have developed different non-blocking protocols where the execution of the real-time application is always prioritized over the execution of the non-real-time part. In this way, the real-time applications never have to repeat their operations and, consequently, their execution times are bounded. Furthermore, to reduce the overhead caused by the copies of the information used in the non-blocking algorithms, we have imposed the limitation of a single real-time reader or a single real-time writer in the algorithms developed. Finally, we have evaluated the response times of the developed protocols on a multi-core device with the Android operating system.https://ieeexplore.ieee.org/document/9162643/Androidmulti-corenon-blocking synchronizationreal-timewait-free
collection DOAJ
language English
format Article
sources DOAJ
author Alejandro Perez Ruiz
Mario Aldea Rivas
Michael Gonzalez Harbour
spellingShingle Alejandro Perez Ruiz
Mario Aldea Rivas
Michael Gonzalez Harbour
Non-Blocking Synchronization Between Real-Time and Non-Real-Time Applications
IEEE Access
Android
multi-core
non-blocking synchronization
real-time
wait-free
author_facet Alejandro Perez Ruiz
Mario Aldea Rivas
Michael Gonzalez Harbour
author_sort Alejandro Perez Ruiz
title Non-Blocking Synchronization Between Real-Time and Non-Real-Time Applications
title_short Non-Blocking Synchronization Between Real-Time and Non-Real-Time Applications
title_full Non-Blocking Synchronization Between Real-Time and Non-Real-Time Applications
title_fullStr Non-Blocking Synchronization Between Real-Time and Non-Real-Time Applications
title_full_unstemmed Non-Blocking Synchronization Between Real-Time and Non-Real-Time Applications
title_sort non-blocking synchronization between real-time and non-real-time applications
publisher IEEE
series IEEE Access
issn 2169-3536
publishDate 2020-01-01
description Real-time systems where applications with timing requirements coexist with applications without timing constraints are increasingly common. Furthermore, the processors used in desktops, smart phones or embedded devices are mostly multi-core, allowing the execution of applications in parallel. This article presents a set of non-blocking synchronization mechanisms to share data between real-time and non-real-time applications executing in different cores of a shared memory multi-core system. Four typical producer/consumer scenarios have been explored; a) shared data object with real-time reader, b) shared data object with real-time writer, c) shared queue with real-time writer, and d) shared queue with real-time reader. For these scenarios we have developed different non-blocking protocols where the execution of the real-time application is always prioritized over the execution of the non-real-time part. In this way, the real-time applications never have to repeat their operations and, consequently, their execution times are bounded. Furthermore, to reduce the overhead caused by the copies of the information used in the non-blocking algorithms, we have imposed the limitation of a single real-time reader or a single real-time writer in the algorithms developed. Finally, we have evaluated the response times of the developed protocols on a multi-core device with the Android operating system.
topic Android
multi-core
non-blocking synchronization
real-time
wait-free
url https://ieeexplore.ieee.org/document/9162643/
work_keys_str_mv AT alejandroperezruiz nonblockingsynchronizationbetweenrealtimeandnonrealtimeapplications
AT marioaldearivas nonblockingsynchronizationbetweenrealtimeandnonrealtimeapplications
AT michaelgonzalezharbour nonblockingsynchronizationbetweenrealtimeandnonrealtimeapplications
_version_ 1724186078615699456