Content deleted Content added
No edit summary |
No edit summary |
||
Line 101:
Generally, transparency and user-required knowledge form an inverse relation. As transparency is designed and implemented into various areas of a system, great care must be taken not to adversely effect other areas of transparency and other basic design concerns. Transparency, as a design concept, is one of the grand challenges in design of a distributed operating system; as it is a factor in the necessity for a complete upfront understanding.
*'''Location transparency''' - Location transparency comprises two distinct aspects, Naming and User mobility.
:*'''Naming transparency''' requires that nothing in the physical or logical references to an entity should expose any indication of the entities ___location. :*'''User mobility''' requires consistent referencing of an entity regardless of its ___location within the system. These two related concepts, naming transparency and user mobility, work together to remove the need for a user's knowledge regarding specific entities' details within a system. *'''Access transparency''' - Local and remote resources should remain indistinguishable through user interface system calls. The Distributed operating system maintains a user's perception of these entities in a clean, clear, and consistent manner. System entities or processes maintain consistent access/entry mechanism, regardless of being local or remote.
Line 128 ⟶ 130:
===Inter-process communication===
[[Inter-Process Communication]] (IPC) is the implementation of general communication, process interaction, and
===Process management===
[[Process management (computing)|Process management]] provides policies and mechanisms for effective and efficient sharing of a system's distributed processing resources between that system's distributed processes. These policies and mechanisms support operations involving the allocation and de-allocation of processes and ports, as well as provisions to run, suspend, migrate, halt, or resume execution of processes, to mention a few. While these distributed operating system resources and the operations on them can be either local or remote with respect to each other, the distributed operating system must still maintain complete state of and synchronization over all processes in the system; and do so in a manner completely consistent from the user's unified system perspective.
As an example, [[Load balancing (computing)|load balancing]] is a common process management function. One consideration of load balancing is which process should be moved. The kernel may have several mechanisms, one of which might be priority-based choice. This mechanism in the kernel defines
===Resource management===
[[Resource (computer science)|Systems resources]] such as memory, files, devices, etc. are distributed throughout a system, and at any given moment, any of these nodes may have light to idle workloads. '''Load sharing''' and load balancing require many policy-oriented decisions, ranging from finding idle CPUs, when to move, and which to move. Many
===Reliability===
One of the basic tenants of distributed operating systems is a high-level of '''reliability'''. This quality attribute of a distributed operating system has become a staple expectation. Reliability is most often considered from the perspectives of [[availability]] and security of a system's hardware, services, and data. Issues arising from availability failures or security violations are considered faults. [[Fault (technology)|Faults]] are physical or logical defects that can cause errors in the system. For a system to be reliable, it must somehow overcome the adverse effects of faults.
There are three general methods for dealing with faults: '''fault avoidance''', [[Fault-tolerant design|fault tolerance]], and '''fault detection and recovery'''. Fault avoidance ===Performance===
[[Computer performance|Performance]] is arguably the quintessential computing concern, and in the distributed operating system, it is no different. Many [[Benchmark (computing)|benchmark metrics]] exist for performance; throughput, job completions per unit time, system utilization, etc. Each of these benchmarks are more meaningful in describing some scenarios, and less in others. With respect to a distributed operating system, this consideration most often distills to a balance between [[Parallel computing|process parallelism]] and IPC. Managing the [[Granularity#In computing|task granularity]] of parallelism in a sensible relation to the messages required for support is extremely effective. Also, identifying when it is more beneficial to [[Process migration|migrate a process]] to its data, rather than copy the data, is effective as well. Many process and resource management algorithms, and algorithms in this space work to maximize performance.
===Synchronization===
Cooperating [[Concurrent computing|concurrent processes]] have an inherent need for [[Synchronization (computer science)|synchronization]]. Three basic situations that define the scope of this need
:*one or more processes must synchronize at a given point for one or more other processes to continue, :*one or more processes must wait for an asynchronous condition in order to continue, :*or a process must establish mutual exclusive access to a shared resource. There ===Flexibility===
[[Flexibility (engineering)|Flexibility]] in a distributed operating system is made possible through the modular characteristics of the microkernel. With the microkernel presenting
==Historical perspectives==
|