Overview Of Operating System Continue... |
Overall, time sharing was a success. However, it was a limited success. In
practical terms, every timeshared computer became overloaded and the response
time dropped to annoying or unacceptable levels. Hard-core hackers compensated
by working at night, and we developed a generation of pasty-looking, unhealthy
insomniacs addicted to caffeine.
Computers become even cheaper. It becomes practical to give one computer to
each user. Initial cost is very important in market. Minimal hardware (no
networking or hard disk, very slow microprocessors and almost no memory) shipped
with minimal OS (MS-DOS). Protection, security less of an issue. OS resource
consumption becomes a big issue (computer only has 640K of memory). OS back to a
shared subroutine library.
Hardware becomes cheaper and users more sophisticated. People need to share
data and information with other people. Computers become more information
transfer, manipulation and storage devices rather than machines that perform
arithmetic operations. Networking becomes very important, and as sharing becomes
an important part of the experience so does security. Operating systems become
more sophisticated. Start putting back features present in the old time sharing
systems (OS/2, Windows NT, even Unix).
Rise of network. Internet is a huge popular phenomenon and drives new ways
of thinking about computing. Operating system is no longer interface to the
lower level machine - people structure systems to contain layers of middleware.
So, a Java API or something similar may be the primary thing people need, not a
set of system calls. In fact, what the operating system is may become irrelevant
as long as it supports the right set of middleware.
Network computer. Concept of a box that gets all of its resources over the
network. No local file system, just network interfaces to acquire all outside
data. So have a slimmer version of OS.
In the future, computers will become physically small and portable.
Operating systems will have to deal with issues like disconnected operation and
mobility. People will also start using information with a psuedo-real time
component like voice and video. Operating systems will have to adjust to deliver
acceptable performance for these new forms of data.
What does a modern operating system do?
- Provides Abstractions Hardware has low-level physical
resources with complicated, idiosyncratic interfaces. OS provides
abstractions that present clean interfaces. Goal: make computer
easier to use. Examples: Processes, Unbounded Memory, Files,
Synchronization and Communication Mechanisms.
- Provides Standard Interface Goal: portability. Unix runs
on many very different computer systems. To a first approximation
can port programs across systems with little effort.
- Mediates Resource Usage Goal: allow multiple users to
share resources fairly, efficiently, safely and securely. Examples:
- Multiple processes share one processor. (preemptable
resource)
- Multiple programs share one physical memory (preemptable
resource).
- Multiple users and files share one disk. (non-preemptable
resource)
- Multiple programs share a given amount of disk and network
bandwidth (preemptable resource).
- Consumes Resources Solaris takes up about 8Mbytes
physical memory (or about $400).
Abstractions often work well - for example, timesharing, virtual memory and
hierarchical and networked file systems. But, may break down if stressed.
Timesharing gives poor performance if too many users run compute-intensive jobs.
Virtual memory breaks down if working set is too large (thrashing), or if there
are too many large processes (machine runs out of swap space). Abstractions
often fail for performance reasons.
Abstractions also fail because they prevent programmer from controlling
machine at desired level. Example: database systems often want to control
movement of information between disk and physical memory, and the paging system
can get in the way. More recently, existing OS schedulers fail to adequately
support multimedia and parallel processing needs, causing poor performance.
Concurrency and asynchrony make operating systems very complicated pieces of
software. Operating systems are fundamentally non-deterministic and event
driven. Can be difficult to construct (hundreds of person-years of effort) and
impossible to completely debug. Examples of concurrency and asynchrony:
- I/O devices run concurrently with CPU, interrupting CPU when
done.
- On a multiprocessor multiple user processes execute in parallel.
- Multiple workstations execute concurrently and communicate by
sending messages over a network. Protocol processing takes place
asynchronously.
Operating systems are so large no one person understands whole system. Outlives
any of its original builders.
The major problem facing computer science today is how to build large,
reliable software systems. Operating systems are one of very few examples of
existing large software systems, and by studying operating systems we may learn
lessons applicable to the construction of larger systems.
|