*BSD News Article 31527


Return to BSD News archive

Xref: sserve comp.os.misc:3089 comp.os.lynx:532 comp.os.386bsd.questions:10817 comp.os.lynx:533 comp.os.mach:3948 comp.os.minix:23844
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!bunyip.cc.uq.oz.au!munnari.oz.au!news.Hawaii.Edu!ames!hookup!swrinde!pipex!uknet!EU.net!sun4nl!news.nic.surfnet.nl!tuegate.tue.nl!blade.stack.urc.tue.nl!onno
From: onno@stack.urc.tue.nl (Onno Hovers)
Newsgroups: comp.os.misc,comp.os.lynx,comp.os.386bsd.questions,comp.os.lynx,comp.os.mach,comp.os.minix
Subject: Re: Need good OS for intel X86 platform. LINUX!!!
Followup-To: comp.os.misc,comp.os.lynx,comp.os.386bsd.questions,comp.os.lynx,comp.os.mach,comp.os.minix
Date: 2 Jun 1994 08:43:04 GMT
Organization: MCGV Stack, Eindhoven University of Technology, the Netherlands.
Lines: 46
Message-ID: <2sk62o$5dk@tuegate.tue.nl>
References: <1994May27.141723.13104@eplrx7.es.duPont.com> <n9044144.770068471@honeydew> <JRICHARD.94May27170016@charon.uml.edu> <2s7euj$ahp@solaris.cc.vt.edu> <2sc2g7$k3c@astfgl.edb.tih.no>
NNTP-Posting-Host: blade.stack.urc.tue.nl
X-Newsreader: TIN [version 1.2 PL2]

Ragnvald T. Blindheim (root@jedi.edb.tih.no) wrote:
> balister@maddog.async.vt.edu wrote:
> : I think preempitive multitasking means a high priority task can
> : interupt a lower priority task even if it's in the kernel. If someone has

> Processes preemted when in kernel mode?   I don't think so.....
> I'm *no* Linux-guru (not even a Linux-user :-),
> but I don't think Linux can force preemption on processes while they
> are in kernel mode.

No, processes cannot be preempted when they are busy in the kernel. The
reasons for this are: 
-If processes could be preempted in kernel-mode then the routines in the
kernel must be fully reentrant. This is very difficult to achieve. A second 
possibility is using different threads within the kernel that use some kind
of message-passing.

But there are more reasons while Linux isn't real-time:
-The response-time to interrupts is not guaranteed. The routines in the
kernel use locking by masking the interrupts very often, and even when an 
interrupt is served other interrupts are very often masked.  
-A process within Linux cannot do its own scheduling, or guarantee
processor-time. System V Release 4 has something called a real-time queue 
for this. 
-There are no routines within the kernel that do their work within a
guaranteed time. 
-Interrupt service routines cannot use all of the system calls. The reason
for this is 
1) The kernel cannot be preempted.
2) An interrupt server routine cannot sleep
3) An interrupt server routine cannot copy something in a users' address
   space.
I don't know if user-processes can service interrupts, but it seems very
 unlikely to me.

Regards,

--
------------------------------------------------------------------------------
    /-------/       / | Onno Hovers [IRCNICK=arrow]
   /       /-------/  | 2nd Year student Physics  
  /       /-------/   | email:  onno@stack.urc.tue.nl
 /-------/       /    | tel. :  013-676622
 Ask for OHware (TM)  | addr.:  Wandelboslaan 105, 5042 PC Tilburg, Nederland 
------------------------------------------------------------------------------
All animals are equal, but some animals are more equal than others--G.Orwell