<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jan 23, 2019 at 2:01 AM Sebastian Huber <<a href="mailto:sebastian.huber@embedded-brains.de">sebastian.huber@embedded-brains.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 23/01/2019 08:11, Chris Johns wrote:<br>
> On 23/1/19 5:50 pm, Sebastian Huber wrote:<br>
>> On 22/01/2019 23:42, Chris Johns wrote:<br>
>>> On 23/1/19 5:34 am, Joel Sherrill wrote:<br>
>>>> I don't object.<br>
>>> Is executive the right abstraction? Both terms are an abstraction because we<br>
>>> have a single address space and literal or formal interpretation breaks down. I<br>
>>> see the physical separation as an implementation detail.<br>
>> Real-Time Executive for Multiprocessor Systems or RTEMS already has executive in<br>
>> its name.<br>
> The name has evolved over time.<br></blockquote><div><br></div><div>The M had two meanings before Multiprocessor. That's the only change. We shall NOT</div><div>discuss the previous two since those were poor choices that biased folks.</div><div><br></div><div>I found the original published paper on RTEMS. It was presented in August 1990</div><div>and the text version is at:</div><div><br></div><div><a href="https://archive.org/stream/DTIC_ADA247043/DTIC_ADA247043_djvu.txt">https://archive.org/stream/DTIC_ADA247043/DTIC_ADA247043_djvu.txt</a><br></div><div><br></div><div>It is clear there that kernel and executive were considered equivalent terms.</div><div>It is also clear that operating system is used about as many times as either</div><div>term. I did not re-read the paper to see if we used executive/kernel to refer</div><div>to a core set of services and OS to refer to a larger collection.</div><div><br></div><div><a href="https://en.wikipedia.org/wiki/Kernel_(operating_system)">https://en.wikipedia.org/wiki/Kernel_(operating_system)</a> is an interesting read.</div><div>Kernel is a valid term for us to use per that. A couple of quotes from the early</div><div>part of that ignoring the IO devices mentioned. This is the first sentence.</div><div><br></div><div>"The kernel is a computer program that is the core of a computer's operating system, </div><div>with complete control over everything in the system.[1] On most systems, it is one of the </div><div>first programs loaded on start-up (after the bootloader). "<br></div><div><br></div><div>The above matches my stated view that there is a core set of services that support</div><div>others. The collective is the operating system. For the purposes of this discussion,</div><div>the rtems.git repo unfortunately contains the kernel and some OS services. So the</div><div>repo is not purely the kernel layer. It is the kernel plus core services and libraries.</div><div><br></div><div>"The critical code of the kernel is usually loaded into a separate area of memory, </div><div>which is protected from access by application programs or other, less critical parts </div><div>of the operating system. "</div><div><br></div><div>The key point of the above sentence is "usually". This is in deference to UNIX</div><div>and Windows which do have separation. The kernel is a logical abstraction which</div><div>may have the property of separation.</div><div><br></div><div>Executive was used in the olden days of yore to refer to small RTOSes. </div><div><br></div><div><a href="http://www.drdobbs.com/a-simple-real-time-executive/184402613">http://www.drdobbs.com/a-simple-real-time-executive/184402613</a> presents TinyExec</div><div>and uses the real-time executive term repeatedly.</div><div><br></div><div>For those who remember it, VRTX stands for Versatile Real-Time Executive which</div><div>is the Vx in VxWorks which originally meant VRTX Works. </div><div><br></div><div>Google "real-time executive" and you will see other examples in addition to RTEMS.</div><div><br></div><div>Executive is meant in the sense that it manages concurrency and synchronization.</div><div><br></div><div>Nucleus and ThreadX refer to themselves as RTOS.</div><div><br></div><div>uCos uses the term real-time kernel. </div><div><br></div><div>Ironically, even the POSIX standard includes the terms real-time executive, kernel, and RTOS in</div><div><a href="http://pubs.opengroup.org/onlinepubs/9699919799.2013edition/xrat/V4_xsh_chap02.html">http://pubs.opengroup.org/onlinepubs/9699919799.2013edition/xrat/V4_xsh_chap02.html</a><br></div><div><br></div><div>My point here is that there really is a precedent here and kernel does not automatically</div><div>imply protection. </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
><br>
>> I don't think that the kernel/user space separation and system calls<br>
>> are an implementation detail. It is a hardware enforced feature which<br>
>> characterizes a whole group of operating systems. The name kernel is quite<br>
>> overloaded.<br>
> It sure is.<br></blockquote><div><br></div><div>We may use it in an overloaded manner but it has a pretty solid meaning</div><div>as the provider of core services in an operating system. With or without</div><div>protection.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
><br>
>> I would like to avoid that someone thinks about RTEMS as a micro<br>
>> kernel which would be totally wrong.<br>
> I think there will always be a level of confusion.<br></blockquote><div><br></div><div>This has never been a problem in the past.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
><br>
>>> Which term is the better abstraction of what the rtems.git repo is? This is the<br>
>>> critical piece to resolve.<br>
>> Ok, this is a different issue. The problem is that in rtems.git is a collection<br>
>> of different things. It contains the RTEMS executive (everything which deals<br>
>> with threads, interrupts, synchronization and inter-thread communication), a<br>
>> legacy network stack, file systems, device drivers, memory allocators,<br>
>> compression libraries, hash libraries, shell, etc. I think calling this stuff<br>
>> "kernel" is imprecise.<br>
> It is imprecise but what is a precise single word or term to explain this?<br>
<br>
I am not looking for a precise single word to cover this whole stuff. I <br>
just want to get rid of kernel in the documentation which is used for <br>
this and that. I would like to use executive for the RTEMS component <br>
that deals with with threads, interrupts, synchronization and <br>
inter-thread communication.<br></blockquote><div><br></div><div>This set of services matches what Wikipedia's definition of kernel provides.</div><div>And this from Stack Overflow.</div><div><br></div><div><a href="https://stackoverflow.com/questions/2013937/what-is-an-os-kernel-how-does-it-differ-from-an-operating-system">https://stackoverflow.com/questions/2013937/what-is-an-os-kernel-how-does-it-differ-from-an-operating-system</a><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
[...]<br>
> Sorry, of course the work is worth it if we have a term to use. I was meaning<br>
> for me kernel is only marginally better than executive so that change is not<br>
> worth it. I think it is important to keep executive for the list you have<br>
> provided below.<br>
<br>
I would like to use executive instead of kernel. I would also like to <br>
get rid of the word kernel in the RTEMS documentation set.<br></blockquote><div><br></div><div>Honestly, I almost would rather explain that historically the core set of services</div><div>provided by an RTOS were called an executive but that computer science </div><div>usually uses the term kernel. </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
><br>
>>>> However, if you go back in time to the early RTEMS days, executive and kernel<br>
>>>> were used interchangeably. Both were less full-featured than what was called an<br>
>>>> OS back in those days. Now that RTEMS has file systems, networking, etc, it is<br>
>>>> proper under those old conventions to use OS for RTEMS now but the concurrency<br>
>>>> and synchronization minimal subset is an executive/kernel.<br>
>>> Yes I agree we have used these terms equally over the years...<br>
>>><br>
>>> <a href="https://docs.rtems.org/releases/4.5.0/rtemsdoc-4.5.0/share/rtemsdoc/html/FAQ/FAQ00006.html" rel="noreferrer" target="_blank">https://docs.rtems.org/releases/4.5.0/rtemsdoc-4.5.0/share/rtemsdoc/html/FAQ/FAQ00006.html</a><br>
>>><br>
>>><br>
>>> :)<br>
>>><br>
>>>> But executive is better than kernel now as a term. Executives focus on services<br>
>>>> related to managing a thread set.<br></blockquote><div><br></div><div>I don't know if I said this or not but I think I MAY use them interchangeably but after </div><div>more research, I think executive has fallen out of favor generally and kernel is</div><div>the more commonly accepted term for the core services of an operating system.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
>>> How do we address the rtems.git repo? For example ...<br>
>>><br>
>>>    "Please refer to the code in the kernel repo"<br>
>>><br>
>>>    "Please refer to the code in the executive repo"<br>
>>><br>
>>>    "Please refer to the code in the OS repo"<br>
>>><br>
>>> For me the executive sentence seems specialised while the kernel seem boarder<br>
>>> but that could just be my ingrained view.<br>
>> What about "Please refer to the code in the RTEMS main repo"?<br>
> Words like main are not great, it is like new or old.<br>
<br>
Old and new constantly change, but there is just one main repository, <br>
the one that contains the RTEMS executive.<br></blockquote><div><br></div><div>Or kernel depending on the term. But it contains more. It also contains</div><div>critical core services. If the legacy network stack were NOT in it, we would</div><div>say it contained all operating system services EXCEPT the TCP/IP stack.</div><div><br></div><div>I would say core OS services including the kernel.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
><br>
>> I would definitely not call it "kernel repo" or "executive repo".<br>
> Sure but it leaves a hole we need to fill.<br>
><br>
>> The "OS repo" is also good.<br>
> What about "RTOS", eg RTOS repo? This leave 'OS' as the collective term of the<br>
> pieces we have and I think that is a good thing to have.<br>
><br>
>> I think we should rename rtems-kernel-*.cfg to rtems-os-*.cfg in the RSB.<br>
> rtems-rtos-*.cfg ?<br>
<br>
Maybe just call it the "RTEMS repository" and use rtems-rtems-*.cfg.<br></blockquote><div><br></div><div>I agree with the comment that FreeRTOS uses the term RTOS but other commercial</div><div>products are not afraid of the term RTOS. And we shouldn't be either.</div><div><br></div><div>Did I hear you st-stutter? rtems-rtems... LOL It is more accurate though. :)</div><div><br></div><div>rtems-rtos is nice</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
><br>
>>> If we use executive is 'exec' as a shorted path ok? For example:<br>
>>><br>
>>>    /opt/work/chris/rtems/exec/rtems.git<br></blockquote><div><br></div><div>For those with long memories, cpukit/ used to be c/src/exec. :)</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
>>><br>
>>> If 'executive' is used we are again extending path names and we there can be<br>
>>> issues even on Linux, ie Ada builds and Windows.<br>
>> The directory structure proposed in the documents is another topic. I would<br>
>> organize it like this:<br>
>><br>
>> sandbox/5/ <- prefix<br>
>> sandbox/src/examples<br>
>> sandbox/src/libbsd<br>
>> sandbox/src/rsb<br>
>> sandbox/src/rtems<br>
>    sandbox/src/rtos<br>
<br>
I think it is confusing to use a completely different directory name <br>
compared to the remote repository name. A shortcut like <br>
rtems-source-builder -> rsb and rtems-libbsd -> libbsd is something else.<br></blockquote><div><br></div><div>The last updates to the Kickstart class I did included an explanation of the </div><div>different conventions you might encounter in the instructions. I really would</div><div>like to see this reduced to one public and one ${HOME} pattern. And </div><div>include a disclaimer that you can use any prefix you want but we </div><div>recommend /opt/rtems... for shared installation. And you can have private </div><div>per user installs in your ${HOME} directory anywhere you want. </div><div><br></div><div>But the manuals only use the /opt and one ${HOME} pattern.</div><div><br></div><div>It is very confusing and leads to user errors. Way more often than the</div><div>esoteric kernel vs executive vs OS.</div><div><br></div><div>FWIW this feels way more like the discussions I am used to in a standards</div><div>meeting than the RTEMS list. </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
-- <br>
Sebastian Huber, embedded brains GmbH<br>
<br>
Address : Dornierstr. 4, D-82178 Puchheim, Germany<br>
Phone   : +49 89 189 47 41-16<br>
Fax     : +49 89 189 47 41-09<br>
E-Mail  : <a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brains.de</a><br>
PGP     : Public key available on request.<br>
<br>
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.<br>
<br>
</blockquote></div></div></div></div></div></div></div></div></div>