<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dmiyusov</id>
	<title>Soma-notes - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dmiyusov"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Dmiyusov"/>
	<updated>2026-05-02T19:08:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1705</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1705"/>
		<updated>2007-11-20T23:22:56Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Overlays */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.[3]&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A technique that enables computer to execute programs and manipulate data files larger than main memory. An operating system copies as much data as possible into main memory leaving the rest on disk. When it needs data from disk , thsi data exchanges a portion of data (page or segment)  in main memory with a portion of data on disk [1] &lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (R1/R2 in the diagram). These regions can be of a different size. An overlay manager, such as an operating system loads the required overlay from external memory into this region. [3]&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is &#039;when exactly do you load x, y or z?&#039;. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem is that x, y, and z can’t talk to each other, they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
x,y and z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
&#039;&#039;&#039;Fragmentation&#039;&#039;&#039; - difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
A memory allocation strategy using fixed-length pages as opposed to variable-length segments. Every process’s virtual address space is logically divided into pages.&lt;br /&gt;
Main function of paging are performed when a program tries to access pages that do not currently reside in RAM, this is a situation which causes page fault.&lt;br /&gt;
The main functions of paging are:&lt;br /&gt;
&lt;br /&gt;
1. Handles the page fault, in a manner invisible to the causing program, and takes control. &lt;br /&gt;
&lt;br /&gt;
2. Determines the location of the data in auxiliary storage. &lt;br /&gt;
&lt;br /&gt;
3. Determines the page frame in RAM to use as a container for the data. &lt;br /&gt;
&lt;br /&gt;
4. If a page currently residing in chosen frame has been modified since loading (if it is dirty), writes the page to auxiliary storage. &lt;br /&gt;
&lt;br /&gt;
5. Loads the requested data into the available page. &lt;br /&gt;
&lt;br /&gt;
6. Returns control to the program, transparently retrying the instruction that caused page fault. &lt;br /&gt;
[3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rerefeces:&lt;br /&gt;
&lt;br /&gt;
[1] http://www.ptdd.com/datarecovery/swap.htm&lt;br /&gt;
&lt;br /&gt;
[2] Nutt, Gary (2004). Operating systems. Boulder Colorado.  &lt;br /&gt;
&lt;br /&gt;
[3] http://wikipedia.org/&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1704</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1704"/>
		<updated>2007-11-20T23:22:15Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Dynamic Paging algorithms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.[3]&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A technique that enables computer to execute programs and manipulate data files larger than main memory. An operating system copies as much data as possible into main memory leaving the rest on disk. When it needs data from disk , thsi data exchanges a portion of data (page or segment)  in main memory with a portion of data on disk [1] &lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (r1/r2 in the diagram). These regions can be of a different size. An overlay manager, such as an operating system loads the required overlay from external memory into this region. [3]&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is &#039;when exactly do you load x, y or z?&#039;. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem is that x, y, and z can’t talk to each other, they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
x,y and z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
&#039;&#039;&#039;Fragmentation&#039;&#039;&#039; - difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
A memory allocation strategy using fixed-length pages as opposed to variable-length segments. Every process’s virtual address space is logically divided into pages.&lt;br /&gt;
Main function of paging are performed when a program tries to access pages that do not currently reside in RAM, this is a situation which causes page fault.&lt;br /&gt;
The main functions of paging are:&lt;br /&gt;
&lt;br /&gt;
1. Handles the page fault, in a manner invisible to the causing program, and takes control. &lt;br /&gt;
&lt;br /&gt;
2. Determines the location of the data in auxiliary storage. &lt;br /&gt;
&lt;br /&gt;
3. Determines the page frame in RAM to use as a container for the data. &lt;br /&gt;
&lt;br /&gt;
4. If a page currently residing in chosen frame has been modified since loading (if it is dirty), writes the page to auxiliary storage. &lt;br /&gt;
&lt;br /&gt;
5. Loads the requested data into the available page. &lt;br /&gt;
&lt;br /&gt;
6. Returns control to the program, transparently retrying the instruction that caused page fault. &lt;br /&gt;
[3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rerefeces:&lt;br /&gt;
&lt;br /&gt;
[1] http://www.ptdd.com/datarecovery/swap.htm&lt;br /&gt;
&lt;br /&gt;
[2] Nutt, Gary (2004). Operating systems. Boulder Colorado.  &lt;br /&gt;
&lt;br /&gt;
[3] http://wikipedia.org/&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1703</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1703"/>
		<updated>2007-11-20T23:19:51Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Paging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.[3]&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A technique that enables computer to execute programs and manipulate data files larger than main memory. An operating system copies as much data as possible into main memory leaving the rest on disk. When it needs data from disk , thsi data exchanges a portion of data (page or segment)  in main memory with a portion of data on disk [1] &lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (r1/r2 in the diagram). These regions can be of a different size. An overlay manager, such as an operating system loads the required overlay from external memory into this region. [3]&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is &#039;when exactly do you load x, y or z?&#039;. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem is that x, y, and z can’t talk to each other, they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
x,y and z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
&#039;&#039;&#039;Fragmentation&#039;&#039;&#039; - difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
A memory allocation strategy using fixed-length pages as opposed to variable-length segments. Every process’s virtual address space is logically divided into pages.&lt;br /&gt;
Main function of paging are performed when a program tries to access pages that do not currently reside in RAM, this is a situation which causes page fault.&lt;br /&gt;
The main functions of paging are:&lt;br /&gt;
&lt;br /&gt;
1. Handles the page fault, in a manner invisible to the causing program, and takes control. &lt;br /&gt;
&lt;br /&gt;
2. Determines the location of the data in auxiliary storage. &lt;br /&gt;
&lt;br /&gt;
3. Determines the page frame in RAM to use as a container for the data. &lt;br /&gt;
&lt;br /&gt;
4. If a page currently residing in chosen frame has been modified since loading (if it is dirty), writes the page to auxiliary storage. &lt;br /&gt;
&lt;br /&gt;
5. Loads the requested data into the available page. &lt;br /&gt;
&lt;br /&gt;
6. Returns control to the program, transparently retrying the instruction that caused page fault. &lt;br /&gt;
[3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rerefeces:&lt;br /&gt;
&lt;br /&gt;
[1] http://www.ptdd.com/datarecovery/swap.htm&lt;br /&gt;
&lt;br /&gt;
[2] Nutt, Gary. Operating systems 2004. Boulder Colorado.  &lt;br /&gt;
&lt;br /&gt;
[3] http://wikipedia.org/&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1702</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1702"/>
		<updated>2007-11-20T23:19:30Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Paging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.[3]&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A technique that enables computer to execute programs and manipulate data files larger than main memory. An operating system copies as much data as possible into main memory leaving the rest on disk. When it needs data from disk , thsi data exchanges a portion of data (page or segment)  in main memory with a portion of data on disk [1] &lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (r1/r2 in the diagram). These regions can be of a different size. An overlay manager, such as an operating system loads the required overlay from external memory into this region. [3]&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is &#039;when exactly do you load x, y or z?&#039;. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem is that x, y, and z can’t talk to each other, they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
x,y and z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
&#039;&#039;&#039;Fragmentation&#039;&#039;&#039; - difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
A memory allocation strategy using fixed-length pages as opposed to variable-length segments. Every process’s virtual address space is logically divided into pages.&lt;br /&gt;
Main function of paging are performed when a program tries to access pages that do not currently reside in RAM, this is a situation which causes page fault.&lt;br /&gt;
The main functions of paging are:&lt;br /&gt;
&lt;br /&gt;
1. Handles the page fault, in a manner invisible to the causing program, and takes control. &lt;br /&gt;
&lt;br /&gt;
2. Determines the location of the data in auxiliary storage. &lt;br /&gt;
&lt;br /&gt;
3. Determines the page frame in RAM to use as a container for the data. &lt;br /&gt;
&lt;br /&gt;
4. If a page currently residing in chosen frame has been modified since loading (if it is dirty), writes the page to auxiliary storage. &lt;br /&gt;
&lt;br /&gt;
5. Loads the requested data into the available page. &lt;br /&gt;
&lt;br /&gt;
6.Returns control to the program, transparently retrying the instruction that caused page fault. &lt;br /&gt;
[3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rerefeces:&lt;br /&gt;
&lt;br /&gt;
[1] http://www.ptdd.com/datarecovery/swap.htm&lt;br /&gt;
&lt;br /&gt;
[2] Nutt, Gary. Operating systems 2004. Boulder Colorado.  &lt;br /&gt;
&lt;br /&gt;
[3] http://wikipedia.org/&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1701</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1701"/>
		<updated>2007-11-20T23:19:03Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.[3]&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A technique that enables computer to execute programs and manipulate data files larger than main memory. An operating system copies as much data as possible into main memory leaving the rest on disk. When it needs data from disk , thsi data exchanges a portion of data (page or segment)  in main memory with a portion of data on disk [1] &lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (r1/r2 in the diagram). These regions can be of a different size. An overlay manager, such as an operating system loads the required overlay from external memory into this region. [3]&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is &#039;when exactly do you load x, y or z?&#039;. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem is that x, y, and z can’t talk to each other, they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
x,y and z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
&#039;&#039;&#039;Fragmentation&#039;&#039;&#039; - difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
A memory allocation strategy using fixed-length pages as opposed to variable-length segments. Every process’s virtual address space is logically divided into pages.&lt;br /&gt;
Main function of paging are performed when a program tries to access pages that do not currently reside in RAM, this is a situation which causes page fault.&lt;br /&gt;
The main functions of paging are:&lt;br /&gt;
&lt;br /&gt;
1. Handles the page fault, in a manner invisible to the causing program, and takes control. &lt;br /&gt;
2. Determines the location of the data in auxiliary storage. &lt;br /&gt;
3. Determines the page frame in RAM to use as a container for the data. &lt;br /&gt;
4. If a page currently residing in chosen frame has been modified since loading (if it is dirty), writes the page to auxiliary storage. &lt;br /&gt;
5. Loads the requested data into the available page. &lt;br /&gt;
6.Returns control to the program, transparently retrying the instruction that caused page fault. &lt;br /&gt;
[3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rerefeces:&lt;br /&gt;
&lt;br /&gt;
[1] http://www.ptdd.com/datarecovery/swap.htm&lt;br /&gt;
&lt;br /&gt;
[2] Nutt, Gary. Operating systems 2004. Boulder Colorado.  &lt;br /&gt;
&lt;br /&gt;
[3] http://wikipedia.org/&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1700</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1700"/>
		<updated>2007-11-20T23:16:21Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Paging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.[3]&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A technique that enables computer to execute programs and manipulate data files larger than main memory. An operating system copies as much data as possible into main memory leaving the rest on disk. When it needs data from disk , thsi data exchanges a portion of data (page or segment)  in main memory with a portion of data on disk [1] &lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (r1/r2 in the diagram). These regions can be of a different size. An overlay manager, such as an operating system loads the required overlay from external memory into this region. [3]&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is &#039;when exactly do you load x, y or z?&#039;. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem is that x, y, and z can’t talk to each other, they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
x,y and z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
&#039;&#039;&#039;Fragmentation&#039;&#039;&#039; - difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
A memory allocation strategy using fixed-length pages as opposed to variable-length segments. Every process’s virtual address space is logically divided into pages.&lt;br /&gt;
Main function of paging are performed when a program tries to access pages that do not currently reside in RAM, this is a situation which causes page fault.&lt;br /&gt;
The main functions of paging are:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rerefeces:&lt;br /&gt;
&lt;br /&gt;
[1] http://www.ptdd.com/datarecovery/swap.htm&lt;br /&gt;
&lt;br /&gt;
[2] Nutt, Gary. Operating systems 2004. Boulder Colorado.  &lt;br /&gt;
&lt;br /&gt;
[3] http://wikipedia.org/&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1699</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1699"/>
		<updated>2007-11-20T22:56:02Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Dynamic Paging algorithms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.[3]&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A technique that enables computer to execute programs and manipulate data files larger than main memory. An operating system copies as much data as possible into main memory leaving the rest on disk. When it needs data from disk , thsi data exchanges a portion of data (page or segment)  in main memory with a portion of data on disk [1] &lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (r1/r2 in the diagram). These regions can be of a different size. An overlay manager, such as an operating system loads the required overlay from external memory into this region. [3]&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is &#039;when exactly do you load x, y or z?&#039;. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem is that x, y, and z can’t talk to each other, they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
x,y and z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
&#039;&#039;&#039;Fragmentation&#039;&#039;&#039; - difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)[2]&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. [2]&lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j) [2]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rerefeces:&lt;br /&gt;
&lt;br /&gt;
[1] http://www.ptdd.com/datarecovery/swap.htm&lt;br /&gt;
&lt;br /&gt;
[2] Nutt, Gary. Operating systems 2004. Boulder Colorado.  &lt;br /&gt;
&lt;br /&gt;
[3] http://wikipedia.org/&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1698</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1698"/>
		<updated>2007-11-20T22:55:47Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.[3]&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A technique that enables computer to execute programs and manipulate data files larger than main memory. An operating system copies as much data as possible into main memory leaving the rest on disk. When it needs data from disk , thsi data exchanges a portion of data (page or segment)  in main memory with a portion of data on disk [1] &lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (r1/r2 in the diagram). These regions can be of a different size. An overlay manager, such as an operating system loads the required overlay from external memory into this region. [3]&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is &#039;when exactly do you load x, y or z?&#039;. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem is that x, y, and z can’t talk to each other, they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
x,y and z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
&#039;&#039;&#039;Fragmentation&#039;&#039;&#039; - difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume [2]&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)[2]&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. [2]&lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j) [2]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Rerefeces:&lt;br /&gt;
&lt;br /&gt;
[1] http://www.ptdd.com/datarecovery/swap.htm&lt;br /&gt;
[2] Nutt, Gary. Operating systems 2004. Boulder Colorado.  &lt;br /&gt;
[3] http://wikipedia.org/&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1697</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1697"/>
		<updated>2007-11-20T22:45:41Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (r1/r2 in the diagram). These regions can be of a different size. An overlay manager, such as an operating system loads the required overlay from external memory into this region. &lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is &#039;when exactly do you load x, y or z?&#039;. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem is that x, y, and z can’t talk to each other, they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
x,y and z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
&#039;&#039;&#039;Fragmentation&#039;&#039;&#039; - difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1696</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1696"/>
		<updated>2007-11-20T22:43:14Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (r1/r2 in the diagram). These regions can be of a different size. An overlay manager, such as an operating system loads the required overlay from external memory into this region. &lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is &#039;when exactly do you load x, y or z?&#039;. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem is that x, y, and z can’t talk to each other, they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
x,y and z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
&#039;&#039;Fragmentation&#039;&#039; - difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1695</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1695"/>
		<updated>2007-11-20T22:42:41Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (r1/r2 in the diagram). These regions can be of a different size. An overlay manager, such as an operating system loads the required overlay from external memory into this region. &lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is &#039;when exactly do you load x, y or z?&#039;. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem is that x, y, and z can’t talk to each other, they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
x,y and z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
&#039;&#039;Fragmentation&#039;&#039; - difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1694</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1694"/>
		<updated>2007-11-20T21:47:44Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Virtual Memory== &lt;br /&gt;
Virtual mermory is system memory which is simulated by the hard drive. In the case that all of the RAM is used up, the computer can simulate extra memory by swapping data to the hard drive and back, giving an impression that there is more memory. Extending memory can be done by other ways including overlays and swapping.&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
This technique allows programs to be larger than the CPU&#039;s main memory. In this method a program is divided into self-contained object code blocks called overlays where the size of the overlay is limited according to memory constraints. The place where overlays are loaded are refered to as &#039;regions&#039; (r1/r2 in the diagram)&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1693</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1693"/>
		<updated>2007-11-20T21:20:06Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Dynamic Paging algorithms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Edited by Dmitrii Miyusov &#039;&#039;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1692</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1692"/>
		<updated>2007-11-20T21:17:37Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1691</id>
		<title>Virtual Memory</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Virtual_Memory&amp;diff=1691"/>
		<updated>2007-11-20T21:16:49Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Main_Page&amp;diff=1690</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Main_Page&amp;diff=1690"/>
		<updated>2007-11-20T21:16:04Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Carleton University COMP 3000: Operating Systems (Fall 2007) wiki.&lt;br /&gt;
&lt;br /&gt;
==Course Outline==&lt;br /&gt;
&lt;br /&gt;
The course outline can be found [http://www.scs.carleton.ca/%7Ecourses/course_outline.php?number=COMP%203000A&amp;amp;amp;term=Fall&amp;amp;amp;year=2007 here].  A backup copy is [http://www.scs.carleton.ca/~soma/os-2007f/course_outline_printable.php.html here].&lt;br /&gt;
&lt;br /&gt;
==Running Linux at Home==&lt;br /&gt;
&lt;br /&gt;
To give you an opportunity to become more familiar with Linux and UNIX, consider running a Linux distribution on your own machine if you can.  I suggest looking at [http://www.ubuntu.com Ubuntu] or [http://www.debian.org Debian] (the distribution used in the lab).&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t want to dual boot from Windows/MacOS X or you just don&#039;t want to worry about repartitioning, you can run Linux in a virtual machine.&lt;br /&gt;
See [[Running Linux in a Virtual Machine]] for more information.&lt;br /&gt;
&lt;br /&gt;
==Proposal Meetings==&lt;br /&gt;
&lt;br /&gt;
Feedback on draft proposals will be given though in-person meetings with Prof. Somayaji.  Please add yourself to the [[Proposal Meeting Schedule]] page.&lt;br /&gt;
&lt;br /&gt;
==Lectures and Deadlines==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table style=&amp;quot;width: 100%;&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Date&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Due/In Class&lt;br /&gt;
    &amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Topics&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th&amp;gt;&lt;br /&gt;
    &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;Readings&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Sept. 10th&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;[[Class Outline]]&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;&lt;br /&gt;
      &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Sept. 12th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#1: [[Introduction]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 1&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Sept. 17th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#2: [[Using the Operating System]], [http://www.scs.carleton.ca/~soma/os-2007f/labs/comp3000-2007F-lab1.pdf Lab 1 introduction]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 2&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Sept. 19th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#3: [[Operating System Organization]] (Glenn)&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 3&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Sept. 24th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#4: [[Computer Organization]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 4&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Sept. 26th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#5: [[Device Management]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 5&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Oct. 1st&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;[http://www.scs.carleton.ca/~soma/os-2007f/labs/comp3000-2007F-lab1-solution.pdf Lab 1]&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#6: [[Implementing Processes, Threads, and Resources]], [http://www.scs.carleton.ca/~soma/os-2007f/labs/lab2 Lab 2 introduction]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 6&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Oct. 3rd&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#7: [[Basic Synchronization Principles]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 8&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Oct. 8th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Thanksgiving&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;[http://www.cryptonomicon.com/beginning.html In the Beginning was the Command Line].&lt;br /&gt;
          Prettier version [http://www.csn.ul.ie/%7Ecaolan/Texts/stephenson.html here] (optional)&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Oct. 10th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#8: [[High-level Synchronization and IPC]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 9&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Oct. 15th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;[http://www.scs.carleton.ca/~soma/os-2007f/labs/lab2/comp3000-2007F-lab2-sol.pdf Lab 2] (10pm on WebCT)&lt;br /&gt;
      &lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;[[Test 1 Review]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Oct. 17th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;[[Test 1 Review]] (cont.)&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Oct. 22nd&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;[http://homeostasis.scs.carleton.ca/~soma/os-2007f/comp3000-test1-2007F-sol.pdf Test 1]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Oct. 24th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#9: [[Scheduling]], [http://homeostasis.scs.carleton.ca/~soma/os-2007f/labs/lab3/ Lab 3 Introduction]&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 7 &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Oct. 29th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#10: [[Virtual Memory]] &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 10 &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Oct. 31st&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#11: [[Memory Management]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 11&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Nov. 5th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;[http://www.scs.carleton.ca/~soma/os-2007f/labs/lab3/lab3-sol.pdf Lab 3]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#12: [[Deadlock]], [http://homeostasis.scs.carleton.ca/~soma/os-2007f/labs/lab4/ Lab 4 Introduction]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 12&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Nov. 7th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#13: [[File Management]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 13&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Nov. 12th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt; &lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#14: [[Networks]] &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 15&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Nov. 14th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Paper Outline&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#15: [[Protection and Security]] (Glenn)&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 14&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Nov. 19th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt; &lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#16: [[Remote Files]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 16&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Nov. 21st&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#17: [[Security 2]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Nov. 26th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Lab 4&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;[[Test 2 Review]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Nov. 28th&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Test 2&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt; &lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Chap. 17 &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Dec. 3rd&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;Paper Final Draft&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;#21: [[The Future of Operating Systems]]&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt; &lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1689</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1689"/>
		<updated>2007-11-20T21:14:37Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory Lecture 10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1688</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1688"/>
		<updated>2007-11-20T21:13:49Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory Lecture 11&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1683</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1683"/>
		<updated>2007-11-18T20:40:26Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines how these page frames will be loaded and unloaded by the virtual memory system.&lt;br /&gt;
&lt;br /&gt;
Three basic policies in defining paging algorithm are&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1682</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1682"/>
		<updated>2007-11-13T12:16:59Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines hwo tehse page frames will be loaded and unloaded by the virtual memory system&lt;br /&gt;
three basic policies in defining paging algorithm are&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1681</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1681"/>
		<updated>2007-11-13T03:21:13Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines hwo tehse page frames will be loaded and unloaded by the virtual memory system&lt;br /&gt;
three basic policies in defining paging algorithm are&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1680</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1680"/>
		<updated>2007-11-13T03:08:36Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Static Paging algorithms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines hwo tehse page frames will be loaded and unloaded by the virtual memory system&lt;br /&gt;
three basic policies in defining paging algorithm are&lt;br /&gt;
&#039;&#039;&#039;fetch policy:&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy:&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy:&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1679</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1679"/>
		<updated>2007-11-13T03:08:16Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Static Paging algorithms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines hwo tehse page frames will be loaded and unloaded by the virtual memory system&lt;br /&gt;
three basic policies in defining paging algorithm are&lt;br /&gt;
&#039;&#039;&#039;fetch policy&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy&#039;&#039;&#039;&lt;br /&gt;
determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy&#039;&#039;&#039;&lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1678</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1678"/>
		<updated>2007-11-13T03:07:56Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Static Paging algorithms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines hwo tehse page frames will be loaded and unloaded by the virtual memory system&lt;br /&gt;
three basic policies in defining paging algorithm are&lt;br /&gt;
&#039;&#039;&#039;fetch policy&#039;&#039;&#039;&lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;replacement policy&#039;&#039;&#039;&lt;br /&gt;
   determines which page should be removed from primary memory if all page       frames are full&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;placement policy&#039;&#039;&#039;&lt;br /&gt;
   &lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1677</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1677"/>
		<updated>2007-11-13T03:07:07Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines hwo tehse page frames will be loaded and unloaded by the virtual memory system&lt;br /&gt;
three basic policies in defining paging algorithm are&lt;br /&gt;
&#039;&#039;&#039;fetch policy&#039;&#039;&#039;&lt;br /&gt;
   &lt;br /&gt;
when a page should be loaded into memory&lt;br /&gt;
&#039;&#039;&#039;replacement policy&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
   determines which page should be removed from primary memory if all page   frames are full&lt;br /&gt;
&#039;&#039;&#039;placement policy&#039;&#039;&#039;&lt;br /&gt;
   &lt;br /&gt;
determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1676</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1676"/>
		<updated>2007-11-13T03:04:21Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Static Paging algorithms===&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines hwo tehse page frames will be loaded and unloaded by the virtual memory system&lt;br /&gt;
three basic policies in defining paging algorithm are&lt;br /&gt;
1) fetch policy&lt;br /&gt;
   when a page should be loaded into memory&lt;br /&gt;
2) replacement policy&lt;br /&gt;
   determines which page should be removed from primary memory if all page frames are full&lt;br /&gt;
3) placement policy&lt;br /&gt;
   determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
===Dynamic Paging algorithms===&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1675</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1675"/>
		<updated>2007-11-13T03:03:39Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
=== Headline text ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static Paging algorithms&#039;&#039;&#039;&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines hwo tehse page frames will be loaded and unloaded by the virtual memory system&lt;br /&gt;
three basic policies in defining paging algorithm are&lt;br /&gt;
1) fetch policy&lt;br /&gt;
   when a page should be loaded into memory&lt;br /&gt;
2) replacement policy&lt;br /&gt;
   determines which page should be removed from primary memory if all page frames are full&lt;br /&gt;
3) placement policy&lt;br /&gt;
   determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dynamic Paging algorithms&#039;&#039;&#039;&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1674</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1674"/>
		<updated>2007-11-13T03:03:10Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
= Headline text =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static Paging algorithms&#039;&#039;&#039;&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines hwo tehse page frames will be loaded and unloaded by the virtual memory system&lt;br /&gt;
three basic policies in defining paging algorithm are&lt;br /&gt;
1) fetch policy&lt;br /&gt;
   when a page should be loaded into memory&lt;br /&gt;
2) replacement policy&lt;br /&gt;
   determines which page should be removed from primary memory if all page frames are full&lt;br /&gt;
3) placement policy&lt;br /&gt;
   determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dynamic Paging algorithms&#039;&#039;&#039;&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1673</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1673"/>
		<updated>2007-11-13T03:02:04Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static Paging algorithms&#039;&#039;&#039;&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines hwo tehse page frames will be loaded and unloaded by the virtual memory system&lt;br /&gt;
three basic policies in defining paging algorithm are&lt;br /&gt;
1) fetch policy&lt;br /&gt;
   when a page should be loaded into memory&lt;br /&gt;
2) replacement policy&lt;br /&gt;
   determines which page should be removed from primary memory if all page frames are full&lt;br /&gt;
3) placement policy&lt;br /&gt;
   determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dynamic Paging algorithms&#039;&#039;&#039;&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1672</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1672"/>
		<updated>2007-11-13T03:01:10Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paging Algorithms==&lt;br /&gt;
There are two basic types of pagig algorithms: static and dynamic allocation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static Paging algorithms&#039;&#039;&#039;&lt;br /&gt;
allocates a fixed number of page frames to a process when it is created. The paging policy defines hwo tehse page frames will be loaded and unloaded by the virtual memory system&lt;br /&gt;
three basic policies in defining paging algorithm are&lt;br /&gt;
- fetch policy&lt;br /&gt;
  - when a page should be loaded into memory&lt;br /&gt;
- replacement policy&lt;br /&gt;
  - determines which page should be removed from primary memory if all page frames are full&lt;br /&gt;
- placement policy&lt;br /&gt;
  - determines where the fetched page whould be loaded into primary memory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dynamic Paging algorithms&#039;&#039;&#039;&lt;br /&gt;
Dynamic paging algorithms adjust the memory allocation to match the process&#039;s needs as they change.&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Diagram3_c3.jpeg&amp;diff=1671</id>
		<title>File:Diagram3 c3.jpeg</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Diagram3_c3.jpeg&amp;diff=1671"/>
		<updated>2007-11-13T02:33:22Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Diagram3_c2.jpg&amp;diff=1670</id>
		<title>File:Diagram3 c2.jpg</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Diagram3_c2.jpg&amp;diff=1670"/>
		<updated>2007-11-13T01:58:22Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1669</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1669"/>
		<updated>2007-11-13T01:57:17Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1668</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1668"/>
		<updated>2007-11-13T01:51:06Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Memory Management &amp;amp; Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and (hence is using some resources) but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1666</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1666"/>
		<updated>2007-11-12T20:55:20Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and (hence is using some resources) but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram3_c2.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Diagram3_c2.JPG&amp;diff=1665</id>
		<title>File:Diagram3 c2.JPG</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Diagram3_c2.JPG&amp;diff=1665"/>
		<updated>2007-11-12T20:52:03Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1664</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1664"/>
		<updated>2007-11-12T20:50:38Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and (hence is using some resources) but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:diagram3.jpg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The_address_space_and_pages.JPG]]&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:The_address_space_and_pages.JPG&amp;diff=1663</id>
		<title>File:The address space and pages.JPG</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:The_address_space_and_pages.JPG&amp;diff=1663"/>
		<updated>2007-11-12T20:49:38Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:The_address_space_and_pages.jpg&amp;diff=1662</id>
		<title>File:The address space and pages.jpg</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:The_address_space_and_pages.jpg&amp;diff=1662"/>
		<updated>2007-11-12T20:49:01Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1661</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1661"/>
		<updated>2007-11-12T20:48:00Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Paging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and (hence is using some resources) but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:diagram3.jpg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;br /&gt;
&lt;br /&gt;
[[Image:The address space and pages.bmp]]&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Diagram1_c2.jpg&amp;diff=1659</id>
		<title>File:Diagram1 c2.jpg</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Diagram1_c2.jpg&amp;diff=1659"/>
		<updated>2007-11-10T17:52:39Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1658</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1658"/>
		<updated>2007-11-10T17:48:31Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;(Currently UNDER CONSTRUCTION!)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and (hence is using some resources) but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:diagram3.jpg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1657</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1657"/>
		<updated>2007-11-10T17:47:55Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(Currently UNDER CONSTRUCTION!)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and (hence is using some resources) but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:diagram3.jpg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1656</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1656"/>
		<updated>2007-11-10T17:47:22Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Paging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(currently under construction!)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and (hence is using some resources) but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:diagram3.jpg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
Thisis an allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space(page) whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
&lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1655</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1655"/>
		<updated>2007-11-10T17:39:50Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Memory Segmentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(currently under construction!)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and (hence is using some resources) but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:diagram3.jpg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
Technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger than pages, and can be of a variable size.&lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space-a page- whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
reference ( text) &lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1654</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1654"/>
		<updated>2007-11-10T17:38:11Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Fragmentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(currently under construction!)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and (hence is using some resources) but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:diagram3.jpg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. An example is that many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger then pages, and can be of a variable size. &lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space-a page- whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
reference ( text) &lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1653</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1653"/>
		<updated>2007-11-10T17:36:17Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Overlays */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(currently under construction!)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and (hence is using some resources) but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays is when exactly do you load x, y or z. We have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t talk to each other , they need some sort of cut  / paste buffer. The problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
Fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many? &lt;br /&gt;
&lt;br /&gt;
[[Image:diagram3.jpg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive because programming manually has to manage memory in addition to being inefficient. How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. Ex in many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger then pages, and can be of a variable size. &lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space-a page- whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
reference ( text) &lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1652</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1652"/>
		<updated>2007-11-10T17:32:46Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Swapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(currently under construction!)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and (hence is using some resources) but is inactive for relatively long periods ( and hence not using the CPU). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays , when do you load x, y or z, we have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t now talk to each other , they need some sort of cut  / paste buffer. &lt;br /&gt;
Problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
One problem: fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many?&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram3.jpg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive b/c programming manually has to manually manage memory plus, it’s is inefficient  How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. Ex in many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger then pages, and can be of a variable size. &lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space-a page- whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
reference ( text) &lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Diagram4.jpg&amp;diff=1651</id>
		<title>File:Diagram4.jpg</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Diagram4.jpg&amp;diff=1651"/>
		<updated>2007-11-09T22:10:33Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1650</id>
		<title>Deadlock</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Deadlock&amp;diff=1650"/>
		<updated>2007-11-09T22:10:06Z</updated>

		<summary type="html">&lt;p&gt;Dmiyusov: /* Overlays */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;(currently under construction!)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Virtual Memory&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Swapping==&lt;br /&gt;
A memory management technique where a process may periodically have its primary memory space deallocated. This forces the swapped-out process to compete for memory before it can once again compete for the processor&lt;br /&gt;
&lt;br /&gt;
Swapping is especially well suited to timesharing systems since such systems often have times when a user logs onto the machine  and hence is using some resources, but is inactive for relatively long periods ( and hence not using the CPU). A swapping memory manager accommodates the timesharing scenario by allocating memory to a process  while the user is requesting service at a relatively high rate but deallocating memory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Diagram1.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Overlays==&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Significant problem with overlays , when do you load x, y or z, we have to make sure they are there. Developers need to think carefully what they put in these modules. &lt;br /&gt;
Another problem with swapping is that x, y, and z can’t now talk to each other , they need some sort of cut  / paste buffer. &lt;br /&gt;
Problem is that x, y and z are different sizes and we need to fit the biggest one in the overlay area.&lt;br /&gt;
&lt;br /&gt;
X,Y and Z are all desired to be loaded in the same area of RAM. In traditional overlay schemes this would be an index.&lt;br /&gt;
&lt;br /&gt;
Classic problem of memory management:&lt;br /&gt;
One problem: fragmentation, difference between size of overlay area and size of the overlays&lt;br /&gt;
&lt;br /&gt;
Instead of having one overlay area what if we had many?&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram3.jpg]]&lt;br /&gt;
&lt;br /&gt;
This is primitive b/c programming manually has to manually manage memory plus, it’s is inefficient  How do you deal with the situation so that you don’t need to deal with it every again?&lt;br /&gt;
First step is to change this and to add relocation. To do that we need to have some sort of indirection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:diagram4.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Fragmentation==&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Data fragmentation&#039;&#039;&#039;&lt;br /&gt;
Reduces the amount of fragmentation in file systems. Occurs when a piece of data in memory is broken up into many pieces. Two types of fragmentation which exist are internal fragmentation and external fragmentation&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Internal Fragmentation&#039;&#039;&#039;&lt;br /&gt;
Space is wasted in return for increased efficiency or simplicity. Ex in many file systems files always start at the beginning of a sector, which simplifies organization and makes it easier to grow files. Any space that is left over between the last byte of the file and the first byte of the next sector is internal fragmentation. Internal fragmentation occurs when the index pages are not being used to their maximum volume&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;External Fragmentation&#039;&#039;&#039;&lt;br /&gt;
In such a fragmentation, the free space which is available for storage is divided into many small pieces. The storage space is of many different sizes. &lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;&#039;Page&#039;&#039;&#039;&lt;br /&gt;
fixed-length block of main memory, that is contiguous in both physical addressing and virtual memory addressing.&lt;br /&gt;
&lt;br /&gt;
==Memory Segmentation==&lt;br /&gt;
technique used to divide memory into smaller units. It is an extension of the ideas suggested by the use of relocation-limit registers for relocating and bound checking blocks of memory. Memory contents are referenced using a two-component virtual address &amp;lt;segmentNumber, offset&amp;gt; .&lt;br /&gt;
Segment number identifies the particular logical block of memory and offset is a linear offset from the beginning of the segment. &lt;br /&gt;
Segmentation provides more programmer control over the units of transfer in the memory system than paging does. Memory segments are distinct from memory pages because the segments are usually much larger then pages, and can be of a variable size. &lt;br /&gt;
&lt;br /&gt;
==Paging==&lt;br /&gt;
allocation strategy in a paging system to reduce external fragmentation by transferring a fixed-size unit of virtual address space-a page- whenever a virtual address  in it is needed to execute the program. Every process’s virtual address space is logically divided into pages, with each page having the same number of location.&lt;br /&gt;
&lt;br /&gt;
The program translation image is constructed to fit in a set of G continguous memory locations, with virtual addresses ranging between 0 and G-1. When the process executes it is allocated enough primary memory to store the contents of H memory locations where H&amp;lt;G (that is the process has fewer physical memory locations than virtual addresses)&lt;br /&gt;
reference ( text) &lt;br /&gt;
In a binary computer the paging system maps the virtual addressees in the absolute module (0-G) into a set of n = 2^g pages, each of size c = 2^h. If G is not an integer multiple of the page size then part of the last page will be lost to internal fragmentation; the paging system will adjust G upward to hold the entire virtual address space. &lt;br /&gt;
&lt;br /&gt;
Physical address space is the portion of the primary memory allocated to the process. The units of allocation are page frames and these are blocks of primary memory which are the same size as the page. The physical address space can be though of as a set of m = 2^j page frames each of size c = 2^h, so the amount of primary memory allocated to the process is H = 2^(h+j)&lt;/div&gt;</summary>
		<author><name>Dmiyusov</name></author>
	</entry>
</feed>