BLOGGER TEMPLATES AND TWITTER BACKGROUNDS

Thursday, September 17, 2009

Installation Process of open source: Ubuntu

Installing Ubuntu

  1. When you’re ready to install Ubuntu, double-click the Install icon on your Ubuntu desktop.
  2. parallels desktop 3 and ubuntu

  3. Select your language from the list in the left column and click Forward.
  4. parallels desktop 3 and ubuntu
    click to enlarge

  5. Choose the city closest to you from the Selected city: list and then click Forward.
  6. parallels desktop 3 and ubuntu
    click to enlarge

  7. Select the type of keyboard layout you’d like to use, and then click Forward.
  8. parallels desktop 3 and ubuntu
    click to enlarge

  9. Make sure Guided – use entire disk and SCSI1 are both selected (they should be by default).
  10. parallels desktop 3 and ubuntu
    click to enlarge

  11. Nothing to import, so click Forward
  12. parallels desktop 3 and ubuntu
    click to enlarge

  13. Enter your Name, the name you wish to use to login, a password and whatever you want to call your “Ubuntu computer” in the spaces provided. Once again, click Forward.
  14. parallels desktop 3 and ubuntu
    click to enlarge

  15. And now finally, click the Install button.
  16. parallels desktop 3 and ubuntu
    click to enlarge

  17. Go get a cup of coffee or your beverage of choice. This can take a while.
  18. parallels desktop 3 and ubuntu

  19. When the installation is complete, choose Continue using the live CD instead of Restart now (because we’ll want to make a few changes before using Ubuntu again).
  20. parallels desktop 3 and ubuntu

  21. Power off Ubuntu by clicking the red “Log off” button in the upper-right corner of your Ubuntu desktop.
  22. parallels desktop 3 and ubuntu

  23. And select Shut Down from the menu.
  24. parallels desktop 3 and ubuntu

  25. Don’t be too surprised if Ubuntu freezes at some point, and the video seems to ’scramble’. Use the keyboard-combo to ‘release’ your keyboard and mouse focus from Ubuntu (it will be displayed in the very bottom left corner of your Parallels window). Use the red square Stop Virtual Machine button to completely power off Ubuntu.
  26. parallels desktop 3 and ubuntu
    click to enlarge

  27. Back at your Ubuntu configuration window, click the Configuration link.
  28. parallels desktop 3 and ubuntu
    click to enlarge

  29. Select CD/DVD-ROM 1 from the left column. On the right frame of the Configuration Editor, select Use CD/DVD-ROM (instead of Use image file). Click OK.
  30. parallels desktop 3 and ubuntu
    click to enlarge

Installation Process: Windows 95 / 98

Installing Windows 95 / 98

Note
If you are installing Windows 95, it will be necessary to boot your PC using the supplied floppy disk, then select 'Install Windows from CD-ROM' from the menu that appears.

The procedure for installing Windows 95/98 onto a new PC is as follows:

Switch on the PC and put the Windows 95/98 CD into the CD-ROM. Press the reset button on the PC and allow it to boot.

The PC should boot to the CD-ROM, if not check your motherboard manual to enable 'Boot to CD-ROM' in its BIOS settings.

From the next menu, select Start Windows 98 setup from the CD-ROM

The system will load some basic software to enable it to install

At the blue Windows 95/98 Setup screen, press ENTER to continue.

The system will check the HDD to determine if/how it is configured

Select Configure unallocated space (recommended) and press ENTER

The system will 'Partition' the hard disk such that it can prepare it for storing data

If prompted, select Yes, enable large disk support and press ENTER

This enables the system to use the maximum space possible on the hard disk

At the Setup will restart now screen, press ENTER or wait and the system will automatically reboot

Phase One of the installation is complete and the system needs to reboot to continue...

From the menu, select Start Windows 95/98 setup from the CD-ROM again

The system will 'format' the HDD. This is the process of clearing the hard disk and preparing it to store data. This can take some considerable time depending on the size of the HDD

At the Setup will perform a routine check on your system screen, press ENTER

A diagnostic program called Scandisk will run and check the HDD for any errors/damage. Again, this may take some time depending on HDD size

At the Windows 95/98 Setup screen, click the Continue button at the lower right of the screen using the mouse (or if no mouse is installed, press TAB until the continue is highlighted with dotted lines and press ENTER

Windows 95/98 will install its 'wizard' software to guide you through the installation

At the Select the directory where you want to install Windows 95/98 screen, click or TAB to the C:\WINDOWS line such that a black dot appears to the left hand side (this indicates that this option is selected and is known as a 'Radio button'

This will make the system put all its important files into an area on the hard disk labelled 'Windows'

The Preparing directory screen will appear

The system will now check the HDD for any existing software and make sure that there is enough space on your HDD

At the Setup options screen, click to select Typical, then click the Next button

By selecting 'Typical', you are asking for a default installation of Windows 95/98. This should suit most people and other options can be configured later if required.

Select I want to install the most common components (recommended) and click Next

Again, this indicates that you require a standard installation...

At the Establishing your location screen, select your country/location from the list and click Next. This is a long list that cannot be displayed all at once. Use the scroll bar at the right hand side to see more locations if yours is not immediately visible.

Your location helps Windows to configure itself correctly

Click Next to begin the installation

The system has all the information it needs and will now install and configure the Windows 95/98 software. This may take some time depending on the overall speed of your system

Once completed, remove the Windows 95/98 CD from the CD-ROM and click the Reboot button or wait for the timer

Phase Two of the installation is complete and the system needs to reboot again...

This time, allow the system to boot to the HDD. A Windows 95/98 logo screen should appear as it loads

The CD is removed to force the system to boot to the HDD. If this produces an error, configure the BIOS settings to boot to the HDD first

At the User information screen, type in your name and company name (if appropriate) into the boxes. Place the Windows 95/98 CD back into the CD-ROM. Click Next

The Windows CD is required for further installation tasks and must be ready in the CD-ROM

Read the License Agreement statement and then click I accept the agreement

The software will not allow the install to continue if you do not agree to the statement

Locate your Windows 95/98 Product Key (usually on the back of the CD case) and type it in. Then click Next

Take special care to ensure that the numbers/letters are typed in exactly the same as your Product Key

Click Finish to complete the installation of the software

Windows will now attempt to detect the hardware in your PC and configure itself to use them. It may reboot again as a part of this process...

During the configuration process, the system may ask for the driver disk(s) for some parts of your system. Use the disk(s) that came with your hardware for this.

If you don't have a disk for a particular part, just click Cancel. Individual drivers can be installed at a later date.

Once the configuration process is completed, you will be asked to verify the current time, date and location settings. Check that these are correct then click OK

Again, having the correct time, date and location information is important in the configuration process

Windows will continue its self-configuration, which may take some time, then it will reboot once more

Rebooting is necessary for the system to amend or update its important files which cannot be changed while they are in use

Windows will finish off its hardware configurations, then display the Introduction screen

Windows 95/98 is now completely installed on your PC. Close the intro screen to continue.

Installation Process: Windows XP

Part 1: Begin the installation

1.

Insert the Windows XP CD into your computer and restart your computer.

2.

If prompted to start from the CD, press SPACEBAR. If you miss the prompt (it only appears for a few seconds), restart your computer to try again.

'Command

3.

Windows XP Setup begins. During this portion of setup, your mouse will not work, so you must use the keyboard. On the Welcome to Setup page, press ENTER.

Windows XP Professional Setup page

4.

On the Windows XP Licensing Agreement page, read the licensing agreement. Press the PAGE DOWN key to scroll to the bottom of the agreement. Then press F8.

Windows XP Licensing Agreement page

5.

This page enables you to select the hard disk drive on which Windows XP will be installed. Once you complete this step, all data on your hard disk drive will be removed and cannot be recovered. It is extremely important that you have a recent backup copy of your files before continuing. When you have a backup copy, press D, and then press L when prompted. This deletes your existing data.

6.

Press ENTER to select Unpartitioned space, which appears by default.

Windows XP Professional Setup, partitioned and unpartitioned space page

7.

Press ENTER again to select Format the partition using the NTFS file system, which appears by default.

8.

Windows XP erases your hard disk drive using a process called formatting and then copies the setup files. You can leave your computer and return in 20 to 30 minutes.



Part 2: Continue the installation

9.

Windows XP restarts and then continues with the installation process. From this point forward, you can use your mouse. Eventually, the Regional and Language Options page appears. Click Next to accept the default settings. If you are multilingual or prefer a language other than English, you can change language settings after setup is complete.

Regional and Language Options page

10.

On the Personalize Your Software page, type your name and your organization name. Some programs use this information to automatically fill in your name when required. Then, click Next.

Personalize Your Software page

11.

On the Your Product Key page, type your product key as it appears on your Windows XP CD case. The product key is unique for every Windows XP installation. Then, click Next.

Your Product Key page

12.

On the Computer Name and Administrator Password page, in the Computer name box, type a name that uniquely identifies your computer in your house, such as FAMILYROOM or TOMS. You cannot use spaces or punctuation. If you connect your computer to a network, you will use this computer name to find shared files and printers. Type a strong password that you can remember in the Administrator password box, and then retype it in the Confirm password box. Write the password down and store it in a secure place. Click Next.

13.

On the Date and Time Settings page, set your computer’s clock. Then, click the Time Zone down arrow, and select your time zone. Click Next.

Date and Time Settings page

14.

Windows XP will spend about a minute configuring your computer. On the Networking Settings page, click Next.

15.

On the Workgroup or Computer Domain page, click Next.



Part 3: Complete the installation

16.

Windows XP will spend 20 or 30 minutes configuring your computer and will automatically restart when finished. When the Display Settings dialog appears, click OK.

Display Settings dialog box

17.

When the Monitor Settings dialog box appears, click OK.

Monitor Settings dialog box

18.

The final stage of setup begins. On the Welcome to Microsoft Windows page, click Next.

19.

On the Help protect your PC page, click Help protect my PC by turning on Automatic Updates now. Then, click Next.

20.

Windows XP will then check if you are connected to the Internet:

If you are connected to the Internet, select the choice that describes your network connection on the Will this computer connect to the Internet directly, or through a network? page. If you’re not sure, accept the default selection, and click Next.

Will this computer connect to the Internet directly, or through a network? page

If you use dial-up Internet access, or if Windows XP cannot connect to the Internet, you can connect to the Internet after setup is complete. On the How will this computer connect to the Internet? page, click Skip.

How will this computer connect to the Internet? page

21.

Windows XP Setup displays the Ready to activate Windows? page. If you are connected to the Internet, click Yes, and then click Next. If you are not yet connected to the Internet, click No, click Next, and then skip to step 24. After setup is complete, Windows XP will automatically remind you to activate and register your copy of Windows XP.

Ready to activate Windows? page

22.

On the Ready to register with Microsoft? page, click Yes, and then click Next.

Ready to register with Microsoft? page

23.

On the Collecting Registration Information page, complete the form. Then, click Next.

Collecting Registration Information page

24.

On the Who will use this computer? page, type the name of each person who will use the computer.

Thursday, August 27, 2009

Resource Allocation Graph

How would you know if there is a deadlock base on a resource allocation graph?

  • A deadlock detection method based on the use of the resource allocation graph is presented. The method is different from the existing deadlock avoidance techniques in that the original directed resource allocation graph is first transformed into an undirected (0 1)-labelled graph in which the deadlock would occur only if a cycle has been labelled alternatingly with 0s and 1s. The algorithm is applicable to the centralised and distributed systems. Another feature of the algorithm is that it can be used in distributed systems, since the detection of deadlock is carried out by an interprocess communications which is basically the exchange of 0 and 1 bits among the processes. The worst case cost of the algorithm is O(e), which is low enough to run it at the background of the operating system.

Thursday, August 20, 2009

Deadlock

DEADLOCK CHARACTERIZATION

A deadlock situation can arise if the following four conditions hold simultaneously in a system:

Mutual exclusion - at least one resource must be held in a non-sharable mode; that is, only one process at a time can use the resource.If another process requests that resource, the requesting process must be delayed until the resource has been released.

Hold and wait - there must exist a process that is holding at least one resource and is waiting to acquire additional resources that are currently being held by other processes.

No preemption resources cannot be preempted; that is, the process holding it after that process has completed its task can release a resource only voluntarily by the process holding it, after that process has completed its task.

Circular wait - there must exist a set {Po,P1,�,Pn} of waiting processes such that P0 is waiting for a resource that is held by P1,P1 is waiting for a resource that is held by P2,Pn-1 is waiting for a resource that held by Pn and Pn is waiting for a resource that is held by Po.

Deadlock: Deadlock Detection and Recovery

If a system does not employ a protocol to ensure that deadlocks will never occur, then a detection-and-recovery scheme must be employed.

A deadlock-detection algorithm must be invoked to determine whether a deadlock has occurred.

If a deadlock is detected, the system must recover either by terminating some of the deadlock processes, or by preempting resources from some of the deadlocked processes.

In a system that selects victims for rollback primarily on the basis of cost factors, starvation may occur . As a result, the selected process never completes its designated task.

Deadlock: Deadlock Prevention

A deadlock situation may occur if and only four necessary conditions hold simultaneously in the system: mutual exclusion, hold and wait, no preemption, and circular wait. To prevent deadlocks, we ensure that at least one of the necessary conditions never holds.

Another method for avoiding deadlocks that is less stringent than the prevention algorithms is to have a priori information on how each process will be utilizing the resources. The banker’s algorithm, for example, needs to know the maximum number of each resource class that may be requested by each process. Using this information, we can define a deadlock-avoidance algorithm.

Deadlock: Methods for handling deadlocks

Principally, there are three methods for dealing with deadlocks:

1. Use some protocol to prevent or avoid deadlocks, ensuring that the system will never enter a deadlock state.

2. Allow the system to enter deadlock state, detect it, and then recover.

3. Ignore the problem all together, and pretend that deadlocks never occur in the system. This solution is the one used by most operating systems, including UNIX.

Thursday, August 13, 2009

Thread Scheduling

Threads can be scheduled, and the threads library provides several facilities to handle and control the scheduling of threads. It also provides facilities to control the scheduling of threads during synchronization operations such as locking a mutex. Each thread has its own set of scheduling parameters. These parameters can be set using the thread attributes object before the thread is created. The parameters can also be dynamically set during the thread's execution.
Controlling the scheduling of a thread can be a complicated task. Because the scheduler handles all threads systemwide, the scheduling parameters of a thread interact with those of all other threads in the process and in the other processes. The following facilities are the first to be used if you want to control the scheduling of a thread.

The threads library allows the programmer to control the execution scheduling of the threads in the following ways:
By setting scheduling attributes when creating a thread
By dynamically changing the scheduling attributes of a created thread
By defining the effect of a mutex on the thread's scheduling when creating a mutex (known as synchronization scheduling)
By dynamically changing the scheduling of a thread during synchronization operations (known as synchronization scheduling)

Monday, August 10, 2009

CPU Scheduling Algorithms

CPU-I/O Burst Cycle
The success of CPU scheduling depends on the following observed property of processes: Process execution consists of a cycle of CPU execution and I/O wait. Processes alternate between these two states. Process execution begins with a CPU burst. That is followed by an I/O burst, then another CPU burst, then another I/O burst, and so on. Eventually, the last CPU burst will end with a system request to terminate execution, rather than with another I/O burst. The durations of these CPU bursts have been extensively measured. Although they vary greatly by process and by computer, they tend to have a similar frequency curve.
CPU Scheduler
Whenever the CPU becomes idle, the operating system must select one of the processes in the ready queue to be executed. The selection process is carried out by the short-term scheduler or CPU scheduler. The scheduler selects from among the processes in memory that are ready to execute, and allocates the CPU to one of them.
Preemtive Scheduling
CPU scheduling decisions may take place under the following four circumstances:
1. When a process switches from the running state to the waiting state.
2. When a process switches from the running state to the ready state.
3. When a process switches from the waiting state to the ready state.
4. When process terminates.
In circumstances 1 and 4, there is no choice in terms of scheduling. A new process must be selected for execution. There is a choice, however, in circumstances 2 and 3. When scheduling takes place only under circumstances 1 and 4, we say the scheduling scheme is nonpreemptive; otherwise, the scheduling scheme is preemptive.
Dispatcher
The dispatcher is the module that gives control of the CPU to the process selected by the short-term scheduler. This function involves:
1. Switching context
2. Switching to user mode
3. Jumping to the proper location in the user program to restart that program.
The dispatcher should be as fast as possible, given that it is invoked during every process switch. The time it takes for the dispatcher to stop one process and start another running is known as the dispatch latency.
Scheduling Criteria
1. CPU Utilization - keep the CPU as busy as possible
2. Throughput - number of processes completed per time unit
3. Turnaround time - interval between time of submission to time of completion.
4. Waiting time - sum of the periods spent waiting in the ready queue.
5. Response time - time of submission of the request until the first response is produced.
CPU scheduling is the task of selecting a waiting process from the ready queue and allocating the CPU to it. The CPU is allocated to the selected process by the dispatcher.
First-come, First-served (FCFS) scheduling is the simplest scheduling algorithm, but it can cause short processes to wait for very long processes. Shortest-job-first (SJF) scheduling is provably optimal, providing the shortest average waiting time. Implementing SJF scheduling is difficult because predicting the length of the next CPU burst is difficult. The SJF algorithm is a special case of the general priority-scheduling algorithm, which simply allocates the CPU to the highest-priority process. Both priority and SJF scheduling may suffer from starvation. Aging is a technique to prevent starvation.
Round-robin (RR) scheduling is more appropriate for a time-shared (interactive) system. RR scheduling allocates the CPU to the first process in the ready queue for q time units, where q is the time quantum. After q time units, if the process has not relinquished the CPU, it is preempted and the process is put at the tail of the ready queue. The major problem is the selection of the time quantum. If the quantum is too large, RR scheduling degenerates to FCFS scheduling; if the quantum is too small, scheduling overhead in the form of context-switch time becomes excessive.
The FCFS algorithm is nonpreemptive, the RR algorithm is preemptive. The SJF and priority algorithms may be either preemptive or nonpreemptive.
Multilevel queue algorithms allow different algorithms to be used for various classes of processes. The most common is a foreground interactive queue which uses RR scheduling, and a background batch queue, which uses FCFS scheduling. Multilevel feedback queues allow processes to move from one queue to another.
Because such a wide variety of scheduling algorithms are available, we need methods to select among them. Analytic methods use mathematical analysis to determine the performance of an algorithm. Simulation methods determine performance by imitating the scheduling algorithm on a “representative” sample of processes, and computing the resulting performance.
Operating Systems supporting threads at the kernel level must schedule threads - not processes - for execution. This is the case with Solaris 2 and Windows 2000 where both systems schedule threads using preemptive priority based on scheduling algorithm including support for real-time threads. The Linux process scheduler also uses a priority-based algorithm with real-time supports as well. The scheduling algorithms for these three operating systems typically favor interactive over batch and CPU-bound processes.

Thursday, July 30, 2009

Thread Library

The threads library is implemented by time-sharing on a single processor. It will not take advantage of multi-processor machines. Using this library will therefore never make programs run faster. However, many programs are easier to write when structured as several communicating processes.
Two implementations of the threads library are available, depending on the capabilities of the operating system:
System threads. This implementation builds on the OS-provided threads facilities: POSIX 1003.1c threads for Unix, and Win32 threads for Windows. When available, system threads support both bytecode and native-code programs.
VM-level threads. This implementation performs time-sharing and context switching at the level of the OCaml virtual machine (bytecode interpreter). It is available on Unix systems, and supports only bytecode programs. It cannot be used with native-code programs.

Multithreading Models

Many systems provide support for both user and kernel threads, resulting in different multithreading models. There are three common types of threading implementation:

1. Many-to-one Model - maps many user-level threads to one kernel thread.

2. One-to-one Model - maps each user thread to a kernel thread. It provides mode concurrency than the many-to-one model by allowing another thread to run when a thread makes a blocking system call.

3. Many-to-many Model - The many-to-many model multiplexes many user-level threads to a smaller or equal number of kernel threads. The number of kernel threads may be specific to either a particular application or a particular machine.

Thread

Threads
A process is a program that performs a single thread of execution. This single thread of control allows the process to perform only one task at one time. Many modern operating systems have extended process concept to allow a process to have multiple threads of execution thus allowing the process to perform more than one task at a time.

A thread, sometimes called a lightweight process (LWP), is a basic unit of CPU utilization; it comprises a thread ID, a program counter, a register set, and a stack. It shares with other threads belonging to the same process its code section, data section, and other operating-system resources, such as open files and signals. A traditional (or heavyweight) process has a single thread of control. If the process has multiple threads of control, it can do more than one task at a time.

Many software packages that run on modern desktop PCs are multithreaded. An application typically is implemented as a separate process with several threads of control.

Kernel Thread

Kernel threads are supported directly by the operating system: The kernel performs thread creation, scheduling, and management in kernel space. Because thread management is done by the operating system, kernel threads are generally slower to create and manage than are user threads.

User Thread

User threads are supported above the kernel and are implemented by a thread library at the user level. The library provides support for thread creation, scheduling, and management with no support from the kernel. Because the kernel is unaware of user-level threads, all thread creation and scheduling, are done in user space without the need for kernel intervention.

Benefits of Multi - threading Programming

Benefits of Multithreaded programming can be broken down into four major categories:

1. Responsiveness: Multithreading an interactive application may allow a program to continue running even if part of it is blocked or is performing a lengthy operation, thereby increasing responsiveness to the user.

2. Resource sharing: By default, threads share the memory and the resources of the process to which they belong. The benefit of code sharing is that it allows an application to have several different threads of activity all within the same address space.

3. Economy: Allocating memory and resources for process creation is costly. Alternatively, because threads share resources of the process to which they belong, it is more economical to create and context switch threads.

4. Utilization of multiprocessor architectures: The benefits of multithreading can be greatly increased in a multiprocessor architecture, where each thread may be running in parallel on a different processor. A single-threaded process can be only run on one CPU, no matter how many are available. Multithreading on a multi-CPU machine increases concurrency.

Interprocess Communicatiom

Direct Communication - each process that wants to communicate must explicitly name the recipient or sender of the communication.

Indirect Communication - the messages are sent to and received from mailboxes, or ports.

Synchronization

  • Blocking send - has the sender block until the message is received
  • Nonblocking send - has the sender send the message and continue
  • Blocking receive - has the receiver receive a valid message or null
  • Nonblocking receive - has the receiver block until a message is available
Buffering
Queue of messages attached to the link; implemented in one of three ways.
1. Zero capacity – 0 messages
Sender must wait for receiver (rendezvous).
2. Bounded capacity – finite length of n messages
Sender must wait if link full.
3. Unbounded capacity – infinite length
Sender never waits.

Producer- consumer example

Producer - generates an integer between 0 and 9 (inclusive), then stores it in a CubbyHole object. To make the synchronization problem more interesting, the Producer sleeps for a random amount of time between 0 and 100 milliseconds before repeating the number-generating cycle.
Consumer - consumes all integers from the CubbyHole (the exact same object into which the Producer put the integers in the first place) as quickly as they become available.

Thursday, July 16, 2009

Cooperating Processes

COOPERATING PROCESSES
The concurrent processes executing in the operating system may be either independent processes or cooperating processes.

  • A process id independent if it cannot affect or be affected by the other processes executing in the system
  • A process is cooperating if it can affect or be affected by the other processes executing in the system

There are several reasons for providing an environment that allows process cooperation
1. Information sharing -
Since several users may be interested in the same piece of information (for instance, a shared file) we must provide an environment to allow concurrent access to these types of resources
2. Computation speedup -
If we want a particular task to run faster, we must break it into subtasks, each of which will be executing in parallel with the others. Notice that such a speedup can be achieved only if the computer has multiple processing elements (such as CPU's or I/O channels)
3. Modularity -
We may want to construct the system in a modular fashion, dividing the system function into processes.
4. Convenience - Even an individual user may have many tasks to work on at one time.� For instance, a user may be editing, printing, and compiling in parallel.

  • A producer process produces information that is consumed by a consumer process.
  • To allow producer and consumer processes to run concurrently we must have available a buffer of items that can be filled by the producer and emptied by the consumer
  • The unbound-buffer producer-consumer problem places no practical limit on the size of the buffer.
  • The bound-buffer producer-consumer problem assumes that there is a fixed buffer size

Interprocess Communication

Since processes frequently needs to communicate with other processes therefore, there is a need for a well-structured communication, without using interrupts, among processes.

Race Conditions
In operating systems, processes that are working together share some common storage (main memory, file etc.) that each process can read and write. When two or more processes are reading or writing some shared data and the final result depends on who runs precisely when, are called race conditions. Concurrently executing threads that share data need to synchronize their operations and processing in order to avoid race condition on shared data. Only one ‘customer’ thread at a time should be allowed to examine and update the shared variable.Race conditions are also possible in Operating Systems. If the ready queue is implemented as a linked list and if the ready queue is being manipulated during the handling of an interrupt, then interrupts must be disabled to prevent another interrupt before the first one completes. If interrupts are not disabled than the linked list could become corrupt.

Process Scheduling

1. Scheduling queue

  • 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.

2. Schedulers
Goal – mimic functionality of kernel threads
gain performance of user space threads . Avoids unnecessary user/kernel transitions. Kernel assigns virtual processors to each process lets runtime system allocate threads to processors.
Problem: Fundamental reliance on kernel (lower layer)
calling procedures in user space (higher layer)

3. Context Switch -To give each process on a multiprogrammed machine a fair share of the CPU, a hardware clock generates interrupts periodically. This allows the operating system to schedule all processes in main memory (using scheduling algorithm) to run on the CPU at equal intervals. Each time a clock interrupt occurs, the interrupt handler checks how much time the current running process has used. If it has used up its entire time slice, then the CPU scheduling algorithm (in kernel) picks a different process to run. Each switch of the CPU from one process to another is called a context switch.

Major Steps of Context Switching :

  • The values of the CPU registers are saved in the process table of the process that was running just before the clock interrupt occurred.
  • The registers are loaded from the process picked by the CPU scheduler to run next.


In a multiprogrammed uniprocessor computing system, context switches occur frequently enough that all processes appear to be running concurrently. If a process has more than one thread, the Operating System can use the context switching technique to schedule the threads so they appear to execute in parallel. This is the case if threads are implemented at the kernel level. Threads can also be implemented entirely at the user level in run-time libraries. Since in this case no thread scheduling is provided by the Operating System, it is the responsibility of the programmer to yield the CPU frequently enough in each thread so all threads in the process can make progress.


Action of Kernel to Context Switch Among Threads
The threads share a lot of resources with other peer threads belonging to the same process. So a context switch among threads for the same process is easy. It involves switch of register set, the program counter and the stack. It is relatively easy for the kernel to accomplished this task.


Action of kernel to Context Switch Among Processes
Context switches among processes are expensive. Before a process can be switched its process control block (PCB) must be saved by the operating system. The PCB consists of the following information:

  • The process state.
  • The program counter, PC.
  • The values of the different registers.
  • The CPU scheduling information for the process.
  • Memory management information regarding the process.
  • Possible accounting information for this process.
  • I/O status information of the process.
  • When the PCB of the currently executing process is saved the operating system loads the
  • PCB of the next process that has to be run on CPU. This is a heavy task and it takes a lot of time.

Operations on Processes

  1. Process Creation -Principal events that cause process creation . System initialization. Execution of a process creation system . User request to create a new process . Initiation of a batch job.
  2. Process Termination - Conditions which terminate processes . Normal exit (voluntary) . Error exit (voluntary) . Fatal error (involuntary) . Killed by another process (involuntary)

The Concepts of Process

A.) Process State - consist of everything necessary to resume the process execution if it is somehow put aside temporarily.

The process state consists of at least following:

  1. Code for the program.
  2. Program's static data.
  3. Program's dynamic data.
  4. Program's procedure call stack.
  5. Contents of general purpose registers.
  6. Contents of program counter (PC)
  7. Contents of program status word (PSW).
  8. Operating Systems resource in use.

A process goes through a series of discrete process states.

  • New State: The process being created.
  • Running State: A process is said to be running if it has the CPU, that is, process actually using the CPU at that particular instant.
  • Blocked (or waiting) State: A process is said to be blocked if it is waiting for some event to happen such that as an I/O completion before it can proceed. Note that a process is unable to run until some external event happens.
  • Ready State: A process is said to be ready if it use a CPU if one were available. A ready state process is runable but temporarily stopped running to let another process run.
  • Terminated state: The process has finished execution.

B.) Process Control Block - all of the information needed to keep track of a process when switching is kept in a data package. A Process Control Block (PCB, also called Task Control Block or Task Struct) is a data structure in the operating system kernel containing the information needed to manage a particular process. The PCB is "the manifestation of a process in an operating system". The process control block typically contains:

  • An ID number that identifies the process (Process Identifier)
  • Pointers to the locations in the program and its data where processing last occurred .
  • Register contents .
  • States of various flags and switches .
  • Pointers to the upper and lower bounds of the memory required for the process .
  • A list of files opened by the process .
  • The priority of the process .
  • The status of all I/O devices needed by the process

Each process has a status associated with it. Many processes consume no CPU time until they get some sort of input. For example, a process might be waiting for a keystroke from the user. While it is waiting for the keystroke, it uses no CPU time. While it's waiting, it is "suspended". When the keystroke arrives, the OS changes its status. When the status of the process changes, from pending to active, for example, or from suspended to running, the information in the process control block must be used like the data in any other program to direct execution of the task- switching portion of the operating system. This process swapping happens without direct user interference, and each process gets enough CPU cycles to accomplish its task in a reasonable amount of time. Trouble can begin if the user tries to have too many processes functioning at the same time. The operating system itself requires some CPU cycles to perform the saving and swapping of all the registers, queues and stacks of the application processes. If enough processes are started, and if the operating system hasn't been carefully designed, the system can begin to use the vast majority of its available


C.) Threads - which defines a sequential execution stream within a process. A thread is bound to a single process / address space .
Thread types :
User threads - thread management done by user-level threads library. Kernel does not know about these threads
Kernel threads - Supported by the Kernel and so more overhead than user threads .

Thursday, July 9, 2009

Quiz #3

1. What are the major activities of an Operating System with regards to process management?

The Operating System is responsible for the following activities in connection with process management:

  • Process creation an deletion.
  • Process suspension and resumption.
  • Provision of mechanisms for: process synchronization, process communication, deadlock handling

2. What are the major activities of an Operating System with regards to main memory management?

The following are some of the activities in connections with memory managemen that are handled by Operating System:

  • Keep track of which parts of memory are currently being used and by whom
  • Decide which processes to load when memory space becomes available.
  • Allocate and deallocate memory space as needed.

3. What are the major activities of an Operating System with regards to secondary storage management?

The Operating System is responsible for the following activities in connection with disk management:

  • Free space management.
  • Storage allocation.
  • Disk scheduling.

4. What are the major activities of an Operating System with regards to file management?

The Operating System is responsible for the following activities in connection with file management:

  • File creation and deletion.
  • Directory creation and deletion.
  • Support of primitives for manipulating files and directories.
  • Mapping files into secondary storage.
  • File backup on stable (nonvolatile) storage media.

5. What is the purpose of the command interpreter?

Serves as the interface between the user and the Operating System

  • User friendly, mouse based windows environment in the Macintosh and in Microsoft Windows.
  • In MS-DOS and UNIX, commands are typed on a keyboard and displayed on a screen or pronting terminal with the Enter ot Return key indicating that a command is compplete and ready to be executed.

Many commands are given to the Operating Sysytem by control statements which deal with:

  • process creation and mangement
  • I/O handling
  • secondary-storage management
  • main-memory management
  • file-system access
  • protection
  • networking

Tuesday, July 7, 2009

Operating System Structure

Virtual Machine


  • Implementation - However, the Java virtual machine does not assume any particular implementation technology, host hardware, or host operating system.
    A virtual machine implementation can use annotation information to load and run a computer program more efficiently.

  • Benefits - A virtual machine, simply put, is a virtual computer running on a physical computer. The virtual machine emulates a physical machine in software. This includes not only the processor but the instruction set, the memory bus, any BIOS commands and critical machine hardware such as the system clock and and DMA hardware. Depending upon the machine peripheral devices are generally virtualized including storage devices like floppy drives, hard drives and CD drives. Video, keyboard and mouse support are also common. A virtual machine must look and act just like the real thing so standard software, like operating systems and applications, can run without modification. IT departments have already found the benefits of running virtual servers over having multiple physical servers. Development and testing share many of the same benefits. Virtualization has become a buzzword in the industry. Windows is becoming more virtualized so even if you aren't using virtual machines today you may be in the future.

System Generation


System generation called also installing and implementing. System definition is sometimes called design. System restart is the component that uses the results of a system generation to place the system in a condition to process real-time input. The initial startup is a special case of restart and for this reason system restart is sometimes called initial program load, or IPL. System restart uses values found in tables set up during system generation and changed during the online execution of the system. A switchover implies shifting the processing load to a different central processing complex (CPC), and requires some additional procedures on the part of a system operator. A restart or switchover may be necessary either for a detected hardware failure, detected software failure, or operator option. In any event, system definition (design), initialization, restart, and switchover are related to error recovery. This provides the necessary background to use this information, which is the principal reference to be used to install the z/TPF system.
Performing a system generation requires a knowledge of the z/TPF system structure, system tables, and system conventions, a knowledge of the applications that will be programmed to run under the system, and a user's knowledge of z/OS. Knowledge of the z/TPF system, Linux, and the application are required to make intelligent decisions to accomplish the system definition of a unique z/TPF system environment. The use of z/OS and Linux is necessary because many programs used to perform system generation run under control of z/OS or Linux. Although this information does not rely on much z/OS or Linux knowledge, when the moment arrives to use the implementation information, the necessary z/OS and Linux knowledge must be acquired. You are assumed to have some knowledge of the S/370 assembly program as well as jargon associated with the z/OS and Linux operating systems. Some knowledge of C language is also helpful, because some of the programs that are used to generate the system are written in C.


System Boot


The typical computer system boots over and over again with no problems, starting the computer's operating system (OS) and identifying its hardware and software components that all work together to provide the user with the complete computing experience. But what happens between the time that the user powers up the computer and when the GUI icons appear on the desktop?
In order for a computer to successfully boot, its
BIOS, operating system and hardware components must all be working properly; failure of any one of these three elements will likely result in a failed boot sequence.
When the computer's power is first turned on, the
CPU initializes itself, which is triggered by a series of clock ticks generated by the system clock. Part of the CPU's initialization is to look to the system's ROM BIOS for its first instruction in the startup program. The ROM BIOS stores the first instruction, which is the instruction to run the power-on self test (POST), in a predetermined memory address. POST begins by checking the BIOS chip and then tests CMOS RAM. If the POST does not detect a battery failure, it then continues to initialize the CPU, checking the inventoried hardware devices (such as the video card), secondary storage devices, such as hard drives and floppy drives, ports and other hardware devices, such as the keyboard and mouse, to ensure they are functioning properly.
Once the POST has determined that all components are functioning properly and the CPU has successfully initialized, the BIOS looks for an OS to load.
The BIOS typically looks to the CMOS chip to tell it where to find the OS, and in most PCs, the OS loads from the C drive on the hard drive even though the BIOS has the capability to load the OS from a floppy disk, CD or
ZIP drive. The order of drives that the CMOS looks to in order to locate the OS is called the boot sequence, which can be changed by altering the CMOS setup. Looking to the appropriate boot drive, the BIOS will first encounter the boot record, which tells it where to find the beginning of the OS and the subsequent program file that will initialize the OS.
Once the OS initializes, the BIOS copies its files into memory and the OS basically takes over control of the boot process. Now in control, the OS performs another inventory of the system's memory and memory availability (which the BIOS already checked) and loads the device
drivers that it needs to control the peripheral devices, such as a printer, scanner, optical drive, mouse and keyboard. This is the final stage in the boot process, after which the user can access the system’s applications to perform tasks.

Tuesday, June 23, 2009

1. Bootstrap program

A "bootstrap" most commonly refers to the simple program itself that actually begins the initialization of the computer's operating system, like GRUB, LILO or NTLDR. Modern personal computers have the ability of using their network interface card (NIC) for bootstrapping; on IA-32 (x86) and IA-64 (Itanium) this method is implemented by PXE and Etherboot.

The computer is regarded as starting in a "blank slate" condition - either its main memory is blank, or else its content is suspect due to a prior crash. Although magnetic core memory retains its state with the power off, there would still exist the problem of loading in to it the very first program. A special start program could be very large, and given the modern affordability of read-only memory chips, could constitute the entire program to be run (as in embedded systems) but such an arrangement is inflexible. The bootstrap part would be a short simple piece of code that loads the main code.


2. Difference of interrupt and trap and their use.

The difference between interrupt and trap is that in computing and operating systems, a trap is a type of synchronous interrupt typically caused by an exceptional condition (e.g. division by zero or invalid memory access) in a user process. A trap usually results in a switch to kernel mode, wherein the operating system performs some action before returning control to the originating process. In some usages, the term trap refers specifically to an interrupt intended to initiate a context switch to a monitor program or debugger.[1]In SNMP, a trap is a type of PDU used to report an alert or other asynchronous event about a managed subsystem.

While interrupt is an asynchronous signal indicating the need for attention or a synchronous event in software indicating the need for a change in execution. A hardware interrupt causes the processor to save its state of execution via a context switch, and begin execution of an interrupt handler.Software interrupts are usually implemented as instructions in the instruction set, which cause a context switch to an interrupt handler similar to a hardware interrupt.Interrupts are a commonly used technique for computer multitasking, especially in real-time computing. Such a system is said to be interrupt-driven.[1]An act of interrupting is referred to as an interrupt request (IRQ).

3. Monitor mode

Monitor mode, or RFMON (Radio Frequency Monitor) mode, allows a computer with a wireless network interface card (NIC) to monitor all traffic received from the wireless network. Unlike promiscuous mode, which is also used for packet sniffing, monitor mode allows packets to be captured without having to associate with an access point or ad-hoc network first. Monitor mode only applies to wireless networks, while promiscuous mode can be used on both wired and wireless networks. Monitor mode is one of the six modes that 802.11 wireless cards can operate in: Master (acting as an access point), Managed (client, also known as station), Ad-hoc, Mesh, Repeater, and Monitor mode.


4. User mode. Contains the userhelper program, which can be used to allow configured programs to be run with superuser privileges by ordinary users, and several graphical tools for users:

  • userinfo allows users to change their finger information.

  • usermount lets users mount, unmount, and format filesystems.

  • userpasswd allows users to change their passwords.


5. Device Status Table



6. Direct memory access (DMA) IO

  • requires DMA enhanced controller
  • controller given command: (read or write, file manager buffer memory address, byte count)
  • controller copies block of count bytes from its internal buffer to memory address in file manager for a read
  • controller copies block of count bytes from memory address in file manager to its internal buffer for a write
  • the controller then generates interrupt, now that it has copied all requested bytes from or to the file manager buffer
  • the only downside is the device controller and the CPU must share the system bus to RAM while the controller copies bytes to of from the file manager buffer in RAM and the CPU reads and writes RAM.

7. Difference of RAM and DRAM

RAM - Random Access memory is a second memory section. This is where the computer stores information that you enter through thr keyboard. The amount or capacity of memory depends on the selected system. RAM is referred to as the workspace. You can write in it or erase it with just a few keystroke.

By flashing letters and numbers on the screen, the computer communicates with the operator- telling him, for example, that it is ready to receive the next program. The operator uses the keyboard to give the computer working directions or, in some cases, program material or data.

DRAM- Dynamic random access memory.Type of random access memory that stores each bit of data in a separate capacitor within an integrated circuit. Since real capacitors leak charge, the information eventually fades unless the capacitor charge is refreshed periodically. Because of this refresh requirement, it is a dynamic memory as opposed to SRAM and other static memory.
The advantage of DRAM is its structural simplicity: only one transistor and a capacitor are required per bit, compared to four transistors in SRAM. This allows DRAM to reach very high
density. Unlike Flash memory, it is volatile memory (cf. non-volatile memory), since it loses its data when the power supply is removed.

8. Storage Structure

  • Main memory. All program execution and data processing takes place in memory, often called "main memory" to differentiate it from memory chips on other circuit boards in the machine. The program's instructions are copied into memory from disk, tape or from the network and then extracted from memory into the control unit circuit for analysis and execution. The instructions direct the computer to input data into memory from a keyboard, disk, tape, modem or network. As data are entered into memory, the previous contents of that space are lost. Once the data are in memory, they can be processed (calculated, compared and copied). The results are sent to a screen, printer, disk, tape, modem or network. Memory is like an electronic checkerboard, with each square holding one byte of data or instruction. Each square has a separate address like a post office box and can be manipulated independently. As a result, the computer can break apart programs into instructions for execution and data records into fields for processing. See early memories and RAM. Memory is an important resource that cannot be wasted. It must be allocated by the operating system as well as by applications and then released when not needed. Errant programs can grab memory and not let go of it, which results in less and less memory available as you load and use more programs. Restarting the computer gives memory a clean slate, which is why rebooting the computer clears up so many problems with applications.
    In addition, if the operating system has bugs, a malfunctioning application can write into the same memory used by another program, causing all kinds of unspecified behavior. You discover it when the system freezes or something weird happens all of a sudden. If you were to be able to look into memory and watch how fast data and instructions are written into and out of it in the course of even 10 minutes, you would know it is truly a miracle that it works at all.
    Other terms for the computer's main memory are RAM, primary storage and read/write memory. Earlier terms were core and core storage. See
    dynamic RAM, static RAM and memory module.
  • Magnetic Disk. Provides direct-access storage.Data stored as a magnetic spots on the disk that make up the pack. As thepack spins, a comblike constantly moves in and out of the spaces between the individual disks, "reading" data they contain or adding new data. A memory device, such as a floppy disk, a hard disk, or a removable cartridge, that is covered with a magnetic coating on which digital information is stored in the form of microscopically small, magnetized needles.

Moving Head Disk Mechanism -

  • Magnetic Tape - Early secondary-storage medium of choice.
Persistent, inexpensive, and has large data capacity .Very slow access due to sequential nature .Used for backup and for storing infrequently-used data .Kept on spools .Transfer rates comparable to disk if read write head is positioned to the data . 20-200GB are typical storage capacities.

9. Storage Hierarchy

The range of memory and storage devices within the computer system. The following list starts with the slowest devices and ends with the fastest.

  • Caching - is a collection of data duplicating original values stored elsewhere or computed earlier, where the original data is expensive to fetch (owing to longer access time) or to compute, compared to the cost of reading the cache. In other words, a cache is a temporary storage area where frequently accessed data can be stored for rapid access. Once the data is stored in the cache, it can be used in the future by accessing the cached copy rather than re-fetching or recomputing the original data.

  • Coherency and Consistency (Coherency) the integrity of data stored in local caches of a shared resource. Cache coherence is a special case of memory coherence.
    When clients in a system maintain
    caches of a common memory resource, problems may arise with inconsistent data. This is particularly true of CPUs in a multiprocessing system. Referring to the "Multiple Caches of Shared Resource" figure, if the top client has a copy of a memory block from a previous read and the bottom client changes that memory block, the top client could be left with an invalid cache of memory without any notification of the change. Cache coherence is intended to manage such conflicts and maintain consistency between cache and memory.(Consistency) A set of rules governing how the memory systems will process memory operations from multiple processors. Contract between the programmer and system. Determines what optimizations can be performed for correct programs.

10. Hardware Protection

  • Dual-mode Operation - The two modes of the NXT software can also be used together, in order to allow the robot to both move (control its motors) and gather data as part of the same task. For example, in the Motion lesson, the robot must run forward while “looking” backward and recording how far it is from the wall behind it at different points in time. The use of both software modes in a combined task is called Dual-Mode Operation.

  • I/O Protection - To prevent illegal I/O, or simultaneousI/O requests from multiple processes,perform all I/O via privileged instructions. User programs must make a system callto the OS to perform I/O. When user process makes a system call: A trap (software-generated interrupt)occurs, which causes: The appropriate trap handler to be invokedusing the trap vectorn. Kernel mode to be set. Trap handler: Saves state. Performs requested I/O (if appropriate). Restores state, sets user mode, andreturns to calling program.

  • Memory Protection - A technique that prohibits one program from accidentally clobbering another active program. Using various different techniques, a protective boundary is created around the program, and instructions within the program are prohibited from referencing data outside of that boundary.
    When a program does go outside of its boundary, DOS, Windows 3.x, Windows 95/98 and earlier personal computer operating systems simply lock up (crash, bomb, abend, etc.). Operating systems such as Unix, OS/2 and Windows NT, 2000 and XP are more robust and generally allow the errant program to be closed without affecting the remaining active programs.

  • CPU Protection - to prevent a user programs gets stuck in infinite loop and never returning back to the os.

Saturday, June 20, 2009

Differences between user's view and system's view

Operating System can be explored from two viewpoints: the user and the system.

User view

The user view of the computer varies by the interface being used. Most computer user's sit in front of a pC, consisting of a monitor, keyboard,mouse and system unit. Such a system is designed for one user to monopolize its resources, to maximize the work that the user is performing. In this case, the operating system is designed mostly for ease of use,with some attention paid to performance, and none paid to resource utilization.

Some users sit at a terminal connected to a mainframe or minicomputer. Other users are accessing the same computer through other terminals. These users share resources and may exchange information. The operaring system is designed to maximize resource utilization.

Other users sit at workstations,connected to networks of other workstations and servers. These users have dedicated resources at thier disposal, but they also share resources such as networking and servers.

Recently, many varieties of handheld computers have comeinto fashion. These devices are mostly standalone, used singly by individual users. Some are connected to networks, either directly by wire or through wireless modems. Due to power and interface limitations they perform relatively few remore operations. These operating sysytems are designed mostly for individual usabilit, but performanceper amount of battery life is important as well.

Some computers have little or no user view. For example, embedded computers in home devices and automobiles may have numeric keypad, and may turn indicator lights on or off toshow status, but mostly they and their operating system are designed to run without uer intervention.

System view

Wecan view an ooperating system as a resource allocator. A computer system has many resources-hardware an software - that maybe required to solve a problem. The operating system avts as the manager of these resources.

An operating system can also be viewed as a control program that manages the execution of user programs to prevent that manages the execution of user programs to prevent errors and improper use of the computer. It is especially concerned with the operation and control of I/O devices.

We have no universally accepted definition of what is part of the operating system. A simple viewpoint is that it includes everything a vendor ships when you order "the operating system".

A more common definition is that the operating system by what it does than what it is, but even this can tricky. The primary goal of some operating system is convenience for the user. The primary goal of other operating system is efficient operation ofthe computer system. Operating system and computer architeture have influenced each other a great deal. To facilitate the use of the hardware, researches developed operating systems. Users of the operating systems then proposed changes in hardware design to simplify them. In this short historical review, notice how identification of operating-system problems led to the introduction of new hardware features.

Thursday, June 18, 2009

Difference between a stand alone PC and a workstation connected to a network

  • stand-alone PC A desktop or laptop computer that is used on its own without requiring a connection to a local area network (LAN) or wide area network (WAN). Although it may be connected to a network, it is still a stand-alone PC as long as the network connection is not mandatory for its general use.In offices throughout the 1990s, millions of stand-alone PCs were hooked up to the local network for file sharing and mainframe access. Today, computers are commonly networked in the home so that family members can share an Internet connection as well as printers, scanners and other peripherals. When the computer is running local applications without Internet access, the machine is technically a stand-alone PC.
  • Workstation in the computer network. In the days of main frame computers, work stations were keyboards and printers, or monitors, which were linked to the Central Processing Unit, which performed all the functions. In asdfadfadfadfdfabecame available, workstations were given limited storage capacity, so that characters are stored in a memory inside the workstation until the CPU polls the work station to dump its data into a buffer, or holding area, in the CPU. These work stations resembled stand-alone computers, but did not have the ability to run programs. Work stations have disappeared, for the most part, as stand-alone computers have become much less expensive.
    Some applications still have the term 'work station', where there is a central computer, called a server, which handles storing and retrieving data, for the stand-alone computers which are linked to it, thus reducing the amount of data stored on each computer. However, desk top computers have become so powerful that it is rare to have a central computer do the processing, with only input and output occurring at the work station.

Difference between Symmetric Multiprocessing and Asymmetric Multiprocessing

  • Symmetric multiprocessing or SMP involves a multiprocessor computer-architecture where two or more identical processors can connect to a single shared main memory. Most common multiprocessor systems today use an SMP architecture. In the case of multi-core processors, the SMP architecture applies to the cores, treating them as separate processors.
    SMP systems allow any processor to work on any task no matter where the data for that task are located in memory; with proper operating system support, SMP systems can easily move tasks between processors to balance the workload efficiently.
  • Asymmetric multiprocessing or ASMP is a type of multiprocessing supported in DEC's VMS V.3 as well as a number of older systems including TOPS-10 and OS-360. It varies greatly from the standard processing model that we see in personal computers today. Due to the complexity and unique nature of this architecture, it was not adopted by many vendors or programmers during its brief stint between 1970 - 1980.
    Where as a symmetric multiprocessor or SMP treats all of the processing elements in the system identically, an ASMP system assigns certain tasks only to certain processors. In particular, only one processor may be responsible for fielding all of the interrupts in the system or perhaps even performing all of the I/O in the system. This makes the design of the I/O system much simpler, although it tends to limit the ultimate performance of the system. Graphics cards, physics cards and cryptographic accelerators which are subordinate to a CPU in modern computers can be considered a form of asymmetric multiprocessing.[citation needed] SMP is extremely common in the modern computing world, when people refer to "multi core" or "multi processing" they are most commonly referring to SMP.