Interests
Home
Resume
Projects
Interests
Favorites
Photo Gallery
About Me

 

Among many of my areas of interest related to Information Technology, I have discussed about some of my favorites in this page.

bullet

Operating Systems

bullet

Object Oriented Programming (OOP)

bullet

Java

bullet

Networking - Protocol Stacks

Operating Systems   

Introduction:

In computing, an operating system (OS) is the system software responsible for the direct control and management of hardware and basic system operations, as well as running application software such as word processing programs and Web browsers.

In general, the operating system is the first layer of software loaded into computer memory when it starts up. As the first software layer, all other software that gets loaded after it, depends on this software to provide them with various common core services. These common core services include, but are not limited to: disk access, memory management, task scheduling, and user interfacing. Since these basic common services are assumed to be provided by the OS, there is no need to re-implement those same functions over and over again in every other piece of software that you may use. The portion of code that performs these core services is called the "kernel" of the operating system. Operating system kernels evolved from libraries that provided the core services into unending programs that control system resources because of the early needs of accounting for computer usage and then protecting those records.

Operating systems can be classified as follows:

bullet

multi-user : Allows two or more users to run programs at the same time. Some operating systems permit hundreds or even thousands of concurrent users.

bullet

multiprocessing : Supports running a program on more than one CPU.

bullet

multitasking : Allows more than one program to run concurrently.

bullet

multithreading : Allows different parts of a single program to run concurrently.

bullet

real time: Responds to input instantly. General-purpose operating systems, such as DOS and UNIX, are not real-time.

Some Operating Systems:

bullet

Microsoft Windows --  www.microsoft.com
bullet

Windows 98

bullet

Windows NT

bullet

Windows 2000

bullet

Windows MX

bullet

Windows XP

bullet

Windows 2003

bullet

Linux
bullet

Red Hat -- www.redhat.com

bullet

Mandrake -- www.mandrakelinux.com/en/

bullet

Knoppix -- http://www.knopper.net/knoppix/index-en.html

bullet

e-smith -- www.e-smith.org

bullet

Debian -- www.debian.rog

bullet

United Linux -- www.unitedlinux.com

bullet

Slack Ware -- www.slackware.org

bullet

Berkeley Software Distribution (BSD)
bullet

BSD -- www.bsd.org

bullet

Free BSD -- www.freebsd.org

bullet

Open BSD -- www.openbsd.org

bullet

Net BSD -- www.netbsd.org

bullet

Sun Solaris -- www.sun.com/solaris/

bullet

MAC Operating Systems -- www.apple.com/macos/ 

bullet

QNX Real Time Operating Systems -- www.qnx.com

bullet

Educational Operating Systems
bullet

Minix -- http://www.cs.vu.nl/~ast/minix.html

bullet

Xinu -- http://public.ise.canberra.edu.au/~chrisc/xinu.html

bullet

Nachos -- http://www.cs.washington.edu/homes/tom/nachos

bullet

Some Free Operating Systems
bullet

Menuet OS -- www.menuetos.org

bullet

Oberon -- http://www.oberon.ethz.ch/

bullet

V2OS -- www.v2os.cx

bullet

EROS (Extremely Reliable Operating System) -- http://www.eros-os.org/

Object Oriented Programming (OOP)

Object-oriented programming (OOP) is a computer programming paradigm that emphasizes the following aspects:

bullet

Objects - packaging data and functionality together into units within a running computer program; objects are the basis of modularity and structure in an object-oriented computer program.

bullet

Abstraction - The ability for a program to ignore some aspects of the information it's manipulating, i.e. the ability to focus on the essential. Each object in the system serves as a model of an abstract "actor" that can perform work, report on and change its state, and "communicate" with other objects in the system, without revealing how these features are implemented. Processes, functions or methods may also be so abstracted, and when they are, a variety of techniques are required to extend an abstraction:

bullet

Encapsulation - Also called information hiding: Ensures that objects cannot change the internal state of other objects in unexpected ways; only the object's own internal methods are allowed to access its state. Each type of object exposes an interface to other objects that specifies how other objects may interact with it. This prevents users from breaking the invariants of the program.

bullet

Polymorphism - References to and collections of objects may refer to objects of different types, and invoking a operation on a reference will produce behavior depending on the actual type of the referent.

bullet

Inheritance - Organizes and facilitates polymorphism and encapsulation by permitting objects to be defined and created that are specialized types of already-existing objects - these can share (and extend) their behavior without having to reimplement that behavior. This is typically done by grouping objects into classes, and defining classes as extensions of existing classes, thus and grouping classes into trees or lattices reflecting behavioral commonality.

 

Some Object Oriented languages

bullet

Java

bullet

C ++

bullet

Ruby

bullet

Objective C

bullet

O' Haskell

bullet

Simula

bullet

Python

bullet

Action Script

bullet

Perl

bullet

CLOS

bullet

OCaml

 

Java

The Java language is an object-oriented programming language created by James Gosling and other engineers at Sun Microsystems. It was developed in 1991, as part of the Green Project, and officially announced on May 23, 1995, at SunWorld; being released in November. Gosling and friends initially designed Java, which was called Oak at first (in honour of a tree outside Gosling's office), to replace C++ (although the feature set better resembles that of Objective C). The Java specifications are community-maintained through the Sun-managed Java Community Process. Sun holds a trademark on the Java name.
 

The four primary goals in the creation of the Java language:

bullet

It is object-oriented.

bullet

It is independent of the host platform (more or less).

bullet

It contains language facilities and libraries for networking.

bullet

It is designed to execute code from remote sources securely.

Platform Independence

Platform Independence, means that programs written in the Java language must run similarly on diverse hardware. One should be able to write a program once and run it anywhere. This is achieved by most compilers by compiling the Java language code "halfway" to bytecode—simplified machine instructions specific to the Java platform. The code is then run on a virtual machine (VM), a program written in native code on the host hardware that translates generic Java bytecode into usable code on the hardware. Further, standardized libraries are provided to allow access to features of the host machines (such as graphics, threading and networking) in unified ways.

J2EE

Java 2 Platform, Enterprise Edition or J2EE is a Standard (albeit with no ISO or ECMA standard) for developing distributed Multi-tier architecture applications, based on modular components. It uses several technologies, including JDBC and CORBA, and extends their functionality with Enterprise Java Beans, Java Servlets, Java Server Pages and XML technologies. This allows the developer to create an Enterprise Application that is portable between platforms and scalable, while integrating with several legacy technologies.

The J2EE APIs includes several technologies that extend the functionality of the base J2SE APIs.

javax.ejb.* : The Enterprise Java Beans API defines a set of APIs that a distributed object container will support in order to provide persistence, remote communication (using RMI), concurrency control, and access control for distributed objects.

javax.servlet : The Servlets API defines a set of APIs between a web container and a servlet that is responsible for processing requests and issuing responses.

javax.servlet.jsp : The javax.servlet.jsp and javax.servlet.jsp.tagext packages define the JavaServer Pages API.

javax.naming : The javax.naming, javax.naming.directory, javax.naming.event, javax.naming.ldap and javax.naming.spi packages define the Java Naming and Directory Interface (JNDI) API.

java.sql, javax.sql : The java.sql and javax.sql packages define the Java Database Connectivity (JDBC) API

java.transaction.* : These packages define the Java Transaction API (JTA)

javax.xml.* : These packages define the JAXP API

javax.jms.* : These packages define the Java Message Service (JMS) API

Favorite Java Links

bullet

www.java.sun.com 

bullet

www.theserverside.com

bullet

www.jguru.com

bullet

www.javaboutique.internet.com

bullet

www.javascript.internet.com

bullet

www.javaworld.com

bullet

www.javalobby.com

bullet

www.jars.com

bullet

www.java.apache.org

bullet

www.javareport.com

bullet

www.freewarejava.com

bullet

www.javafile.com

bullet

www.javaranch.com

bullet

www.javaonthebrain.com

bullet

www.javagrande.org

bullet

www.javacoffeebreak.com

bullet

www.jcp.org

bullet

www.java.about.com

Networking - Protocol Stack

OSI Reference Model

The Open Systems Interconnection Reference Model (OSI Model or OSI Reference Model for short) is a layered abstract description for communications and computer network protocol design, developed as part of the Open Systems Interconnect initiative. It is also called the OSI seven layer model.
 

The model divides the functions of a protocol into a series of layers. Each layer has the property that it only uses the functions of the layer below, and only exports functionality to the layer above. A system that implements protocol behaviour consisting of a series of these layers is known as a 'protocol stack' or 'stack'. Protocol stacks can be implemented either in hardware or software, or a mixture of both. Typically, only the lower layers are implemented in hardware, with the higher layers being implemented in software.

Description of Layers

"Physical layer" Layer 1. : The physical layer defines all electrical and physical specifications for devices. This includes the layout of pins, voltages, and cable specifications. Hubs and repeaters are physical-layer devices. The major functions and services performed by the physical layer are:

bullet

establishment and termination of a connection to a communications medium.

bullet

participation in the process whereby the communication resources are effectively shared among multiple users. For example, contention resolution and flow control.

bullet

modulation, or conversion between the representation of digital data in user equipment and the corresponding signals transmitted over a communications channel. This is signals operating over the physical cabling -- copper and fibre optic, for example. SCSI operates at this level.

"Data link layer" Layer 2. : The Data link layer provides the functional and procedural means to transfer data between network entities and to detect and possibly correct errors that may occur in the Physical layer. The addressing scheme is physical which means that the addresses are hard-coded into the network cards at the time of manufacturer. The addressing scheme is flat. Note: The best know example of this is Ethernet. Other examples of data link protocols are HDLC and ADCCP for point-to-point or packet-switched networks and LLC for local area networks. This is the layer that hubs and switches operate. Connectivity among locally attached network nodes.

"Network layer" Layer 3. : The Network layer provides the functional and procedural means of transferring variable length data sequences from a source to a destination via one or more networks while maintaining the quality of service requested by the Transport layer. The Network layer performs network routing, flow control, segmentation/desegmentation, and error control functions. The router operates at this layer -- sending data throughout the extended network and making the Internet possible, although there are layer 3 (or IP) switches. This is a logical addressing scheme - values are chosen by the network engineer. The addressing scheme is hierarchical.

"Transport layer" Layer 4. : The purpose of the Transport layer is to provide transparent transfer of data between end users, thus relieving the upper layers from any concern with providing reliable and cost-effective data transfer. The transport layer controls the reliability of a given link. Some protocols are stateful and connection oriented. This means that the session layer can keep track of the packets and retransmit those that fail.

"Session layer" Layer 5. : The Session layer provides the mechanism for managing the dialogue between end-user application processes. It provides for either duplex or half-duplex operation and establishes checkpointing, adjournment, termination, and restart procedures. This layer is responsible for setting up and tearing down TCP/IP sessions.

"Presentation layer" Layer 6. : The Presentation layer relieves the Application layer of concern regarding syntactical differences in data representation within the end-user systems. MIME encoding, encryption and similar manipulation of the presentation of data is done at this layer. An example of a presentation service would be the conversion of an EBCDIC-coded text file to an ASCII-coded file.

"Application layer" Layer 7, the highest layer. : This layer interfaces directly to and performs common application services for the application processes. The common application services provide semantic conversion between associated application processes. Examples of common application services include the virtual file, virtual terminal, and job transfer and manipulation protocols.
 

TCP / IP Protocol Stack

The internet protocol suite is the set of protocols that implement the protocol stack on which the Internet runs. It is sometimes called the TCP/IP protocol suite, after the two most important protocols in it: the Transmission Control Protocol (TCP) and the Internet Protocol (IP), which were also the first two defined.

The internet protocol suite can be described by analogy with the OSI model, which describes the layers of a protocol stack, not all of which correspond well with internet practice. In a protocol stack, each layer solves a set of problems involving the transmission of data, and provides a well-defined service to the higher layers. Higher layers are logically closer to the user and deal with more abstract data, relying on lower layers to translate data into forms that can eventually be physically manipulated.

Description of Layers

The Physical layer

The Physical layer describes the physical characteristics of the communication, such as conventions about the nature of the medium used for communication (such as wires, fiber optic links or radio links), and all related details such as connectors, channel codes and modulation, signal strengths, wavelength, low-level sychronization and timing and maximum distances.

The Data-Link layer

The Data link layer specifies how packets are transported over the physical layer, including the framing (i.e. the special bit patterns which mark the start and end of packets). Ethernet, for example, includes fields in the packet header which specify which machine or machines on the network a packet is destined for. Examples of Data-link layer protocols are Ethernet, Wireless Ethernet, SLIP, Token Ring and ATM.

PPP is a little more complex, as it was originally specified as a separate protocol which ran on top of another data link layer, HDLC/SDLC.

This layer is sometimes further subdivided into Logical Link Control and Media Access Control.

The Network layer

As originally defined, the Network layer solved the problem of getting packets across a single network. Examples of such protocols are X.25, and the ARPANET's Initial Connection Protocol.

With the advent of the concept of internetworking, additional functionality was added to this layer, namely getting data from the source network to the destination network. This generally involves routing the packet across a network of networks, known as an internet. In the internet protocol suite, IP performs the basic task of getting packets of data from source to destination, and also supports other protocols, such as ICMP (used to transmit diagnostic information about IP transmission) and IGMP (used to manage multicast data). ICMP and IGMP are layered on top of IP but perform network layer functions, illustrating an incompatibility between the internet and OSI models.

The Network Layer Internet Protocol (IP) can carry data for a number of different higher level protocols. These protocols are each identified by a unique IP Protocol Number. ICMP and IGMP are protocols 1 and 2, respectively.

The Transport layer

The protocols at the Transport layer can solve problems like reliability ("did the data reach the destination?") and ensure that data arrives in the correct order. In the TCP/IP protocol suite, transport protocols also determine which application any given data is intended for.

The dynamic routing protocols which technically fit at this layer in the TCP/IP Protocol Suite (since they run over IP) are generally considered to be part of the Network layer; an example is OSPF .

TCP is a "reliable", connection-oriented transport mechanism providing a reliable byte stream, which makes sure data arrives undamaged and in order, is re-transmitted if lost, and eliminates duplicate copies. TCP tries to continuously measure how loaded the network is and throttles its sending rate in order to avoid overloading the network. Furthermore, TCP will attempt to deliver all data correctly in the specified sequence. These are its main differences from UDP and can become disadvantages in real-time streaming or routing applications with high layer 3 loss rates.

UDP is a connectionless datagram protocol. It is a "best effort" or "unreliable" protocol - not because it is particularly unreliable, but because it does not verify that packets have reached their destination, and gives no guarantee that they will arrive in order. If an Application requires these guarantees, it must provide them itself, or use TCP.

UDP is typically used for applications such as streaming media (audio and video, etc) where the time TCP requires for retransmission and re-ordering might not be available, or for simple query/response applications like DNS lookups, where the overhead of setting up a reliable connection is disproportionately large.

Both TCP and UDP are used to carry a number of higher-level applications. The applications at any given network address are distinguished by their TCP or UDP Port Number. By convention certain well known ports are associated with specific applications.

RTP is a datagram protocol that is designed for real-time data such as streaming audio and video. Although RTP uses the UDP packet format as a basis, it provides a function that is at the same protocol layer.

The Application layer

The Application layer is where most common network programs reside.

These programs and their corresponding protocols include HTTP (The World Wide Web), FTP (File transport), SMTP (Email), SSH (Secure remote login), DNS (Name <--> IP Address lookups) and many others.

Favorite Protocol Site:

bullet

www.protocols.com

Home | Resume | Projects | Interests | Favorites | Photo Gallery | About Me