Вы находитесь на странице: 1из 15

Title Page

Institute Australian College Of Business And


Name: Technology

Degree
Program: Diploma In IT

Semester: Semester 1, 2008

Unit Name: Operating Systems (CSG1206)

Lecture Name: Mr. S. Wickramasinghe

Assignment
No: 01

Assignment
Title: Working Set Model and Locality

Date Of
Submission: 10th May 2008

ID No: PESBI72

Name: Sunimali Perera

Word Count 2732


Contents

Executive Summary................................................................ ...............3


Background Information.............................................. ..........................4
Memory Management Requirements......................................................................4
The roles of working set model and locality in an operating system......................5
Discussion ..................................................... ......................................6
The two basic types of locality................................................................................6
Virtual Memory Management in two real operating systems.................................7
Virtual Memory Management in Windows XP ............................................7
Windows virtual address map..........................................................8
Windows paging ............................................................................8
Virtual Memory Management in Linux........................................................9
Future Trends for operating systems.....................................................................9
Current trends............................................................................................9
Future trends............................................................................................10
References....................................................................... ..................11
Bibliography.............................................. .........................................12

2
Executive Summary

This technical report explains the working set model and locality of
reference and how it is applied to different operating systems. Moreover, it
illustrates virtual memory management and the comparison of this, concerning two
real operating systems.

Ultimately, the term locality is commonly used to determine the number of


assigned pages. The number of pages that meet the requirement of locality is called
a working set. The ability to design operating systems to be highly efficient
depends on many factors. Among these, the most important factor is a proper
understanding of the concept of locality.

One of the most important yet complex tasks of an operating system is


memory management. Memory management involves treating main memory as a
resource to be allocated to and shared among a number of active processes. Most
operating systems supporting multiprogramming, aim to provide effective and
efficient memory management in order to increase CPU utilization and to allow as
many active processes as possible.

A virtual memory management scheme requires both hardware and


software support. The hardware support is provided by the processor.

Virtual memory has become a vital requirement over the years, as the cost
of secondary memory decreases, and the memory demands of software increase. In
order to balance the use of primary memory among processes, sophisticated
algorithms are necessary to manage the replacement of virtual pages. This report
outlines the pros and cons of a variety of solutions, including both static based
demands and dynamic pre-fetch replacement algorithms.

The concluding part of the report provides an understanding of future trends


through identifying the potential issues regarding the virtual memory management
for future operating systems. In the process of doing so, some of the current trends
are listed and the possible modifications that can be done to these listed trends are
discussed.

3
4
Background Information

Memory management requirements

In computer systems main memory is divided into two parts, one part
for the operating system and the other part for the program currently being used.
In operating systems there are procedures for optimizing the use of random
access memory. These procedures are collectively identified as memory
management. Selectively storing data, monitoring it carefully and freeing
memory when the data is no longer needed, are all part of these procedures.
Memory management in programming is the process of ensuring that a program
releases each chunk of memory when it is no longer needed. The task of
subdivision is carried out dynamically by the operating system and is known as
memory management. In memory management, there are vital concerns memory
management expects to fulfill. They are;

• Relocation or binding is the translation of the memory references in the


program code (logical addresses) into physical addresses. This is required
since it is not possible to know in advance where a program should be placed
in the main memory. In addition, to maximize processor utilization through
swapping, it should be possible to move a program to any address in memory
in order to execute it. Hardware support is required to map from logical
addresses to physical addresses.

• Protection is when a process should be protected against memory-reference


violations (accidental or intentional) by other processes. A user process
cannot access areas of the operating system and other processes without
permission. Hardware support for protection is the same as that used to
support relocation.

• Sharing of the same portion of memory by several processes should be


allowed by the flexible enough protection mechanism employed by the
operating system, if required. For example, it is useful to allow several
processes to share the same copy of a compiler. Cooperating processes may
also need to share access to the same data structure. The mechanism used
to support relocation can be employed to support sharing capabilities.

• Logical organization – Users write programs in modules (parts,


components) with different characteristics as Instruction modules and Data

5
modules. The operating system and hardware should support a basic form of
module to provide the necessary protection and sharing.

‘Main memory and secondary memory are organized as linear, or one


dimensional address space. However, most user programs are organized into
modules. Thus, the operating system must be able to deal effectively with
programs and data in the form of modules.’

(Dr C. Chithramjaree, June 2000)

• Physical organization - In a computer system, there are two main levels of


memory (storage). The first level is the main memory or primary (real)
memory. It is used to hold programs and data currently in use (i.e. short-term
storage). The next level is the secondary memory (storage) that is used to
provide permanent (long-term) storage of programs and data. The task of
moving programs and data between the two main levels of memory is done
by memory management system.

The roles of working set model and locality in an operating


system
A working set model is the set of physical memory pages (main memory)
presently given to a particular process i.e. the set of active virtual memory pages
for a process stored in random access memory (RAM) at a given instant. The size of
the working set model in any operating system is important. It should not be too
large or too small. If the working set is too small, then further additional requests
must be made in the swapping area (space) to regain required pages. If the working
set is too large, then fewer processes will be available to be executed. The definition
of the working set model states that a process can be in the main memory if it
consumes the memory of the main memory. In this model, if the use for pages
increases, there will be no room in the primary memory (main memory). If so, the
process is removed or eliminated from memory to free some memory for other
processes to load and execute. In other words, the working set policy stops
thrashing (poor performance of paging system) while keeping the scale of
multiprogramming as high as possible. Thus, it optimizes processor utilization and
throughput.

6
Locality is the tendency of programs considering their references over any
given interval of time, to a subset of the paces of the program, and for this subset
to change rather slowly with time. Locality is the point to which a program keeps
memory references limited to a small number of locations over any short length of
time. The better the locality of reference, the more likely a program will execute
entirely from the cache memory. The more scattered a programs’ memory
references, the higher the chance that it will access main memory, while the worse
that can happen being loading a page from swapping area.

Discussion
The two basic types of locality
The concept of locality is typically used to determine the number of
assigned pages. The ability to design operating systems that is maximally efficient
depends on many factors. Among those, the most important is our understanding of
the concept of locality.

Locality is a set of pages actively used together. It has been suggested


that the property of locality be split into two components temporal locality and
spatial locality. This is illustrated by Madnick, S.E., & Donavan J.J. (1997).

Temporal locality is the property where a high probability exists that a


pace, once referenced, will be referenced shortly thereafter. Temporal locality refers
to an observed property of most programs, i.e. once a location, data or instruction is
referenced, it is often referenced again very soon. This behavior can be rationalized
by program constructs such as loops, frequently used variables, and subroutines.

Spatial locality, on the other hand, is said to exist if there is a high


probability that pages close to the paw currently being referenced, will be
referenced within a short time. Spatial locality refers to the probability that once a
location is referenced, a nearby location will be referenced soon. This behavior can
be rationalized by program constructs such as sequential instruction sequencing,
linear structures (e.g., arrays), and the other tendency of programmers to put
commonly used variables near one another. The degree of locality varies from
program to program. In general, it is desirable to develop programs with a high
degree of locality. A high degree of temporal locality indicates a low fault rate with
the least recently used (LRU) or Working set (WS) replacement algorithms. A high
degree of spatial locality suggests that doubling the page size might improve pads
performance.

7
An item of information that has just been referenced in a particular level is
very unlikely to be referenced again in a short time even though the program makes
repeated references to it. This is because a copy of that information exists at a
higher level and, consequently, references will not filter down to the lower level. As
a result, the spatial locality of the program would have to be measured at every
level. “It would be far better if the model of spatial locality were such that it was a
function of only the program and not of the level in the hierarchy.” This was signified
by Rau, B. R. (1975). In other words, the spatial locality should be modeled such
that it is an invariant in the hierarchy. The temporal locality, on the other hand, will,
most definitely, be a function of the level in the hierarchy. It should not, however, be
characterized so as to be a function of the spatial locality. Accordingly, the temporal
locality must be characterized in terms of the smallest unit of information that the
processor is capable of requesting. This might be larger than the smallest
addressable unit. This is the natural choice by default, a smaller page size being
meaningless.

The spatial locality must be characterized by some property which function


of page size, but is invariant with the level in the hierarchy. Once this has been
done, there is but one problem that remains to be solved. As has been noted, the
fault stream out of one level (the request stream for the lower level) is different
from the request stream to the level. The difference is mainly in the temporal
locality of the two streams. A method must exist for deriving the model for the fault
stream, given the model for the request stream and the parameters of the memory
level. Rau, B. R. (1975).

Virtual Memory Management in two real operating systems


Virtual memory or virtual memory addressing is a memory management
technique, used by multitasking computer operating systems wherein non-
contiguous memory is presented to a software application as contiguous memory.
This contiguous memory is referred to as the virtual address space.

Virtual memory addressing is typically used in paged memory systems. This


in turn is often combined with memory swapping, whereby memory pages stored in
primary storage are written to secondary storage, thus freeing faster primary
storage for other processes to use.

Virtual Memory Management in windows XP

8
Virtual memory has been a feature of Microsoft Windows since Windows 3.1 in
1992. 386SPART.PAR (or WIN386.SWP on Windows 3.11 and Windows for
Workgroups) is a hidden file created by Windows 3.x for use as a virtual memory
swap file. It is generally found in the root directory, but it may appear elsewhere
(typically in the WINDOWS directory). Its size depends on how much virtual memory
the system has set up or user define “under Control Panel - Enhanced under "Virtual
Memory"”. This page file is located at C:\pagefile.sys on all NT-based versions of
Windows (including Windows 2000 and Windows XP), though Windows may be
configured to place additional page files on other drives. Eskicioglu, & Marsland,
(n.d)

Windows 95 uses a similar file, except it is named WIN386.SWP, and the


controls for it are located under “Control Panel - System - Performance tab - Virtual
Memory”. Windows automatically sets the page file to start 1.5x physical memory,
and expand up to 3x physical memory if necessary. If a user runs memory intensive
applications on a low physical memory system, it is preferable to manually set these
sizes to a value higher than default.

The Windows virtual memory manager controls how memory is allocated and
how the paging is performed. The memory manager is designed to operate over a
variety of and use page sizing ranges from 4 Kbytes to 64 Kbytes. Intel, PowerPC,
and MPIS platforms have 4096 bytes per page and DEC Alpha platforms have 8196
bytes per page. Stallings, W (1990, p.379-380).

Windows virtual address map


Each window user process sees a separate 32-bit address space, allowing 4
Gbytes of memory per process. By default, a portion of this memory is reserved for
the operating system, so each user actually has 2 Gbytes of system space. There an
option that allows user space to be increased to 3 Gbytes, leaving 1 Gbyte for
system space. The Windows documentation indicates that this feature is intended to
support large memory intensive applications of servers with multiple gigabytes of
RAM, and that the use of the larger address space can dramatically improve for
applications such as decision support or data mining. Figure 1.0 shows the default
virtual address space seen by a user process. It consists of four stages.

 0x00000000 to 0x0000FFFF: Set aside to help programmers catch Null-


Pointer assignments.
 0x00010000 to 0x7FFFFFFF: Available user address space. This space is
divided into pages that may be loaded into main memory.
 0x7FFF0000 to 0x7FFFFFFF: A guard page inaccessible to the user. This page
makes it easier for the operating system to check on out-of-bounds pointer

9
references.
 0x80000000 to 0xFFFFFFFF: system address space. This 2-Gbyte Process is
used for the Windows Executive, microkernal, and device drivers.

Windows paging

When a process is created, it can in principle make use of the entire user space
in 2 Gbytes (minus 128 Kbytes). Stallings, W (1990, p.379-380) says that “this
space is divided into fixed-size pages, any of which can be bought into main
memory.” In practice, the accounting, page can be in one of three states, they are
available, reserved and committed. Stallings, W (1990, p.379-380).

When main memory is plentiful, the virtual memory manager allows the
resident sets of active processes to grow.

When memory becomes scarce, the virtual memory manager recovers memory
for the system by moving less recently used pages out of the working sets of active
processes, reducing the size of those resident sets.

(This was emphasized by Stallings W. 1998 p. 380).

Virtual Memory Management in Linux

Linux makes use of a three-level page table structure, consisting of the


following types of tables (each individual table is the size of one page):
Page directory: An active process has a single page directory that is the size of
one page. Each entry in the page directory points to one page of the page middle
directory. The page directory must be in main memory for an active process.
Page middle directory: the page middle directory may span multiple pages. Each
entry in the page middle directory points to one page in the page table.
Page table: the page table may also span multiple pages. Each page table entry
refers to one virtual page of the process.
The Linux page table structure is platform independent and was designed to
accommodate the 64-bit Alpha processor, which provides hardware support for

10
three levels of paging. With 64-bit addresses, the use of only two levels of pages on
the alpha would result in very large pages and directories. The 32-bit Pentium/x86
architecture has a two-level scheme by defining the size of the page middle
directory as one.
Page allocation, Page replacement algorithms and page replacement are some
of the mechanisms used in dealing with contiguous blocks of pages. See Stallings,
W. (1998, p. 378)

Future trends for Operating Systems

Current trends

Larger physical memory


In this case, replacing pages will have to be done a less number of times
compared to when the physical memory is lesser. Also, large page size gives
better TLB coverage and small page tables. The pages being less, makes it
easier to manage page tables. By having large physical memory, the
hardware support for replacement policies enhances.

Larger address spaces


This allows substantial address spaces. Here, larger address spaces
indicate single (combined) address space (part of the OS for the user
processes).

File systems using virtual memory

• Memory mapped files


• File caching with virtual memory

Future trends

Operating systems make frequent changes to their page tables, so keeping


shadow copies up to date in software can encounter undesirable overhead.
Hardware-managed shadow page tables have long been present in mainframe
virtualization architectures and would prove a fruitful direction for accelerating x86
CPU virtualization. Resource management holds great promise as an area for future
research. Much work remains in investigating ways for VMMs and guest operating

11
systems to make cooperative resource management decisions. In addition, research
must look at resource management at the entire data center level, and can be
expected to make significant strides in this area in the coming years.

Analysis of virtual memory proves that its concept is not only feasible, but
extremely useful and a necessity in ever-growing computer systems where high
speed primary memory is limited.

In the future we will see the size of memory considerably very high and
they will be affordable. Effective and more efficient ways of memory management
will be found. In order to make the best use of multiple levels of memory, such as
cache to make a program run faster, or, paging to make fuller use of the RAM; a
way of predicting which chunk of memory will be required by the program, can be
expected in the near future. Fortunately, many programs exhibit a high degree of
locality in their memory reference patterns. Eventually this concept can be used in
designing both the hardware of a computer, the structures and algorithms of an
operating system.

Another way to boost performance is to use a virtual cache. A virtual cache


uses a portion of physical memory to store code and data that the operating system
might use frequently. Since the operating system is responsible for loading
applications and data files into memory, it can accumulate this type of tracking
information for use with the virtual cache.

12
References

• Avaliable WWW: http://www.redhat.com/docs/manuals/linux/RHL-9-


Manual/custom-guide/ch-swapspace.html [Access date 01/05/2008]

• Dr Chirathamjaree, C. (2000), CSG 2343: Operating Systems unit guide


(version 1.1). Perth: Edith Cowan University.

• Dr Chirathamjaree, C. (2000). Operating Systems: Unit Guide. Australia. Edith


Cowan University

• Eskicioglu, & Marsland, (n.d), Virtual Memory, Avaliable WWW:


www.cs.ualberta.ca/~tony/C379/Notes/PDF/08.4.pdf . [access date
21/04/2008]

• Garfinkel, T., & Rosenblum M. (2005, May) VMware Inc. Available WWW:
www.stanford.edu/group/comparch/papers/Computer_RosenblumGarfinkel.pd
f [access date 24/04/2008]

• http://www.computerworld.com/action/article.do?command=viewArticleBasic
&articleId=60855&pageNumber=2 [Access Date 11/04/2008]

• Madnick, S.E., & Donavan J.J. (1997), Operating systems, (fifth edtion), Tata
McGraw-Hill Publishing Company Limited New Delhi

• McCraw, T. (n.d), Virtual Memory Page Replacement Algorithms,


people.msoe.edu/~mccrawt/resume/papers/CS384/mccrawt_cs384_virtual.pd
f, [Access Date 29/04/2008]

• Rau, B. R. (1975), The stack working set: A characterization of spatial locality,


ftp://reports.stanford.edu/pub/cstr/reports/csl/tr/75/95/CSL-TR-75-95.pdf
[Access Date 19/04/2008]

• Silberschatz, A., Galvin, P.B., & Gagne, G. (2005). Operating System


Concepts, 7th edition. Palatino: Wiley. p.346.

• Stalling, W. (2005). Operating Systems: Internals and Design Principles. New


Delhi: Prentice-Hall of India Private Limited

13
Bibliography

• Avaliable WWW: http://www.redhat.com/docs/manuals/linux/RHL-9-


Manual/custom-guide/ch-swapspace.html [Access date 01/05/2008]

• Dr Chirathamjaree, C. (2000), CSG 2343: Operating Systems unit guide


(version 1.1). Perth: Edith Cowan University.

• Dr Chirathamjaree, C. (2000). Operating Systems: Unit Guide. Australia. Edith


Cowan University

• Eskicioglu, & Marsland, (n.d), Virtual Memory, Avaliable WWW:


www.cs.ualberta.ca/~tony/C379/Notes/PDF/08.4.pdf . [access date
21/04/2008]
• G, Binny. (2005). Temporal locality. Available WWW:
http://www.usenix.org/events/fast05/tech/full_papers/gill/gill_html/node7.html
[access date: 10/05/2007].

• Garfinkel, T., & Rosenblum M. (2005, May) VMware Inc. Available WWW:
www.stanford.edu/group/comparch/papers/Computer_RosenblumGarfinkel.pd
f [access date 24/04/2008]

• http://www.computerworld.com/action/article.do?command=viewArticleBasic
&articleId=60855&pageNumber=2 [Access Date 11/04/2008]

• Madnick, S.E., & Donavan J.J. (1997), Operating systems, (fifth edtion), Tata
McGraw-Hill Publishing Company Limited New Delhi

• McCraw, T. (n.d), Virtual Memory Page Replacement Algorithms,


people.msoe.edu/~mccrawt/resume/papers/CS384/mccrawt_cs384_virtual.pd
f, [Access Date 29/04/2008]
• Paul, R. (year not given). Locality of Reference. Available WWW:
http://citeseer.ist.psu.edu/337869.html [Access date: 10/04/2008].

• Rau, B. R. (1975), The stack working set: A characterization of spatial locality,


ftp://reports.stanford.edu/pub/cstr/reports/csl/tr/75/95/CSL-TR-75-95.pdf
[Access Date 19/04/2008]
• S, William. (2005). Types of locality. New Delhi: Prentice-Hall of India Private
Limited

• Silberschatz, A., Galvin, P.B., & Gagne, G. (2005). Operating System


Concepts, 7th edition. Palatino: Wiley. p.346.

14
• Stalling, W. (2005). Operating Systems: Internals and Design Principles. New
Delhi: Prentice-Hall of India Private Limited

15

Вам также может понравиться