By
Raul Bernardino (Dino), B of Comp.
Sc., MSc in ISM
Introduction:
Lists and Queues are enormously used
in the operating systems whereas to control various tasks in different stages
of the execution. These tasks are stored in the queues and it structured by
first in first out (FIFO), (Brookshear, 2009:374). This operation is proper for
certain application; however it is not use for controlling blocks in the
operating system. The operating system much more efficient by using high
priority task first or use simultaneously (lists).
[2] List in Data Structure:
A listing or computing is a data
structure values that’s in sequence, where the same value can be occurred in more
than one place. In computing or listing of data types can also view as model of
mathematics, which has similar behavior for certain class of the data structures. An instance of a value in the list is usually
called an element. In a listing, we can also make a link to the list of the data structure itself, where
it consists of an order of data records.
The records are fields that contain an address to the next record in the
sequence. This is allow us, to easily shorting a data, adding new data or
insert new data and delete data, or easily moves data from list to other end.
A field of node contains information
of next node calls a pointer. A first node is a HEAD of a list and the
last node calls TAIL minus that node.
A circular link diagram
[5] A single link diagram
[3] Queue in Data Structure:
Queues in general as it pictured
below is FIFO model. FIFO stands for First In First Out.
FIFO queue model
A queue is group whereas members are a collection of objects that keeps
in the line. The elements can be only adding from the back and only deleting or removing
from the front. Some examples are
the queues in front of the cashier for the payment or deposits in the banks.
The cashier will be only serving the first-in person in the queues. The
queues also have a limited to the available of the rooms, places or buffers in
the case of computing.
There are two term for queue which are
overflow
and underflow. The overflow is adding
a new object to the full queue. The underflow
is deleting object from an empty queues.
Some
questions about memory mapping
#1.
Suppose a homogeneous array with 6
rows and 8 columns is stored in row major order starting at address 20 (base
ten). If each entry in the array
requires only one memory cell, what is the address of the entry in the third
row and fourth column? What if each entry requires two memory cells?
When data is stored in the rows, the major
order of the rows are stored first horizontally in adjacent memory locations.
When one row is stored, the next one is stored adjacent to the last entry in
the previous row.
1 memory cell per item of the data
In the above scenarios, if the starting
location was 20 the first row of data would be stored in locations of 20 to 27
and the second row would be stored in locations 28 to 35 and the third row
would be stored between locations 36 to 43. The location of the 3rd
row and 4th column would thus be 39
[6] 2 memory cells per item of data
In the above scenario the first row would
occupy memory locations 20 to 35, the second row would be stored between
locations 36 to 51 and the third row would be stored between locations 52 to
67. So the required entry would be stored in memory location 58 to 59.
#2. Describe
a method for storing three-dimensional homogeneous arrays. What addressing
formula would be used to locate the entry in the ith plane, jth
row, and the kth
column?
Ordinarily, the values posed within the
question would be stored within the computer memory in one of two ways (Row
major order or Column major order). These are then grouped together within the
computer’s memory. When this is done, we can refer to the location by
specifying the row and column. For this exercise, we will also add the plane data for further location (a
little like locating an object floating in a cube).
Therefore, if we suppose use the following
formula:
X = Address of the cell containing the
entry
For this exercise:
I = 4
J = 10
K = 11 (Represents the number of columns)
X + (K*(I – 1)) + (J – 1)
รจ X + (11*(4 - 1)) + (10 – 1) = 42
Answer = 42
The answer or information can then be
translated through the use of software routines into locations within the
computer’s memory. In this case 4,2.
Moreover, there
are some related questions in the software engineering as follows:
#3.
Explain how the lack of metrics
for measuring certain software properties affects the software engineering
discipline.
Unlike the traditional engineering disciplines where concrete and
quantitative, methods for verification of the product, software engineering
isn’t blessed with such methods. These methods are called metrics and lack of
them is a cause for various problems with software systems. The most immediate
impact of the lack of quantitative metrics is the unreliable nature of the end
product. Software that can’t be verified can never be sure to perform
consistently under all possible operating conditions.
Unless suitable metrics are found for testing the validity of
software to the same degree of effectiveness as other more traditional
engineering disciplines it is going to be hard to argue the case for software
engineering to be considered as part with traditional engineering disciplines.
Brookshear [1] compares the current state of software engineering to the
position mechanical engineering was in the early seventeenth century before
Newton and others discovered the basic mathematical measurements for mass,
acceleration and force and their interrelation.
Research in software engineering would have to focus on the
discovery of similar fundamental principles which can be applied generically to
all software development endeavors. At present most development projects are
engineered from scratch.
Although the lack of quantitative metrics affects all aspects of software
engineering but the following are perhaps affected more heavily.
Reliability
Software cannot be guaranteed to be reliable if all new projects
are developed from scratch as all the mistakes are repeated again and again.
The idea of building entire software systems from prefabricated modules using
them as building blocks is the focus of much research and interest in the IT
community.
Testing
Non existence of any quantitative measures for testing software
results in systems rigged with errors which on occasions have caused
catastrophic results and have come very close to total destruction. The big
hurdle in the way is the intolerance of errors in software systems where
software either functions properly without errors or produces the wrong results
with the presence of the smallest of error (a missing expression or a wrong
operator). It is the effort of eliminating the construction of primitives every
time software is developed that is the goal of so many academic and commercial organizations.
Security
With the advent of distributed systems and the explosion in
e-commerce and internet systems security has become a major issue is software
systems. As software systems cannot yet be defined and tested for all their
operating states it is impossible to plug every security hole in the system and
discover every error that may exist.
Project Management
The unpredictable nature of software projects puts incredible
strain on those tasked with managing the projects. They are often asked to make
assumptions about the likely cost of developing a system before any design work
has been done and as there exist no metrics for defining a project’s work
breakdown structure and the effort associated with them.
Estimating
Software project estimation remains a work of art than a science
due to the lack of metrics in the software engineering discipline.
#4. What
is the difference between coupling and cohesion? Which should be minimized and
which should be maximized?
Coupling
refers to the connections between modules; cohesion refers to the connectivity
within a module. On the surface, one would like to minimize coupling (because
that leads to independent modules that can be maintained individually) and
maximize cohesion (because that leads to modules whose activities can be more
easily understood).
References:
[1] Brookshear, J. (2009) Computer
Science: An Overview. 10th ed. Boston: Pearson Education, Inc.
[2] List or computing [Internet].
Available from: http://en.wikipedia.org/wiki/List_(computing) (Accessed: 13 November 2010)
[3] Queue of data structure [Internet].
Available from: http://en.wikipedia.org/wiki/Queue_(data_structure) (Accessed:
13 November 2010)
[4] Double link list [Internet].
Available from: http://en.wikipedia.org/wiki/File:Doubly-linked-list.svg
(Accessed: 13 November 2010)
[5] Single link list [Internet].
Available from: http://en.wikipedia.org/wiki/File:Singly-linked-list.svg (Accessed: 13 November 2010)
[6] Multidimensional Array [Internet]. Available
from: http://courses.cs.vt.edu/~csonline/DataStructures/Lessons/2DArrays/index.html (Accessed: 13 November 2010)