Knowledge

Real-time operating system

Source 📝

439:
function called from an interrupt handler could find the object database to be in an inconsistent state because of the application's update. There are two major approaches to deal with this problem: the unified architecture and the segmented architecture. RTOSs implementing the unified architecture solve the problem by simply disabling interrupts while the internal catalogue is updated. The downside of this is that interrupt latency increases, potentially losing interrupts. The segmented architecture does not make direct OS calls but delegates the OS related work to a separate handler. This handler runs at a higher priority than any thread but lower than the interrupt handlers. The advantage of this architecture is that it adds very few cycles to interrupt latency. As a result, OSes which implement the segmented architecture are more predictable and can deal with higher interrupt rates compared to the unified architecture.
1718: 1708: 192:. The number of items in the ready queue can vary greatly, depending on the number of tasks the system needs to perform and the type of scheduler that the system uses. On simpler non-preemptive but still multitasking systems, a task has to give up its time on the CPU to other tasks, which can cause the ready queue to have a greater number of overall tasks in the ready to be executed state ( 435:
typically all that is necessary is to acknowledge or disable the interrupt (so that it won't occur again when the interrupt handler returns) and notify a task that work needs to be done. This can be done by unblocking a driver task through releasing a semaphore, setting a flag or sending a message. A scheduler often provides the ability to unblock a task from interrupt handler context.
207:
of ready tasks is likely optimal. If the ready list usually contains only a few tasks but occasionally contains more, then the list should be sorted by priority, so that finding the highest priority task to run does not require traversing the list. Instead, inserting a task requires walking the list.
388:
a high priority task waits because a low priority task has a mutex, but the lower priority task is not given CPU time to finish its work. A typical solution is to have the task that owns a mutex 'inherit' the priority of the highest waiting task. But this simple approach gets more complex when there
471:
Another reason to avoid dynamic memory allocation is memory fragmentation. With frequent allocation and releasing of small chunks of memory, a situation may occur where available memory is divided into several sections and the RTOS cannot allocate a large enough continuous block of memory, although
306:
is poor at real-time tasks. The scheduler gives the highest priority to jobs with the lowest demand on the computer, so there is no way to ensure that a time-critical job will have access to enough resources. Multitasking systems must manage sharing data and hardware resources among multiple tasks.
199:
Usually, the data structure of the ready list in the scheduler is designed to minimize the worst-case length of time spent in the scheduler's critical section, during which preemption is inhibited, and, in some cases, all interrupts are disabled, but the choice of data structure depends also on the
211:
During this search, preemption should not be inhibited. Long critical sections should be divided into smaller pieces. If an interrupt occurs that makes a high priority task ready during the insertion of a low priority task, that high priority task can be inserted and run immediately before the low
434:
Since an interrupt handler blocks the highest priority task from running, and since real-time operating systems are designed to keep thread latency to a minimum, interrupt handlers are typically kept as short as possible. The interrupt handler defers all interaction with the hardware if possible;
425:
systems, simple message-based systems avoid most protocol deadlock hazards, and are generally better-behaved than semaphore systems. However, problems like those of semaphores are possible. Priority inversion can occur when a task is working on a low-priority message and ignores a higher-priority
438:
An OS maintains catalogues of objects it manages such as threads, mutexes, memory, and so on. Updates to this catalogue must be strictly controlled. For this reason, it can be problematic when an interrupt handler calls an OS function while the application is in the act of also doing so. The OS
215:
The critical response time, sometimes called the flyback time, is the time it takes to queue a new ready task and restore the state of the highest priority task to running. In a well-designed RTOS, readying a new task will take 3 to 20 instructions per ready-queue entry, and restoration of the
472:
there is enough free memory. Secondly, speed of allocation is important. A standard memory allocation scheme scans a linked list of indeterminate length to find a suitable free memory block, which is unacceptable in a RTOS since memory allocation has to occur within a certain amount of time.
50:
operating system, such as Unix, which manages the sharing of system resources with a scheduler, data buffers, or fixed task prioritization in multitasking or multiprogramming environments. All operations must verifiably complete within given time and resource constraints or else
408:, two or more tasks lock mutex without timeouts and then wait forever for the other task's mutex, creating a cyclic dependency. The simplest deadlock scenario occurs when two tasks alternately lock two mutex, but in the opposite order. Deadlock is prevented by careful design. 361:
and OS-supervised interprocess messaging. Such mechanisms involve system calls, and usually invoke the OS's dispatcher code on exit, so they typically take hundreds of CPU instructions to execute, while masking interrupts may take as few as one instruction on some processors.
334:
On single-processor systems, an application running in kernel mode and masking interrupts is the lowest overhead method to prevent simultaneous access to a shared resource. While interrupts are masked and the current task does not make a blocking OS call, the current task has
343:
is protected. When the task exits its critical section, it must unmask interrupts; pending interrupts, if any, will then execute. Temporarily masking interrupts should only be done when the longest path through the critical section is shorter than the desired maximum
83:". A "hard" real-time operating system (hard RTOS) has less jitter than a "soft" real-time operating system (soft RTOS); a late answer is a wrong answer in a hard RTOS while a late answer is acceptable in a soft RTOS. The chief design goal is not high 348:. Typically this method of protection is used only when the critical section is just a few instructions and contains no loops. This method is ideal for protecting hardware bit-mapped registers when the bits are controlled by different tasks. 420:
scheme. In this paradigm, the resource is managed directly by only one task. When another task wants to interrogate or manipulate the resource, it sends a message to the managing task. Although their real-time behavior is less crisp than
63:, meaning the OS can monitor the relevant priority of competing tasks, and make changes to the task priority. Event-driven systems switch between tasks based on their priorities, while time-sharing systems switch the task based on clock 219:
In advanced systems, real-time tasks share computing resources with many non-real-time tasks, and the ready list can be arbitrarily long. In such systems, a scheduler ready list implemented as a linked list would be inadequate.
356:
When the shared resource must be reserved without blocking all other tasks (such as waiting for Flash memory to be written), it is better to use mechanisms also available on general-purpose operating systems, such as a
102:. Scheduler flexibility enables a wider, computer-system orchestration of process priorities, but a real-time OS is more frequently dedicated to a narrow set of applications. Key factors in a real-time OS are minimal 162:
needed many cycles to switch tasks during which the CPU could do nothing else useful. Because switching took so long, early OSes tried to minimize wasting CPU time by avoiding unnecessary task switching.
426:
message (or a message originating indirectly from a high priority task) in its incoming message queue. Protocol deadlocks can occur when two or more tasks wait for each other to send response messages.
2124: 475:
Because mechanical disks have much longer and more unpredictable response times, swapping to disk files is not used for the same reasons as RAM allocation discussed above.
323:
code to disable interrupts as such control is considered a key operating system resource. Many embedded systems and RTOSs, however, allow the application itself to run in
632: 307:
It is usually unsafe for two tasks to access the same specific data or hardware resource simultaneously. There are three common approaches to resolve this problem:
118:
An RTOS is an operating system in which the time taken to process an input stimulus is less than the time lapsed until the next input stimulus of the same type.
815: 708: 110:; a real-time OS is valued more for how quickly or how predictably it can respond than for the amount of work it can perform in a given period of time. 401:. Handling multiple levels of inheritance causes other code to run in high priority context and thus can cause starvation of medium-priority threads. 2258: 658: 373:- the original thread. A task may set a timeout on its wait for a mutex. There are several well-known problems with mutex based designs such as 75:
A key characteristic of an RTOS is the level of its consistency concerning the amount of time it takes to accept and complete an application's
760: 2205: 464:(memory that is allocated but not freed after use). The device should work indefinitely, without ever needing a reboot. For this reason, 17: 1756: 331:
efficiency and also to permit the application to have greater control of the operating environment without requiring OS intervention.
1712: 808: 501: 91:
performance category. An RTOS that can usually or generally meet a deadline is a soft real-time OS, but if it can meet a deadline
1779: 2162: 2534: 2505: 692: 252: 2720: 1722: 801: 88: 1496: 1490: 606: 516: 275: 46:
applications that processes data and events that have critically defined time constraints. An RTOS is distinct from a
1525: 2309: 2253: 586: 2228: 2198: 2079: 1907: 1302: 734: 2421: 2319: 1749: 1479: 531: 2699: 2248: 2233: 1824: 1577: 1339: 712: 369:
or unlocked. When a task has locked the mutex, all other tasks must wait for the mutex to be unlocked by its
319:, because the user program could control the CPU for as long as it is made to. Some modern CPUs do not allow 468:
is frowned upon. Whenever possible, all required memory allocation is specified statically at compile time.
2730: 2294: 2279: 2238: 2167: 967: 496: 2460: 2407: 880: 541: 405: 378: 2725: 2191: 2114: 1570: 780: 185:
Most tasks are blocked or ready most of the time because generally only one task can run at a time per
662: 2510: 2329: 2289: 2284: 2243: 2069: 2061: 1814: 1742: 1450: 1217: 1085: 985: 611: 571: 465: 446:
on x86 compatible hardware can take a lot of time before it returns control to the operating system.
288: 242: 2553: 2440: 2304: 2094: 2074: 1602: 1564: 1270: 232: 107: 56: 2299: 1922: 1438: 997: 921: 422: 186: 92: 479: 2687: 2626: 2515: 2495: 2444: 2402: 1912: 1609: 1532: 576: 443: 247: 237: 141: 130: 99: 60: 2470: 2436: 2338: 2274: 1844: 1784: 1296: 1188: 596: 591: 152: 2667: 2641: 2172: 2106: 1885: 1794: 1701: 1112: 189: 8: 2636: 2588: 2465: 1970: 1902: 1809: 193: 43: 2573: 2480: 1829: 1598: 1094: 385: 374: 315:
General-purpose operating systems usually do not allow user programs to mask (disable)
204: 1328: 2682: 2631: 2563: 2520: 2361: 2119: 2041: 1927: 1819: 1804: 1645: 1313: 793: 688: 506: 454: 416:
The other approach to resource sharing is for tasks to send messages in an organized
345: 103: 2662: 2214: 2008: 1917: 1856: 1834: 1397: 833: 340: 76: 39: 457:
is more critical in a real-time operating system than in other operating systems.
2606: 2568: 2539: 1892: 1880: 1839: 1765: 1228: 908: 765: 483: 417: 2692: 2616: 2578: 2450: 2134: 2016: 1988: 1937: 1799: 1650: 1161: 1040: 1035: 291: 284: 126: 2714: 2601: 2558: 2397: 2351: 2139: 2051: 1406: 1154: 1025: 2485: 2036: 1849: 1670: 1665: 1121: 1012: 973: 148: 47: 27:
Computer operating system for applications with critical timing constraints
2611: 2593: 2376: 2366: 2356: 2149: 2089: 1897: 1693: 1655: 1550: 1420: 461: 339:
use of the CPU since no other task or interrupt can take control, so the
328: 324: 155:, giving the illusion that a process or user has sole use of a machine. 151:
designs switch tasks more often than strictly needed, but give smoother
2129: 1955: 1789: 1637: 1518: 1385: 281: 256: 159: 84: 64: 2548: 2455: 2381: 2346: 2026: 1660: 1538: 1512: 1432: 1256: 1046: 854: 320: 316: 137: 52: 2183: 2677: 1983: 1875: 1866: 1734: 1544: 1484: 1426: 1133: 1030: 991: 960: 869: 556: 526: 521: 203:
If there are never more than a few tasks on the ready list, then a
2672: 2371: 2144: 2031: 2021: 1960: 1947: 1627: 1621: 1588: 1583: 1473: 1444: 1413: 1391: 1289: 1264: 1243: 1197: 1175: 914: 601: 566: 511: 2046: 1978: 1465: 1368: 1354: 1342: 1210: 1203: 1168: 1127: 941: 932: 896: 874: 536: 297: 80: 687:. Upper Saddle River, NJ: Pearson/Prentice Hall. p. 160. 129:
only when an event of higher priority needs servicing; called
2621: 1557: 1361: 1070: 979: 844: 581: 551: 358: 216:
highest-priority ready task will take 5 to 30 instructions.
1998: 1993: 1932: 1615: 1508: 1322: 1237: 1101: 1064: 863: 546: 310: 303: 2657: 1502: 1345: 1280: 1145: 902: 735:"Programming embedded systems: RTOS – what is real-time?" 561: 429: 200:
maximum number of tasks that can be on the ready list.
823: 228:Some commonly used RTOS scheduling algorithms are: 136:Time-sharing – switches tasks on a regular clocked 261:Fixed-Priority Scheduling with Deferred Preemption 2712: 181:Blocked (waiting for an event, I/O for example). 752: 2199: 1750: 809: 171:In typical designs, a task has three states: 298:Intertask communication and resource sharing 2206: 2192: 1757: 1743: 1707: 816: 802: 682: 502:Comparison of real-time operating systems 397:, which waits for a mutex locked by task 676: 311:Temporarily masking/disabling interrupts 264:Fixed-Priority Non-preemptive Scheduling 758: 14: 2713: 267:Critical section preemptive scheduling 113: 98:An RTOS has an advanced algorithm for 2213: 2187: 1738: 797: 732: 460:First, for stability there cannot be 389:are multiple levels of waiting: task 302:A multitasking operating system like 253:Fixed-priority pre-emptive scheduling 1764: 633:"Real-time Operating Systems (RTOS)" 449: 430:Interrupt handlers and the scheduler 24: 761:"The Future of Unix on the IBM PC" 607:Micro-Controller Operating Systems 517:Earliest deadline first scheduling 411: 365:A (non-recursive) mutex is either 70: 55:. Real-time operating systems are 25: 2742: 393:waits for a mutex locked by task 2310:Object-oriented operating system 1717: 1716: 1706: 781:"CS 241, University of Illinois" 587:Synchronous programming language 2080:Light-weight Linux distribution 1908:Hacking of consumer electronics 1303:Transaction Processing Facility 759:Phraner, Ralph A. (Fall 1984). 175:Running (executing on the CPU); 2320:Supercomputer operating system 773: 726: 701: 651: 625: 532:Interruptible operating system 87:, but rather a guarantee of a 13: 1: 618: 486:because of its low overhead. 223: 178:Ready (ready to be executed); 166: 121:The most common designs are: 2295:Just enough operating system 2280:Distributed operating system 2168:List of open-source hardware 497:Adaptive Partition Scheduler 482:works quite well for simple 7: 2721:Real-time operating systems 2408:User space and kernel space 881:Multi-Environment Real-Time 825:Real-time operating systems 733:Samek, Miro (23 May 2023). 542:Least slack time scheduling 489: 480:fixed-size-blocks algorithm 212:priority task is inserted. 95:it is a hard real-time OS. 18:Real-time operating systems 10: 2747: 2315:Real-time operating system 2085:Real-time operating system 683:Tanenbaum, Andrew (2008). 659:"Response Time and Jitter" 351: 32:real-time operating system 2650: 2587: 2533: 2511:Multilevel feedback queue 2506:Fixed-priority preemptive 2494: 2429: 2420: 2390: 2337: 2328: 2290:Hobbyist operating system 2285:Embedded operating system 2267: 2221: 2158: 2105: 2070:Linux on embedded systems 2060: 2007: 1969: 1946: 1865: 1772: 1679: 1636: 1597: 1378: 1338: 1312: 1279: 1255: 1227: 1187: 1144: 1111: 1084: 1057: 1021: 1011: 986:Operating System Embedded 952: 931: 853: 843: 832: 612:List of operating systems 572:Rate-monotonic scheduling 466:dynamic memory allocation 243:Rate-monotonic scheduling 133:, or priority scheduling. 2554:General protection fault 2305:Network operating system 2259:User features comparison 2075:Linux for mobile devices 1271:Windows Embedded Compact 685:Modern Operating Systems 140:, and on events; called 108:thread switching latency 2300:Mobile operating system 1923:PlayStation 3 Jailbreak 276:Earliest Deadline First 257:preemptive time slicing 255:, an implementation of 2403:Loadable kernel module 1913:Homebrew (video games) 1610:Robot Operating System 577:Robot Operating System 444:System Management Mode 270:Static-time scheduling 248:Round-robin scheduling 233:Cooperative scheduling 79:; the variability is " 2471:Process control block 2437:Computer multitasking 2275:Disk operating system 2107:Programming languages 1845:Single-board computer 1785:Board support package 597:Time-utility function 592:Time-triggered system 238:Preemptive scheduling 2642:Virtual tape library 2234:Forensic engineering 2173:Open-source robotics 2163:Lightweight browsers 1886:Proprietary firmware 1795:Consumer electronics 1702:Open-source software 1113:Java virtual machine 2731:Real-time computing 2651:Supporting concepts 2637:Virtual file system 1903:Defective by Design 1810:Embedded hypervisor 639:. 13 September 2023 194:resource starvation 131:preemptive priority 114:Design philosophies 44:real-time computing 2574:Segmentation fault 2422:Process management 1971:Software libraries 386:priority inversion 375:priority inversion 205:doubly linked list 2726:Operating systems 2708: 2707: 2564:Memory protection 2535:Memory management 2529: 2528: 2521:Shortest job next 2416: 2415: 2215:Operating systems 2181: 2180: 2120:Assembly language 2062:Operating systems 2042:Stand-alone shell 2009:Programming tools 1928:Rooting (Android) 1820:Embedded software 1805:Embedded database 1732: 1731: 1460: 1459: 1314:Texas Instruments 1080: 1079: 1007: 1006: 769:. pp. 59–64. 694:978-0-13-600663-3 507:Data General RDOS 455:Memory allocation 450:Memory allocation 346:interrupt latency 104:interrupt latency 93:deterministically 16:(Redirected from 2738: 2663:Computer network 2427: 2426: 2335: 2334: 2208: 2201: 2194: 2185: 2184: 1918:iOS jailbreaking 1835:Memory footprint 1766:Embedded systems 1759: 1752: 1745: 1736: 1735: 1720: 1719: 1710: 1709: 1398:ERIKA Enterprise 1086:Capability-based 1019: 1018: 851: 850: 841: 840: 818: 811: 804: 795: 794: 788: 787: 785: 777: 771: 770: 756: 750: 749: 747: 745: 730: 724: 723: 721: 720: 711:. Archived from 705: 699: 698: 680: 674: 673: 671: 670: 661:. Archived from 655: 649: 648: 646: 644: 629: 484:embedded systems 341:critical section 40:operating system 21: 2746: 2745: 2741: 2740: 2739: 2737: 2736: 2735: 2711: 2710: 2709: 2704: 2646: 2607:Defragmentation 2592: 2583: 2569:Protection ring 2538: 2525: 2497: 2490: 2412: 2386: 2324: 2263: 2217: 2212: 2182: 2177: 2154: 2101: 2056: 2003: 1965: 1942: 1893:Closed platform 1881:Custom firmware 1861: 1840:Microcontroller 1768: 1763: 1733: 1728: 1705: 1675: 1632: 1593: 1456: 1374: 1334: 1308: 1275: 1251: 1223: 1183: 1140: 1107: 1076: 1053: 1003: 948: 927: 909:Real-Time Linux 835: 828: 822: 792: 791: 783: 779: 778: 774: 757: 753: 743: 741: 731: 727: 718: 716: 709:"RTOS Concepts" 707: 706: 702: 695: 681: 677: 668: 666: 657: 656: 652: 642: 640: 631: 630: 626: 621: 616: 492: 452: 442:Similarly, the 432: 418:message passing 414: 412:Message passing 354: 313: 300: 292:graph traversal 226: 169: 125:Event-driven – 116: 73: 71:Characteristics 28: 23: 22: 15: 12: 11: 5: 2744: 2734: 2733: 2728: 2723: 2706: 2705: 2703: 2702: 2697: 2696: 2695: 2693:User interface 2690: 2680: 2675: 2670: 2665: 2660: 2654: 2652: 2648: 2647: 2645: 2644: 2639: 2634: 2629: 2624: 2619: 2617:File attribute 2614: 2609: 2604: 2598: 2596: 2585: 2584: 2582: 2581: 2579:Virtual memory 2576: 2571: 2566: 2561: 2556: 2551: 2545: 2543: 2531: 2530: 2527: 2526: 2524: 2523: 2518: 2513: 2508: 2502: 2500: 2492: 2491: 2489: 2488: 2483: 2478: 2473: 2468: 2463: 2458: 2453: 2451:Context switch 2448: 2433: 2431: 2424: 2418: 2417: 2414: 2413: 2411: 2410: 2405: 2400: 2394: 2392: 2388: 2387: 2385: 2384: 2379: 2374: 2369: 2364: 2359: 2354: 2349: 2343: 2341: 2332: 2326: 2325: 2323: 2322: 2317: 2312: 2307: 2302: 2297: 2292: 2287: 2282: 2277: 2271: 2269: 2265: 2264: 2262: 2261: 2256: 2251: 2246: 2241: 2236: 2231: 2225: 2223: 2219: 2218: 2211: 2210: 2203: 2196: 2188: 2179: 2178: 2176: 2175: 2170: 2165: 2159: 2156: 2155: 2153: 2152: 2147: 2142: 2137: 2132: 2127: 2122: 2117: 2111: 2109: 2103: 2102: 2100: 2099: 2098: 2097: 2087: 2082: 2077: 2072: 2066: 2064: 2058: 2057: 2055: 2054: 2049: 2044: 2039: 2034: 2029: 2024: 2019: 2017:Almquist shell 2013: 2011: 2005: 2004: 2002: 2001: 1996: 1991: 1989:Embedded GLIBC 1986: 1981: 1975: 1973: 1967: 1966: 1964: 1963: 1958: 1952: 1950: 1944: 1943: 1941: 1940: 1938:Vendor lock-in 1935: 1930: 1925: 1920: 1915: 1910: 1905: 1900: 1895: 1890: 1889: 1888: 1883: 1872: 1870: 1863: 1862: 1860: 1859: 1854: 1853: 1852: 1842: 1837: 1832: 1827: 1822: 1817: 1812: 1807: 1802: 1800:Cross compiler 1797: 1792: 1787: 1782: 1776: 1774: 1770: 1769: 1762: 1761: 1754: 1747: 1739: 1730: 1729: 1727: 1726: 1697: 1689: 1687:= discontinued 1680: 1677: 1676: 1674: 1673: 1668: 1663: 1658: 1653: 1651:David Cheriton 1648: 1642: 1640: 1634: 1633: 1631: 1625: 1619: 1613: 1607: 1605: 1595: 1594: 1592: 1591: 1586: 1581: 1575: 1561: 1554: 1547: 1542: 1536: 1529: 1522: 1516: 1506: 1500: 1494: 1488: 1482: 1477: 1470: 1461: 1458: 1457: 1455: 1454: 1448: 1442: 1436: 1430: 1424: 1418: 1410: 1404: 1401: 1395: 1389: 1382: 1380: 1376: 1375: 1373: 1372: 1365: 1358: 1350: 1348: 1336: 1335: 1333: 1332: 1329:TI-RTOS Kernel 1326: 1318: 1316: 1310: 1309: 1307: 1306: 1300: 1293: 1285: 1283: 1277: 1276: 1274: 1273: 1268: 1261: 1259: 1253: 1252: 1250: 1249: 1233: 1231: 1225: 1224: 1222: 1221: 1215: 1207: 1201: 1194: 1192: 1185: 1184: 1182: 1181: 1180: 1179: 1172: 1165: 1162:Concurrent DOS 1150: 1148: 1142: 1141: 1139: 1138: 1117: 1115: 1109: 1108: 1106: 1105: 1099: 1090: 1088: 1082: 1081: 1078: 1077: 1075: 1074: 1068: 1061: 1059: 1055: 1054: 1052: 1051: 1050: 1049: 1044: 1043:(organization) 1041:T-Engine Forum 1038: 1036:Micro T-Kernel 1028: 1022: 1016: 1009: 1008: 1005: 1004: 1002: 1001: 995: 989: 983: 977: 971: 965: 956: 954: 950: 949: 947: 946: 937: 935: 929: 928: 926: 925: 918: 912: 906: 900: 893: 877: 872: 867: 859: 857: 848: 838: 830: 829: 821: 820: 813: 806: 798: 790: 789: 772: 751: 725: 700: 693: 675: 650: 623: 622: 620: 617: 615: 614: 609: 604: 599: 594: 589: 584: 579: 574: 569: 564: 559: 554: 549: 544: 539: 534: 529: 524: 519: 514: 509: 504: 499: 493: 491: 488: 451: 448: 431: 428: 413: 410: 353: 350: 312: 309: 299: 296: 295: 294: 289:multi-threaded 279: 273: 272: 271: 268: 265: 262: 259: 250: 245: 235: 225: 222: 183: 182: 179: 176: 168: 165: 146: 145: 134: 127:switches tasks 115: 112: 72: 69: 26: 9: 6: 4: 3: 2: 2743: 2732: 2729: 2727: 2724: 2722: 2719: 2718: 2716: 2701: 2698: 2694: 2691: 2689: 2686: 2685: 2684: 2681: 2679: 2676: 2674: 2671: 2669: 2666: 2664: 2661: 2659: 2656: 2655: 2653: 2649: 2643: 2640: 2638: 2635: 2633: 2630: 2628: 2625: 2623: 2620: 2618: 2615: 2613: 2610: 2608: 2605: 2603: 2600: 2599: 2597: 2595: 2590: 2586: 2580: 2577: 2575: 2572: 2570: 2567: 2565: 2562: 2560: 2559:Memory paging 2557: 2555: 2552: 2550: 2547: 2546: 2544: 2541: 2536: 2532: 2522: 2519: 2517: 2514: 2512: 2509: 2507: 2504: 2503: 2501: 2499: 2493: 2487: 2484: 2482: 2479: 2477: 2474: 2472: 2469: 2467: 2464: 2462: 2459: 2457: 2454: 2452: 2449: 2446: 2442: 2438: 2435: 2434: 2432: 2428: 2425: 2423: 2419: 2409: 2406: 2404: 2401: 2399: 2398:Device driver 2396: 2395: 2393: 2389: 2383: 2380: 2378: 2375: 2373: 2370: 2368: 2365: 2363: 2360: 2358: 2355: 2353: 2350: 2348: 2345: 2344: 2342: 2340: 2339:Architectures 2336: 2333: 2331: 2327: 2321: 2318: 2316: 2313: 2311: 2308: 2306: 2303: 2301: 2298: 2296: 2293: 2291: 2288: 2286: 2283: 2281: 2278: 2276: 2273: 2272: 2270: 2266: 2260: 2257: 2255: 2252: 2250: 2247: 2245: 2242: 2240: 2237: 2235: 2232: 2230: 2227: 2226: 2224: 2220: 2216: 2209: 2204: 2202: 2197: 2195: 2190: 2189: 2186: 2174: 2171: 2169: 2166: 2164: 2161: 2160: 2157: 2151: 2148: 2146: 2143: 2141: 2140:Embedded Java 2138: 2136: 2133: 2131: 2128: 2126: 2123: 2121: 2118: 2116: 2113: 2112: 2110: 2108: 2104: 2096: 2093: 2092: 2091: 2088: 2086: 2083: 2081: 2078: 2076: 2073: 2071: 2068: 2067: 2065: 2063: 2059: 2053: 2052:Yocto Project 2050: 2048: 2045: 2043: 2040: 2038: 2035: 2033: 2030: 2028: 2025: 2023: 2020: 2018: 2015: 2014: 2012: 2010: 2006: 2000: 1997: 1995: 1992: 1990: 1987: 1985: 1982: 1980: 1977: 1976: 1974: 1972: 1968: 1962: 1959: 1957: 1954: 1953: 1951: 1949: 1945: 1939: 1936: 1934: 1931: 1929: 1926: 1924: 1921: 1919: 1916: 1914: 1911: 1909: 1906: 1904: 1901: 1899: 1896: 1894: 1891: 1887: 1884: 1882: 1879: 1878: 1877: 1874: 1873: 1871: 1868: 1864: 1858: 1855: 1851: 1848: 1847: 1846: 1843: 1841: 1838: 1836: 1833: 1831: 1828: 1826: 1823: 1821: 1818: 1816: 1813: 1811: 1808: 1806: 1803: 1801: 1798: 1796: 1793: 1791: 1788: 1786: 1783: 1781: 1778: 1777: 1775: 1773:General terms 1771: 1767: 1760: 1755: 1753: 1748: 1746: 1741: 1740: 1737: 1725: 1724: 1715: 1714: 1704: 1703: 1698: 1696: 1695: 1690: 1688: 1685: 1682: 1681: 1678: 1672: 1669: 1667: 1664: 1662: 1659: 1657: 1654: 1652: 1649: 1647: 1644: 1643: 1641: 1639: 1635: 1629: 1626: 1623: 1620: 1617: 1614: 1611: 1608: 1606: 1604: 1600: 1596: 1590: 1587: 1585: 1582: 1579: 1576: 1573: 1572: 1567: 1566: 1562: 1560: 1559: 1555: 1553: 1552: 1548: 1546: 1543: 1540: 1537: 1535: 1534: 1530: 1528: 1527: 1523: 1520: 1517: 1514: 1510: 1507: 1504: 1501: 1498: 1495: 1492: 1489: 1486: 1483: 1481: 1478: 1476: 1475: 1471: 1468: 1467: 1463: 1462: 1452: 1449: 1446: 1443: 1440: 1437: 1434: 1431: 1428: 1425: 1422: 1419: 1416: 1415: 1411: 1408: 1405: 1402: 1399: 1396: 1393: 1390: 1387: 1384: 1383: 1381: 1377: 1371: 1370: 1366: 1364: 1363: 1359: 1357: 1356: 1352: 1351: 1349: 1347: 1344: 1341: 1337: 1330: 1327: 1325: 1324: 1320: 1319: 1317: 1315: 1311: 1304: 1301: 1299: 1298: 1294: 1292: 1291: 1287: 1286: 1284: 1282: 1278: 1272: 1269: 1266: 1263: 1262: 1260: 1258: 1254: 1247: 1245: 1240: 1239: 1235: 1234: 1232: 1230: 1226: 1219: 1216: 1213: 1212: 1208: 1205: 1202: 1199: 1196: 1195: 1193: 1190: 1186: 1178: 1177: 1173: 1171: 1170: 1166: 1164: 1163: 1159: 1158: 1157: 1156: 1155:Multiuser DOS 1152: 1151: 1149: 1147: 1143: 1136: 1135: 1130: 1129: 1124: 1123: 1119: 1118: 1116: 1114: 1110: 1103: 1100: 1097: 1096: 1092: 1091: 1089: 1087: 1083: 1072: 1069: 1066: 1063: 1062: 1060: 1056: 1048: 1045: 1042: 1039: 1037: 1034: 1033: 1032: 1029: 1027: 1026:ITRON project 1024: 1023: 1020: 1017: 1014: 1010: 999: 996: 993: 990: 987: 984: 981: 978: 975: 972: 969: 966: 963: 962: 958: 957: 955: 951: 944: 943: 939: 938: 936: 934: 930: 924: 923: 919: 916: 913: 910: 907: 904: 901: 899: 898: 894: 891: 887: 883: 882: 878: 876: 873: 871: 868: 866: 865: 861: 860: 858: 856: 852: 849: 846: 842: 839: 837: 831: 826: 819: 814: 812: 807: 805: 800: 799: 796: 782: 776: 768: 767: 762: 755: 740: 736: 729: 715:on 2011-07-23 714: 710: 704: 696: 690: 686: 679: 665:on 2011-07-23 664: 660: 654: 638: 634: 628: 624: 613: 610: 608: 605: 603: 600: 598: 595: 593: 590: 588: 585: 583: 580: 578: 575: 573: 570: 568: 565: 563: 560: 558: 555: 553: 550: 548: 545: 543: 540: 538: 535: 533: 530: 528: 525: 523: 520: 518: 515: 513: 510: 508: 505: 503: 500: 498: 495: 494: 487: 485: 481: 476: 473: 469: 467: 463: 458: 456: 447: 445: 440: 436: 427: 424: 419: 409: 407: 402: 400: 396: 392: 387: 382: 380: 376: 372: 368: 363: 360: 349: 347: 342: 338: 332: 330: 326: 322: 318: 308: 305: 293: 290: 286: 283: 280: 277: 274: 269: 266: 263: 260: 258: 254: 251: 249: 246: 244: 241: 240: 239: 236: 234: 231: 230: 229: 221: 217: 213: 209: 206: 201: 197: 195: 191: 188: 180: 177: 174: 173: 172: 164: 161: 156: 154: 150: 143: 139: 135: 132: 128: 124: 123: 122: 119: 111: 109: 105: 101: 96: 94: 90: 86: 82: 78: 68: 66: 62: 58: 54: 49: 45: 41: 37: 33: 19: 2594:file systems 2486:Time-sharing 2475: 2314: 2135:Embedded C++ 2084: 2037:OpenEmbedded 1948:Boot loaders 1869:and controls 1850:Raspberry Pi 1721: 1711: 1699: 1691: 1686: 1683: 1671:Ken Sakamura 1666:Adam Dunkels 1569: 1563: 1556: 1549: 1531: 1524: 1472: 1464: 1412: 1379:Low resource 1367: 1360: 1353: 1321: 1295: 1288: 1242: 1241:^° kernel → 1236: 1209: 1174: 1167: 1160: 1153: 1132: 1126: 1120: 1093: 974:Nucleus RTOS 959: 940: 920: 895: 889: 885: 879: 862: 824: 775: 764: 754: 744:13 September 742:. Retrieved 739:Embedded.com 738: 728: 717:. Retrieved 713:the original 703: 684: 678: 667:. Retrieved 663:the original 653: 643:13 September 641:. Retrieved 636: 627: 477: 474: 470: 462:memory leaks 459: 453: 441: 437: 433: 415: 403: 398: 394: 390: 383: 370: 366: 364: 355: 336: 333: 327:for greater 314: 301: 227: 218: 214: 210: 202: 198: 184: 170: 157: 153:multitasking 149:Time sharing 147: 120: 117: 106:and minimal 97: 89:soft or hard 74: 57:event-driven 48:time-sharing 35: 31: 29: 2612:Device file 2602:Boot loader 2516:Round-robin 2441:Cooperative 2377:Rump kernel 2367:Multikernel 2357:Microkernel 2254:Usage share 2150:MicroPython 2090:Windows IoT 1898:Crippleware 1815:Embedded OS 1694:Microkernel 1656:Dave Cutler 1646:Gordon Bell 1551:Sintran III 1421:OpenComRTOS 1122:Chorus/Jazz 478:The simple 329:system call 325:kernel mode 160:CPU designs 142:round-robin 2715:Categories 2542:protection 2498:algorithms 2496:Scheduling 2445:Preemptive 2391:Components 2362:Monolithic 2229:Comparison 2130:Embedded C 1790:Bootloader 1713:Comparison 1638:Developers 1599:Frameworks 1541:° Standard 1519:Phantom OS 1497:µ-velOSity 1386:ChibiOS/RT 719:2010-12-04 669:2010-12-04 619:References 317:interrupts 282:Stochastic 224:Algorithms 167:Scheduling 100:scheduling 85:throughput 65:interrupts 61:preemptive 2632:Partition 2549:Bus error 2476:Real-time 2456:Interrupt 2382:Unikernel 2347:Exokernel 2027:Buildroot 1661:Dan Dodge 1589:UniProton 1539:RT-Thread 1513:Microware 1433:RT-Thread 1257:Microsoft 1047:T-License 968:Integrity 855:Unix-like 834:Operating 423:semaphore 379:deadlocks 337:exclusive 321:user mode 138:interrupt 53:fail safe 42:(OS) for 2678:Live USB 2540:resource 2430:Concepts 2268:Variants 2249:Timeline 1984:dietlibc 1876:Firmware 1867:Firmware 1723:Category 1545:ScreenOS 1485:FreeRTOS 1427:PX5 RTOS 1134:ChorusOS 1031:T-Kernel 992:PX5 RTOS 961:ChorusOS 870:Junos OS 637:Benzinga 557:PX5 RTOS 527:FreeRTOS 522:Firmware 490:See also 406:deadlock 285:digraphs 278:approach 38:) is an 2673:Live CD 2627:Journal 2591:access, 2589:Storage 2466:Process 2372:vkernel 2239:History 2222:General 2145:MISRA C 2032:BusyBox 2022:BitBake 1961:Barebox 1684:Italics 1628:Xenomai 1622:TI-RTOS 1584:VxWorks 1571:Harmony 1474:DioneOS 1445:ThreadX 1414:Nano-RK 1403:FunkOS° 1392:Contiki 1297:4690 OS 1290:4680 OS 1265:ThreadX 1244:Symbian 1176:REAL/32 1058:Partial 1015:support 988:^ (OSE) 953:Partial 915:RTLinux 890:Unix-RT 847:support 836:systems 602:ThreadX 567:VxWorks 512:DO-178B 352:Mutexes 2481:Thread 2352:Hybrid 2330:Kernel 2095:Win CE 2047:Toybox 1979:uClibc 1956:U-Boot 1466:BeRTOS 1451:Zephyr 1435:° Nano 1407:Mynewt 1369:VAXELN 1355:RSX-11 1343:PDP-11 1218:Wombat 1211:REX OS 1204:PikeOS 1198:LLinux 1191:kernel 1169:FlexOS 1128:JavaOS 942:LiteOS 933:LiteOS 897:OS2000 875:LynxOS 827:(RTOS) 691:  537:INtime 367:locked 158:Early 81:jitter 2683:Shell 2622:Inode 1565:Thoth 1558:THEOS 1491:µC/OS 1480:embOS 1362:RT-11 1305:(TPF) 1229:Psion 1071:RTEMS 980:NuttX 845:POSIX 784:(PDF) 582:SCADA 552:POSIX 404:In a 371:owner 359:mutex 287:with 2244:List 2125:CAPL 1999:musl 1994:lwIP 1933:UEFI 1825:FPGA 1780:ASIC 1700:° = 1692:^ = 1616:RTAI 1603:kits 1578:VRTX 1568:^ → 1526:pSOS 1509:OS-9 1439:RIOT 1323:DSOS 1238:EKA2 1102:seL4 1095:EROS 1065:eCos 1013:TRON 998:RIOT 922:UNOS 886:MERT 864:DNIX 766:Byte 746:2023 689:ISBN 645:2023 547:OSEK 377:and 304:Unix 190:core 77:task 59:and 36:RTOS 2700:PXE 2688:CLI 2668:HAL 2658:API 2461:IPC 2115:Ada 1857:SoC 1830:IoT 1612:° 2 1533:RMX 1503:MQX 1346:VAX 1340:DEC 1281:IBM 1146:DOS 1125:^ ( 903:QNX 884:^ ( 562:QNX 384:In 196:). 187:CPU 2717:: 2443:, 1624:^° 1601:, 1521:^° 1493:^° 1487:^° 1469:^° 1453:^° 1388:^° 1331:^° 1248:^° 1246:OS 1220:^° 1200:^° 1189:L4 1137:^) 1131:+ 1104:^° 1098:^° 1000:^° 982:^° 888:– 763:. 737:. 635:. 381:. 67:. 30:A 2537:, 2447:) 2439:( 2207:e 2200:t 2193:v 1758:e 1751:t 1744:v 1630:° 1618:° 1580:^ 1574:^ 1515:) 1511:( 1505:^ 1499:^ 1447:^ 1441:° 1429:^ 1423:^ 1417:° 1409:° 1400:° 1394:° 1267:^ 1214:^ 1206:^ 1073:° 1067:° 994:^ 976:^ 970:^ 964:^ 945:° 917:° 911:° 905:^ 892:) 817:e 810:t 803:v 786:. 748:. 722:. 697:. 672:. 647:. 399:C 395:B 391:A 144:. 34:( 20:)

Index

Real-time operating systems
operating system
real-time computing
time-sharing
fail safe
event-driven
preemptive
interrupts
task
jitter
throughput
soft or hard
deterministically
scheduling
interrupt latency
thread switching latency
switches tasks
preemptive priority
interrupt
round-robin
Time sharing
multitasking
CPU designs
CPU
core
resource starvation
doubly linked list
Cooperative scheduling
Preemptive scheduling
Rate-monotonic scheduling

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.