Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.arch.embedded > #29087

Re: From cooperative to preemptive scheduler: a real example

From Niklas Holsti <niklas.holsti@tidorum.invalid>
Newsgroups comp.arch.embedded
Subject Re: From cooperative to preemptive scheduler: a real example
Date 2020-01-09 14:03 +0200
Organization Tidorum Ltd
Message-ID <h7oj3sFcrvnU1@mid.individual.net> (permalink)
References <qv0lmu$up1$1@dont-email.me> <h7iqr4F6k9uU1@mid.individual.net> <qv32lj$ko6$1@dont-email.me> <h7n4tfF3sqmU1@mid.individual.net> <qv7286$8cb$1@dont-email.me>

Show all headers | View raw


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.

> 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.

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.

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
       .      @       .

Back to comp.arch.embedded | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


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