|
All Latest General programming related articles. to submit your articles became a membur, it's free or send your article to publisher(at)tutorialsforu(dot)info.
|
|
|
|
The memory management subsystem is one of the most important parts of the operating system. Since the early days of computing, there has been a need for more memory than exists physically in a system. Strategies have been developed to overcome this limitation and the most successful of these is virtual memory. Virtual memory makes the system appear to have more memory than it actually has by sharing it between competing processes as they need it.
Virtual memory does more than just make your computer's memory go further. The memory management subsystem provides:
- Large Address Spaces
- The operating system makes the system appear as if it has a larger amount of memory than it actually has. The virtual memory can be many times larger than the physical memory in the system,
- Protection
- Each process in the system has its own virtual address space. These virtual address spaces are completely separate from each other and so a process running one application cannot affect another. Also, the hardware virtual memory mechanisms allow areas of memory to be protected against writing. This protects code and data from being overwritten by rogue applications.
|
|
Read more... [Memory Management]
|
|
|
|
A program is a set of computer instructions that perform a particular task. That program can be written in assembler, a very low level computer language, or in a high level, machine independent language such as the C programming language. An operating system is a special program which allows the user to run applications such as spreadsheets and word processors. This chapter introduces basic programming principles and gives an overview of the aims and functions of an operating system.
2.1 Computer Languages
2.1.1 Assembly Languages
The instructions that a CPU fetches from memory and executes are not at all understandable to human beings. They are machine codes which tell the computer precisely what to do. The hexadecimal number 0x89E5 is an Intel 80486 instruction which copies the contents of the ESP register to the EBP register. One of the first software tools invented for the earliest computers was an assembler, a program which takes a human readable source file and assembles it into machine code. Assembly languages explicitly handle registers and operations on data and they are specific to a particular microprocessor. The assembly language for an Intel X86 microprocessor is very different to the assembly language for an Alpha AXP microprocessor. The following Alpha AXP assembly code shows the sort of operations that a program can perform:
|
|
Read more... [Software Basics]
|
|
|
The process of language translation
By reading this chapter first, you’ll
get the basic flavor of what it is like to program with objects in
C++, and you’ll also discover some of the reasons for the
enthusiasm surrounding this language. This should be enough to
carry you through Chapter 3, which can be a bit exhausting since it
contains most of the details of the C language.
The user-defined data type, or
class, is what
distinguishes C++ from traditional procedural languages. A class is
a new data type that you or someone else creates to solve a
particular kind of problem. Once a class is created, anyone can use
it without knowing the specifics of how it works, or even how
classes are built. This chapter treats classes as if they are just
another built-in data type available for use in programs.
Classes that someone else has created are
typically packaged into a library. This chapter uses several of the class
libraries that come with all C++ implementations. An especially
important standard library is iostreams, which (among other things)
allow you to read from files and the keyboard, and to write to
files and the display. You’ll also see the very handy
string class, and the vector container from the
Standard C++ Library. By the end of the chapter, you’ll see
how easy it is to use a pre-defined library of classes.
In order to create your first program you
must understand the tools used to build applications.
|
|
Read more... [The process of language translation]
|
|
|
System Description and Specification
The engineer’s first task is
understanding the system, the second one is specifying it, and the
third one is building it. Analysis must precede specification since
it is impossible to define or describe what is unknown.
Specification must precede construction, since we cannot build what
has not been defined. The first two tasks (understanding and
defining the system) can be quite challenging in the software
development field, particularly regarding small- to medium-size
projects.
|
|
Read more... [System Description and Specification]
|
|
|
Fundamentals of Systems Engineering
In this chapter we attempt to provide a technical overview of some
topics from the field of software
engineering, stressing those that would be
most useful to the working developer. The contents are an
arbitrary
selection of the topics that would be most
useful to the working analyst, designer, or programmer,
operating
in the context of a smaller software
project. We have avoided speculative discussions on the respective
merits
of the various software engineering
paradigms. The purpose of this chapter is to serve as an
informational
background and to set the mood for the
more practical discussions that follow. The discussion excludes
object
orientation since Part II is devoted
exclusively to this topic. |
|
Read more... [Fundamentals of Systems Engineering]
|
|
|
|
|
|