Process abstraction in operating systems, Operating System

Many early operating systems regarded processes as different timesharing users. The process abstraction is a popular way to organize concurrent programs, but it is not the only choice. In order to build an editing system for multiple users, a traditional organization would be that each user runs as a separate process, all those processes executing the same code, which is shared among them. An alternative organization would be for each user to send a request to a single editing server process. This corresponds to a process abstraction with a single server process that maintains queues of work to do: this process never blocks as long as there is work to do, but completes (natural break), each work item it starts then switches to working on another pending work item. In particular, the application does not block awaiting input but instead polls to find if input from another client is available: processing requests are typically divided into several work items that may be immediately queued for work to be done, Requests may be delayed pending completion of other work requests. The server process opens, modifies, and saves files on behalf of any of its clients. Discuss this alternative vis-à-vis implementing the program as per user processes coordinated by a general-purpose operating system.