Mak Ing VPN Client Modules Platform Independent
Mak Ing VPN Client Modules Platform Independent
Mak Ing VPN Client Modules Platform Independent
Table of Contents
(I).Title.I
(II).CertificateII (III).Acknowledgment.III (IV).AbstractIV 1. Problem Definition..1 2. Literature Survey.2 3.Software Requirement Specification 7.Bibilography...36 8. Assignments...38
Figure List
1. Dataflow Diagram .14 2. Class Diagram15 3. Transition Diagram16 4. Components in ACE..18 5. Class categories in ACE.21 6. SAP class category relationships...23 7. Use Case Diagram......24 8. Advanced Class Diagram...24 9. Activity Diagram...25 10. Component Diagram..26 11. Deployment Diagram27
CERTIFICATE
ARMY INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER ENGINEERING
This is to certify that the project report entitled MAKING VPN MODULES PLATFORM INDEPENDENT has been successfully completed by Arushi Singh,Kavita Upadhyay,Tanvi Agarwal and Sunita Yadav under my guidance in partial fulfillment of the degree of Bachelor of Engineering in Computer Engineering of University of Pune,Maharashtra during the academic year 2011-2012. To the best of my knowledge and belief this work has not been submitted elsewhere for the award of any other degree.The students have followed all the standards throughout the project.
Guide
Head of Department
Examiner
ACKNOWLEDGEMENT
keeping up our moral all the time. We are also grateful to her for proper guidance We are also grateful to the people who directly or indirectly helped in
ABSTRACT
The demand for robust and high-performance distributed computing systems is steadily increasing. Examples of these types of systems include global personal communication systems, network management platforms, enterprise medical imaging systems, online nancial analysis
systems, and realtime avionics systems. Distributed computing is a promising technology for improving collaboration through connectivity and interworking; performance through parallel processing; reliability and availability through replication; scalability and portability through modularity; extensibility through dynamic conguration and reconguration; and cost effectiveness through resource sharing and open systems. Although distributed computing offers many potentially benets, developing communication software is expensive and error-prone. Object-oriented (OO) programming languages, components, and frameworks are widely touted technologies for reducing software cost and improving software quality. ACE is a freely available, open-source object-oriented framework that implements many core design patterns for concurrent communication software. ACE provides reusable C++ wrappers, frameworks and real-time ORB available for most operating systems. ACE is targeted for developers of high-performance and real-time communication services and applications. ACE simplifies the development of OO network applications and services that utilize inter-process communication, event demultiplexing, explicit dynamic linking, and concurrency. Some benefits of using ACE include: increased portability, increased software quality, increased efficiency and predictability and easier transition to standard higher-level middleware. The ACE Frameworks support the efficient, robust, and flexible development and configuration of concurrent networked applications and services. ACE provides a standardized usage for operating system/machine specific features. It provides common data types and methods to access the powerful but complex features of modern operating systems. These include: inter-process communication, thread management, efficient memory management, etc. It was designed to be portable and provides a common framework. The same code will work on most Unixes, Microsoft Windows, VxWorks, QNX, OpenVMS etc, with minimal changes. Due to this cross-platform support, it has been widely used in the development of communication software. Some of the successful projects that have used ACE includes: Motorola Iridium satellites, Boeing Wedgetail's Australian airborne early warning & control (AEW&C) system, and others.
Page 1
1.PROBLEM DEFINITON:
AIM: Making Propalms VPN client modules platform independent using the ACE library. ACE is a framework built in C/C++ that provides a unified interface for C/C++ developers to build programs that can be compiled on various platforms without requiring any changes in the core application. Propalms VPN is a secure remote access product from Propalms Network. Many of the Propalms VPN modules are developed in C/C++ which are specific to Windows. These programs use Windows OS API to perform tasks on the PCs. Customers of Propalms products may run other OS like MAC OSX and Linux. Propalms Network wants to port these Windows modules to Linux and MAC OSX without rewriting them for Linux and MAC OSX. This project aims to redevelop the windows modules using ACE library such that the same program can be then compiled for Linux and MACOSX with Propalms developer needing to learn Linux and MACOSX specific API.
2.LITERATURE SURVEY:
Page 1
The various background tasks involved are: 1)Understanding the existing system:
We took a brief survey of what VPN is and how the gateway is installed on the machine. Then we analyzed how the client logs in and transfers files
3)Understanding ACE:
Then we understood on what ACE is and how it can help to implement abstraction of operating systems. We then understood its functionalities and system calls
CONCLUSION:
After understanding all the aspects, we came to conclusion that this can be an interesting project to implement
Page 2
Virtual Private network is a secure and authenticated network that uses public infrastructure for setting up network .It can be used in an organization where people use different operating system with different platforms. All the people need not have same operating system. This can minimize cost of using leased lines.
3.1.2.Document Conventions
The terms in bold represent terms that are of significance to the project. The statements highlighted represent significant statements.
It is suggested to start with system features then proceed with requirements of system.
3.1.4Project Scope
The idea is to connect the employees of an organization that work at distant locations.
Page 1
It can be used in multi-national companies, Government offices, banking sector, technical organizations and various other such organizations. As there is no need to reconfigure it every time for a new operating system, the task is simplified more. The users can use the same gateway irrespective of the platform they are using . This will reduce time and effort in redeveloping the system. As new operating systems are emerging, the need to redevelop the library will be eliminated. This will simplify the task of all organizations to a greater extent.
3.1.5References
The references are: www.cs.schmildt.ace.com This is a web site where the object oriented framework called ACE(adaptive communication environment) is found. It contains the documentation, wrapper functions and other details www.en.wikipedia.virtual-private-networks. It is a website to understand virtual private networks in detail.
Page 1
3.2.Overall Description
3.2.1Product Perspective
Certain libraries already exist for configuration in windows. But such libraries need to be redeveloped for other OS. This adds to effort of user and developer.
3.2.2Product Features 1. No need to configure the system or software for other OS.
2. No need to install libraries each time 3. The modules are reusable 4. No concern to the operating system used 5. Upgradable to the advanced operating systems 6. Helpful in distributed networks 7. Helpful to employees working at different separated places
Page 2
3.2.4Operating Environment
The gateway will be compatible with:
2. Linux
3. MacOS
Firewall
Page 1
3.2.6.User Documentation
The user needs to run the exe file and click on next and then install it on the desktop.The system thus checks if all the requirements specified are present and launches the application.
4. System recovery 5. Networking drivers present and enabled The various dependencies are: 1. Already a dll file exists for this purpose, the source code depends on existing system.
3.3System Features
3.3.1System Feature 1
3.1.1 Description and Priority No need to redevelop the modules of VPN gateway Highest priority
Page 2
User downloads the exe file User installs the gateway 3.1.3 Functional Requirements Friendly Graphical user interface Same installation steps for all operating systems
Page 2
3.4.2Hardware Interfaces
Application running hardware Networking drivers present
3.4.3Software Interfaces Interface to connect to destination Interface to notify status Interface to provide options to disconnect Interface on data rate Interface on bandwidth used Interface to simplify installation 3.4.4 Communications Interfaces Machines connected IP address entries Session details Session logon
Page 2
3.5.2.Safety Requirement
If data loss occurs, some cache should be there to store and review check points. Error handling
Page 2
Invalid system calls leads to system crash..So appropriate mechanism to handle such errors must be defined.
3.5.3Security Requirements
Using Firewalls to restrict invalid data manipulation Private key encryption to be used Use of appropriate cryptography algorithms Secured data transfer IP address validation Detecting proxy
Page 1
ACE is targeted for developers of high-performance and real-time communication services and applications. It simplifies the development of OO network applications and services that utilize interprocess communication, event demultiplexing, explicit dynamic linking, and concurrency. In addition, ACE automates system configuration and reconfiguration by dynamically linking services into applications at run-time and executing these services in one or more processes or threads. You dont have to code several program for one purpose only .The same program coded with ACE will be used on several operating systems. ACE is carefully designed to support a wide range of application quality of service (QoS) requirements, including low latency for delay-sensitive applications, high performance for bandwidth-intensive applications, and predictability for real-time applications. ACE provides a standard library of distributed services that are packaged as self-contained components. Although these service components are not strictly part of the ACE framework library, these service components play two roles in ACE:
Page 2
Connectors, Active Objects, and IPC wrappers can be used effectively to develop flexible, efficient, and reliable communication software. 3. The reusable facades can be very effective for development for use cases.
Page 2
Page 3
Page 4
3) Getting into detail of each function Then we will take each function and understand its functionality. We will then write your own test program which will call that function with different parameters, and this program will record the output of the function on windows. 4) Testing on Windows:
Page 1
Next we will rewrite that function using ACE library and test it on windows using your test program that you created 5) Testing on Linux: Next step is to compile the same code on linux and make sure it works on linux. 6) Integration of all functions This way all the code will be converted by integrating all functions.
Page 1
FIGURE 4
Connection establishment and service initialization. Interprocess communication and shared memory management Dynamic configuration of distributed communication services ;
Concurrency/parallelism and synchronization Components for higher-level distributed services
Page 2
horizontal relationship between ACE components. The lower layers of ACE are OO wrappers that encapsulate existing OS network programming mechanisms. The higher layers of ACE extend the wrappers to provide OO frameworks and components that cover a broader range of applicationoriented networking tasks and services. The remainder of this section presents an overview of the structure and functionality of the class categories in ACE.
components by selectively inheriting, aggregating, and/or instantiating the following ACE wrapper
_IPC SAP which encapsulates local and/or remote IPC Service Access Point (IPC SAP
mechanisms such as sockets, TLI, UNIX FIFOs and STREAM pipes, and Win32 Named Pipes.
Service Initialization ACE provides a set of Connector and Acceptor components [18]
that decouple the active and passive initializationroles, respectively, from the tasks a communication service performs once initialization is complete.
Concurrencymechanisms ACE abstracts lower-levelOS multi-threading and multiprocessing mechanisms (such as mutexes and semaphores ) to create higherlevel OO concurrency abstractions (such as Active Object).
Page 2
f_IFI
FIGURE 5 CORBA integration ACE can be integrated with CORBA implementations (such as singlethreaded and multi-threaded Orbix). The use of OO wrappers improves application robustness by encapsulating OS communication, concurrency, and virtual memory mechanisms with type-secure OO interfaces. This alleviates the need for applications to directly access the underlying OS libraries, which are written using weakly typed C interfaces. Therefore, compilers for OO languages like C++ and Java can detect type system violations at compile-time, rather than at run-time. The C++ version of ACE uses inlining extensively to eliminate performance penalties that would otherwise be incurred from the additional type-security and abstraction provided by the wrapper layer.
Page 2
ACE contains a higher layer network programming framework that integrates and enhances the lower layer OS wrappers. This framework supports the dynamic configuration of concurrent network daemons composed of application services. The framework portionof ACE contains the following class categories:
Streams
_
communication software applications composed of one or more hierarchically related services (such as protocol stacks); ACE Network Service Components In addition to the wrappers and frameworks, ACE provides a standard library of network service components. These components play two roles in ACE: 1. They illustrate how to utilize the ACE IPC wrappers, Reactor, Service Configurator, Service Initialization, Concurrency, Memory Management, and Streams components; 2. They provide reusable components for common distributed system tasks such as Logging
Page 1
FIGURE 6
4. 2 UML DIAGRAMS:
Page 2
FIGURE 7
FIGURE 8
Page 2
3) ACTIVITY DIAGRAM
FIGURE 9
Page 2
4)COMPONENT DIAGRAM:
FIGURE 10
Page 2
5) DEPLOYMENT DIAGRAM:
Page 3
FIGURE 11
Page 2
5. TECHNICAL SPECIFICATION 5.1 ADVANTAGE:The ADAPTIVE Communication Environment (ACE) is a freely available, open-source objectoriented framework that implements many core patterns for concurrent communication software. ACE provides a rich set of reusable C++ wrapper facades and framework components that perform common communication software tasks across a range of OS platforms. The ACE tools ease the implementation of your solution with the following: Event demultiplexing and event handler dispatching Signal handling Service initialization Interprocess communication Shared memory management Message routing Dynamic (re)configuration of distributed services Concurrent execution and synchronization
Why ACE? Increased portability of application code across operating systems and development
environments.
Increased software quality due to use of key patterns that increase key qualities, such as
flexibility, extensibility, reusability, and modularity, of communication software.
Increased efficiency and predictability due to support for a wide range of application quality
of service (QoS) requirements, including low latency, high performance, and predictability.
Easier transition to standard higher-level middleware such as The ACE ORB (TAO), which
is built on ACE.
Page 1
If you have to support multiple platforms and deal with networking and multithreading the
ACE library is probably the way to go or at least a reasonably safe bet.
5.2 DISADVANTAGE: Sometimes descriptions of functions , return values and parameters are missing. So you have
to dig in the source code after all. In some areas the library is weak. Especially the container classes (including the ACE string classes) are nowhere near the container classes of the standard library; they are inconsistent, often incomplete and the awkward iterators don't mix well (if at all) with standard library algorithms.
Also the fact that ACE targets so many platforms has a downside. It means the developers
had to consider for the lowest common denominator of C++ features supported by all compilers. This didn't help to make the code elegant. Also the excessive use of macro's can make debugging problems inside the ACE library (sometimes you have to, unfortunately) a real pain.
While using the programs which are embedded with ACE ,the user will not have the
knowledge of all the operating systems.
5.3 APPLICATIONS:i)It facilitates portability ii)It does not provide a Virtual Machine. iii)It makes the program platform independent. IV)Decreases the overhead of redevelopment V)Minimises Response time.
Page 2
6.Appendix:
Glossary: Virtual Private Network:
It refers to a network that uses the public network infrastructure for private networks. It is a secure authenticated network.
ACE:
The Adaptive Communication Environment (ACE) is a freely available, open-source objectoriented (OO) framework that implements many core patterns for concurrent communication software. ACE provides a rich set of reusable C++ wrapper facades and framework components that perform common communication software tasks across a range of OS platforms. The communication software tasks provided by ACE include event demultiplexing and event handler dispatching, signal handling, service initialization, interprocess communication, shared memory management, message routing, dynamic (re)configuration of distributed services, concurrent execution and synchronization.
Cryptography:
Cryptography is the practice and study of techniques for secure communication in the presence of third parties . It is about constructing and analyzing protocols that overcome the influence of adversaries and which are related to various aspects in information security such as data confidentiality, data integrity and authentication. Modern cryptography intersects the disciplines of mathematics, computer science, and electrical engineering.
Wrapper Faade:
The facade pattern is a software engineering design pattern commonly used with object oriented programming.The name is by analogy to an architectural faade. A facade is an object that provides a simplified interface to a larger body of code, such as a class library. A facade can:
Page 1
make a software library easier to use, understand and test, since the facade has convenient
methods for common tasks; make code that uses the library more readable, for the same reason; reduce dependencies of outside code on the inner workings of a library, since most code uses the facade, thus allowing more flexibility in developing the system; wrap a poorly-designed collection of APIs with a single well-designed API (as per task needs). An Adapter is used when the wrapper must respect a particular interface and must support a polymorphic behavior.
IPC(INTERPROCESS COMMUNCATION):
In computing, Inter-process communication (IPC) is a set of methods for the exchange of data among multiple threads in one or more processes. Processes may be running on one or more computers connected by a network. IPC methods are divided into methods for message passing, synchronization, shared memory and remote procedure calls (RPC). The method of IPC used may vary based on the bandwidth and latency of communication between the threads, and the type of data being communicated. There are several reasons for providing an environment that allows process cooperation:
Page 1
Privilege separation
IPC may also be referred to as inter-thread communication and inter-application communication. The combination of IPC with the address space concept is the foundation for address space independence/isolation.
VPN GATEWAY:
A VPN gateway (VPN router) is a connection point that connects two LANs that a nonsecure network such as the Internet connects. Therefore, a VPN gateway connects to either a single VPN gateway or to multiple VPN gateways to extend the LAN. This scenario is typically referred to as a router-to-router VPN. The corporate networks are connected through the VPN servers running Routing And Remote Access Service (RRAS). The actual medium that connects the LANs is usually the Internet. This means that the VPN gateway or router will be configured with the address on the LAN that it is connected to and a public IP address.
CPU(CENTRAL PROCESSING ENVIRONMENT): The central processing unit (CPU) is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in use in the computer industry at least since the early 1960s.The form, design and implementation of CPUs have changed dramatically since the earliest examples, but their fundamental operation remains much the same.
Page 1
OS(OPERATING SYTEM):
An operating system (OS) is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system. A user cannot run an application program on the computer without an operating system, unless the application program is self booting. Time-sharing operating systems schedule tasks for efficient use of the system and may also include accounting for cost allocation of processor time, mass storage, printing, and other resources. For hardware functions such as input and output and memory allocation, the operating system acts as an intermediary between application programs and the computer hardware,although the application code is usually executed directly by the hardware and will frequently call the OS or be interrupted by it. Operating systems are found on almost any device that contains a computer from cellular phones and video game consoles to web servers.
Page 2
Appendix B: Drawbacks
1) Reduced CPU speed 2) Reduced response time for other processes 3) A little modification can lead to system crash 4) Data loss 5) As public network,critical data may be probe to theft
Page 3
7.BIBILOGRAPHY:
Page 2
idt, etc. ADAPTIVE Communication Environment Technical Documentation [M]. 2002. http://www.cs.wustl.edu/~schmidt/ACE.html [2] D. C. Schmidt, T. H. Harrison, and E. Al-Shaer, Object-Oriented Components for High-speed Network Programming, in Proceedings of the 1st Conference on Object-Oriented Technologies and Systems, (Monterey, CA), USENIX, June 1995. [3] D. C. Schmidt, IPC SAP: An Object-Oriented Interface to Interprocess Communication Services, C++ Report, vol. 4, November/December 1992. [4] D. C. Schmidt, The Reactor: An Object-Oriented Interface for Event-Driven UNIX I/O Multiplexing (Part 1 of 2), C++ Report, vol. 5, February 1993. [5] D. C. Schmidt, The Object-Oriented Design and Implementation of the Reactor: A C++ Wrapper for UNIX I/O Multiplexing (Part 2 of 2), C++ Report, vol. 5, September 1993. [6] T. H. Harrison, D. C. Schmidt, and I. Pyarali, Asynchronous Completion Token: an Object Behavioral Pattern for Efficient Asynchronous Event Handling, in The 3rd Annual Conference on the Pattern Languagesof Programs (Washington University technical report#WUCS-97-07), (Monticello, Illinois), pp. 17, February 1997. [7] D. C. Schmidt, An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the ACE Toolkit, Tech. Rep. WUCS-95-31, Washington University, St. Louis, September 1995. [8] D. C. Schmidt and C. D. Cranor, Half-Sync/Half-Async: an Architectural Pattern for Efficient and Well-structured Concurrent I/O, in Pattern Languages of Program Design (J. O. Coplien, J. Vlissides, and N. Kerth, eds.), Reading, MA: Addison-Wesley, 1996. [9] D. C. Schmidt and T. Harrison, Double-Checked Locking An Object Behavioral Pattern for Initializing and Accessing Thread-safe Objects Efficiently, in The 3rd Pattern Languages of Programming 1997. [10] D. C. Schmidt and T. Suda, An Object-Oriented Framework for Dynamically Configuring Extensible Distributed Communication Journal (Special Systems, IEE/BCS Distributed Systems Engineering Conference (Washington University technical report #WUCS-97-07), February
Page 2
Issue on Configurable Distributed Systems), vol. 2, pp. 280293, December 1994. [11] P. Jain and D. C. Schmidt, Service Configurator: APattern for Dynamic Configuration and Reconfiguration of Communication Services, in The 3rd Pattern Languagesof Programming Conference (Washington University technical report #WUCS-97- 07), February 1997. [12] R. Fielding,UC Irvine J. Gettys etc. Hypertext Transfer Protocol -- HTTP/1.1[M]. Network Working GroupRequest for Comments: 2616, 1999 [13] R.Rivest. RFC 1321 - The MD5 Message-Digest Algorithm[M]. MIT Computer Science and RSA Data Security Inc. April 1992 Laboratory for
ASSIGNMENT 1:
COMPLEXITY
Page 2
Consider a program of file operation in turbo c, for example take opening of file:The parameters/arguments of the fopen() function is different in different operating system. The syntax which is in windows is different from the syntax in Linux or MAC. If you have made the program in windows, and trying to run the same program in linux or MAC ,then it will give you some errors related to the fopen() function. The same program cannot run on all the operating systems. You have to make 3 different programs. Suppose there are N no. of operating systems so you have to make N no. of programs .
Linux
MAC
Program 1 program N
Program 2
Program 3
=N Complexity =N Hence the complexity comes out to be N which is large .The programs which we made earlier was not platform independent ,thats why they were not running on all the operating systems.
Page 2
What we can do to reduce the complexity? Make the program platform independent. This can be done by using intermediate software. ACE (adaptive communication environment) is a freely available, open-source object-oriented framework that implements many core design patterns for concurrent communication software. ACE provides reusable C++ wrappers, frameworks and real-time ORB available for most operating systems. It performs common communication software tasks across a range of operating system platforms. ACE is targeted for developers of high-performance and real-time communication services and applications.
Program program
ACE wrappers
Final
Windows N no. of OS
Linux
MAC
Final program which will run on all the OS NO. of programs =1 Complexity = 1 SEARCHING ALGORITHMS
Thus the complexity has reduced to 1. Therefore by using ACE the program has become platform independent. So there is no need to write the same code in different Operating Systems
Page 2
We have the final program which consists of the program coded in ace using the wrappers .When you will execute/run this program on different OS ,it will check for what type of OS is there and accordingly run. For this there will be a table in which arguments/parameters will be present of the respective OSes.
Page 1
TYPES OF SEARCHING ALGORITHM:1.) Linear 2.) Binary If linear search is used it will increase the complexity. For better complexity hashing technique should be used. Therefore entries in the table should be in hashing form. A hash function is any algorithm or subroutine that maps large data sets to smaller data sets, called keys. For example, a single integer can serve as an index to an array. The values returned by a hash function are called hash values, hash codes, hash sums, checksums or simply hashes. Hash functions are primarily used in hash tables, to quickly locate a data record given its search key (the headword). Specifically, the hash function is used to map the search key to the hash. The index gives the place where the corresponding record should be stored. Hash tables, in turn, are used to implement associative arrays only and dynamic sets. In general, a hashing function may map several different keys to the same index. Therefore, each slot of a hash table is associated with (implicitly or explicitly) a set of records, rather than a single record. For this reason, each slot of a hash table is often called a bucket, and hash values are also called bucket indices. Thus, the hash function only hints at the record's locationit tells where one should start looking for it. Still, in a half-full table, a good hash function will typically narrow the search down to only one or two entries. The hash function can use: 1)Multiplicative modular 2)Most frequent occuring
Page 1
Page 1
3) Getting into detail of each function Then we will take each function and understand its functionality. We will then write your own test program which will call that function with different parameters, and this program will record the output of the function on windows. 4) Testing on Windows: Next we will rewrite that function using ACE library and test it on windows using your test program that you created 5) Testing on Linux: Next step is to compile the same code on linux and make sure it works on linux.
6) Integration of all functions This way all the code will be converted by integrating all functions
Page 3
TESTING ON WINDOWS
TESTING ON LINUX
Page 3
A DLL can define two kinds of functions: exported and internal. The exported functions are intended to be called by other modules, as well as from within the DLL where they are defined. Internal functions are typically intended to be called only from within the DLL where they are defined. Although a DLL can export data, its data is generally used only by its functions. However, there is nothing to prevent another module from reading or writing that address. DLLs provide a way to modularize applications so that their functionality can be updated and reused more easily. DLLs also help reduce memory overhead when several applications use the same functionality at the same time, because although each application receives its own copy of the DLL data, the applications share the DLL code. The Windows application programming interface (API) is implemented as a set of DLLs, so any process that uses the Windows API uses dynamic linking
Page 3
Both the executables that use the shared libraries and the shared library itself has a PLT. Similar to how the GOT redirects any position-independent address calculations to absolute locations, the PLT redirects position-independent function calls to absolute locations. Apart from these two tables, the linker also refers to .dynsym, which contains all of the file's imported and exported symbols, .dynstr, which contains name strings for the symbols, .hash which contains the hash table which the runtime linker can use to lookup symbols quickly, and .dynamic, which is a list of tagged values and pointers. In the .dynamic section, the important tag types are: DT_NEEDED: This element holds the string table offset of a null-terminated string, giving the name of a needed library. The offset is an index into the table recorded in the DT_STRTAB entry.
DT_HASH: This element holds the address of the symbol hash table which refers to the symbol table referenced by the DT_SYMTAB element. DT_STRTAB: This element holds the address of the string table. DT_SYMTAB: This element holds the address of the symbol table.
This DLL file contains: 1)Symbolic references 2)Definitions 3)Libraries that involve external references
Page 3
Page 1
Page 1
P is the set of all decision problems solvable by deterministic algorithms in polynomial time.NP is the set of all decision problems solvable by non deterministic algorithms in polynomial time. The satisfiability theorem is to determine whether a formula is true for assignment of truth values to the variables. Satisfiability is in P if and only if P=NP. The definition implies that if we have a polynomial time algorithm for L2 then we can solve L1 in polynomial time.Since there exists a deterministic polynomial time for existing system we can conclude the problem statement can also be completed in P deterministic time as it is only a superset of the existing system. The halting problem is to determine for an arbitrary deterministic algorithm A and input I whether A ever terminates. This is undecidable for given problem statement.