Du har rätt, uttalandet om att UNIX är olämpligt för realtidsapplikationer eftersom en process som körs i kärnläge kanske inte är förebyggt är
delvis sant men behöver viss förtydligande . Låt oss bryta ner varför:
Förstå problemet
* realtidsapplikationer: Realtidssystem kräver strikta tidsgarantier. En uppgift måste slutföras inom en specifik tidsfrist, oavsett andra processer som körs på systemet.
* kärnläge: När en process körs i kärnläge har den direkt tillgång till systemets hårdvara och resurser. Detta är nödvändigt för uppgifter som hantering av avbrott eller hantering av I/O -enheter.
* Förehållning: Förutsättning är operativsystemets förmåga att avbryta en löpningsprocess och byta till en annan. I ett realtidssystem är förbehållet avgörande för att säkerställa att uppgifter med hög prioritering inte försenas av uppgifter med lägre prioritering.
Varför uttalandet är delvis sant
Uttalandet fokuserar på en kritisk fråga i traditionella UNIX-liknande system. Kärnan, även om den är ansvarig för schemaläggning, är i sig inte alltid förebyggbar. Detta betyder att:
1. kärnkodförseningar: Om en kärnfunktion, till och med en lågprioritet, tar för lång tid att utföra, kan det blockera andra uppgifter, inklusive högprioriterade realtidsuppgifter.
2. Tidsfrister missade: Om en realtidsuppgift måste köras men en kärnfunktion blockerar den kan tidsfristen för den uppgiften missas.
Varför är det förenklat
* inte alla UNIX -system är desamma: Det finns variationer i hur olika UNIX-liknande system hanterar kärnföreställning. Vissa nyare kärnor, som Linux, har introducerat tekniker för att förbättra förmånen, vilket gör dem mer lämpade för realtidsscenarier.
* realtidsförlängningar: Många UNIX-liknande system har realtidsförlängningar (som POSIX realtid) som tar upp denna begränsning. Dessa tillägg ger:
* Prioritetsbaserad schemaläggning: Realtidsuppgifter kan tilldelas högre prioriteringar än normala processer.
* timers och tidsfrister: I realtidsuppgifter kan associeras med tidsfrister och tidtagare, vilket gör att systemet kan upprätthålla tidsbegränsningar.
* Förebyggande kärnor: Vissa realtidsförlängningar inkluderar förhindrande kärnor för att säkerställa att högprioriterade uppgifter inte är försenade.
Slutsats
Även om det är sant att bristen på förutsägbar kärnkod i vissa traditionella UNIX-implementeringar var ett betydande hinder för realtidsapplikationer, är det inte ett fullständigt uttalande om situationen. Moderna UNIX-liknande system, särskilt med realtidsförlängningar, har gjort betydande förbättringar för att ta itu med denna fråga. För applikationer med stränga realtidskrav är det emellertid avgörande att välja ett system med en förhindrande kärna och realtidsutvidgningar.