[comp.os.minix] A few novice questions

powers@cimbad.dec.com (Bill Powers) (11/09/88)

     I had sent this msg, last week, but I don't think it made it to the
  outside world, If this is the second time you have seen this msg from me,
  please ignore it.

     I have been using/playing with Minix for the ST for a couple of weeks
  now, I think that it beats gemdos by a mile, even though it, at this point,
  does not support all of the st's hardware.  I have a few questions I hope
  some of you might be able to answer for me.

  1) I have a 1040ST, with a hard disk, and would like to abolish the ram
     disk.  It seems the main purpose of the ram disk was to make it usable
     for floppy based systems.  I have set my system up for now such that
     the root file system is on partition 3, and /usr is on partition 4
     partition 3 is formatted at 1 meg, and partition 4 is 10 meg.  How
     easy would it be to remove the ramdisk, and what areas/routines would
     need to be modified?

  2) I guess this next question is more generic in nature towards UNIX
     in general.  Are there standard system calls in most unix systems
     for doing graphics/windowing functions, which something like X-Windows
     relies on using, or how is their functionality usually achieved?

  3) If I spawn a couple of processes from a program, is their a mechanism
     for one process to send stuff to another process, like mailboxes in
     VMS.

  4) In the atari implementation, are the processes protected from blasting
     one another, or the kernel?  I believe there are fence registers which
     can be set in one of the atari custom chips, to generate a trap, if
     you try to access outside your space.  I believe this is how Atari
     protects the first couple of K of ram where they store system vars
     for gemdos.  You can't blast the os, it's in rom, but thats ok, Atari
     pre-blasted it for us, it's so full of bugs ;^)

  5) Are there any particular reasons why the minix couldn't keep the 
     heep, and processes can take as much of it as is available, instead
     of each process having a separate stack/heap area, which is I believe
     how it works now.


     Also, does anyone elses grep function generate a memory error when
     it finds an occurance of the expression, in the file you are searching?
     This is what happens on my st, and I haven't touched the code for
     any of the commands yet.

   Bill Powers

#include disclaimer.h
/*******************************************************************************
* If you had a VAXstation like me, you would be able to see the incredible 3d  *
* graphics I've inserted at this point, but you don't, so you can't!!!         *
*------------------------------------------------------------------------------*
* all flames to NL: not /dev/null since I use VMS on my VAXstation not U*IX    *
*------------------------------------------------------------------------------*
* The opinions expressed herein are mine, and mine alone, but they can be made *
* yours if you send $19.95 plus $2.50 S&H to POWERS%DEVCIM.DEC@DECWRL.DEC.COM  *
*******************************************************************************/

henry@utzoo.uucp (Henry Spencer) (11/10/88)

In article <8811081753.AA18094@decwrl.dec.com> powers@cimbad.dec.com (Bill Powers) writes:
>     ... Are there standard system calls in most unix systems
>     for doing graphics/windowing functions, which something like X-Windows
>     relies on using, or how is their functionality usually achieved?

Ha ha ha ho ho ho.  There is nothing even remotely standard about the way
graphics and windowing work under Unix; it's different every time.

>  3) If I spawn a couple of processes from a program, is their a mechanism
>     for one process to send stuff to another process, like mailboxes in
>     VMS.

Pipes.

>  4) In the atari implementation, are the processes protected from blasting
>     one another, or the kernel? ...

I'm not intimately familiar with ST Minix (yet), but the ST basically has
essentially no protection hardware, so the answer is almost certainly "no".
The ST has some sort of tweak for protecting low core, but that's *all*
it can do.

>  5) Are there any particular reasons why the minix couldn't keep the 
>     heep, and processes can take as much of it as is available, instead
>     of each process having a separate stack/heap area, which is I believe
>     how it works now.

The semantics of the sbrk() system call require a contiguous heap for
each process.
-- 
The Earth is our mother.        |    Henry Spencer at U of Toronto Zoology
Our nine months are up.         |uunet!attcan!utzoo!henry henry@zoo.toronto.edu

allbery@ncoast.UUCP (Brandon S. Allbery) (11/18/88)

As quoted from <1988Nov9.184419.3709@utzoo.uucp> by henry@utzoo.uucp (Henry Spencer):
+---------------
| In article <8811081753.AA18094@decwrl.dec.com> powers@cimbad.dec.com (Bill Powers) writes:
| >  3) If I spawn a couple of processes from a program, is their a mechanism
| >     for one process to send stuff to another process, like mailboxes in
| >     VMS.
| 
| Pipes.
+---------------

Try again.  Minix is a message-passing OS; while I haven't tried it -- yet
-- I haven't noticed anything that would prevent a process from doing
sendmsg() to another non-kernel process.  (Assuming the receiving process in
question isn't already waiting on a message from the kernel, in which case
things could get messy.)  I daresay some form of message queueing to
non-kernel processes should be implemented to make this work properly.
Another -- tabled for the moment -- project of mine has what amounts to a
"message server" which is capable of queueing messages.  Perhaps such a
beast should be implemented, similarly to INIT, and all messages be passed
through it to other parts of the system.

++Brandon
-- 
Brandon S. Allbery, comp.sources.misc moderator and one admin of ncoast PA UN*X
uunet!hal.cwru.edu!ncoast!allbery  <PREFERRED!>	    ncoast!allbery@hal.cwru.edu
allberyb@skybridge.sdi.cwru.edu	      <ALSO>		   allbery@uunet.uu.net
comp.sources.misc is moving off ncoast -- please do NOT send submissions direct
      Send comp.sources.misc submissions to comp-sources-misc@<backbone>.

ncoverby@ndsuvax.UUCP (Glen Overby) (11/19/88)

In article <13142@ncoast.UUCP> allbery@ncoast.UUCP (Brandon S. Allbery) writes:
>As quoted from <1988Nov9.184419.3709@utzoo.uucp> by henry@utzoo.uucp (Henry Spencer):
>| In article <8811081753.AA18094@decwrl.dec.com> powers@cimbad.dec.com (Bill Powers) writes:
>| >  3) If I spawn a couple of processes from a program, is their a mechanism
>| >     for one process to send stuff to another process, like mailboxes in
>| >     VMS.
>|
>| Pipes.
>Try again.  Minix is a message-passing OS; while I haven't tried it -- yet
>-- I haven't noticed anything that would prevent a process from doing
>sendmsg() to another non-kernel process.

Wrong.  User processes can only do a SENDREC (send and receive) to/from FS
and MM.  For the evidence, look in src/kernel/proc.c:

[ ... ]
PUBLIC sys_call(function, caller, src_dest, m_ptr)
[ ... ]
  /* Check for bad system call parameters. */
[ ... Line 106]
  if (function != BOTH && caller >= LOW_USER) {
        rp->p_reg[RET_REG] = E_NO_PERM; /* users only do BOTH */
        return;
  }

[ ... ]
PUBLIC int mini_send(caller, dest, m_ptr)
  /* User processes are only allowed to send to FS and MM.  Check for this. */
[ ... Line 143]
  if (caller >= LOW_USER && (dest != FS_PROC_NR && dest != MM_PROC_NR))
        return(E_BAD_DEST);

>Another -- tabled for the moment -- project of mine has what amounts to a
>"message server" which is capable of queueing messages.  Perhaps such a
>beast should be implemented, similarly to INIT, and all messages be passed
>through it to other parts of the system.

Bing Bang implemented message queueing in his serial TTY driver for V1.2 I
think implementing message queueing in a user process, while feasible, is
the wrong way to go.  It is best implemented in the kernel's own send and
receive functions.  Get Bing's serial driver stuff and look it over; he
changed all the drivers and servers so that they were non-blocking.  I
understand that it actually gave decent multi-processing response time.

A project I've been working on intermittently for about a year now is
revamping the bootstrapper to read Minix from files, and a re-organization
of the priority scheme; I'm switching to privilege bits for processing
priority (device, server, user) and for message sending (open for receive,
privileged for send).  This would allow making certain processes privileged
to send messages to any other process, a potential security breach because
they could then send messages to any device task.

Glen Overby
uunet!ndsuvax!ncoverby  ncoverby@ndsuvax (Bitnet)
ncoverby@plains.nodak.edu