*BSD News Article 19603


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!howland.reston.ans.net!gatech!prism!gt8134b
From: gt8134b@prism.gatech.EDU (Howlin' Bob)
Newsgroups: comp.os.386bsd.development
Subject: Re: V86 mode & the BIOS (was Need advice: Which OS to port to?)
Message-ID: <109150@hydra.gatech.EDU>
Date: 17 Aug 93 18:54:21 GMT
References: <3390@vall.dsv.su.se> <CB11pL.D12@imag.fr> <107181@hydra.gatech.EDU> <1993Aug4.073826.24956@fcom.cc.utah.edu> <107725@hydra.gatech.EDU> <245jrfINNrc0@bonnie.tcd-dresden.de> <108457@hydra.gatech.EDU> <1993Aug12.110032.16307@cnplss5.cnps.philips.nl>
Organization: Georgia Institute of Technology
Lines: 32

In <1993Aug12.110032.16307@cnplss5.cnps.philips.nl> rooij@bashful.isp.cft.philips.nl (Guido van Rooij) writes:

>gt8134b@prism.gatech.EDU (Howlin' Bob) writes:
>>As for slow task switching, the 386 doesn't access the I/O permissions
>>bitmap until an I/O instruction occurs.  The size of the bitmap has
>>no effect on task switching performance.

>The reason this was brought up is the fact that on task switching you
>also need somehow to get the io permission bitmap in the TSS. Since
>386bsd does not use the builtin taskswitching of the 386, theis bitmap
>has to be memcpy'd into the TSS, resullting in slow task switches.

This is unfortunate.  If the *BSD developers deem it useful to allow tasks
to keep individual I/O permission bitmaps, perhaps they would consider adding
a per-task flag and pointer; the first access to an ioperm()-like function
would set up an I/O bitmap and set the flag to true; the software task 
switcher would only have to copy the bitmap when switching to a task
with the I/O flag set; switching from a task with the I/O flag set to
one without it would merely require setting the I/O bitmap length to 0.

This might be easier than restructuring *BSD to use hardware task
switching, or a scheme, as someone suggested, of keeping two TSS's
around: one for I/O using applications, one for those that do not.

dosemu needs individual control over its ports; if it can't have control
over them, then it might as well have to go the long way and use iopl().

-- 
Robert Sanders
Georgia Institute of Technology, Atlanta Georgia, 30332
uucp:	  ...!{decvax,hplabs,ncar,purdue,rutgers}!gatech!prism!gt8134b
Internet: gt8134b@prism.gatech.edu