Tuesday, 28 February 2012

Java Thread States


Java Threads


  • Java threads may be created by:
  1. Extending Thread class
  2. 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
  1.    a thread id
  2.    register set
  3.    separate user and kernel stacks
  4.    private data storage area

Solaris Process


Solaris 2 Threads


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

Many-To-Many


  • Allows many user level threads to be mapped to many kernel threads.
  • Allows the  operating system to create a sufficient number of kernel threads.
  • Solaris 2
  • Windows NT/2000 with the ThreadFiber package

One-To-One


  • Each user-level thread maps to kernel thread.
  • Examples
  1.    Windows 95/98/NT/2000
  2.    OS/2

Many-To-One


  • Many user-level threads mapped to single kernel thread.
  • Used on systems that do not support kernel threads.

Multithreading Models


  • Many-to-One
  • One-to-One
  • Many-to-Many

Kernel Threads


  • Supported by the Kernel
  • Examples

  1.  Windows 95/98/NT/2000
  2.   Solaris
  3.   Tru64 UNIX
  4.   BeOS
  5.   Linux

User Threads


  • Thread management done by user-level threads library
  • Examples
  1.    POSIX Pthreads
  2.    Mach C-threads
  3.    Solaris threads

    Benefits


    • Responsiveness
    • Resource Sharing
    • Economy
    • Utilization of MP Architectures

    Single and Multithreaded Processes


    Monday, 27 February 2012

    Marshalling Parameters


    Remote Method Invocation


    • Remote Method Invocation (RMI) is a Java mechanism similar to RPCs.
    • RMI allows a Java program on one machine to invoke a method on a remote object.

    Execution of RPC


    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.

    Socket Communication


    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.
    1. Zero capacity – 0 messages
    2. Sender must wait for receiver (rendezvous).
    3. Bounded capacity – finite length of n messages
    4. Sender must wait if link full.
    5. Unbounded capacity – infinite length 
    6. 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).
    1. Each mailbox has a unique id.
    2. Processes can communicate only if they share a mailbox.
    • Properties of communication link
    1. Link established only if processes share a common mailbox
    2. A link may be associated with many processes.
    3. Each pair of processes may share several communication links.
    4. Link may be unidirectional or bi-directional.

    Direct Communication


    • Processes must name each other explicitly:
    1. send (P, message) – send a message to process P
    2. receive(Q, message) – receive a message from process Q
    • Properties of communication link
    1. Links are established automatically.
    2. A link is associated with exactly one pair of communicating processes.
    3. Between each pair there exists exactly one link.
    4. 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:
    1. send(message) – message size fixed or variable
    2. receive(message)
    • If P and Q wish to communicate, they need to:
    1. establish a communication link between them
    2. exchange messages via send/receive
    • Implementation of communication link
    1. physical (e.g., shared memory, hardware bus)
    2. 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.
    1. unbounded-buffer places no practical limit on the size of the buffer.
    2. 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
    1. Information sharing
    2. Computation speed-up
    3. Modularity
    4. Convenience

    Process Termination


    • Process executes last statement and asks the operating system to decide it (exit).
    1. Output data from child to parent (via wait).
    2. Process’ resources are deallocated by operating system.
    • Parent may terminate execution of children processes (abort).
    1. Child has exceeded allocated resources.
    2. Task assigned to child is no longer required.
    3. Parent is exiting.
    * Operating system does not allow child to continue if its parent terminates.
    Cascading termination.

    Processes Tree on a UNIX System


    Process Creation


    • Parent process create children processes, which, in turn create other processes, forming a tree of processes.
    • Resource sharing
    1. Parent and children share all resources.
    2. Children share subset of parent’s resources.
    3. Parent and child share no resources.
    • Execution
    1. Parent and children execute concurrently.
    2. 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:
    1. I/O-bound process – spends more time doing I/O than computations, many short CPU bursts.
    2. CPU-bound process – spends more time doing computations; few very long CPU bursts.

    Addition of Medium Term Scheduling


    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.

    Representation of Process Scheduling


    Ready Queue And Various I/O Device Queues


    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.

    CPU Switch From Process to Process

    Process Control Block (PCB)


    Information associated with each process.
    • Process state
    • Program counter
    • CPU registers
    • CPU scheduling information
    • Memory-management information
    • Accounting information
    • I/O status information

    Process State


    • As a process executes, it changes state
    1. new:  The process is being created.
    2. running:  Instructions are being executed.
    3. waiting:  The process is waiting for some event to occur.
    4. ready:  The process is waiting to be assigned to a process.
    5. terminated:  The process has finished execution



    Process Concept


    • An operating system executes a variety of programs:
    1. Batch system – jobs
    2. 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:
    1. program counter
    2. stack
    3. 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:
    1. can be written faster.
    2. is more compact.
    3. 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.

    Java Virtual Machine


    • Compiled Java programs are platform-neutral bytecodes executed by a Java Virtual Machine (JVM).
    • JVM consists of
      1.    class loader
      2.    class verifier
      3.    runtime interpreter

    • Just-In-Time (JIT) compilers increase performance

    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.

    System Models


    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.
    1. CPU scheduling can create the appearance that users have their own processor.
    2. Spooling and a file system can provide virtual card readers and virtual line printers.
    3. A normal user time-sharing terminal serves as the virtual machine operator’s console.

    Windows NT Client-Server Structure


    Microkernel System Structure


    • Moves as much from the kernel into “user” space.
    • Communication takes place between user modules using message passing.
    • Benefits:
      1.  easier to extend a microkernel
      2.   easier to port the operating system to new architectures
      3.   more reliable (less code is running in kernel mode)
      4.   more secure

    An Operating System Layer


    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.
    1. Systems programs
    2. 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 Layer Structure


    MS-DOS System Structure


    • MS-DOS – written to provide the most functionality in the least space
    1. not divided into modules
    2. 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:
    1. File manipulation
    2. Status information
    3. File modification
    4. Programming language support
    5. Program loading and execution
    6. Communications
    7. Application programs
    • Most users’ view of the operation system is defined by system programs, not the actual system calls. 

    Communication Models


    • Communication may take place using either message passing or shared memory.

    UNIX Running Multiple Programs


    MS-DOS Execution


    Types of System Calls


    • Process control
    • File management
    • Device management
    • Information maintenance
    • Communications

    Passing of Parameters as a Table

    System Calls


    • System calls provide the interface between a running program and the operating system.
    1. Generally available as assembly-language instructions.
    2. 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.
    1. Pass parameters in registers.
    2. Store the parameters in a table in memory, and the table address is passed as a parameter in a register.
    3. Push (store) the parameters onto the stack by the program, and pop off the stack by operating system.