Chapter One.
Computing and Moore’s law. Processor speed doubling about every 18 months.
Idea: Pack more transistors per processor unit. Replicate each processor with multicore units. Solve power consumption problem. If a processor is allowed to idle quickly (sleep), it might perform better.
Power consumption at full load = 1 Watt
Power consumption at sleep mode = 1 mW
Above: A chip works at a faster rate and consumes less power. A race to sleep problem. We need good heat sinks, need to let chips sleep a lot.
Read. “Energy efficient Operating Systems and Software”, Amit Sinha, Ph.D. thesis
Parallelism problem. The most challenging issue. How do we solve it? The basic idea
Introduction to Operating systems.
■ What is an operating systems?
■ What is not an operating systems?
■ Why operating systems?
Computer hardware: CPU, Memory, Hard-disk, I/O, Bus, Registers, … Too cumbersome and ugly! How about it seeing it through layers of software?
OS is about providing easy interfaces.
Interfaces
Reliability of these interfaces. Security issue associated with these interfaces. Scalability. Performance under heavy load. Accuracy of interfaces. Meaning of computation.
Users see the H/W as the software presents it, not as how the H/W wants to be seen. This mapping is what the OS is supposed to do. At the inner ring: M/C codes to interact with H/W. At the outer ring: Readable S/W to map M/C.
OS provides a virtual machine view at a user (or at an app) level.
A definition:
An OS is a set of software modules (programs) that manages hardware and other resources to provide a stable, workable environment for user programs (applications, computations, processes) to run.
Applications: {Database search, process control, surveillance, mathematical computations, communications, game playing, simulations, real-time operations, virtual reality, artificial intelligence, production, manufacturing …}
■ Each application may need a different environment with different focus, may be with different set of nuances.
■ Co-resident multiple applications Multiprogramming system
■ OS is primarily a service-oriented system.
What is not an OS? Does it run the computer? If it does it is an OS. Otherwise, NO!
Why not an OS?
Suitable metaphor: A front-desk manager of a hotel.
Typical task-set:
● Accommodate new customers (clients) into the system
♦ Rooms available? What type? For how long? Any special requirement? If not available immediately, wait at the reception?
● Take care of resident customers’ needs.
● Attend to interrupts, Attend to preempts.
www,findhow.com
● Schedule customer activities
● Execute graceful exits for departing customers
● Arrange room-cleaning after a departure
Accommodation of new customers:
Next phase scene.
Next phase scene. Wait phase. Wait for clients requesting service.
Clients ask for service. Ring up front desk. Front desk calls up bellboy to provide service.
Expand this bimodal scenario to a multimodal scenario.
Back to OS.
■ OS provides availability and management of resources, environmentsand interfaces hiding individual details.
What are computer resources?
● CPU (single cpu, Multicore cpu) and cpu time
● Memory (RAM, Disk, Tapes, Flash drives, Memory sticks, Cache, Associative cache, …) and storage
● Network and its throughput, latency (or delay)
● External devices, device controller
● I/O units
Typical example for a desktop unit
CPU (quad-core), processor speed: 4 GHz, 64 bit OS architecture
RAM: 8 GB
Hard-drive: 2TB Max. external data transfer rate: 640 MBps
■ Provides security and protection for each user.
■ Long-term and short-term storage of user and systems data, program, …
For resources: Two perspectives. User perspectives. System perspectives.
User requirements:
▓ Easy accessibility and usage
▓ Access time, resident time (turnaround time): small
▓ Portability
▓ User accessible Utilities and library
▓ Security and protection
Systems requirments:
▓ Efficiency (Utilization rate? Throughput rate? )
▓ Security and protection (from external threats, users)
For OS: It must have a policy and control programs to oversee and manage computer resources.
All kernel routines are used by some software to produce things user needs: job or task scheduling, interprocess communications, lock management, I/O, etc.
Naturally: In an OS environment, we see a demarcation wall.
Kernel provides core functionality. Core OS. Everything else depends on it. Kernel library: thread scheduler, interrupt routing, etc. Kernel alone is not an OS.
Therefore,
Architecture (standard):
■Monolithic.
■UNIX, Linux, and most commercial systems support it.
■ Entire OS functionality in one program. Not modular.
■ Good performance, and easy to understand.
■ Horrendous to repair. No protection for kernel units.
■Microkernel
■ A very small kernel with independent modules
■ Most of the kernel services are now at user level
Expand this to even a more daring scenario. A multi-user -kernel support. Each user fends for herself.
Each user is allowed to launch her own OS module as a guest to the original host if so desired.
A Virtual machine organization. Each guest OS is an emulation within the host OS.
Other issues.
Operating Systems design issues. Traditional:
■ cost (e.g. hardware is becoming cheaper compared to software)
■ performance (system view, user view, owner view)
● speed: How long does it take to load, and run programs?
Does the computer freeze up frequently?
How big is RAM? In most systems (e.g. 32-bit systems) effective RAM
Single-core or Multi-core systems?
■ energy consumption rate. Energy wastage should be minimized.
● Portable computers, notebooks and palm-sized devices must be energy efficient.
□ Battery issue is a problem.
Hardware should provide low-power states of devices
in sleep-mode. A big research issue.
OS should handle energy issues
To do this, OS must know each app’s role in power wastage.
OS must enforce apps to adapt to system’s power distribution mechanisms.
App specific ‘knobs’ to control their energy usage?
How large are OS in terms of code volume?
NASA space shuttle / 2.5 million lines of codeWindows NT (1992) / 4.0 million lines of code
Solaris (1998) / 8.0 million lines of code
Windows NT 5.0 (1998) / 20 million lines of code
RedHat Linux 7.1 (2001) / 30 million lines of code
Windows XP / 40 million lines of code
Vista / 50 million lines of code
More lines of code more complex is the system
■ System is built with different types of CPU, different memory, hard-drive, etc.
Expansion. From one host to multiple hosts. Distributed VMware layer over a communication network. Cloud Computers. Providing: SAAS, PAAS, IAAS
For a -kernel:
▓ The kernel is generally a message marshalling system. All traditional kernel functions are available at the user level.
▓ Kernel mostly does message passing, I/O management, task scheduling, interrupt handling
▓ A bug can affect only isolated systems service – the entire system would most likely not crash.
▓ These are very slow compared to monolithic kernels since the former introduces a lot of overhead. An ideal -kernel is pure overhead; everything else would be done at the servers.
▓ -kernels are pushed to the level of nano-kernels, exo-kernel, etc.
▓ Typical -kernel designs include:
Minix-3, QNX, Symbian, L4Linux, Mac OS X, …