comp.lang.ada
 help / color / mirror / Atom feed
From: Shark8 <onewingedshark@gmail.com>
Subject: Re: Writing an Operating System in Ada
Date: Tue, 12 Jan 2010 15:26:06 -0800 (PST)
Date: 2010-01-12T15:26:06-08:00	[thread overview]
Message-ID: <ab3c165e-9580-4026-9313-c2cf3b7dcfbf@f5g2000yqh.googlegroups.com> (raw)
In-Reply-To: 414945fd-8ed5-4f42-a237-0685602332b3@f5g2000yqh.googlegroups.com

On Jan 12, 2:52 pm, Maciej Sobczak <see.my.homep...@gmail.com> wrote:
> On 12 Sty, 20:56, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
> wrote:
>
> > There should be no file system at all. If you have objects, I mean if you
> > do have them consistently all the way, then you do not need files. Make
> > objects persistent in the corresponding device, that gives you all
> > functionality of any file. No I/O is ever needed. Map the object into the
> > memory, call its operations, what else any program would have to do?
>
> Interact with other systems? You know, you might want to sometimes
> move your "persistent objects" to another machine.
>
> Did I mention that you might want to move you whole hard drive to
> another machine as well? :-)

True, systems may be fairly static: like my old desktop. Or they may
be fairly dynamic, being updated/improved regularly. It would be
pretty dumb to force someone's data to be bound to a certain system,
like certain DRM-pilious companies. While we can be fairly certain
that many things will be the same, such as the CPU's family, to
completely disregard such exceptional (or regular in the case of some
distributed systems) circumstances is valid only in academia or some
project where you are GUARANTEED to have only a single configuration [-
set] to deal with.

Gaming platforms come to mind there, as well as Macs where the company
controls hardware.

> There is a reason why none of the pure-OO-OS-let's-do-it-correctly
> ever really took off.

I think you're getting a valid point there. It makes more sense to me
to have file-objects derived from some stream-type and then having
that stream directed [and possibly transformed, as need be] by the
filesystem-object to the drive. {A FS may be of the opposite endianess
than the system which is accessing the data, this is a non-issue if it
is ALWAYS read & written the same way BUT if you were to port the
drive to a system with the same endianness the reading and writing
would be mixed-up.}

IE - in the high-level world Write(Integer) and Read(Integer) are
completely safe... but if another system were to read/write the data
in the opposite endianess bad things happen.

> > The problem is that we followed the wrong path for too long.
>
> There is nothing wrong with that path, as it happens to be very
> pragmatic.

The main problem is, I think, the API-standard of keying, to borrow
from databases, on the (Location, Name) Tuple. If we consider the name
of a file as a mutable attribute then we must use some other criteria
for identifying files. (ie it makes little sense to have a file become
invalid because you used the standard 'rename' command.) For a local
system we could use the GUID of a 64-bit word, however this system
would not work well for distributed/remote/networked systems because,
in the absence of proper communication some other Index may be added
by two different systems trying to ID a certain file. I would suggest
using a vector of hashes to key [UUID] File-ID across a network, say:
(MD5, SHA1, XOR-32). This would have the drawback of generating a new
ID every time the file is updated... though that could be overcome by
allowing the OS to track such changes with versioning or redirects or
somesuch.

GUID : Globally Unique IDentifier. (Longitude, Latitude) is a GUID.
UUID : Universally Unique IDentifier. (Longitude, Latitude) is NOT a
UUID because different planets have the same (Long., Lat.) tuple, in
order to be a UUID we would have to indicate which planet we are
talking about, like this: (Name, Long., Lat.).



  reply	other threads:[~2010-01-12 23:26 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-12  1:13 Writing an Operating System in Ada Shark8
2010-01-12  3:30 ` Leslie
2010-01-12  7:06   ` Shark8
2010-01-12  8:36     ` Ludovic Brenta
2010-01-12 15:14       ` jonathan
2010-01-12 16:21   ` Colin Paul Gloster
2010-01-12 16:36     ` Shark8
2010-01-12 17:03       ` Colin Paul Gloster
2010-01-12 19:07     ` Tero Koskinen
2010-01-12  9:41 ` Dmitry A. Kazakov
2010-01-12 17:37   ` Shark8
2010-01-12 19:56     ` Dmitry A. Kazakov
2010-01-12 21:21       ` Shark8
2010-01-12 22:39         ` nobody
2010-01-12 22:50           ` Shark8
2010-01-15 22:45             ` nobody
2010-01-19 21:09               ` Shark8
2010-01-12 21:52       ` Maciej Sobczak
2010-01-12 23:26         ` Shark8 [this message]
2010-01-13  9:17         ` Dmitry A. Kazakov
2010-01-13 20:20           ` Shark8
2010-01-13 20:55             ` Dmitry A. Kazakov
2010-01-13 22:50               ` Shark8
2010-01-14  8:55                 ` Dmitry A. Kazakov
2010-01-14 18:01                   ` Shark8
2010-01-14 19:04                     ` tmoran
2010-01-19 19:07                       ` Shark8
2010-01-14 19:53                     ` Dmitry A. Kazakov
2010-01-14 21:07                       ` Shark8
2010-01-14 21:50                         ` Dmitry A. Kazakov
2010-01-15  1:24                           ` Randy Brukardt
2010-01-15  8:59                             ` Dmitry A. Kazakov
2010-01-19 18:58                   ` Shark8
2010-01-19 19:43                     ` Dmitry A. Kazakov
2010-01-14  9:40           ` Maciej Sobczak
2010-01-14 10:28             ` Dmitry A. Kazakov
2010-01-14 18:57               ` tmoran
2010-01-14 19:19                 ` Dmitry A. Kazakov
2010-01-14 20:33                   ` Georg Bauhaus
2010-01-14 21:09                     ` Dmitry A. Kazakov
2010-01-14 21:50               ` Maciej Sobczak
2010-01-15  8:37                 ` Dmitry A. Kazakov
2010-01-15 21:05                   ` Maciej Sobczak
2010-01-15 21:48                     ` Dmitry A. Kazakov
2010-01-16 21:18                       ` Maciej Sobczak
2010-01-16 22:15                         ` Dmitry A. Kazakov
2010-01-18 11:23                           ` Georg Bauhaus
2010-01-18 13:50                             ` Dmitry A. Kazakov
2010-01-18 15:21                               ` Georg Bauhaus
2010-01-18 16:41                                 ` Dmitry A. Kazakov
2010-01-18 17:17                                   ` Georg Bauhaus
2010-01-18 18:08                                     ` Dmitry A. Kazakov
2010-01-19 17:41         ` Writing an Operating System in Ada - now off topic? Leslie
2010-01-13  9:09       ` Writing an Operating System in Ada Georg Bauhaus
2010-01-13  9:27         ` Dmitry A. Kazakov
2010-01-13  3:38     ` Leslie
2010-01-13 12:10       ` Martin
2010-01-13 18:55       ` Ad Buijsen
2010-01-14  9:12       ` Jean-Pierre Rosen
2010-01-14 10:45         ` Dmitry A. Kazakov
2010-01-14 11:31           ` Jean-Pierre Rosen
2010-01-14 13:47             ` Dmitry A. Kazakov
2010-01-14 18:57         ` tmoran
2010-01-13  4:49   ` Hibou57 (Yannick Duchêne)
2010-01-13 17:29 ` Lucretia
2010-01-13 20:37   ` Shark8
2010-01-16  0:13     ` Lucretia
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox