इस प्रकार के सिस्टम में कोड का एक निम्न-स्तरीय भाग एक टाइमर (इंटरप्ट से संयोजित) के आधार पर कार्यों या थ्रेड्स के बीच आदान-प्रदान (Switch) करता रहता है। इस स्तर पर सामान्यत: यह माना जाता है कि सिस्टम में एक "ऑपरेटिंग कर्नल" उपस्थित है। कितनी कार्यात्मकता की आवश्यकता है, इस पर निर्भर करते हुए, यह अवधारणात्मक रूप से समानांतर स्थिति में क्रियान्वित हो रहे अनेक कार्यों के प्रबंधन के लिए अधिक या कम जटिलताएं प्रस्तुत करता है।

चूंकि कोई भी कोड संभावित रूप से किसी अन्य कार्य के डाटा को हानि पहुंचा सकता है (MMU का प्रयोग करने वाले बड़े सिस्टम्स को छोड़कर), अत: प्रोग्राम्स की रचना एवं परीक्षण सतर्कतापूर्वक किया जाना चाहिए, तथा साझा किये गए डाटा का नियंत्रण किसी सिन्क्रोनाइज़ेशन रणनीति, जैसे सन्देश-पंक्ति (Message queue), सेमाफोर या किसी गैर-अवरोधी (Non-blocking) सिन्क्रोनाइज़ेशन योजना द्वारा अनिवार्य रूप से किया जाना चाहिए।

इन जटिलताओं के कारण, संगठनों द्वारा एक रीयल-टाइम ऑपरेटिंग सिस्टम को खरीदना एक सामान्य बात है, जो अनुप्रयोग प्रोग्रामर्स को, कम-से-कम बड़े सिस्टम्स के लिए, ऑपरेटिंग सिस्टम सेवाओं की बजाय उपकरणों की कार्यात्मकता पर ध्यान केन्द्रित करने की अनुमति देता है; मेमोरी आकार, प्रदर्शन तथा/या बैटरी जीवन-काल आदि की सीमाओं के कारण छोटे सिस्टम्स एक "सामान्य (Generic)" रीयल-टाइम सिस्टम से जुड़े अतिरिक्त खर्च को वहन नहीं कर सकते.

यूज़र इंटरफ़ेस
एम्बेडेड सिस्टम्स के विभिन्न प्रकार
प्रिएम्पटिव मल्टी-टास्किंग या मल्टी-थ्रेडिंग
सहकारी मल्टी-टास्किंग