I'm pretty sure the Unix running on the PDP-10 that I used for a University graphics course was also running a real time scheduler. And that was back in 1982.
What an RTOS does is provide a fair method of giving users equal time to the scarce resources. It does that at the cost of itself taking up CPU cycles even if there isn't anyone else running. What an RTOS can also do is add priority to tasks so that some run at the expense of others. There are all sorts of interesting ways of still giving time to lower priority tasks over the higher ones. For example, each time a low priority task is not allowed to run, due to a ready to run higher priority task, the lower one has it's priority incremented by one until it can run. At that point it's lowered again to its original priority to start the process all over again. That can have serious consequences for something like Linux which must be ready to run at a precise interval with minimal or no jitter. You can't suddenly have a lower priority task that's been waiting for a few seconds to then get a 20mS time slot. For the same reason, task that all have the same priority are scheduled in a round robin fashion which each getting equal time or less if they release the processor while waiting for some sort of event. Badly written code that spins in a loop will eat up it's entire 20ms slot when it really only needs 100uS and then asks for a timer to wake it up again. That slows down other task that perhaps need more time. I don't know how the regular Linux kernel handles things. As I recall, you can assign priority to tasks. And an infinite loop program can still be killed from another session so the low level OS doesn't really have any problem dealing with the misbehaving code. So perhaps my understanding of a PREEMPT-RT is different from others. Is it possible that with a standard Linux if you set up an infinite loop task with the highest priority that you can no longer sign in via say the serial port to kill that task? Normally a task with the same priority if it uses round robin time slicing will still get access. So maybe the PREEMPT_RT is priority based without round robin time slicing? Many of the newer programming languages use something called garbage collection. Python is an example of that. It just asks for memory when it creates a variable. If the variable is changed to something else more memory is requested. Eventually all this memory which can be a bit fragmented is joined back together into one bigger chunk by the OS. That's the garbage collection and can happen randomly from the perspective of the operating program. Tasks that are created and disposed of say by the reception HTML WEB pages also invoke the garbage collection. Once can't have that when trying to read encoders or generate stepping pulses. So what does Linux do and what does PREMPT-RT do that's different. Maybe someone can explain in simple elementary school level terms? Thanks John > -----Original Message----- > From: Jon Elson [mailto:el...@pico-systems.com] > Sent: June-22-18 6:43 PM > To: Enhanced Machine Controller (EMC) > Subject: Re: [Emc-users] Raspberry Pi PREEMPT-RT > > On 06/22/2018 11:10 AM, Peter C. Wallace wrote: > > > > > > > > Linux has had real time kernels for more than 10 years > rt-linux was used by the original EMC (1) in about 1996 to > port the original EMC over from Sun hardware. > So, it has been about 22 years! Amazing! I got my first > EMC system running in 1997, and was running a machine > reliably with it by 1998. > > Jon > > ---------------------------------------------------------------------------- -- > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Emc-users mailing list > Emc-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/emc-users ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users