Hey EveryOne,
Back in old days before evolution of BSD sockets, usually called BerKely sockets. Communication between tow machines was in fact pains taking job, more over communication even on a single machine with running processes was in fact hard job to do with complex and system dependent techniques. At that time IPC, pipe and RPC namely were used to solve these kinds of problems but once these sockets were introduced then every solution turned right to adopt it.
Though we know operating systems do provide specific software structure (Device Driver, I/O routines, loadable modules etc.) but we also know that all platforms require stress testing and long working hours to develop an operating system + platform dependent piece of code. MS new framework, Windows Driver Framework (WDF) is focused to provide more APIs or say a thick layer of operating system for high level languages to work for device drivers (DIG).
Today every operating system do provide built in hardware libraries for standard devices like parallel, serial and USB devices. So how about to reuse these operating system facilities for developing a layer between kernel and an entity (Hardware Server). Can we have a hardware server or something like hardware run time environment? Which will be able to communicate underlying kernel for hardware resources rather specific module.
Of course the idea is to discard the Device Drivers or Loadable modules, these techniques often end up platform + OS dependent and some times even version dependent solution. There should be a straight way to visualize these resources, developer should be given an opportunity to choose the right interface for his or her device without caring any thing; except focusing on the original functionality of that device usage.
How about providing a secure and protected way of communication with underlying machine resources?
1) Providing hardware interface for application developers 2) Providing Server interface for the Administrator (e.g. to stop or start hardware services , set the security levels , access levels) 3) A standardized library to communicate the Application level software.Thanks for your valuable comments. Regards, ali