Subscribe by Email


Showing posts with label Concurrent. Show all posts
Showing posts with label Concurrent. Show all posts

Friday, May 17, 2013

Define a process? What are sequential and concurrent processes?


- Each and every task which we order our computer to carry out is accomplished by a set of processes. 
- It is these processes that actually run the program. 
- A process can be defined as an instance of the program that is currently being executed. 
- A program’s current activity and the code being executed are stored in the process itself. 
- However, it depends on the operating system that the process is to constitute of multiple threads for a concurrent execution or just one thread for sequential execution. 

This gives rise to two different types of processes namely:

Sequential processes 
Sequential processes can be executed on the same processor but the concurrent processors however may sometimes require more than one processor.

Concurrent processes
Concurrent processes are executed in parallel to each other and at the same whereas the sequential processes go step by step executing one instruction at a time. 

Concepts of Process

- A computer program can be defined as a set of passive instructions. When these instructions are actually executed, they form a process. 
- The same program may have a number of processes associated with it. 
- Multiple processes can be executed by sharing the processors and the resources. 
- If this is done, it is called multitasking. 
- Each processor takes up a single task. 
- With multitasking, switching between the different tasks becomes possible for the processor and so the processes won’t have to wait for long. 
- However, it depends entirely on the operating system when the switch has to be performed:
  1. When the task is performing I/O operations or
  2. When the task itself indicates that it can now be switched or
  3. On hardware interrupts.
- Time sharing is a common type of multitasking and allows interactive user applications to response quickly. 
- In systems using the time sharing systems, switching is done quite rapidly. 
- This gives an illusion of the simultaneous execution of the multiple processes by the same processor. 
- Such type of execution is termed as concurrency.
- Direct communication that may take place between independent processes is avoided by many of the modern operating systems for the reasons of maintaining reliability and security. 
- The inter-process communication functionality is kept under strict control and mediation. 
- In general, the following resources are said to constitute a process:
Ø  Executable machine code’s image associated with the task.
Ø  Some part of virtual memory that is inclusive of the process specific data, executable code, heap and a call stack. Heap is for holding the immediate data generated during the execution and the call stack is for keeping a track of the subroutines.
Ø OS descriptors belonging to the resources that were allocated to the processes. These descriptors may be data sources, sinks and file descriptors etc.
Ø  Security attributes including the set of permissions for the process and the owner of the process.
Ø  Processor state like physical memory addressing or register contents etc. registers store the state during the execution of the process or otherwise it is stored in memory.

- Most of this information is held in the process control blocks regarding the active processes. 
- The operating system makes it a point to maintain a separation between its resources and allocate them the requested resources so that they won’t interfere with the working of each other and thus won’t cause any system failures such as thrashing or deadlocks. 
- But processes do require communicating with each other. 
- For such cases to make interaction safe, operating system has mechanisms especially for the inter-process communication.




Tuesday, May 14, 2013

What is a Distributed System?


In the field of computer science, the distributed computing constitutes of distributed systems. 
- Multiple computers that are capable of communicating via a computer network together compose a distributed system. 
- All the computers in a distributed system work together in order to accomplish a common task.
- A common program is also required for running this whole system and is known as the distributed system. 
- Such programs for distributed systems are written using the process called the distributed programming. 
- Distributed computing involves the use of distributed systems for solving the computational problems.
- A distributed system divides the problem into much smaller tasks that are then given to one or more computers of the distributed systems. 
- These systems use message passing for communicating with each other. 
- The term distributed system earlier referred to the networks which had their hosts distributed over a geographical area. 
- This term was eventually refined and now is applied to a much broader concept. 
- It now also refers to the various autonomous processes that execute on the same system but maintain an interaction with other systems also through message passing. 
Because of the wide sense to which the concept is applied, it has no formal definition; rather the following properties are used for defining it:
  1. There are many computational entities of the distributed system that are autonomous in nature and each of them possesses individual local memory. These entities are commonly referred to as the nodes.
  2. By means of message passing these entities communicate with each other.
- A distributed system works towards a common goal which may involve solving a big computing problem. 
- On the other side, each node in a distributed system may have its own requirements. 
- The distributed system must provide communication means to the user and help in coordinating the use of the common resources.

Properties of Distributed Systems

Distributed systems possess many other typical properties as mentioned below:
  1. It has the capability to tolerate the failures of the individual nodes or the computers.
  2. The system’s structure cannot be determined in advance. It includes a number of factors such as number of computers, network topology, and network latency and so on. The computers in the system might be of many different types and so the links also. As a result the structure of a distributed system may alter while executing a distributed program.
  3. The complete view of the distributed system is hidden from its nodes. They are provided only with a limited view or information about the system. Only a part of the input is known by each of the nodes.
- There are two terms which consistently overlap with the distributed computing namely parallel computing and concurrent computing. 
- The distinctions between these three are not clear at all. 
- At the same time a system may be called both a parallel one and a distributed one.
- Another thing about distributed systems is that the processors involved run in concurrence with each other but in parallel.
- Distributed computing in a more tightly coupled form is called parallel computing. 
- Thus, a loosely coupled form of parallel computing is the distributed computing. 

Two main reasons have been observed for using distributed computing:
  1. Depending on the nature of the application it may require using a network connecting many other systems. For example, data produced by one system is required by others.
  2. There are cases, where by theory and principle use of a single computer is possible but for the same case if a distributed system is used in practical then it might be more beneficial. For example, using a cluster of low – end computers for attaining the desired level of performance might be more cost efficient. 


Saturday, March 3, 2012

What is meant by concurrency testing?

INTRODUCTION TO CONCURRENT TESTING

1. Concurrency testing employs many users at a time and therefore it is considered to be a type of multi- user testing.

2. Concurrency testing was invented in order to determine what happens if many users are accessing the same data base records, modules or application code.

3. Other than this, concurrency testing also identifies the use of single threaded code, dead locking, locking semaphores and locking and it is also effective in measuring the level of these aspects.

4. While carrying out the concurrency testing several users perform same kind of task on the same application and that too at the same time.

5. The application serves too many users at a time.

TOOLS FOR PERFORMING CONCURRENT TESTING
Several tools are available for performing concurrency testing but we would recommend you loadRunner since it helps you create concurrency at a point you wish.

- All you need to do is create a test scenario after you have recorded and improved your scripts using the virtual user generator.

- You can decide and add how many users you want your scripts to support.

- You should input the number of users in the controller component of this testing tool.

- There are several ways to add user like gradual ramp- up or spike, stepped etc.

- You can choose for yourself which way you want the users to be added.

- This is the most effective way to create concurrency.

- Apart from the multi user testing, the concurrency testing tests one application over the other one.

LEVELS OF CONCURRENCY TESTING
Two levels of concurrency testing have been developed so far and they have been discussed below:

# 1st Level:
- This involves concurrency tsting of one application being executed on the top of another application.

- We can illustrate this by a simple example; you receive an incoming call while playing some game on your cell phone. The game will go to paused state. This is the simplest example we can give.

# 2nd Level:
- This involves concurrency testing of one application being executed on the top of other two applications.

- This can also be illustrated with a similar example, you receive an incoming call while playing games and while you are on the call you receive an SMS. The game is paused.

- Apart from just testing the multi user capacity of the software, concurrency is also responsible for finding out the bugs like dead lock, live lock, data race and data corruption.

- These bugs usually occur when the parallel processing is implemented in the application.

- If you are also using the user scenario apart from the test scenario your concurrency testing will yield much better results.

- Some applications make use of more than one module where some accept parallel processing and other are sequential.

- Identifying the type of modules can help you in writing effective test cases against them which in turn will reflect in your testing.

This is the internet era. Almost everyone is using web and web applications all over the world. Such a huge number of users require great stress handling capacity for the servers. If the servers are not able to take the load they often slip in to the position of the dead lock.

Concurrency testing is a way to ensure that such kinds of situations do not occur. Therefore concurrency testing is important. Performance is the basic aspect that is tested most in the concurrency testing.

Number of users using the application at a time equals to the number of hits per second. With the growing number of internet users world wide more and more security is needed over the web. Concurrency testing is one such measure which has helped to a great extent for improving the cyber standards.


Tuesday, March 22, 2011

Overview of The Concurrent Development Model

The concurrent development model, sometimes called concurrent engineering The concurrent process model can be represented schematically as a series of major technical activities, tasks, and their associated states.
It makes use of state charts to represents the concurrentrelationship among tasks associated within a framework of activities. It isrepresented schematically by a series of major technical tasks, and associated states. The user's need, management decisions and review results drive theover-all progression of the development.

The concurrent model is often more appropriate for system engineering projects where different engineering teams are involved. The concurrent process model defines a series of events that will trigger transitions from state to state for each of software engineering activities, actions or tasks. This generates the event analysis model correction which will trigger the analysis action from done state to awaiting changes state.

The concurrent process model is applicable to all types of software development and provides an accurate picture of the current state of a project. Rather than confining software engineering activities, actions and tasks to a sequence of events, it defines a network of activities. Each activity on the network exists simultaneously with other activities, actions or tasks. Events generated at one point in the process network trigger transitions among the states.


Facebook activity