Du har rett, uttalelsen om at UNIX er uegnet for sanntidsapplikasjoner fordi en prosess som utfører i kjernemodus kanskje ikke er forhåndsinntatt er
delvis sann, men trenger litt avklaring . La oss bryte sammen hvorfor:
Forstå problemet
* sanntidsapplikasjoner: Systemer i sanntid krever strenge timinggarantier. En oppgave må fullføre innen en bestemt frist, uavhengig av andre prosesser som kjører på systemet.
* Kernelmodus: Når en prosess kjører i kjernemodus, har den direkte tilgang til systemets maskinvare og ressurser. Dette er nødvendig for oppgaver som å håndtere avbrytelser eller administrere I/O -enheter.
* Preemption: Forberedelse er operativsystemets evne til å avbryte en løpsprosess og bytte til en annen. I et sanntidssystem er forhåndsinnlegget avgjørende for å sikre at oppgaver med høy prioritet ikke blir forsinket av oppgaver med lavere prioritet.
hvorfor uttalelsen er delvis sann
Uttalelsen fokuserer på et kritisk spørsmål i tradisjonelle UNIX-lignende systemer. Kjernen, selv om den er ansvarlig for planlegging, er i seg selv ikke alltid forebyggbar. Dette betyr at:
1. Kernelkodeforsinkelser: Hvis en kjernefunksjon, til og med en lav prioritet, tar for lang tid å utføre, kan den blokkere andre oppgaver, inkludert sanntidsoppgaver med høy prioritet.
2. Frister savnet: Hvis en sanntidsoppgave må kjøres, men en kjernefunksjon blokkerer den, kan fristen for den oppgaven gå glipp av.
hvorfor det er forenklet
* Ikke alle UNIX -systemer er de samme: Det er variasjoner i hvordan forskjellige UNIX-lignende systemer håndterer kjernefremføring. Noen nyere kjerner, som Linux, har introdusert teknikker for å forbedre fritaket, noe som gjør dem mer egnet for sanntidsscenarier.
* sanntidsutvidelser: Mange UNIX-lignende systemer har sanntidsutvidelser (som POSIX sanntid) som adresserer denne begrensningen. Disse utvidelsene gir:
* prioritert-basert planlegging: Oppgaver i sanntid kan tildeles høyere prioriteringer enn normale prosesser.
* tidtakere og tidsfrister: Oppgaver i sanntid kan være forbundet med tidsfrister og tidtakere, slik at systemet kan håndheve tidsbegrensninger.
* Preemptive Kernels: Noen utvidelser i sanntid inkluderer forebyggende kjerner for å sikre at oppgaver med høy prioritet ikke blir forsinket.
Konklusjon
Selv om det er sant at mangelen på forebyggbar kjernekode i noen tradisjonelle UNIX-implementeringer var en betydelig hindring for sanntidsapplikasjoner, er det ikke en fullstendig uttalelse om situasjonen. Moderne Unix-lignende systemer, spesielt med utvidelser i sanntid, har gjort betydelige forbedringer i å løse dette problemet. For applikasjoner med strenge sanntidskrav, er det imidlertid avgjørende å velge et system med en forebyggende kjerne- og sanntidsutvidelser.