Quote:
Anyways, the point is, I want to get an opinion whether having processes, pipes, files, etc. etc. (which is common to all *nix platforms and pretty much Windows) is a hardcoded neccessity considering currently available hardware (like intel 80386)? Or is it that all OSes follow the same design because of de facto standard set by Unix?
I wouldn't say so. Unix has pretty medieval roots and from that come its paradigms.
Basically what a processor does is execute code. The OS manages what code needs to be run. In multitasking we usually have several tasks that work simultaneously. Unix simply calls each such task a process and be done with it.
However you can also consider the processor as a unit that is connected to memory which stores instructions. At this lower level, you can control address spaces provided by the MMU and load an arbitrary number of 'tasks' in each one. Efficiently doing so requires that there be no processes in the unix sense since a process has its own address space. Instead we provide address spaces and execution threads.
Somewhere down this forum is a concept of continuation-based systems, which is based not upon storing the current state of a task, but rather what is left to be done. AJ already posted a link.
Files are an metaphor of the boxes with paper in the office. They are a useful abstraction when dealing with data, but hardware devices are hardly a piece of paper, although they seem to be in *nix systems.
An exokernel would not provide files, but disk blocks. Many would still abstract the file on top of it, but it does not mean that you have to do so. The reason that files are hardly done without is that they are close to a minimal set already: a bunch of data and the information attached to it.