Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.arch.embedded > #29091
| From | pozz <pozzugno@gmail.com> |
|---|---|
| Newsgroups | comp.arch.embedded |
| Subject | Re: From cooperative to preemptive scheduler: a real example |
| Date | 2020-01-10 00:32 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <qv8d6f$h4o$1@dont-email.me> (permalink) |
| References | (1 earlier) <h7iqr4F6k9uU1@mid.individual.net> <qv32lj$ko6$1@dont-email.me> <h7n4tfF3sqmU1@mid.individual.net> <qv7286$8cb$1@dont-email.me> <h7oj3sFcrvnU1@mid.individual.net> |
Il 09/01/2020 13:03, Niklas Holsti ha scritto: > On 2020-01-09 13:19, pozz wrote: >> Il 08/01/2020 23:54, Niklas Holsti ha scritto: >>> On 2020-01-08 1:02, pozz wrote: >>>> Il 07/01/2020 08:38, Niklas Holsti ha scritto: > > [snip] > >>>>> Let's assume these requirements and properties of the environment: >>>>> >>>>> A. The function "serial_rx" polls the one-character reception >>>>> buffer of the serial line once, and returns the received character, >>>>> if any, and EOF otherwise. It must be called at least as often as >>>>> characters arrive (that is, depending on baud rate) to avoid >>>>> overrun and loss of some characters. >>> >>> You asked about possible advantages of pre-emption; I made my >>> assumptions, above, such that the (incomplete) example you gave shows >>> this advantage, under these assumptions (which could be true for >>> other, otherwise similar example applications). >>> >>>> No, serial driver works in interrupt mode and already use a FIFO >>>> buffer, sufficiently big. serial_rx() pop a single element from the >>>> FIFO, if any. >>> >>> Ah, then your *system* is intrinsically pre-emptive (the interrupts >>> pre-empt the tasks), even if the *code you showed* does not show this >>> pre-emption. >> >> Ah yes, interrupts are preemptive and I use them a lot, but they are >> confined in their works, they are very lightweight and fast. > > That's a design decision. Some systems do most of their work in > interrupt handlers, and use "background" processing only for some > non-critical housekeeping tasks. > Yes, I imagine there are a pletora of possibilites. Anyway I thought there was two typical approaches: superloop that continuously calls non-blocking functions (an example of cooperative scheduler) and a full preemptive scheduler (most of the time a full RTOS). Interrupts are always present, even in superloop. >> The discussion here regards medium to high complexity tasks. > > I don't recall you saying so, and your example (perhaps naturally, for > an example) did not have such tasks. Many interrupt handlers are more > complex than the tasks in your example. Of course the example was simple. Its goal was to discuss the complexities (clutters) that a preemption scheduler add to the code of tasks (not to the code of interrupts that are almost the same). > In a pre-emptive system there is no logical difference between > interrupts and tasks. The only practical difference is that interrupts > are "tasks" that are scheduled by the processor HW (moderated by SW > control of interrupt masking and disabling) while the tasks are > scheduled by the RTOS. > > The advantages (and complications) of pre-emptive scheduling are mostly > the same for tasks as for interrupts. Maybe I am wrong, but I implement ISRs with great care and attention, but they are very small and limited. Most of the time they are already implemented in drivers released by the silicon vendor. Anyway they are so limited that the preemption issues (synchronization) are very well defined and confined. Normally the biggest part of the firmware is related to the application/tasks, not interrupts.
Back to comp.arch.embedded | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
From cooperative to preemptive scheduler: a real example pozz <pozzugno@gmail.com> - 2020-01-07 02:08 +0100
Re: From cooperative to preemptive scheduler: a real example Don Y <blockedofcourse@foo.invalid> - 2020-01-06 19:37 -0700
Re: From cooperative to preemptive scheduler: a real example pozz <pozzugno@gmail.com> - 2020-01-07 10:11 +0100
Re: From cooperative to preemptive scheduler: a real example Don Y <blockedofcourse@foo.invalid> - 2020-01-07 07:51 -0700
Re: From cooperative to preemptive scheduler: a real example pozz <pozzugno@gmail.com> - 2020-01-07 23:51 +0100
Re: From cooperative to preemptive scheduler: a real example Niklas Holsti <niklas.holsti@tidorum.invalid> - 2020-01-09 01:39 +0200
Re: From cooperative to preemptive scheduler: a real example pozz <pozzugno@gmail.com> - 2020-01-10 00:42 +0100
Re: From cooperative to preemptive scheduler: a real example Niklas Holsti <niklas.holsti@tidorum.invalid> - 2020-01-15 18:39 +0200
Re: From cooperative to preemptive scheduler: a real example Don Y <blockedofcourse@foo.invalid> - 2020-01-08 23:12 -0700
Re: From cooperative to preemptive scheduler: a real example pozz <pozzugno@gmail.com> - 2020-01-10 00:49 +0100
Re: From cooperative to preemptive scheduler: a real example Don Y <blockedofcourse@foo.invalid> - 2020-01-08 23:12 -0700
Re: From cooperative to preemptive scheduler: a real example Don Y <blockedofcourse@foo.invalid> - 2020-01-09 01:33 -0700
Re: From cooperative to preemptive scheduler: a real example Niklas Holsti <niklas.holsti@tidorum.invalid> - 2020-01-07 09:38 +0200
Re: From cooperative to preemptive scheduler: a real example pozz <pozzugno@gmail.com> - 2020-01-08 00:02 +0100
Re: From cooperative to preemptive scheduler: a real example Niklas Holsti <niklas.holsti@tidorum.invalid> - 2020-01-09 00:54 +0200
Re: From cooperative to preemptive scheduler: a real example pozz <pozzugno@gmail.com> - 2020-01-09 12:19 +0100
Re: From cooperative to preemptive scheduler: a real example Niklas Holsti <niklas.holsti@tidorum.invalid> - 2020-01-09 14:03 +0200
Re: From cooperative to preemptive scheduler: a real example pozz <pozzugno@gmail.com> - 2020-01-10 00:32 +0100
Re: From cooperative to preemptive scheduler: a real example Niklas Holsti <niklas.holsti@tidorum.invalid> - 2020-01-15 18:53 +0200
Re: From cooperative to preemptive scheduler: a real example pozz <pozzugno@gmail.com> - 2020-01-16 14:48 +0100
Re: From cooperative to preemptive scheduler: a real example upsidedown@downunder.com - 2020-01-16 21:04 +0200
Re: From cooperative to preemptive scheduler: a real example Niklas Holsti <niklas.holsti@tidorum.invalid> - 2020-01-16 22:24 +0200
Re: From cooperative to preemptive scheduler: a real example pozz <pozzugno@gmail.com> - 2020-01-17 02:05 +0100
Re: From cooperative to preemptive scheduler: a real example Niklas Holsti <niklas.holsti@tidorum.invalid> - 2020-01-18 23:03 +0200
Re: From cooperative to preemptive scheduler [Stack] pozz <pozzugno@gmail.com> - 2020-01-14 13:27 +0100
Re: From cooperative to preemptive scheduler [Stack] Hans-Bernhard Bröker <HBBroeker@t-online.de> - 2020-01-14 20:10 +0100
Re: From cooperative to preemptive scheduler [Stack] pozz <pozzugno@gmail.com> - 2020-01-15 09:36 +0100
Re: From cooperative to preemptive scheduler [Stack] Stef <stef33d@yahooI-N-V-A-L-I-D.com.invalid> - 2020-01-15 11:30 +0100
Re: From cooperative to preemptive scheduler [Stack] pozz <pozzugno@gmail.com> - 2020-01-15 11:51 +0100
Re: From cooperative to preemptive scheduler [Stack] Hans-Bernhard Bröker <HBBroeker@t-online.de> - 2020-01-15 21:51 +0100
Re: From cooperative to preemptive scheduler [Stack] Niklas Holsti <niklas.holsti@tidorum.invalid> - 2020-01-15 21:26 +0200
Re: From cooperative to preemptive scheduler [Stack] Hans-Bernhard Bröker <HBBroeker@t-online.de> - 2020-01-15 22:12 +0100
Re: From cooperative to preemptive scheduler [Stack] Niklas Holsti <niklas.holsti@tidorum.invalid> - 2020-01-15 23:30 +0200
csiph-web