[comp.unix.i386] Using GCC/GAS Xenix on AT&T Unix V/386.3.2

jca@pnet01.cts.com (John C. Archambeau) (05/03/90)

glenn@extro.ucc.su.OZ.AU (Glenn Geers) writes:
>From article <2459@crash.cts.com>, by jca@pnet01.cts.com (John C. Archambeau):
>> bill@bilver.UUCP (Bill Vermillion) writes:
>>>In article <2413@crash.cts.com> jca@pnet01.cts.com (John C. Archambeau) writes:
>>>>dlucy@tropez.UUCP (Doug Lucy) writes:
>>>>>I'm using GNU's gcc 1.37.1 and gas 1.35 patched and compiled for
>>>.....
>>>>It should work since SCO Unix is binary compatable with SCO Xenix.  Just don't
>>>>expect the demand paging to kick in on Xenix processes.  I believe you need a
>>>>smarter linker such as the one for the SCO Unix Development System to have the
>>>>demand paging work at all.
>>>
>>>If I am interpreting (or reading between the lines properly) you are saying
>>>that the Development system doens't support creation of demand paged programs
>>>in Xenix even though the OS does.
>>>
>>>I thought the paging was a function of the os and not the linkers.
>>>
>>>Or am I totally confused.
>> 
>> Maybe I am as well.  My understanding is that the linker has to link up the
>> code in such a way that it can be swapped or demand paged.  Keep in mind that
>> I am only familiar with systems that only do swapping, not demand paging and
>> if Xenix 386 does do it, I obviously have overlooked it.  The only process
>> that I see running is the swapper when I do a ps, of course, on systems that
>> do demand paging, it has to be really loaded to kick in.
>> 
>> Again, I may be completely wrong...and if I stuck my keyboard in my mouth, my
>> apologies.
>
>Xenix 386 *DOES* demand page. If it didn't how could I run processes larger
>than physical memory ? I have 3640kb available - subtract ~1Mb for the kernel
>leaving 2640kb but my maximum process size is ~4500kb.
>Why doesn't someone just do vmstat -s and look at the pagein/out stats that are
>provided ?

Maybe I'd better refine the question, what's the difference between ordinary
swapping and demand paging?  I've heard of systems having both and the demand
pager kicking in when the swapper is heavily loaded.  Or am I listening to
misinformation?
 
     // JCA

 /*
 **--------------------------------------------------------------------------*
 ** Flames  : /dev/null                     | Xenix is the ONLY thing
 ** ARPANET : crash!pnet01!jca@nosc.mil     | Microsoft did right.
 ** INTERNET: jca@pnet01.cts.com
 ** UUCP    : {nosc ucsd hplabs!hd-sdd}!crash!pnet01!jca
 **--------------------------------------------------------------------------*
 */

perand@admin.kth.se (Per Andersson) (05/03/90)

In article <2496@crash.cts.com> jca@pnet01.cts.com (John C. Archambeau) writes:
>
>Maybe I'd better refine the question, what's the difference between ordinary
>swapping and demand paging?  I've heard of systems having both and the demand
>pager kicking in when the swapper is heavily loaded.  Or am I listening to
>misinformation?

Swapping is when you move whole processes in and out of memory, paging when
you move parts (pages). This is my favourite bashing of System V contra BSD.
System V up to and including 3.2 doesn't have paging ! The most recent trouble
I had with this was when installing the brand new 386/ix on my machine. 
I found some nice things not in the kernel, and added support for them, but no,
there was to little memory to run them. Then I tried to build a new kernel,
like the original one - bang. The linker process was to big to fit in memory 
at the same time as the OS, so it wouldn't build. Yawn..... Of course I could 
have read the manual but...
Now does anybody really know if Xenix/386 can do paging ?

Per


-- 
---
Per Andersson
Royal Institute of Technology, Stockholm, Sweden
perand@admin.kth.se, @nada.kth.se 

guy@auspex.auspex.com (Guy Harris) (05/04/90)

>Swapping is when you move whole processes in and out of memory, paging when
>you move parts (pages). This is my favourite bashing of System V contra BSD.
>System V up to and including 3.2 doesn't have paging !

What on earth are you talking about?  S5 has paged since S5R3 - or S5R2
Version 2 for the VAX, perhaps some other S5R2 version for 3B2s, etc..

jackv@turnkey.TCC.COM (Jack F. Vogel) (05/04/90)

In article <2496@crash.cts.com> jca@pnet01.cts.com (John C. Archambeau) writes:
>Maybe I'd better refine the question, what's the difference between ordinary
>swapping and demand paging?  I've heard of systems having both and the demand
>pager kicking in when the swapper is heavily loaded.  Or am I listening to
>misinformation?
  
Yes, you are listening to misinformation. There is no such thing as the
"demand pager". Demand paging means that a process only gets pages of its
process as it references them, when it references a page the first time it
gets a page fault and the page is brought in. Whether it keeps the page
depends on how frequently it references it. The kernel process known as
the "pager" or usually seen as "vhand" when you do a ps on V3.2 is really
what one should call the page stealer. It wakes up every so many system
ticks and checks process pages and if they have not been referenced 
recently it "steals" them returning them to the free list for other
processes to use. "Swapping" happens only when the pager is not able to
free enough pages to satisfy the need of the scheduler to bring in some
process into core to run. When the pager cannot free enough pages via its
normal stealing operation it will choose some process and "swap" it, that
is takes it out of core altogether and put its image on the swap device.
It is always desireable to not swap, you will not do so as long as the
scheduler can keep the context of all runnable processes in core.

Hope this sheds some light.

Disclaimer: These are my views, not necessarily my employer's.


-- 
Jack F. Vogel			jackv@locus.com
AIX370 Technical Support	       - or -
Locus Computing Corp.		jackv@turnkey.TCC.COM

glenn@extro.ucc.su.OZ.AU (Glenn Geers) (05/04/90)

From article <2496@crash.cts.com>, by jca@pnet01.cts.com (John C. Archambeau):
> 
> Maybe I'd better refine the question, what's the difference between ordinary
> swapping and demand paging?  I've heard of systems having both and the demand
> pager kicking in when the swapper is heavily loaded.  Or am I listening to
> misinformation?

The swapper kicks in when the pager can't handle the load. The fundamental
difference between a purely swapped system (e.g. U*IX on a 286) and a demand
paged system is that the entire text and/or data does not need to be resident
in core in the demand paged case. On the 386 the page size is 4k so you could
conceivably run your machine with 8k of user memory available but you'd really
pay for it by having a slooooooooooooooooow system since every data or text
reference more than ~4k away would require a page fetch from disk. The proof
that xenix pages is purely empirical - take nethack (nice and large), when
you get the initial map of the first level the movement code is not in core
(at least on my machine !) so when I hit a movement key the OS demand pages
in the relevant bits of code (yep, the disk light goes on and there is a slight
delay).

For more coherent info read an OS book - a good one is "Operating Systems:
Design and Implementation" by Andrew S. Tannenbaum. This is the book that
gave rise to comp.os.minix.

Hope this helps - but you should keep in mind that I'm a physicist not a
computer scientist !

						Cheers,
							Glenn

glenn@extro.ucc.su.OZ.AU (Glenn Geers) (05/04/90)

From article <1990May2.220056.25855@kth.se>, by perand@admin.kth.se (Per Andersson):
> 
> Swapping is when you move whole processes in and out of memory, paging when
> you move parts (pages). This is my favourite bashing of System V contra BSD.
> System V up to and including 3.2 doesn't have paging ! The most recent trouble
> I had with this was when installing the brand new 386/ix on my machine. 
> I found some nice things not in the kernel, and added support for them, but no,
> there was to little memory to run them. Then I tried to build a new kernel,
> like the original one - bang. The linker process was to big to fit in memory 
> at the same time as the OS, so it wouldn't build. Yawn..... Of course I could 
> have read the manual but...
> Now does anybody really know if Xenix/386 can do paging ?

As far as I can tell it *really* does demand page. Take a program that accesses
more than phys. mem - kernel mem (A simple array clear/fill program is good 
here) and run it twice. On my machine both processes complete albeit slowly and
vmstat -s shows pagein/pageout to the swap area go up nicely. I have also had
gcc blow out to over 4 Mb of data (all that shows up on ps) without complaint.
									Glenn

jca@pnet01.cts.com (John C. Archambeau) (05/04/90)

perand@admin.kth.se (Per Andersson) writes:
>In article <2496@crash.cts.com> jca@pnet01.cts.com (John C. Archambeau) writes:
>>
>>Maybe I'd better refine the question, what's the difference between ordinary
>>swapping and demand paging?  I've heard of systems having both and the demand
>>pager kicking in when the swapper is heavily loaded.  Or am I listening to
>>misinformation?
>
>Swapping is when you move whole processes in and out of memory, paging when
>you move parts (pages). This is my favourite bashing of System V contra BSD.
>System V up to and including 3.2 doesn't have paging ! The most recent trouble
>I had with this was when installing the brand new 386/ix on my machine. 
>I found some nice things not in the kernel, and added support for them, but no,
>there was to little memory to run them. Then I tried to build a new kernel,
>like the original one - bang. The linker process was to big to fit in memory 
>at the same time as the OS, so it wouldn't build. Yawn..... Of course I could 
>have read the manual but...
>Now does anybody really know if Xenix/386 can do paging ?

Thanks for that explanation.  And as for whether or not Xenix 386 does paging.
I'm sure it does.  I went into /usr/sys/conf and ran ./configure (as root) and
did some kernel tweaking.  It would indicate that you can tell it how much you
can page in and out for processes.  Apparently (I did not tweak any parameters
dealing with virtual memory, swapping, or paging) you can make processes
larger than physical memory.  So if that's the case, it has to support paging.
 
     // JCA

 /*
 **--------------------------------------------------------------------------*
 ** Flames  : /dev/null                     | Xenix is the ONLY thing
 ** ARPANET : crash!pnet01!jca@nosc.mil     | Microsoft did right.
 ** INTERNET: jca@pnet01.cts.com
 ** UUCP    : {nosc ucsd hplabs!hd-sdd}!crash!pnet01!jca
 **--------------------------------------------------------------------------*
 */