On Tue, Feb 21, 2017 at 9:25 PM, Steve Nickolas <usotsuki(a)buric.co> wrote:
> I started screwing around with Linux in the late 90s, and it would be many
> years before any sort of real Unix (of the AT&T variety), in any form, was
> readily available to me - that being Solaris when Sun started offering it
> for free download.
See my comment to Dan. I fear you may not have known where to look, or whom
to ask. As I asked Dan, were you not at an university at time? Or where
you running a Sun or the like -- i.e. working with real UNIX but working
for someone with binary license, not sources from AT&T (and UCB)?
I really am curious because I have heard this comment before and never
really understood it because the sources really were pretty much available
to anyone that asked. Most professionals and almost any/all
university students had did have source access if they ask for it. That is
part of why AT&T lost the case. The trade secret was out, by definition.
The required by the 1956 consent decree to make the trade secrets
available. A couple of my European university folks have answer that the
schools kept the sources really locked down. I believe you, I never saw
that at places like Cambridge, Oxford, Edinburg, Darmstad or other places I
visited in those days in Europe. Same was true of CMU, MIT, UCB et al
where I had been in the USA, so I my experience was different.
The key that by definition, UNIX was available and there were already
versions from AT&T or not "in the wild." You just need to know where to
look and whom to ask. The truth is that the UCB/BSDi version of UNIX - was
based on the AT&T trade secret, as was Linux, Minix, Coherent and all of
the other "clones" -- aka look-a-likes and man of those sources were
pretty available too (just as Minix was to Linus and 386BSD was to him also
but he did not know to where/whom to ask).
So a few years later when the judge said, these N files might be tain'ted
by AT&T IP, but can't claim anything more. The game was over. The problem
was when the case started, techies (like me, and I'm guessing Larry, Ron
and other ex BSD hackers that "switched") went to Linux and started to
making it better because we thought we going to lose BSD.
That fact is if we had lost BSD, legally would have lost Linux too; but we
did not know that until after the dust settled. But by that time, many
hackers had said, its good enough and made it work for everyone.
As you and Dan have pointed out, many non-hackers did know that UNIX really
was available so they went with *Linux because they thought that had no
other choice, *when if fact, you actually did and that to me was the sad
part of the AT&T case.
A whole generation never knew and by the time they did have a choice but a
few religion began and new wars could be fought.
Anyway - that's my thinking/answer to Noel's original question.
Of why Linux over the over the PC/UNIX strains... I think we all agree that
one of the PC/UNIX was going to be the winner, the question really is why
did Linux and not a BSD flavor?
Tonal languages are real fun. I'm living and working in Bangkok,
Thailand and slightly tone deaf am still struggling.
Which reminds me, regarding binary there are 10 types of people, those
who understand and those who don't :-)
Cheers,
rudi
Noel:
Instead, you have to modify the arguments so that the re-tried call takes up
where it left off - in the example above, tries to read 5 characters, starting
5 bytes into the buffer). The hard part is that the return value (of the
number of characters actually read) has to count the 5 already read! Without
the proper design of the system call interface, this can be hard - how does
the system distinguish between the _first_ attempt at a system call (in which
the 'already done' count is 0), and a _later_ attempt? If the user passes in
the 'already done' count, it's pretty straightforward - otherwise, not so
much!
====
Sometime in the latter days of the Research system (somewhere
between when the 9/e and 10/e manuals were published), I had
an inspiration about that, and changed things as follows:
When a system call like read is interrupted by a signal:
-- If no characters have been copied into the user's
buffer yet, return -1 and set errno to EINTR (as would
always have been done in Heritage UNIX).
-- If some data has already been copied out, return the
number of characters copied.
So no data would be lost. Programs that wanted to keep
reading into the same buffer (presumably until a certain
terminator character is encountered or the buffer is full
or EOF) would have to loop, but a program that didn't loop
in that case was broken anyway: it probably wouldn't work
right were its input coming from a pipe or a network connection.
I don't remember any programs breaking when I made that change,
but since it's approaching 30 years since I did it, I don't
know whether I can trust my memory. Others on this list may
have clearer memories.
All this was a reaction to the messy (both in semantics and
in implementation) compromise that had come from BSD, to
have separate `restart the system call' and `interrupt the
system call' states. I could see why they did it, but was
never satisfied with the result. If only I'd had my inspiration
some years earlier, when there was a chance of it getting out
into the real world and influencing POSIX and so on. Oh, well.
Norman Wilson
Toronto ON
>On Tue, 21 Feb 2017 19:08:33 -0800 Cory Smelosky wrote:
>
>>On Tue, Feb 21, 2017, at 17:22, Rudi Blom wrote:
>> Probably my (misplaced?) sense of humour, but I can't help it.
>>
>> After reading all comment I feel I have to mention I had a look at
>> freeDOS :-).
>>
>> Cheers,
>> rudi
>
>Do I need to pull out TOPS-10 filesystem code now, too? ;)
In 1967 I was 12 and probably had barely discovered ScienceFiction
novel and computers.
Just quickly downloaded a TOPS-10 OS Commands Manual (from 1988) but
no mention of the Level-D filesystem
Probably my (misplaced?) sense of humour, but I can't help it.
After reading all comment I feel I have to mention I had a look at freeDOS :-)
Cheers,
rudi
All, after getting your feedback, I've reorganised the Unix Archive at
http://www.tuhs.org/Archive/
I'm sure there will be some rough edges, let me know if there is anything
glaringly obvious.
I'd certainly like a few helpers to take over responsibility for specific
sections, e.g. UCB, DEC.
Cheers all, Warren
P.S It will take a while for the mirrors to pick this up.
> 2) **Most** Operating systems do not support /dev/* based access to SCSI.
> This includes a POSIX certified system like Mac OS X.
>
> 3) **Most** Operating systems do not even support a file descriptor based
> interface to SCSI commands.
> This includes a POSIX certified system like Mac OS X.
Had Ken thought that way, Unix's universal byte-addressable file format
would never have happened; this mailing list would not exist; and we
all might still be fluent in dialects of JCL. dd was sufficient glue
to bridge the gap between Unix and **Most** Operating Systems.
Meanwhile everyday use of Unix was freed from the majority's folly.
Doug
> From: Larry McVoy
> The DOS file system, while stupid, was very robust in the face of
> crashes
I'm not sure it's so much the file system (in the sense of the on-disk
format), as how the system _used_ it (although I suppose one could consider
that part of the FS too).
The duplicated FAT, and the way file sectors are linked using it, is I suppose
a little more robust than other designs (e.g. the way early Unixes did it,
with indirect blocks and free lists), but I think a lot of it must have been
that DOS wrote stuff out quickly (as opposed to e.g. the delayed writes on
early Unix FS's, etc). That probably appoximated the write-ordering of more
designed-robust FS's.
Noel
> From: Diomidis Spinelli
> Arguably, the same can also be claimed for the networking system calls.
Well, it depends on exactly what you mean by "networking system calls". If
you mean networking a la BSD, perhaps.
However, I can state (from personal experience :-) that the I/O architecture
circa V6/V7 was not very suitable for TCP/IP internetworking (with its
emphasis on an un-reliable network, and smart endpoints). The reason is that
such networking doesn't really fit well into the 'start one I/O operation and
then block the process until it completes' model.
Yes, if you have an application running on top of a reliable stream, you
might be able to coerce that into the 'uni-directional, blocking' I/O model
(if the reliable stream implementation is in, or routed through, the kernel),
but lots of other thing don't work so well. (Think, e.g. an interface with
asynchronous, un-predictable, RPC calls in both directions.)
Noel