Tuesday, December 11, 2012

Semaphore


In computer science, a semaphore is a variable or abstract data type that provides a simple but useful abstraction for controlling access by multiple processes to a common resource in a parallel programming or multi user environment.
A useful way to think of a semaphore is as a record of how many units of a particular resource are available, coupled with operations to safely (i.e., without race conditions) adjust that record as units are required or become free, and if necessary wait until a unit of the resource becomes available. Semaphores are a useful tool in the prevention of race conditions; however, their use is by no means a guarantee that a program is free from these problems. Semaphores which allow an arbitrary resource count are called counting semaphores, while semaphores which are restricted to the values 0 and 1 (or locked/unlocked, unavailable/available) are called binary semaphores (same functionality that mutexes have).
The semaphore concept was invented by Dutch computer scientist Edsger Dijkstra in 1965, and the concept has found widespread use in a variety of operating systems.

Important observations

When used for a pool of resources, a semaphore does not keep track of which of the resources are free, only how many there are. Some other mechanism (possibly involving more semaphores) may be required to select a particular free resource.
Processes are trusted to follow the protocol. Fairness and safety are likely to be compromised (which practically means a program may behave slowly, act erratically, hang or crash) if even a single process acts incorrectly. This includes:
  • requesting a resource and forgetting to release it
  • releasing a resource that was never requested
  • holding a resource for a long time without needing it
  • using a resource without requesting it first (or after releasing it).
Even if all processes follow these rules, multi-resource deadlock may still occur when there are different resources managed by different semaphores and when processes need to use more than one resource at a time, as illustrated by the dining philosophers problem.

CUI V/S GUI


CUI and GUI are acronyms that stand for different kinds of user interface systems. These are terms used in reference to computers. CUI stands for Character User Interface while GUI refers to Graphical User Interface. Though both are interfaces and serve the purpose of running the programs, they differ in their features and the control they provide to the user. Here is a brief explanation of the two types of user interface for the help of those who do not know about them.


What is CUI?
CUI means you have to take help of a keyboard to type commands to interact with the computer. You can only type text to give commands to the computer as in MS DOS or command prompt. There are no images or graphics on the screen and it is a primitive type of interface. In the beginning, computers had to be operated through this interface and users who have seen it say that they had to contend with a black screen with white text only. In those days, there was no need of a mouse as CUI did not support the use of pointer devices. CUI’s have gradually become outdated with the more advanced GUI taking their place. However, even the most modern computers have a modified version of CUI called CLI (Command Line Interface).


What is GUI?
GUI is what most modern computers make use of. This is an interface that makes use of graphics, images and other visual clues such as icons. This interface made it possible for a mouse to be used with a computer and interaction really became very easy as the user could interact with just a click of the mouse rather than having to type every time to give commands to the computer.


Tuesday, December 04, 2012

Project management


Project management is the discipline of planning, organizing, securing, managing, leading, and controlling resources to achieve specific goals. A project is a temporary endeavor with a defined beginning and end (usually time-constrained, and often constrained by funding or deliverables), undertaken to meet unique goals and objectives, typically to bring about beneficial change or added value. The temporary nature of projects stands in contrast with business as usual (or operations), which are repetitive, permanent, or semi-permanent functional activities to produce products or services. In practice, the management of these two systems is often quite different, and as such requires the development of distinct technical skills and management strategies.
The primary challenge of project management is to achieve all of the project goals and objectives while honoring the preconceived constraints. The primary constraints are scope, time, quality and budget. The secondary —and more ambitious— challenge is to optimize the allocation of necessary inputs and integrate them to meet pre-defined objectives.

Management


Management in all business and organizational activities is the act of getting people together to accomplish desired goals and bjectives using available resources efficiently and effectively. Management comprises planning, organizing, staffing, leading or directing, and controlling an organization (a group of one or more people or entities) or effort for the purpose of accomplishing a goal.Resourcing encompasses the deployment and manipulation of human resources, financial resources, technological resources andnatural resources.
Since organizations can be viewed as systems, management can also be defined as human action, including design, to facilitate the production of useful outcomes from a system. This view opens the opportunity to 'manage' oneself, a pre-requisite to attempting to manage others.

INTERNET


The Internet (or internet) is a global system of interconnected computer networks that use the standard Internet protocol suite (often called TCP/IP, although not all applications use TCP) to serve billions of users worldwide. It is a network of networks that consists of millions of private, public, academic, business, and government networks, of local to global scope, that are linked by a broad array of electronic, wireless and optical networking technologies. The Internet carries an extensive range of information resources and services, such as the inter-linked hypertextdocuments of the World Wide Web (WWW) and the infrastructure to support email.
Most traditional communications media including telephone, music, film, and television are being reshaped or redefined by the Internet, giving birth to new services such as Voice over Internet Protocol (VoIP) and Internet Protocol Television (IPTV). Newspaper, book and other print publishing are adapting to Web site technology, or are reshaped into blogging and web feeds. The Internet has enabled and accelerated new forms of human interactions through instant messaging, Internet forums, and social networking. Online shopping has boomed both for major retail outlets and smallartisans and traders. Business-to-business and financial services on the Internet affect supply chains across entire industries.

Wednesday, April 20, 2011

World Wide Web

The World Wide Web, abbreviated as WWW or W3 and commonly known as the Web, is a system of interlinked hypertext documents accessed via the Internet. With a web browser, one can view web pages that may contain text, images, videos, and other multimedia and navigate between them via hyperlinks. Using concepts from earlier hypertext systems, English engineer and computer scientist Sir Tim Berners-Lee, now the Director of the World Wide Web Consortium, wrote a proposal in March 1989 for what would eventually become the World Wide Web. At CERN in Geneva, Switzerland, Berners-Lee and Belgian computer scientist Robert Cailliau proposed in 1990 to use "HyperText ... to link and access information of various kinds as a web of nodes in which the user can browse at will", and publicly introduced the project in December.
"The World-Wide Web was developed to be a pool of human knowledge, and human culture, which would allow collaborators in remote sites to share their ideas and all aspects of a common project."



The terms Internet and World Wide Web are often used in every-day speech without much distinction. However, the Internet and the World Wide Web are not one and the same. The Internet is a global system of interconnected computer networks. In contrast, the Web is one of the services that runs on the Internet. It is a collection of interconnected documents and other resources, linked by hyperlinks and URLs. In short, the Web is an application running on the Internet.
Viewing a web page on the World Wide Web normally begins either by typing the URL of the page into a web browser, or by following a hyperlink to that page or resource. The web browser then initiates a series of communication messages, behind the scenes, in order to fetch and display it.

Pulse-code modulation

Pulse-code modulation (PCM) is a method used to digitally represent sampled analog signals, which was invented by Alec Reeves in 1937. It is the standard form for digital audio in computers and various Blu-ray, Compact Disc and DVD formats, as well as other uses such as digital telephone systems. A PCM stream is a digital representation of an analog signal, in which the magnitude of the analogue signal is sampled regularly at uniform intervals, with each sample being quantized to the nearest value within a range of digital steps.
PCM streams have two basic properties that determine their fidelity to the original analog signal: the sampling rate, which is the number of times per second that samples are taken; and the bit depth, which determines the number of possible digital values that each sample can take.

Service primitives of Network Software

Service primitives

A service is formally by a set of primitives or operations a user or other entities can invoke to access the service. That is what materializes an interface. We commonly classify service primitives into 4 classes:
primitive meaning
request an entity is requesting a service (we are requesting a connection to a remote computer)
indication an entity is informed of an event (the receiver has just received a connection request)
response an entity is responding to an event (the receiver is sending the permission to connect)
confirm an entity acknowledges the response to its request (the sender acknoledge the permission to connect to the remote host)
Most primitives need parameters. For instance, parameters of a CONNECT.request (used to query a connection) are the machine you want to connect to, the service you want to use (FTP, telnet...) and the maximum size of exchanged packets.
A acknowledged service is a service that requires a request, an indication, a response and a confirm. A unacknowledged service is a service that requires only a request and an indication. Typically, the service that establishes a connection is an acknowledged service because the peer entity must agree to set the connection. On the other hand, data transmission may be an unacknowledged service, whether we want an acknowledgement or not.
On an implementation point of view, primitives correspond to functions we can use in a program to access a given service.

services/protocols relations

A service is a set of primitives a layer provides to the upper layer. The service defines the operations a layer may realize, but it does not tell how these operations are really realized. The most characteristic element of a service is the interface between two adjacent layers.
Conversely, a protocol is a set of rules that applies to the meaning and format of messages exchanged between two peer entities. Entities uses protocols to implement service specifications. A service may therefore remain the same with two different protocols.
Protocols and services are different, but they are close to each other. We must not confuse. A service is rather an abstract notion, although the protocol corresponds to what really happens. This distinction actually answers to modern programming and implementation requirements. It is equivalent to making the distinction between an algorithm and its implementation.

connection-oriented services and connectionless services


The connection-oriented service requires a connectio to be set between two points. The receiver then expects the sender to transmit data. At the end of the transmission, the connection is stopped. Such a service is for example the telephone: to use it, we must first take of the hook, and dial a number. The called person picks up the phone and the connection is then set. The two speakers converse until they hang up.
The connectionless service is characterized by the independance of transmitted messages. Someone can receive a message without being aware of it. Messages can then follow different routes. The consequence is that we can receive messages in an inverted order. The typical example for this kind of service is the mail system: someone writes a letter and sends it without warning the addressee. This letter may then arrive after a second letter the same guy may have sent to the same addressee. Routes followed by these two letters may be different.

Frame Relay

Frame Relay is a standardized wide area network technology that specifies the physical and logical link layers of digital telecommunications channels using a packet switching methodology. Originally designed for transport across Integrated Services Digital Network (ISDN) infrastructure, it may be used today in the context of many other network interfaces.
Network providers commonly implement Frame Relay for voice (VoFR) and data as an encapsulation technique, used between local area networks (LANs) over a wide area network (WAN). Each end-user gets a private line (or leased line) to a frame-relay node. The frame-relay network handles the transmission over a frequently-changing path transparent to all end-users.
Frame Relay has become one of the most extensively-used WAN protocols. Its cheapness (compared to leased lines) provided one reason for its popularity. The extreme simplicity of configuring user equipment in a Frame Relay network offers another reason for Frame Relay's popularity.
With the advent of Ethernet over fiber optics, MPLS, VPN and dedicated broadband services such as cable modem and DSL, the end may loom for the Frame Relay protocol and encapsulation

Frame relay is a synchronous HDLC protocol based network. Data is sent in HDLC packets, referred to as "frames". The diagram below of an HDLC frame may be familiar, since without adding specific definitions of how the Address, Control and CRC is used, the diagram is applicable to IBM's SDLC, to X.25, to HDLC, to Frame Relay, as well as other protocols.

Saturday, November 06, 2010

Binary Data Representation

A binary number may also have a binary point, in addition to the sign. The binary point is used for representing fractions, integers and integer-fraction numbers. Registers are high-speed storage areas within the Central Processing Unit (CPU) of the computer. All data is brought into a register before it can be processed. For example, if two numbers are to be added, both the numbers are brought in registers, added, and the result is also placed in a register. There are two ways of representing the position of the binary point in the register - fixed point number representation and floating point number representation.

The fixed point number representation assumes that the binary point is fixed at one position. The binary point is not actually present in the register, but its presence is assumed based on whether the number which is stored is a fraction or an integer.

The floating point number representation uses two registers. The first register stores the number without the binary point. The second register stores a number that indicates the position of the binary point in the first register.

We shall now discuss representation of data in the fixed point number representation and floating point number representation.

4.1. Fixed Point Number Representation


The integer binary signed number is represented as follows –
  • For a positive integer binary number, the sign bit is 0 and the magnitude is a positive binary number.
  • For a negative integer binary number, the sign bit is 1. The magnitude is represented in any one of the three ways-
    • Signed Magnitude representation - The magnitude is the positive binary number itself.
    • Signed 1’s complement representation - The magnitude is the 1’s complement of the positive binary number.
    • Signed 2’s complement representation - The magnitude is the 2’s complement of the positive binary number.
 the representation of the signed number 18.




Signed magnitude and signed 1’s complement representation are seldom used in computer arithmetic. Let’s now perform arithmetic operations on the signed binary numbers. We use the signed 2’s complement representation to represent the negative numbers.

  • Addition of signed binary numbers – The addition of any two signed binary numbers is performed as follows -




    • Represent the positive number in binary form.(For e.g., +5 is 0000 0101 and +10 is 0000 1010)
    • Represent the negative number in 2’s complement form. (For e.g., -5 is 1111 1011 and -10 is 1111 0110)
    • Add the bits of the two signed binary numbers.
    • Ignore any carry out from the sign bit position.
    • Please note that the negative output is automatically in the 2’s complement form. We get the decimal equivalent of the negative output number, by finding its 2’s complement, and attaching a negative sign to the obtained result. Let’s understand the addition of two signed binary numbers with the help of some examples. Example 1. Add +5 and +10. We represent +5 in binary form, i.e., 0000 0101. We represent +10 in binary form, i.e., 0000 1010. Add the two numbers. The result is 0000 1111 i.e. +15.
      Example 2. Add -5 and +10. We represent -5 in 2’s complement form, i.e., 1111 1011. We represent +10 in binary form, i.e., 0000 1010. Add the two numbers. The result is 0000 0101 i.e. +5.
      Example 3. Add +5 and -10. We represent +5 in binary form, i.e., 0000 0101. We represent -10 in 2’s complement form, i.e., 1111 0110. Add the two numbers. The result is 1111 1011. The result is in 2’s complement form.
      To find the decimal equivalent of the result 1111 1011 – Find the 2’s complement of 1111 1011, i.e., 0000 0100 + 1 = 0000 0101. This is binary equivalent of +5. Attaching a negative sign to the obtained result gives us -5.
      Example 4. Add -5 and -10.
      We represent -5 in 2’s complement form, i.e., 1111 1011. We represent -10 in 2’s complement form, i.e., 1111 0110. Add the two numbers. The result is 1111 0001. The result is in 2’s complement form.
      To find the decimal equivalent of the result 1111 0001- Find the 2’s complement of 1111 0001, i.e., 0000 1110 + 1 = 0000 1111. This is binary equivalent of +15. Attaching a negative sign to the obtained result gives us -15.



  • Subtraction of signed binary numbers – The subtraction of signed binary numbers is changed to the addition of two signed numbers. For this, the sign of the second number is changed before performing the addition operation.




  • (-A) – (+B) = (-A) + (-B) (+B in subtraction is changed to –B in addition)
    (+A) – (+B) = (+A) + (-B) (+B in subtraction is changed to –B in addition)
    (-A) – (-B) = (-A) + (+B) (-B in subtraction is changed to +B in addition)
    (+A) – (-B) = (+A) + (+B) (-B in subtraction is changed to +B in addition)
    We see that the subtraction of signed binary numbers is performed using the addition operation.

    Signed and Unsigned Numbers

    A binary number may be positive or negative. Generally, we use the symbol “+” and “-” to represent positive and negative numbers, respectively. The sign of a binary number has to be represented using 0 and 1, in the computer. An n-bit signed binary number consists of two parts – sign bit and magnitude. The left most bit, also called the Most Significant Bit (MSB) is the sign bit. The remaining n-1 bits denote the magnitude of the number.

    In signed binary numbers, the sign bit is 0 for a positive number and 1 for a negative number. For example, 01100011 is a positive number since its sign bit is 0, and, 11001011 is a negative number since its sign bit is 1. An 8-bit signed number can represent data in the range -128 to +127 (-27 to +27-1). The leftmost bit is the sign bit.

    In an n-bit unsigned binary number, the magnitude of the number n is stored in n bits. An 8-bit unsigned number can represent data in the range 0 to 255 (28= 256).

    Complement of Binary Numbers


    BINARY SYSTEM & ARITHMATIC

    The binary number system  is used in the computer systems. The digits 0 and 1 are combined to get different binary numbers like 1001, 11000110 etc. In a binary number, a digit 0 or 1 is called a bit. For example, 1001 is a 4-bit binary number, and, 11000110 is an 8-bit binary number. All kinds of data, be it alphabets, numbers, symbols, sound data or video data, are represented as combination of bits i.e. 0’s and 1’s. Each character is a unique combination of bits. We shall now discuss how to perform basic arithmetic operations in the binary number system. 
     

    2.1. Binary Addition

    Table 1. Binary Addition Rules for two inputs

    Table 2. Binary Addition Rules for three inputs

    1. Start addition by adding the bits in unit column (the rightmost column). Use the rules of binary addition.
    2. The result of adding bits of a column is a sum with or without a carry.
    3. Write the sum in the result of that column.
    4. If carry is present, the carry is carried-over to the addition of the next left column.
    5. Repeat steps 2-4 for each column, i.e., the tens column, hundreds column and so on.