Tuesday, 28 February 2012
Java Threads
- Java threads may be created by:
- Extending Thread class
- Implementing the Runnable interface
- Java threads are managed by the JVM.
Linux Threads
- Linux refers to them as tasks rather than threads.
- Thread creation is done through clone() system call.
- Clone() allows a child task to share the address space of the parent task (process)
Windows 2000 Threads
- Implements the one-to-one mapping.
- Each thread contains
- a thread id
- register set
- separate user and kernel stacks
- private data storage area
Pthreads
- a POSIX standard (IEEE 1003.1c) API for thread creation and synchronization.
- API specifies behavior of the thread library, implementation is up to development of the library.
- Common in UNIX operating systems.
Threading Issues
- Semantics of fork() and exec() system calls.
- Thread cancellation.
- Signal handling
- Thread pools
- Thread specific data
Multithreading Models
- Many-to-One
- One-to-One
- Many-to-Many
Kernel Threads
- Supported by the Kernel
- Examples
- Windows 95/98/NT/2000
- Solaris
- Tru64 UNIX
- BeOS
- Linux
User Threads
- Thread management done by user-level threads library
- Examples
- POSIX Pthreads
- Mach C-threads
- Solaris threads
Benefits
- Responsiveness
- Resource Sharing
- Economy
- Utilization of MP Architectures
Monday, 27 February 2012
Remote Procedure Calls
- Remote procedure call (RPC) abstracts procedure calls between processes on networked systems.
- Stubs – client-side proxy for the actual procedure on the server.
- The client-side stub locates the server and marshalls the parameters.
- The server-side stub receives this message, unpacks the marshalled parameters, and peforms the procedure on the server.
Sockets
- A socket is defined as an endpoint for communication.
- Concatenation of IP address and port
- The socket 161.25.19.8:1625 refers to port 1625 on host 161.25.19.8
- Communication consists between a pair of sockets.
Client-Server Communication
- Sockets
- Remote Procedure Calls
- Remote Method Invocation (Java)
Buffering
- Queue of messages attached to the link; implemented in one of three ways.
- Zero capacity – 0 messages
- Sender must wait for receiver (rendezvous).
- Bounded capacity – finite length of n messages
- Sender must wait if link full.
- Unbounded capacity – infinite length
- Sender never waits.
Synchronization
- Message passing may be either blocking or non-blocking.
- Blocking is considered synchronous
- Non-blocking is considered asynchronous
- send and receive primitives may be either blocking or non-blocking.
Indirect Communication
- Messages are directed and received from mailboxes (also referred to as ports).
- Each mailbox has a unique id.
- Processes can communicate only if they share a mailbox.
- Properties of communication link
- Link established only if processes share a common mailbox
- A link may be associated with many processes.
- Each pair of processes may share several communication links.
- Link may be unidirectional or bi-directional.
Direct Communication
- Processes must name each other explicitly:
- send (P, message) – send a message to process P
- receive(Q, message) – receive a message from process Q
- Properties of communication link
- Links are established automatically.
- A link is associated with exactly one pair of communicating processes.
- Between each pair there exists exactly one link.
- The link may be unidirectional, but is usually bi-directional.
Interprocess Communication (IPC)
- Mechanism for processes to communicate and to synchronize their actions.
- Message system – processes communicate with each other without resorting to shared variables.
- IPC facility provides two operations:
- send(message) – message size fixed or variable
- receive(message)
- If P and Q wish to communicate, they need to:
- establish a communication link between them
- exchange messages via send/receive
- Implementation of communication link
- physical (e.g., shared memory, hardware bus)
- logical (e.g., logical properties)
Bounded-Buffer – Consumer Process
item nextConsumed;
while (1) {
while (in == out)
; /* do nothing */
nextConsumed = buffer[out];
out = (out + 1) % BUFFER_SIZE;
}
Bounded-Buffer – Producer Process
item nextProduced;
while (1) {
while (((in + 1) % BUFFER_SIZE) == out)
; /* do nothing */
buffer[in] = nextProduced;
in = (in + 1) % BUFFER_SIZE;
}
Bounded-Buffer – Shared-Memory Solution
- Shared data
#define BUFFER_SIZE 10
Typedef struct {
. . .
} item;
item buffer[BUFFER_SIZE];
int in = 0;
int out = 0;
- Solution is correct, but can only use BUFFER_SIZE-1 elements
Producer-Consumer Problem
- Paradigm for cooperating processes, producer process produces information that is consumed by a consumer process.
- unbounded-buffer places no practical limit on the size of the buffer.
- bounded-buffer assumes that there is a fixed buffer size.
Cooperating Processes
- Independent process cannot affect or be affected by the execution of another process.
- Cooperating process can affect or be affected by the execution of another process
- Advantages of process cooperation
- Information sharing
- Computation speed-up
- Modularity
- Convenience
Process Termination
- Process executes last statement and asks the operating system to decide it (exit).
- Output data from child to parent (via wait).
- Process’ resources are deallocated by operating system.
- Parent may terminate execution of children processes (abort).
- Child has exceeded allocated resources.
- Task assigned to child is no longer required.
- Parent is exiting.
* Operating system does not allow child to continue if its parent terminates.
* Cascading termination.
Process Creation
- Parent process create children processes, which, in turn create other processes, forming a tree of processes.
- Resource sharing
- Parent and children share all resources.
- Children share subset of parent’s resources.
- Parent and child share no resources.
- Execution
- Parent and children execute concurrently.
- Parent waits until children terminate.
Context Switch
- When CPU switches to another process, the system must save the state of the old process and load the saved state for the new process.
- Context-switch time is overhead; the system does no useful work while switching.
- Time dependent on hardware support.
Schedulers
- Short-term scheduler is invoked very frequently (milliseconds) Þ (must be fast).
- Long-term scheduler is invoked very infrequently (seconds, minutes) Þ (may be slow).
- The long-term scheduler controls the degree of multiprogramming.
- Processes can be described as either:
- I/O-bound process – spends more time doing I/O than computations, many short CPU bursts.
- CPU-bound process – spends more time doing computations; few very long CPU bursts.
Schedulers
- Long-term scheduler (or job scheduler) – selects which processes should be brought into the ready queue.
- Short-term scheduler (or CPU scheduler) – selects which process should be executed next and allocates CPU.
Process Scheduling Queues
- Job queue – set of all processes in the system.
- Ready queue – set of all processes residing in main memory, ready and waiting to execute.
- Device queues – set of processes waiting for an I/O device.
- Process migration between the various queues.
Process Concept
- An operating system executes a variety of programs:
- Batch system – jobs
- Time-shared systems – user programs or tasks
- Textbook uses the terms job and process almost interchangeably.
- Process – a program in execution; process execution must progress in sequential fashion.
- A process includes:
- program counter
- stack
- data section
Sunday, 26 February 2012
System Generation (SYSGEN)
- Operating systems are designed to run on any of a class of machines; the system must be configured for each specific computer site.
- SYSGEN program obtains information concerning the specific configuration of the hardware system.
- Booting – starting a computer by loading the kernel.
- Bootstrap program – code stored in ROM that is able to locate the kernel, load it into memory, and start its execution.
System Implementations
- Traditionally written in assembly language, operating systems can now be written in higher-level languages.
- Code written in a high-level language:
- can be written faster.
- is more compact.
- is easier to understand and debug.
- An operating system is far easier to port (move to some other hardware) if it is written in a high-level language.
Mechanisms and Policies
- Mechanisms determine how to do something, policies decide what will be done.
- The separation of policy from mechanism is a very important principle, it allows maximum flexibility if policy decisions are to be changed later.
System Design Goals
- User goals – operating system should be convenient to use, easy to learn, reliable, safe, and fast.
- System goals – operating system should be easy to design, implement, and maintain, as well as flexible, reliable, error-free, and efficient.
Advantages/Disadvantages of Virtual Machines
- The virtual-machine concept provides complete protection of system resources since each virtual machine is isolated from all other virtual machines. This isolation, however, permits no direct sharing of resources.
- A virtual-machine system is a perfect vehicle for operating-systems research and development. System development is done on the virtual machine, instead of on a physical machine and so does not disrupt normal system operation.
- The virtual machine concept is difficult to implement due to the effort required to provide an exact duplicate to the underlying machine.
Virtual Machines
- A virtual machine takes the layered approach to its logical conclusion. It treats hardware and the operating system kernel as though they were all hardware.
- A virtual machine provides an interface identical to the underlying bare hardware.
- The operating system creates the illusion of multiple processes, each executing on its own processor with its own (virtual) memory.
- The resources of the physical computer are shared to create the virtual machines.
- CPU scheduling can create the appearance that users have their own processor.
- Spooling and a file system can provide virtual card readers and virtual line printers.
- A normal user time-sharing terminal serves as the virtual machine operator’s console.
Microkernel System Structure
- Moves as much from the kernel into “user” space.
- Communication takes place between user modules using message passing.
- Benefits:
- easier to extend a microkernel
- easier to port the operating system to new architectures
- more reliable (less code is running in kernel mode)
- more secure
Layered Approach
- The operating system is divided into a number of layers (levels), each built on top of lower layers. The bottom layer (layer 0), is the hardware; the highest (layer N) is the user interface.
- With modularity, layers are selected such that each uses functions (operations) and services of only lower-level layers.
UNIX System Structure
- UNIX – limited by hardware functionality, the original UNIX operating system had limited structuring. The UNIX OS consists of two separable parts.
- Systems programs
- The kernel
* Consists of everything below the system-call interface and above the physical hardware
* Provides the file system, CPU scheduling, memory management, and other operating-system functions; a large number of functions for one level.
MS-DOS System Structure
- MS-DOS – written to provide the most functionality in the least space
- not divided into modules
- Although MS-DOS has some structure, its interfaces and levels of functionality are not well separated
System Programs
- System programs provide a convenient environment for program development and execution. The can be divided into:
- File manipulation
- Status information
- File modification
- Programming language support
- Program loading and execution
- Communications
- Application programs
- Most users’ view of the operation system is defined by system programs, not the actual system calls.
Types of System Calls
- Process control
- File management
- Device management
- Information maintenance
- Communications
System Calls
- System calls provide the interface between a running program and the operating system.
- Generally available as assembly-language instructions.
- Languages defined to replace assembly language for systems programming allow system calls to be made directly (e.g., C, C++)
- Three general methods are used to pass parameters between a running program and the operating system.
- Pass parameters in registers.
- Store the parameters in a table in memory, and the table address is passed as a parameter in a register.
- Push (store) the parameters onto the stack by the program, and pop off the stack by operating system.
Subscribe to:
Posts (Atom)