[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Which 90% of POSIX /is/ good then?
From: |
Alfred M\. Szmidt |
Subject: |
Re: Which 90% of POSIX /is/ good then? |
Date: |
Thu, 27 Oct 2005 12:34:49 +0200 |
* pids are broken. They aren't persistent handles, like fds, so
hello race conditions on anything using them.
You cannot get away from race conditions, nor should pids be persitent
in a non-persitent system. In other words, PID's aren't broken.
* devices are in the filesystem namespace, socket port numbers
aren't.
POSIX doesn't mandate that devices must be in the filesystem
namespace.
* The main file API does things mostly by path name, within the
mutable namespace. More race conditions! Look at all the temporary
file and symlink bugs. I do get a process cwd, so can maybe
directory handles etc. Later we add fstat etc, getting better.
Race conditions cannot be fixed, no matter what kind of a API you
implement.
* uids are an amazingly coarse security measure. They are all or
nothing. And every process gets the whole system call array to use:
network, interprocess signals, etc. No way to create subsets.
This has nothing to do with POSIX, you are free to imlpement subsets,
this was done in the Hurd.
* The unified file namespace is tied all together by ".." parent
acess and by symlinks relative to the root. (And now by shared
libraries for binaries) Separating out individual directories is
pretty pointless, and chroots are a pain to use. No chance of
security subdomains there.
This isn't a argument against what you call a unified file namespace,
it is a argument against: badly written programs and chroot's.
* terminal subsystem - stuck in the days of serial access. What
happened to graphics, multimedia? Oh yes, we've got X. Its ok, but
somehow lacking in quite a lot. Where's my network transparent
sound after 20 years?
The terminal subsystem in POSIX is actually quite fine, it doesn't
prohibit you from implementing any of what you suggest. Once again
this is not a argument with how POSIX does something, but a argument
what is _missing_ in POSIX (and one can argue if such things should be
in POSIX at all).
* File access API. Assumes most files are mutable. (clue: this
turns out to be wrong!) Ignores multiple versions. Destroys
transactional semantics by making files appear in filesystem on
open, instead of on close. Hello access to half-completed files!
Oh, wow, we do a get a transactional rename. Wot no metadata?
All of these has nothing to do with POSIX once again, you are free to
implement a versioning file-system, add metadata etc, and it won't
make the system a non-POSIX system.
* fork: oh dear, it leaves all the fds open, signals enabled,
sessions wrong, uids gids etc. Its rarely what we actually
want. Most things just (forget to) close lots of things and exec
immediately.
So you blame incompetence instead of attacking the real faults with
fork/exec.
* device model. We've got character and block devices. How much of
their behaviour is standardised? What about standards for other
sorts? Hello ioctl hell!
ioctl isn't meant as a general way to access all types of things; it
is meant as a cheap way to access a specific feature of the device
(like rewinding a tape, or ejecting a CD). If you don't know what a
block/char. special file is, then you should read the standard.
* Shell process control. Its stuck in the tty age. screen is your
friend.... Except when ptys go bad. Can you say security nightmare?
No, I can't. Can you say: Nothing to do with POSIX?
* pipes. raw character streams. all that richly formatted data
squashed into it. Look at the hassle of making find | xargs grep
work with arbitrarily named files.
Once again not a problem with POSIX, blame the implementation. For
the record, I have never experienced problems with find+grep with
arbitrarily named files (this includes files with weirdo chars that I
can't input without resorting to octal codes).
What you seem to not understand about POSIX is that it is a middle
ground for writting portable programs, programs that will run on
various POSIX systems.
- Which 90% of POSIX /is/ good then?, Brian Brunswick, 2005/10/26
- Re: Which 90% of POSIX /is/ good then?, Jonathan S. Shapiro, 2005/10/26
- Re: Which 90% of POSIX /is/ good then?,
Alfred M\. Szmidt <=
- Message not available
- Fwd: Which 90% of POSIX /is/ good then?, Brian Brunswick, 2005/10/27
- Re: Fwd: Which 90% of POSIX /is/ good then?, Jonathan S. Shapiro, 2005/10/27
- Re: Fwd: Which 90% of POSIX /is/ good then?, Brian Brunswick, 2005/10/27
- Re: Fwd: Which 90% of POSIX /is/ good then?, Alfred M\. Szmidt, 2005/10/27
- Re: Fwd: Which 90% of POSIX /is/ good then?, Jonathan S. Shapiro, 2005/10/27
- Name spaces in programming languages, Ludovic Courtès, 2005/10/27
- Re: Name spaces in programming languages, Alfred M\. Szmidt, 2005/10/27
- Re: Name spaces in programming languages, Ludovic Courtès, 2005/10/28
- Re: Name spaces in programming languages, Alfred M\. Szmidt, 2005/10/28
- Re: Name spaces in programming languages, Ludovic Courtès, 2005/10/28