<?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=Gsmith6</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=Gsmith6"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Gsmith6"/>
	<updated>2026-04-22T11:21:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=6848</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=6848"/>
		<updated>2010-12-03T05:57:37Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Comments &amp;amp; Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Comments &amp;amp; Discussion=&lt;br /&gt;
&lt;br /&gt;
alrighty then.... I&#039;m done for the night, I&#039;ve just gone through it and it seems to flow nicely, and I made a few minor corrections here and there. I did have to make a major edit where I wrote all of the security invariants out and failed to notice that Youcef had done a similar thing just below it. Oh well.... It&#039;s fixed now. Night everyone&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 05:57, 3 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;ve added a few paragraphs in the background and the contribution sections including their references. Feel free to edit or add to them&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 04:05, 3 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget your references guys! &lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 00:30, 3 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m adding bits and pieces here and there in most of the sections including references. &lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 22:01, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--Writing up a critique of the researches evaluation methods for the critique section now&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]] 21:25, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ve added to the Contribution part of the essay. I&#039;ve basically explained as much as I thought was pertinent in what the section was asking for but don&#039;t be shy to add more!&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 14:11, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IBOS is designed to talk directly to the hardware. That&#039;s why they have everything at the lower level. All that extra TCB in other browsers was for all the extra stuff like services, OS components blah blah. I get their drift and how less code is secure but I don&#039;t get how they did it! From where do they get the services they claim to have taken out but still operates the same as any other browser. There is a catch somewhere but I can&#039;t find it in the paper or maybe I&#039;m blind. I&#039;ve been reading a lot of text but I got nowhere, its either too complex or not close to what I&#039;m looking for. &lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 04:19, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Brief description of the research problem below. (Still Needs expanding/fleshing out. can anyone help expand on why exactly shrinking the TCB will be more secure. I&#039;m fuzzy on that)&lt;br /&gt;
 &lt;br /&gt;
The IBOS attempts to improve the security of web browsers. The writers argue that the large size of the trusted code bases (TCB) which modern web browsers make use of increases the possibility of a security hole. For example a hijacked window manager could be used to draw a fake phishing website overtop a web browser. The researchers solution is drastically shrinking the size of the TCB. The TCB is shrunk by turning the web browser into an operating system in itself with direct access to hardware abstractions. &lt;br /&gt;
&lt;br /&gt;
Meanwhile, the IBOS must still support existing web applications while maintaining security.&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]] 03:36, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is what I understand of the TCB. Basically it is all of the components that are essential to the security of the computer system. Pretty much the stuff inside the kernel that if is compromised is &amp;quot;bad news bears&amp;quot;. By removing things like device drivers, you reduce the TCB quite considerably (like probably 10s of thousands of lines of code). The smaller the TCB, the less of a chance that you have of an essential component getting corrupted. I don&#039;t know if I&#039;m explaining it right, but maybe someone else can expand on what I&#039;ve written here.&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 16:13, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EDIT: I&#039;ve pretty much explained the background concept behind IBOS and I kind of added the way it&#039;s executed near the end. Feel free to move that into the research section.&lt;br /&gt;
&lt;br /&gt;
I can work on the background of IBOS&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 23:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It seems we only have 5/7 members. We should start splitting up the tasks and assign who gets what. So if everybody writes what section they would like to work on that would be great.&lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 15:19, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll do the contribution section. I&#039;ll be reading through the paper thoroughly today and taking notes as I go. I&#039;ll post them later on this page as a sort of cheat-sheet/reminder. --[[User:Gsmith6|Gsmith6]] 17:45, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Group Members=&lt;br /&gt;
&lt;br /&gt;
Leave your name and e-mail address if you are assigned to this question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ymoussou|Youcef M.]] moussoud@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am alive and still in the class, selliot3@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 18:12, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Still in the class, andrewtubman84@gmail.com&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]]&lt;br /&gt;
&lt;br /&gt;
I&#039;m here. I have received an email reply from John Vanden Heuvel as well (he may not see this) gsmith0413@gmail.com&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:31, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
I am here... and replied to the email&lt;br /&gt;
&lt;br /&gt;
=Question 2 members=&lt;br /&gt;
&lt;br /&gt;
Elliott Charles selliot3&lt;br /&gt;
&lt;br /&gt;
Moussoud Youcef ymoussou&lt;br /&gt;
&lt;br /&gt;
Pharand Alexandre apharan2&lt;br /&gt;
&lt;br /&gt;
Smith Geoffrey gsmith6&lt;br /&gt;
&lt;br /&gt;
Tubman Andrew   atubman&lt;br /&gt;
&lt;br /&gt;
Vanden Heuvel John jvheuvel&lt;br /&gt;
&lt;br /&gt;
Vivekanandarajah Vijitharan vviveka2&lt;br /&gt;
&lt;br /&gt;
=Raw Information=&lt;br /&gt;
&lt;br /&gt;
The web itself is ubiquitous which a person can use for communication; banking, business, social networking and it can be useful for other purposes. There are different type of vulnerabilities web applications, browser, OS and library vulnerabilities. Insecure web browsers are monolithic, and they are easy to exploit. Secure  web browser such as chrome isolate web applications and it still contain huge trusted computing base (TCB). Browser abstractions as the first-class OS, contains reduced TCB for web browser and it also have protection to withstand attacks to most components. [[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Extra Resources=&lt;br /&gt;
http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
I found some presentation slides by Shuo Tang, Haohui Mai and Sam King, the authors and developers of IBOS&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:35, 25 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6843</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6843"/>
		<updated>2010-12-03T05:53:53Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
In the world we are in, the web is everywhere and runs in different operating systems and browsers. The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It was developed by three graduate students at the University of Illinois. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. These attackers are always finding new ways of exploiting even the most secure systems. Just recently, cross-site scripting (XSS) has become the most common security vulnerability over the age old buffer overflow [[#References | [1]]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks [[#References | [1]]]. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted computing base(TCB). IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By moving all of these subsystems, the IBOS system ultimately aims to reduce the computer&#039;s TCB. &lt;br /&gt;
&lt;br /&gt;
===Monolithic vs Modular===&lt;br /&gt;
&lt;br /&gt;
The internet today has become an important part of our lives, it is used everywhere and in everyday life. It all started with the user only being allowed to read and browse the content, but today the expansion has led to allow the ability to write our own content and have our own impact on the rest of the world. The introduction of Web 2.0 brought upon an enormous change to the web, as well as introducing the concept of security concerns. Modern web applications are mostly designed to meet a newer modular architecture. &lt;br /&gt;
&lt;br /&gt;
Modularly designed architecture browsers such as Chrome are designed in a way that each browsing instance is assigned to a unique operating system process. It is designed to perform much better in terms of fault-tolerance, accountability, security, memory management and performance. Chrome has the ability to be able to run even when another web program crashes. Memory management in a modular architecture is designed to handle each process at a time and when the program closes the memory space is ready to be used by another program. Scheduling for modular browsers handled at the OS level and web programs are able to run parallel.&lt;br /&gt;
&lt;br /&gt;
Monolithic architectures browser such as Firefox, are monolithic and easy to exploit, since they run in a single address space. It is designed in a way that all the components for the web run in a single process. Disadvantages about monolithic architectures are that if a single web program crashes, then all of the other web browsers also crash. This can cause all of the data to be lost that is currently saved. Memory management is also considered poor in a monolithic architecture because it allocates memory at the beginning of the web program and may contain leaks. This is a major problem, because when the program finishes execution, the memory leak will have grown exponentially.&lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. It&#039;s a combination of kernel and trusted processes made of hardware, firmware, and software that are critical to a computer&#039;s security [[#References | [2]]]. In the words of Lampson et al., TCB is defined as: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;a small amount of software and hardware that security depends on and that we distinguish from a much larger amount that can misbehave without affecting security.&amp;quot;&#039;&#039; [[#References | [3]]].&lt;br /&gt;
&lt;br /&gt;
Modern operating system-browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, it becomes smaller, thereby reducing the risk of having an attack get inside.&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are continuously being revised and updated to keep ahead of the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, mostly harmless assaults on web applications, but many attacks are on the browser or even the operating system and its libraries. Since the browser runs lower on the shared storage stack, a successful attack on a browser can have horrible repercussions because it gives access to all of the browser data for all of the web applications. It also provides the attacker with access to other resources on the system which is being exploited. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system. This is partly because the attackers can access arbitrary states and events, allowing them to have full control over the system. The focus of this research is to prevent and decrease the attacks on the browser, libraries, operating systems and system services.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&lt;br /&gt;
===Architecture and Design=== &lt;br /&gt;
The authors have developed IBOS to reduce security risks, without compromising speed and efficiency. One of the ways they have achieved this is through their implementation of process creation. Essentially there are two types of processes. A web page instance and a traditional process. Any time the user opens a new tab, clicks on a link, or enters a web address in the uniform resource locator(URL) bar, the IBOS kernel creates a new process. Upon creating a web page instance process, the kernel labels it with the originating address of the HTTP request. If a web site such as &#039;&#039;facebook.com&#039;&#039; decides to host an outside script, also known as an iframe, from another website, the kernel creates a new process for the embedded script and labels it appropriately. Traditional processes are every other process that is created for the local machine. These processes are simply labeled as &#039;&#039;localhost&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
An IBOS label contains a protocol, domain and port. By creating unique labels for each web page instance, the kernel can isolate them from one another. This prevents a compromised component from taking control of other processes. Also by labeling where requests come from, the IBOS kernel can ensure that the data it is receiving is in fact from the expected origin. Each time a process makes a request, the kernel checks to ensure that the process is in fact allowed to access the requested resources.&lt;br /&gt;
&lt;br /&gt;
Each time an HTTP request comes in over the network, the network process renders the HTTP into a TCP stream, which is in turn converted into a series of Ethernet frames that are sent to the network interface controller(NIC). By doing all of this, the process is excluded from accessing any data structure. The process must first pass through the kernel before it receives what it has requested.&lt;br /&gt;
&lt;br /&gt;
Through the use of twelve security invariants, the development team ensures that subsystems behave according to their intended purpose without interfering with other subsystems. The invariants are designed for different components such as driver, storage, network processes, and UI. &lt;br /&gt;
&lt;br /&gt;
For driver invariants, IBOS ensures drivers do not access DMA buffer directly and devices can only access validated DMA buffers. their approach is to separate the the management of device control registers from the use of device buffers. Using this separation, processes can fill device specific buffers for DMA transfers, and the IBOS kernel instructs the driver to enforce the device to use a verified DMA buffer. &lt;br /&gt;
&lt;br /&gt;
In the storage invariant, IBOS encrypts all objects before passing them to the storage subsystem. That way all of the key-value pairs maintain confidentiality and integrity even if the storage stack itself becomes compromised. &lt;br /&gt;
&lt;br /&gt;
The network process invariants are where the security is focused. The first two invariants are: The kernel must route network requests from web page instances to the proper network process, and the kernel must route Ethernet frames from the NIC to the proper network processes. To enforce all of these invariants, IBOS puts all network processes in their own protection domains. By putting network processes in their own protection domains, the kernel naturally ensures that network requests from web page instances and Ethernet frames from the NIC are routed to the correct network process. The third invariant is that the Ethernet frames from network processes to the NIC must have an IP address and TCP port that matches the origin of the network process. IBOS kernel checks all outgoing Ethernet frames before sending them to the NIC to check the IP address and TCP port against the label of the sending network process. The fourth invariant is HTTP data from network processes to web page instances must adhere to the SOP. The IBOS kernel inspects HTTP data before forwarding it to the appropriate web page instance and drops any HTML documents from different origins. The last invariant is that network processes for different web page instances must remain isolated by labelling the origin of the web page instance.&lt;br /&gt;
&lt;br /&gt;
As for the UI subsystem, IBOS kernel enforces 3 invariants. The first is the browser and web page content displays are isolated by using a frame buffer video driver and page protections to isolate portions of the screen. The second invariant is that only the current tab can access the screen, mouse, and keyboard by mapping the frame buffer memory region and routing mouse and keyboard events into the currently active web page instance. the final invariant is the URL of the current tab is displayed to the user by using the kernel display area to display the URL.&lt;br /&gt;
&lt;br /&gt;
The IBOS kernel also offers custom security by allowing web sites to specify a server-side policy file that IBOS retrieves to restrict network accesses for a web page instance.&lt;br /&gt;
&lt;br /&gt;
The security of the window manager in the browser is achieved by dividing the window into three exclusively owned horizontal sections. The top bar of the page can only be accessed by the kernel. This is where the URL, labelled by the kernel is displayed. The second section is controlled by the browser UI, which the developers have called the chrome. This is where the back buttons, URL bar and other objects found in various browsers are located. The rest of the page is reserved for the web page instance. This is where the web page is displayed. Although this division of responsibilities cannot completely eradicate phishing attacks, it does however give the user a better chance to realize that something is wrong. By displaying the URL as defined by the kernel in the uppermost bar, the user can see exactly which website is being displayed.   &lt;br /&gt;
&lt;br /&gt;
IBOS has a considerably smaller TCB compared to other modern browsers. Where both Chrome and Firefox come in at over 4 million plus lines of code in their trusted computing base, IBOS has only about 42,000. Since IBOS isolates each process, it was also able to prevent between 75-100% of vulnerabilities from affected components on a machine. Using Chrome, the researchers tested 175 known issues on the IBOS kernel which ranged from memory exploits to interface spoofing. Out of all the known issues, IBOS was able to prevent 135 or 77% of the issues whereas Chrome was only able to contain 83 of them. The issue is that Chrome is able to catch exploits in its rendering engine since it is in a sandbox but any exploits that took advantage of the browser kernel could not be prevented. This is not a problem for IBOS because many of the browser components inside the trusted computing base in Chrome have been brought outside of the IBOS TCB limiting what can be done with exploitation. IBOS also contains tabs abstraction which multiplexes the display between different web pages instances. Input devices are programmed to route to a visible tab, which prevents keylogger from hijacking another instance&#039;s session.&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
In terms of performance, IBOS is comparable to the two best performing web browsers currently released: Firefox and Chrome. For websites such as Google Maps and Facebook, IBOS actually performs much better than Firefox while loading pages. This may be due partly to the fact that IBOS was developed with the WebKit engine, which has been optimized to run Google Maps. For Facebook and Wikipedia, sites that use many HTTP requests, IBOS performs slightly slower than the other two browsers, but for the others, where there are only a few HTTP requests, IBOS runs just as quickly as the others.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
This paper was very well organized and well executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
===Evaluation===&lt;br /&gt;
The evaluation of the IBOS security has some flaws, it is not very thorough and the data is potentially confounding. When the authors were testing two systems that could not be compared head-to-head, they made many assumptions that could possibly be wrong.  &lt;br /&gt;
&lt;br /&gt;
The IBOS has shown through internal testing that it is able to resist 77% of  attacks from a set of 175 security bugs whereas Chrome is only able prevent 46%.  The improvement sounds impressive however, the set of security bugs they tested against was obtained from Google “Chrome’s bug tracker”.    The fact they are comparing known security flaws in Chrome against the new IBOS makes their improvement of 31% far less impressive. &lt;br /&gt;
&lt;br /&gt;
In addition, Their initial test set contained 217 bugs with duplicates removed, and 42 bugs were omitted because they were denial of service attacks and the IBOS does not protect against that form of attack. It is understandable this is out of the scope of this research. However, that is a big set of flaws which are not addressed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the researchers only compared their results against the Chrome web browser. A comparison which also includes other browsers such as Mozilla Firefox, Internet Explorer and Safari would be much more compelling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] CVE - Common Vulnerabilities and Exposures (CVE). http://cve.mitre.org.&lt;br /&gt;
&lt;br /&gt;
[2] Rushby, John (1981). &amp;quot;Design and Verification of Secure Systems&amp;quot;. 8th ACM Symposium on Operating System Principles. Pacific Grove, California, US. pp. 12–21.&lt;br /&gt;
&lt;br /&gt;
[3] B. Lampson, M. Abadi, M. Burrows and E. Wobber, Authentication in Distributed Systems: Theory and Practice, ACM Transactions on Computer Systems 1992, on page 6.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6819</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6819"/>
		<updated>2010-12-03T05:26:23Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Architecture and Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
In the world we are in, the web is everywhere and runs in different operating systems and browsers. The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It was developed by three graduate students at the University of Illinois. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. These attackers are always finding new ways of exploiting even the most secure systems. Just recently, cross-site scripting (XSS) has become the most common security vulnerability over the age old buffer overflow [[#References | [1]]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks [[#References | [1]]]. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted computing base(TCB). IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By moving all of these subsystems, the IBOS system ultimately aims to reduce the computer&#039;s TCB. &lt;br /&gt;
&lt;br /&gt;
===Monolithic vs Modular===&lt;br /&gt;
&lt;br /&gt;
The internet today has become an important part of our lives, it is used everywhere and in everyday life. It all started with the user only being allowed to read and browse the content, but today the expansion has led to allow the ability to write our own content and have our own impact on the rest of the world. The introduction of Web 2.0 brought upon an enormous change to the web, as well as introducing the concept of security concerns. Modern web applications are mostly designed to meet a newer modular architecture. &lt;br /&gt;
&lt;br /&gt;
Modularly designed architecture browsers such as Chrome are designed in a way that each browsing instance is assigned to a unique operating system process. It is designed to perform much better in terms of fault-tolerance, accountability, security, memory management and performance. Chrome has the ability to be able to run even when another web program crashes. Memory management in a modular architecture is designed to handle each process at a time and when the program closes the memory space is ready to be used by another program. Scheduling for modular browsers handled at the OS level and web programs are able to run parallel.&lt;br /&gt;
&lt;br /&gt;
Monolithic architectures browser such as Firefox, are monolithic and easy to exploit, since they run in a single address space. It is designed in a way that all the components for the web run in a single process. Disadvantages about monolithic architectures are that if a single web program crashes, then all of the other web browsers also crash. This can cause all of the data to be lost that is currently saved. Memory management is also considered poor in a monolithic architecture because it allocates memory at the beginning of the web program and may contain leaks. This is a major problem, because when the program finishes execution, the memory leak will have grown exponentially.&lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. It&#039;s a combination of kernel and trusted processes made of hardware, firmware, and software that are critical to a computer&#039;s security [[#References | [2]]]. In the words of Lampson et al., TCB is defined as: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;a small amount of software and hardware that security depends on and that we distinguish from a much larger amount that can misbehave without affecting security.&amp;quot;&#039;&#039; [[#References | [3]]].&lt;br /&gt;
&lt;br /&gt;
Modern operating system-browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, it becomes smaller, thereby reducing the risk of having an attack get inside.&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are continuously being revised and updated to keep ahead of the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, mostly harmless assaults on web applications, but many attacks are on the browser or even the operating system and its libraries. Since the browser runs lower on the shared storage stack, a successful attack on a browser can have horrible repercussions because it gives access to all of the browser data for all of the web applications. It also provides the attacker with access to other resources on the system which is being exploited. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system. This is partly because the attackers can access arbitrary states and events, allowing them to have full control over the system. The focus of this research is to prevent and decrease the attacks on the browser, libraries, operating systems and system services.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&lt;br /&gt;
===Architecture and Design=== &lt;br /&gt;
The authors have developed IBOS to reduce security risks, without compromising speed and efficiency. One of the ways they have achieved this is through their implementation of process creation. Essentially there are two types of processes. A web page instance and a traditional process. Any time the user opens a new tab, clicks on a link, or enters a web address in the uniform resource locator(URL) bar, the IBOS kernel creates a new process. Upon creating a web page instance process, the kernel labels it with the originating address of the HTTP request. If a web site such as &#039;&#039;facebook.com&#039;&#039; decides to host an outside script, also known as an iframe, from another website, the kernel creates a new process for the embedded script and labels it appropriately. Traditional processes are every other process that is created for the local machine. These processes are simply labeled as &#039;&#039;localhost&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
An IBOS label contains a protocol, domain and port. By creating unique labels for each web page instance, the kernel can isolate them from one another. This prevents a compromised component from taking control of other processes. Also by labeling where requests come from, the IBOS kernel can ensure that the data it is receiving is in fact from the expected origin. Each time a process makes a request, the kernel checks to ensure that the process is in fact allowed to access the requested resources.&lt;br /&gt;
&lt;br /&gt;
Each time an HTTP request comes in over the network, the network process renders the HTTP into a TCP stream, which is in turn converted into a series of Ethernet frames that are sent to the network interface controller(NIC). By doing all of this, the process is excluded from accessing any data structure. The process must first pass through the kernel before it receives what it has requested.&lt;br /&gt;
&lt;br /&gt;
Through the use of twelve security invariants, the development team ensures that subsystems behave according to their intended purpose. The following are all twelve security invariants:&lt;br /&gt;
&lt;br /&gt;
SI 0: All components can only perform their designated functions.&lt;br /&gt;
&lt;br /&gt;
SI 1: Drivers cannot access DMA buffers directly.&lt;br /&gt;
&lt;br /&gt;
SI 2: Devices can only access validated DMA buffers.&lt;br /&gt;
&lt;br /&gt;
SI 3: All of the key-value pairs maintain confidentiality and integrity even if the storage stack becomes compromised&lt;br /&gt;
&lt;br /&gt;
	-this is acheived by encrypting objects before passing them to the storage subsystem&lt;br /&gt;
&lt;br /&gt;
SI 4: The kernel must route network requests from web page instances to the proper network process&lt;br /&gt;
&lt;br /&gt;
SI 5: The kernel must route Ethernet frames from the NIC to the proper netwok processes&lt;br /&gt;
&lt;br /&gt;
SI 6: Ethernet frames from network processes to the NIC must have an IP address and TCP port that matches the origin of the network process&lt;br /&gt;
&lt;br /&gt;
SI 7: HTTP data from network process to web page instances must adhere to the SOP&lt;br /&gt;
&lt;br /&gt;
SI 8: Network processes for different web page instances must remain isolated&lt;br /&gt;
&lt;br /&gt;
SI 9: The browser chrome and web page content displays are isolated&lt;br /&gt;
&lt;br /&gt;
SI 10: Only the current tab can access the screen, mouse and keyboard&lt;br /&gt;
&lt;br /&gt;
SI 11: The URL of the current tab is displayed to the user&lt;br /&gt;
&lt;br /&gt;
The security of the window manager in the browser is achieved by dividing the window into three exclusively owned horizontal sections. The top bar of the page can only be accessed by the kernel. This is where the URL, labelled by the kernel is displayed. The second section is controlled by the browser UI, which the developers have called the chrome. This is where the back buttons, URL bar and other objects found in various browsers are located. The rest of the page is reserved for the web page instance. This is where the web page is displayed. Although this division of responsibilities cannot completely eradicate phishing attacks, it does however give the user a better chance to realize that something is wrong. By displaying the URL as defined by the kernel in the uppermost bar, the user can see exactly which website is being displayed.   &lt;br /&gt;
&lt;br /&gt;
IBOS has considerably smaller TCB compared to other modern browsers. Where both Chrome and Firefox come in at over 4 million plus lines of code in their trusted computing base, IBOS has only about 42,000. Since IBOS isolates each process, it was also able to prevent between 75-100% of vulnerabilities from affected components on a machine. Using Chrome, the researchers tested 175 known issues on the IBOS kernel which ranged from memory exploits to interface spoofing. Out of all the known issues, IBOS was able to prevent 135 or 77% of the issues whereas Chrome was only able to contain 83 of them. The issue is that Chrome is able to catch exploits in its rendering engine since it is in a sandbox but any exploits that took advantage of the browser kernel could not be prevented. This is not a problem for IBOS because many of the browser components inside the trusted computing base in Chrome have been brought outside of the IBOS TCB limiting what can be done with exploitation. IBOS also contains tabs abstraction which multiplexes the display between different web pages instances. Input devices are programmed to route to a visible tab, which prevents keylogger from hijacking another instance&#039;s session.&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
In terms of performance, IBOS is comparable to the two best performing web browsers currently released: Firefox and Chrome. For websites such as Google Maps and Facebook, IBOS actually performs much better than Firefox while loading pages. This may be due partly to the fact that IBOS was developed with the WebKit engine, which has been optimized to run Google Maps. For Facebook and Wikipedia, sites that use many HTTP requests, IBOS performs slightly slower than the other two browsers, but for the others, where there are only a few HTTP requests, IBOS runs just as quickly as the others.&lt;br /&gt;
&lt;br /&gt;
IBOS have the same functionality as Firefox and Chrome which uses the standard Web kit but it gives better performance.&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
In addition to labels, IBOS has other approaches at reaching their goals in security. Security variants are a way for IBOS to enforce their subsystems to perform their designated functions without interfering with other subsystems. To reach this goal, they designed invariants for different components such as driver, storage, network processes, and UI invariants. &lt;br /&gt;
&lt;br /&gt;
For driver invariants, IBOS insures drivers do not access DMA buffer directly and devices can only access validated DMA buffers. their approach is to separate the the management of device control registers from the use of device buffers. Using this separation, processes can fill device specific buffers for DMA transfers, and the IBOS kernel instructs the driver to enforce the device to use a verified DMA buffer. &lt;br /&gt;
&lt;br /&gt;
In storage invariant IBOS encrypts all objects before passing them to the storage subsystem. That way All of the key-value pairs maintain confidentiality and integrity even if the storage stack itself becomes compromised. &lt;br /&gt;
&lt;br /&gt;
The network process invariants is where the security is focused. The first two invariants are: The kernel must route network requests from web page instances to the proper network process, and the kernel must route Ethernet frames from the NIC to the proper network processes. To enforce all of these invariants, IBOS puts all network processes in their own protection domains. By putting network processes in their own protection domains, the kernel naturally ensures that network requests from web page instances and Ethernet frames from the NIC are routed to the correct network process. The third invariant is that the Ethernet frames from network processes to the NIC must have an IP address and TCP port that matches the origin of the network process. IBOS kernel checks all outgoing Ethernet frames before sending them to the NIC to check the IP address and TCP port against the label of the sending network process. The fourth invariant is HTTP data from network processes to web page instances must adhere to the SOP. The IBOS kernel inspects HTTP&lt;br /&gt;
data before forwarding it to the appropriate web page instance and drops any HTML documents from different origins. The last invariant is that network processes for different web page instances must remain isolated by labelling the origin of the web page instance.&lt;br /&gt;
&lt;br /&gt;
As for the UI subsystem, IBOS kernel enforces 3 invariants. The first is the browser and web page content displays are isolated by using a frame buffer video driver and page protections to isolate portions of the screen. The second invariant is that only the current tab can access the screen, mouse, and keyboard by mapping the frame buffer memory region and routing mouse and keyboard events into the currently active web page instance. the final invariant is the URL of the current tab is displayed to the user by using the kernel display area to display the URL.&lt;br /&gt;
&lt;br /&gt;
The IBOS kernel also offers custom security by allowing web sites to specify a server-side policy file that IBOS retrieves to restrict network accesses for a web page instance.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
===Evaluation===&lt;br /&gt;
The evaluation of the IBOS security has some flaws,it is not very thorough and the data set the testing against is potentially confounding.  &lt;br /&gt;
&lt;br /&gt;
The IBOS has shown through internal testing that it is able to resist 77% of  attacks from a set of 175 security bugs whereas Chrome is only able prevent 46%.  The improvement sounds impressive however, the set of security bugs they tested against was obtained from Google “Chrome’s bug tracker”.    The fact they are comparing known security flaws in Chrome against the new IBOS makes their improvement of 31% far less impressive. &lt;br /&gt;
&lt;br /&gt;
In addition, Their initial test set contained 217 bugs with duplicates removed, and 42 bugs were omitted because they were denial of service attacks and the IBOS does not protect against that form of attack. It is understandable this is out of the scope of this research. However, that is a big set of flaws which are not addressed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the researches only compared their results against the Chrome web browser. A comparison which also includes other browsers such as Mozilla Firefox, Internet Explorer and Safari would be much more compelling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] CVE - Common Vulnerabilities and Exposures (CVE). http://cve.mitre.org.&lt;br /&gt;
&lt;br /&gt;
[2] Rushby, John (1981). &amp;quot;Design and Verification of Secure Systems&amp;quot;. 8th ACM Symposium on Operating System Principles. Pacific Grove, California, US. pp. 12–21.&lt;br /&gt;
&lt;br /&gt;
[3] B. Lampson, M. Abadi, M. Burrows and E. Wobber, Authentication in Distributed Systems: Theory and Practice, ACM Transactions on Computer Systems 1992, on page 6.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6812</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6812"/>
		<updated>2010-12-03T05:13:19Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Architecture and Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
In the world we are in, the web is everywhere and runs in different operating systems and browsers. The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It was developed by three graduate students at the University of Illinois. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. These attackers are always finding new ways of exploiting even the most secure systems. Just recently, cross-site scripting (XSS) has become the most common security vulnerability over the age old buffer overflow [[#References | [1]]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks [[#References | [1]]]. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted computing base(TCB). IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By moving all of these subsystems, the IBOS system ultimately aims to reduce the computer&#039;s TCB. &lt;br /&gt;
&lt;br /&gt;
===Monolithic vs Modular===&lt;br /&gt;
&lt;br /&gt;
The internet today has become an important part of our lives, it is used everywhere and in everyday life. It all started with the user only being allowed to read and browse the content, but today the expansion has led to allow the ability to write our own content and have our own impact on the rest of the world. The introduction of Web 2.0 brought upon an enormous change to the web, as well as introducing the concept of security concerns. Modern web applications are mostly designed to meet a newer modular architecture. &lt;br /&gt;
&lt;br /&gt;
Modularly designed architecture browsers such as Chrome are designed in a way that each browsing instance is assigned to a unique operating system process. It is designed to perform much better in terms of fault-tolerance, accountability, security, memory management and performance. Chrome has the ability to be able to run even when another web program crashes. Memory management in a modular architecture is designed to handle each process at a time and when the program closes the memory space is ready to be used by another program. Scheduling for modular browsers handled at the OS level and web programs are able to run parallel.&lt;br /&gt;
&lt;br /&gt;
Monolithic architectures browser such as Firefox, are monolithic and easy to exploit, since they run in a single address space. It is designed in a way that all the components for the web run in a single process. Disadvantages about monolithic architectures are that if a single web program crashes, then all of the other web browsers also crash. This can cause all of the data to be lost that is currently saved. Memory management is also considered poor in a monolithic architecture because it allocates memory at the beginning of the web program and may contain leaks. This is a major problem, because when the program finishes execution, the memory leak will have grown exponentially.&lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. It&#039;s a combination of kernel and trusted processes made of hardware, firmware, and software that are critical to a computer&#039;s security [[#References | [2]]]. In the words of Lampson et al., TCB is defined as: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;a small amount of software and hardware that security depends on and that we distinguish from a much larger amount that can misbehave without affecting security.&amp;quot;&#039;&#039; [[#References | [3]]].&lt;br /&gt;
&lt;br /&gt;
Modern operating system-browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, it becomes smaller, thereby reducing the risk of having an attack get inside.&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are continuously being revised and updated to keep ahead of the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, mostly harmless assaults on web applications, but many attacks are on the browser or even the operating system and its libraries. Since the browser runs lower on the shared storage stack, a successful attack on a browser can have horrible repercussions because it gives access to all of the browser data for all of the web applications. It also provides the attacker with access to other resources on the system which is being exploited. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system. This is partly because the attackers can access arbitrary states and events, allowing them to have full control over the system. The focus of this research is to prevent and decrease the attacks on the browser, libraries, operating systems and system services.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&lt;br /&gt;
===Architecture and Design=== &lt;br /&gt;
The authors have developed IBOS to reduce security risks, without compromising speed and efficiency. One of the ways they have achieved this is through their implementation of process creation. Essentially there are two types of processes. A web page instance and a traditional process. Any time the user opens a new tab, clicks on a link, or enters a web address in the uniform resource locator(URL) bar, the IBOS kernel creates a new process. Upon creating a web page instance process, the kernel labels it with the originating address of the HTTP request. If a web site such as &#039;&#039;facebook.com&#039;&#039; decides to host an outside script, also known as an iframe, from another website, the kernel creates a new process for the embedded script and labels it appropriately. Traditional processes are every other process that is created for the local machine. These processes are simply labeled as &#039;&#039;localhost&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
An IBOS label contains a protocol, domain and port. By creating unique labels for each web page instance, the kernel can isolate them from one another. This prevents a compromised component from taking control of other processes. Also by labeling where requests come from, the IBOS kernel can ensure that the data it is receiving is in fact from the expected origin. Each time a process makes a request, the kernel checks to ensure that the process is in fact allowed to access the requested resources.&lt;br /&gt;
&lt;br /&gt;
Each time an HTTP request comes in over the network, the network process renders the HTTP into a TCP stream, which is in turn converted into a series of Ethernet frames that are sent to the network interface controller(NIC). By doing all of this, the process is excluded from accessing any data structure. The process must first pass through the kernel before it receives what it has requested.&lt;br /&gt;
&lt;br /&gt;
Through the use of twelve security invariants, the development team ensures that subsystems behave according to their intended purpose. The following are all twelve security invariants:&lt;br /&gt;
&lt;br /&gt;
SI 0: All components can only perform their designated functions.&lt;br /&gt;
&lt;br /&gt;
SI 1: Drivers cannot access DMA buffers directly.&lt;br /&gt;
&lt;br /&gt;
SI 2: Devices can only access validated DMA buffers.&lt;br /&gt;
&lt;br /&gt;
SI 3: All of the key-value pairs maintain confidentiality and integrity even if the storage stack becomes compromised&lt;br /&gt;
&lt;br /&gt;
	-this is acheived by encrypting objects before passing them to the storage subsystem&lt;br /&gt;
&lt;br /&gt;
SI 4: The kernel must route network requests from web page instances to the proper network process&lt;br /&gt;
&lt;br /&gt;
SI 5: The kernel must route Ethernet frames from the NIC to the proper netwok processes&lt;br /&gt;
&lt;br /&gt;
SI 6: Ethernet frames from network processes to the NIC must have an IP address and TCP port that matches the origin of the network process&lt;br /&gt;
&lt;br /&gt;
SI 7: HTTP data from network process to web page instances must adhere to the SOP&lt;br /&gt;
&lt;br /&gt;
SI 8: Network processes for different web page instances must remain isolated&lt;br /&gt;
&lt;br /&gt;
SI 9: The browser chrome and web page content displays are isolated&lt;br /&gt;
&lt;br /&gt;
SI 10: Only the current tab can access the screen, mouse and keyboard&lt;br /&gt;
&lt;br /&gt;
SI 11: The URL of the current tab is displayed to the user&lt;br /&gt;
&lt;br /&gt;
IBOS has considerably smaller TCB compared to other modern browsers. Where both Chrome and Firefox come in at over 4 million plus lines of code in their trusted computing base, IBOS has only about 42,000. Since IBOS isolates each process, it was also able to prevent between 75-100% of vulnerabilities from affected components on a machine. Using Chrome, the researchers tested 175 known issues on the IBOS kernel which ranged from memory exploits to interface spoofing. Out of all the known issues, IBOS was able to prevent 135 or 77% of the issues whereas Chrome was only able to contain 83 of them. The issue is that Chrome is able to catch exploits in its rendering engine since it is in a sandbox but any exploits that took advantage of the browser kernel could not be prevented. This is not a problem for IBOS because many of the browser components inside the trusted computing base in Chrome have been brought outside of the IBOS TCB limiting what can be done with exploitation. IBOS also contains tabs abstraction which multiplexes the display between different web pages instances. Input devices are programmed to route to a visible tab, which prevents keylogger from hijacking another instance&#039;s session.&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
In terms of performance, IBOS is comparable to the two best performing web browsers currently released: Firefox and Chrome. For websites such as Google Maps and Facebook, IBOS actually performs much better than Firefox while loading pages. This may be due partly to the fact that IBOS was developed with the WebKit engine, which has been optimized to run Google Maps. For Facebook and Wikipedia, sites that use many HTTP requests, IBOS performs slightly slower than the other two browsers, but for the others, where there are only a few HTTP requests, IBOS runs just as quickly as the others.&lt;br /&gt;
&lt;br /&gt;
IBOS have the same functionality as Firefox and Chrome which uses the standard Web kit but it gives better performance.&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
In addition to labels, IBOS has other approaches at reaching their goals in security. Security variants are a way for IBOS to enforce their subsystems to perform their designated functions without interfering with other subsystems. To reach this goal, they designed invariants for different components such as driver, storage, network processes, and UI invariants. &lt;br /&gt;
&lt;br /&gt;
For driver invariants, IBOS insures drivers do not access DMA buffer directly and devices can only access validated DMA buffers. their approach is to separate the the management of device control registers from the use of device buffers. Using this separation, processes can fill device specific buffers for DMA transfers, and the IBOS kernel instructs the driver to enforce the device to use a verified DMA buffer. &lt;br /&gt;
&lt;br /&gt;
In storage invariant IBOS encrypts all objects before passing them to the storage subsystem. That way All of the key-value pairs maintain confidentiality and integrity even if the storage stack itself becomes compromised. &lt;br /&gt;
&lt;br /&gt;
The network process invariants is where the security is focused. The first two invariants are: The kernel must route network requests from web page instances to the proper network process, and the kernel must route Ethernet frames from the NIC to the proper network processes. To enforce all of these invariants, IBOS puts all network processes in their own protection domains. By putting network processes in their own protection domains, the kernel naturally ensures that network requests from web page instances and Ethernet frames from the NIC are routed to the correct network process. The third invariant is that the Ethernet frames from network processes to the NIC must have an IP address and TCP port that matches the origin of the network process. IBOS kernel checks all outgoing Ethernet frames before sending them to the NIC to check the IP address and TCP port against the label of the sending network process. The fourth invariant is HTTP data from network processes to web page instances must adhere to the SOP. The IBOS kernel inspects HTTP&lt;br /&gt;
data before forwarding it to the appropriate web page instance and drops any HTML documents from different origins. The last invariant is that network processes for different web page instances must remain isolated by labelling the origin of the web page instance.&lt;br /&gt;
&lt;br /&gt;
As for the UI subsystem, IBOS kernel enforces 3 invariants. The first is the browser and web page content displays are isolated by using a frame buffer video driver and page protections to isolate portions of the screen. The second invariant is that only the current tab can access the screen, mouse, and keyboard by mapping the frame buffer memory region and routing mouse and keyboard events into the currently active web page instance. the final invariant is the URL of the current tab is displayed to the user by using the kernel display area to display the URL.&lt;br /&gt;
&lt;br /&gt;
The IBOS kernel also offers custom security by allowing web sites to specify a server-side policy file that IBOS retrieves to restrict network accesses for a web page instance.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
===Evaluation===&lt;br /&gt;
The evaluation of the IBOS security has some flaws,it is not very thorough and the data set the testing against is potentially confounding.  &lt;br /&gt;
&lt;br /&gt;
The IBOS has shown through internal testing that it is able to resist 77% of  attacks from a set of 175 security bugs whereas Chrome is only able prevent 46%.  The improvement sounds impressive however, the set of security bugs they tested against was obtained from Google “Chrome’s bug tracker”.    The fact they are comparing known security flaws in Chrome against the new IBOS makes their improvement of 31% far less impressive. &lt;br /&gt;
&lt;br /&gt;
In addition, Their initial test set contained 217 bugs with duplicates removed, and 42 bugs were omitted because they were denial of service attacks and the IBOS does not protect against that form of attack. It is understandable this is out of the scope of this research. However, that is a big set of flaws which are not addressed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the researches only compared their results against the Chrome web browser. A comparison which also includes other browsers such as Mozilla Firefox, Internet Explorer and Safari would be much more compelling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] CVE - Common Vulnerabilities and Exposures (CVE). http://cve.mitre.org.&lt;br /&gt;
&lt;br /&gt;
[2] Rushby, John (1981). &amp;quot;Design and Verification of Secure Systems&amp;quot;. 8th ACM Symposium on Operating System Principles. Pacific Grove, California, US. pp. 12–21.&lt;br /&gt;
&lt;br /&gt;
[3] B. Lampson, M. Abadi, M. Burrows and E. Wobber, Authentication in Distributed Systems: Theory and Practice, ACM Transactions on Computer Systems 1992, on page 6.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6808</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6808"/>
		<updated>2010-12-03T05:05:59Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
In the world we are in, the web is everywhere and runs in different operating systems and browsers. The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It was developed by three graduate students at the University of Illinois. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. These attackers are always finding new ways of exploiting even the most secure systems. Just recently, cross-site scripting (XSS) has become the most common security vulnerability over the age old buffer overflow [[#References | [1]]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks [[#References | [1]]]. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted computing base(TCB). IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By moving all of these subsystems, the IBOS system ultimately aims to reduce the computer&#039;s TCB. &lt;br /&gt;
&lt;br /&gt;
===Monolithic vs Modular===&lt;br /&gt;
&lt;br /&gt;
The internet today has become an important part of our lives, it is used everywhere and in everyday life. It all started with the user only being allowed to read and browse the content, but today the expansion has led to allow the ability to write our own content and have our own impact on the rest of the world. The introduction of Web 2.0 brought upon an enormous change to the web, as well as introducing the concept of security concerns. Modern web applications are mostly designed to meet a newer modular architecture. &lt;br /&gt;
&lt;br /&gt;
Modularly designed architecture browsers such as Chrome are designed in a way that each browsing instance is assigned to a unique operating system process. It is designed to perform much better in terms of fault-tolerance, accountability, security, memory management and performance. Chrome has the ability to be able to run even when another web program crashes. Memory management in a modular architecture is designed to handle each process at a time and when the program closes the memory space is ready to be used by another program. Scheduling for modular browsers handled at the OS level and web programs are able to run parallel.&lt;br /&gt;
&lt;br /&gt;
Monolithic architectures browser such as Firefox, are monolithic and easy to exploit, since they run in a single address space. It is designed in a way that all the components for the web run in a single process. Disadvantages about monolithic architectures are that if a single web program crashes, then all of the other web browsers also crash. This can cause all of the data to be lost that is currently saved. Memory management is also considered poor in a monolithic architecture because it allocates memory at the beginning of the web program and may contain leaks. This is a major problem, because when the program finishes execution, the memory leak will have grown exponentially.&lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. It&#039;s a combination of kernel and trusted processes made of hardware, firmware, and software that are critical to a computer&#039;s security [[#References | [2]]]. In the words of Lampson et al., TCB is defined as: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;a small amount of software and hardware that security depends on and that we distinguish from a much larger amount that can misbehave without affecting security.&amp;quot;&#039;&#039; [[#References | [3]]].&lt;br /&gt;
&lt;br /&gt;
Modern operating system-browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, it becomes smaller, thereby reducing the risk of having an attack get inside.&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are continuously being revised and updated to keep ahead of the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, mostly harmless assaults on web applications, but many attacks are on the browser or even the operating system and its libraries. Since the browser runs lower on the shared storage stack, a successful attack on a browser can have horrible repercussions because it gives access to all of the browser data for all of the web applications. It also provides the attacker with access to other resources on the system which is being exploited. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system. This is partly because the attackers can access arbitrary states and events, allowing them to have full control over the system. The focus of this research is to prevent and decrease the attacks on the browser, libraries, operating systems and system services.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&lt;br /&gt;
===Architecture and Design=== &lt;br /&gt;
The authors have developed IBOS to reduce security risks, without compromising speed and efficiency. One of the ways they have achieved this is through their implementation of process creation. Essentially there are two types of processes. A web page instance and a traditional process. Any time the user opens a new tab, clicks on a link, or enters a web address in the uniform resource locator(URL) bar, the IBOS kernel creates a new process. Upon creating a web page instance process, the kernel labels it with the originating address of the HTTP request. If a web site such as &#039;&#039;facebook.com&#039;&#039; decides to host an outside script, also known as an iframe, from another website, the kernel creates a new process for the embedded script and labels it appropriately. Traditional processes are every other process that is created for the local machine. These processes are simply labeled as &#039;&#039;localhost&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
An IBOS label contains a protocol, domain and port. By creating unique labels for each web page instance, the kernel can isolate them from one another. This prevents a compromised component from taking control of other processes. Also by labeling where requests come from, the IBOS kernel can ensure that the data it is receiving is in fact from the expected origin. Each time a process makes a request, the kernel checks to ensure that the process is in fact allowed to access the requested resources.&lt;br /&gt;
&lt;br /&gt;
Each time an HTTP request comes in over the network, the network process renders the HTTP into a TCP stream, which is in turn converted into a series of Ethernet frames that are sent to the network interface controller(NIC). By doing all of this, the process is excluded from accessing any data structure. The process must first pass through the kernel before it receives what it has requested.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IBOS has considerably smaller TCB compared to other modern browsers. Where both Chrome and Firefox come in at over 4 million plus lines of code in their trusted computing base, IBOS has only about 42,000. Since IBOS isolates each process, it was also able to prevent between 75-100% of vulnerabilities from affected components on a machine. Using Chrome, the researchers tested 175 known issues on the IBOS kernel which ranged from memory exploits to interface spoofing. Out of all the known issues, IBOS was able to prevent 135 or 77% of the issues whereas Chrome was only able to contain 83 of them. The issue is that Chrome is able to catch exploits in its rendering engine since it is in a sandbox but any exploits that took advantage of the browser kernel could not be prevented. This is not a problem for IBOS because many of the browser components inside the trusted computing base in Chrome have been brought outside of the IBOS TCB limiting what can be done with exploitation. IBOS also contains tabs abstraction which multiplexes the display between different web pages instances. Input devices are programmed to route to a visible tab, which prevents keylogger from hijacking another instance&#039;s session.&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
In terms of performance, IBOS is comparable to the two best performing web browsers currently released: Firefox and Chrome. For websites such as Google Maps and Facebook, IBOS actually performs much better than Firefox while loading pages. This may be due partly to the fact that IBOS was developed with the WebKit engine, which has been optimized to run Google Maps. For Facebook and Wikipedia, sites that use many HTTP requests, IBOS performs slightly slower than the other two browsers, but for the others, where there are only a few HTTP requests, IBOS runs just as quickly as the others.&lt;br /&gt;
&lt;br /&gt;
IBOS have the same functionality as Firefox and Chrome which uses the standard Web kit but it gives better performance.&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
In addition to labels, IBOS has other approaches at reaching their goals in security. Security variants are a way for IBOS to enforce their subsystems to perform their designated functions without interfering with other subsystems. To reach this goal, they designed invariants for different components such as driver, storage, network processes, and UI invariants. &lt;br /&gt;
&lt;br /&gt;
For driver invariants, IBOS insures drivers do not access DMA buffer directly and devices can only access validated DMA buffers. their approach is to separate the the management of device control registers from the use of device buffers. Using this separation, processes can fill device specific buffers for DMA transfers, and the IBOS kernel instructs the driver to enforce the device to use a verified DMA buffer. &lt;br /&gt;
&lt;br /&gt;
In storage invariant IBOS encrypts all objects before passing them to the storage subsystem. That way All of the key-value pairs maintain confidentiality and integrity even if the storage stack itself becomes compromised. &lt;br /&gt;
&lt;br /&gt;
The network process invariants is where the security is focused. The first two invariants are: The kernel must route network requests from web page instances to the proper network process, and the kernel must route Ethernet frames from the NIC to the proper network processes. To enforce all of these invariants, IBOS puts all network processes in their own protection domains. By putting network processes in their own protection domains, the kernel naturally ensures that network requests from web page instances and Ethernet frames from the NIC are routed to the correct network process. The third invariant is that the Ethernet frames from network processes to the NIC must have an IP address and TCP port that matches the origin of the network process. IBOS kernel checks all outgoing Ethernet frames before sending them to the NIC to check the IP address and TCP port against the label of the sending network process. The fourth invariant is HTTP data from network processes to web page instances must adhere to the SOP. The IBOS kernel inspects HTTP&lt;br /&gt;
data before forwarding it to the appropriate web page instance and drops any HTML documents from different origins. The last invariant is that network processes for different web page instances must remain isolated by labelling the origin of the web page instance.&lt;br /&gt;
&lt;br /&gt;
As for the UI subsystem, IBOS kernel enforces 3 invariants. The first is the browser and web page content displays are isolated by using a frame buffer video driver and page protections to isolate portions of the screen. The second invariant is that only the current tab can access the screen, mouse, and keyboard by mapping the frame buffer memory region and routing mouse and keyboard events into the currently active web page instance. the final invariant is the URL of the current tab is displayed to the user by using the kernel display area to display the URL.&lt;br /&gt;
&lt;br /&gt;
The IBOS kernel also offers custom security by allowing web sites to specify a server-side policy file that IBOS retrieves to restrict network accesses for a web page instance.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
===Evaluation===&lt;br /&gt;
The evaluation of the IBOS security has some flaws,it is not very thorough and the data set the testing against is potentially confounding.  &lt;br /&gt;
&lt;br /&gt;
The IBOS has shown through internal testing that it is able to resist 77% of  attacks from a set of 175 security bugs whereas Chrome is only able prevent 46%.  The improvement sounds impressive however, the set of security bugs they tested against was obtained from Google “Chrome’s bug tracker”.    The fact they are comparing known security flaws in Chrome against the new IBOS makes their improvement of 31% far less impressive. &lt;br /&gt;
&lt;br /&gt;
In addition, Their initial test set contained 217 bugs with duplicates removed, and 42 bugs were omitted because they were denial of service attacks and the IBOS does not protect against that form of attack. It is understandable this is out of the scope of this research. However, that is a big set of flaws which are not addressed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the researches only compared their results against the Chrome web browser. A comparison which also includes other browsers such as Mozilla Firefox, Internet Explorer and Safari would be much more compelling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] CVE - Common Vulnerabilities and Exposures (CVE). http://cve.mitre.org.&lt;br /&gt;
&lt;br /&gt;
[2] Rushby, John (1981). &amp;quot;Design and Verification of Secure Systems&amp;quot;. 8th ACM Symposium on Operating System Principles. Pacific Grove, California, US. pp. 12–21.&lt;br /&gt;
&lt;br /&gt;
[3] B. Lampson, M. Abadi, M. Burrows and E. Wobber, Authentication in Distributed Systems: Theory and Practice, ACM Transactions on Computer Systems 1992, on page 6.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6770</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6770"/>
		<updated>2010-12-03T04:16:26Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
In the world we are in, the web is everywhere and runs in different operating systems and browsers. The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It was developed by three graduate students at the University of Illinois. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. These attackers are always finding new ways of exploiting even the most secure systems. Just recently, cross-site scripting (XSS) has become the most common security vulnerability over the age old buffer overflow [[#References | [1]]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks [[#References | [1]]]. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted computing base(TCB). IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By moving all of these subsystems, the IBOS system ultimately aims to reduce the computer&#039;s TCB. &lt;br /&gt;
&lt;br /&gt;
===Monolithic vs Modular===&lt;br /&gt;
&lt;br /&gt;
The internet today has become an important part of our lives, it is used everywhere and in everyday life. It all started with the user only being allowed to read and browse the content, but today the expansion has led to allow the ability to write our own content and have our own impact on the rest of the world. The introduction of Web 2.0 brought upon an enormous change to the web, as well as introducing the concept of security concerns. Modern web applications are mostly designed to meet a newer modular architecture. &lt;br /&gt;
&lt;br /&gt;
Modularly designed architecture browsers such as Chrome are designed in a way that each browsing instance is assigned to a unique operating system process. It is designed to perform much better in terms of fault-tolerance, accountability, security, memory management and performance. Chrome has the ability to be able to run even when another web program crashes. Memory management in a modular architecture is designed to handle each process at a time and when the program closes the memory space is ready to be used by another program. Scheduling for modular browsers handled at the OS level and web programs are able to run parallel.&lt;br /&gt;
&lt;br /&gt;
Monolithic architectures browser such as Firefox, are monolithic and easy to exploit, since they run in a single address space. It is designed in a way that all the components for the web run in a single process. Disadvantages about monolithic architectures are that if a single web program crashes, then all of the other web browsers also crash. This can cause all of the data to be lost that is currently saved. Memory management is also considered poor in a monolithic architecture because it allocates memory at the beginning of the web program and may contain leaks. This is a major problem, because when the program finishes execution, the memory leak will have grown exponentially.&lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. It&#039;s a combination of kernel and trusted processes made of hardware, firmware, and software that are critical to a computer&#039;s security [[#References | [2]]]. In the words of Lampson et al., TCB is defined as: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;a small amount of software and hardware that security depends on and that we distinguish from a much larger amount that can misbehave without affecting security.&amp;quot;&#039;&#039; [[#References | [3]]].&lt;br /&gt;
&lt;br /&gt;
Modern operating system-browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, it becomes smaller, thereby reducing the risk of having an attack get inside.&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are continuously being revised and updated to keep ahead of the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, mostly harmless assaults on web applications, but many attacks are on the browser or even the operating system and its libraries. Since the browser runs lower on the shared storage stack, a successful attack on a browser can have horrible repercussions because it gives access to all of the browser data for all of the web applications. It also provides the attacker with access to other resources on the system which is being exploited. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system. This is partly because the attackers can access arbitrary states and events, allowing them to have full control over the system. The focus of this research is to prevent and decrease the attacks on the browser, libraries, operating systems and system services.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&lt;br /&gt;
===Architecture and Design=== &lt;br /&gt;
The authors have developed IBOS to reduce security risks, without compromising speed and efficiency. One of the ways they have achieved this is through their implementation of process creation. Essentially there are two types of processes. A web page instance and a traditional process. Any time the user opens a new tab, clicks on a link, or enters a web address in the uniform resource locator(URL) bar, the IBOS kernel creates a new process. Upon creating a web page instance process, the kernel labels it with the originating address of the HTTP request. If a web site such as &#039;&#039;facebook.com&#039;&#039; decides to host an outside script, also known as an iframe, from another website, the kernel creates a new process for the embedded script and labels it appropriately. Traditional processes are every other process that is created for the local machine. These processes are simply labeled as &#039;&#039;localhost&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
An IBOS label contains a protocol, domain and port. By creating unique labels for each web page instance, the kernel can isolate them from one another. This prevents a compromised component from taking control of other processes. Also by labeling where requests come from, the IBOS kernel can ensure that the data it is receiving is in fact from the expected origin. Each time a process makes a request, the kernel checks to ensure that the process is in fact allowed to access the requested resources.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IBOS has considerably smaller TCB compared to other modern browsers. Where both Chrome and Firefox come in at over 4 million plus lines of code in their trusted computing base, IBOS has only about 42,000. Since IBOS isolates each process, it was also able to prevent between 75-100% of vulnerabilities from affected components on a machine. Using Chrome, the researchers tested 175 known issues on the IBOS kernel which ranged from memory exploits to interface spoofing. Out of all the known issues, IBOS was able to prevent 135 or 77% of the issues whereas Chrome was only able to contain 83 of them. The issue is that Chrome is able to catch exploits in its rendering engine since it is in a sandbox but any exploits that took advantage of the browser kernel could not be prevented. This is not a problem for IBOS because many of the browser components inside the trusted computing base in Chrome have been brought outside of the IBOS TCB limiting what can be done with exploitation. IBOS also contains tabs abstraction which multiplexes the display between different web pages instances. Input devices are programmed to route to a visible tab, which prevents keylogger from hijacking another instance&#039;s session.&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
In terms of performance, IBOS is comparable to the two best performing web browsers currently released: Firefox and Chrome. For websites such as Google Maps and Facebook, IBOS actually performs much better than Firefox while loading pages. This may be due partly to the fact that IBOS was developed with the WebKit engine, which has been optimized to run Google Maps. For Facebook and Wikipedia, sites that use many HTTP requests, IBOS performs slightly slower than the other two browsers, but for the others, where there are only a few HTTP requests, IBOS runs just as quickly as the others.&lt;br /&gt;
&lt;br /&gt;
IBOS have the same functionality as Firefox and Chrome which uses the standard Web kit but it gives better performance.&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
In addition to labels, IBOS has other approaches at reaching their goals in security. Security variants are a way for IBOS to enforce their subsystems to perform their designated functions without interfering with other subsystems. To reach this goal, they designed invariants for different components such as driver, storage, network processes, and UI invariants. &lt;br /&gt;
&lt;br /&gt;
For driver invariants, IBOS insures drivers do not access DMA buffer directly and devices can only access validated DMA buffers. their approach is to separate the the management of device control registers from the use of device buffers. Using this separation, processes can fill device specific buffers for DMA transfers, and the IBOS kernel instructs the driver to enforce the device to use a verified DMA buffer. &lt;br /&gt;
&lt;br /&gt;
In storage invariant IBOS encrypts all objects before passing them to the storage subsystem. That way All of the key-value pairs maintain confidentiality and integrity even if the storage stack itself becomes compromised. &lt;br /&gt;
&lt;br /&gt;
The network process invariants is where the security is focused. The first two invariants are: The kernel must route network requests from web page instances to the proper network process, and the kernel must route Ethernet frames from the NIC to the proper network processes. To enforce all of these invariants, IBOS puts all network processes in their own protection domains. By putting network processes in their own protection domains, the kernel naturally ensures that network requests from web page instances and Ethernet frames from the NIC are routed to the correct network process. The third invariant is that the Ethernet frames from network processes to the NIC must have an IP address and TCP port that matches the origin of the network process. IBOS kernel checks all outgoing Ethernet frames before sending them to the NIC to check the IP address and TCP port against the label of the sending network process. The fourth invariant is HTTP data from network processes to web page instances must adhere to the SOP. The IBOS kernel inspects HTTP&lt;br /&gt;
data before forwarding it to the appropriate web page instance and drops any HTML documents from different origins. The last invariant is that network processes for different web page instances must remain isolated by labelling the origin of the web page instance.&lt;br /&gt;
&lt;br /&gt;
As for the UI subsystem, IBOS kernel enforces 3 invariants. The first is the browser and web page content displays are isolated by using a frame buffer video driver and page protections to isolate portions of the screen. The second invariant is that only the current tab can access the screen, mouse, and keyboard by mapping the frame buffer memory region and routing mouse and keyboard events into the currently active web page instance. the final invariant is the URL of the current tab is displayed to the user by using the kernel display area to display the URL.&lt;br /&gt;
&lt;br /&gt;
The IBOS kernel also offers custom security by allowing web sites to specify a server-side policy file that IBOS retrieves to restrict network accesses for a web page instance.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
===Evaluation===&lt;br /&gt;
The evaluation of the IBOS security has some flaws,it is not very thorough and the data set the testing against is potentially confounding.  &lt;br /&gt;
&lt;br /&gt;
The IBOS has shown through internal testing that it is able to resist 77% of  attacks from a set of 175 security bugs whereas Chrome is only able prevent 46%.  The improvement sounds impressive however, the set of security bugs they tested against was obtained from Google “Chrome’s bug tracker”.    The fact they are comparing known security flaws in Chrome against the new IBOS makes their improvement of 31% far less impressive. &lt;br /&gt;
&lt;br /&gt;
In addition, Their initial test set contained 217 bugs with duplicates removed, and 42 bugs were omitted because they were denial of service attacks and the IBOS does not protect against that form of attack. It is understandable this is out of the scope of this research. However, that is a big set of flaws which are not addressed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the researches only compared their results against the Chrome web browser. A comparison which also includes other browsers such as Mozilla Firefox, Internet Explorer and Safari would be much more compelling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] CVE - Common Vulnerabilities and Exposures (CVE). http://cve.mitre.org.&lt;br /&gt;
&lt;br /&gt;
[2] Rushby, John (1981). &amp;quot;Design and Verification of Secure Systems&amp;quot;. 8th ACM Symposium on Operating System Principles. Pacific Grove, California, US. pp. 12–21.&lt;br /&gt;
&lt;br /&gt;
[3] B. Lampson, M. Abadi, M. Burrows and E. Wobber, Authentication in Distributed Systems: Theory and Practice, ACM Transactions on Computer Systems 1992, on page 6.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6738</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6738"/>
		<updated>2010-12-03T04:01:42Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
In the world we are in, the web is everywhere and runs in different operating systems and browsers. The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It was developed by three graduate students at the University of Illinois. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. These attackers are always finding new ways of exploiting even the most secure systems. Just recently, cross-site scripting (XSS) has become the most common security vulnerability over the age old buffer overflow [[#References | [1]]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks [[#References | [1]]]. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted computing base(TCB). IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By moving all of these subsystems, the IBOS system ultimately aims to reduce the computer&#039;s TCB. &lt;br /&gt;
&lt;br /&gt;
===Monolithic vs Modular===&lt;br /&gt;
&lt;br /&gt;
The internet today has become an important part of our lives, it is used everywhere and in everyday life. It all started with the user only being allowed to read and browse the content, but today the expansion has led to allow the ability to write our own content and have our own impact on the rest of the world. The introduction of Web 2.0 brought upon an enormous change to the web, as well as introducing the concept of security concerns. Modern web applications are mostly designed to meet a newer modular architecture. &lt;br /&gt;
&lt;br /&gt;
Modularly designed architecture browsers such as Chrome are designed in a way that each browsing instance is assigned to a unique operating system process. It is designed to perform much better in terms of fault-tolerance, accountability, security, memory management and performance. Chrome has the ability to be able to run even when another web program crashes. Memory management in a modular architecture is designed to handle each process at a time and when the program closes the memory space is ready to be used by another program. Scheduling for modular browsers handled at the OS level and web programs are able to run parallel.&lt;br /&gt;
&lt;br /&gt;
Monolithic architectures browser such as Firefox, are monolithic and easy to exploit, since they run in a single address space. It is designed in a way that all the components for the web run in a single process. Disadvantages about monolithic architectures are that if a single web program crashes, then all of the other web browsers also crash. This can cause all of the data to be lost that is currently saved. Memory management is also considered poor in a monolithic architecture because it allocates memory at the beginning of the web program and may contain leaks. This is a major problem, because when the program finishes execution, the memory leak will have grown exponentially.&lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. It&#039;s a combination of kernel and trusted processes made of hardware, firmware, and software that are critical to a computer&#039;s security [[#References | [2]]]. In the words of Lampson et al., TCB is defined as: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;quot;a small amount of software and hardware that security depends on and that we distinguish from a much larger amount that can misbehave without affecting security.&amp;quot;&#039;&#039; [[#References | [3]]].&lt;br /&gt;
&lt;br /&gt;
Modern operating system-browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, you make it smaller, thereby reducing the risk of having an attack get inside.&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are continuously being revised and updated to keep ahead of the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, slightly harmful assaults on web applications, but many attacks are on the browser or even the operating system and its libraries. Since the browser runs lower on the shared storage stack, a successful attack on a browser can have horrible repercussions because it gives access to all of the browser data for all of the web application. It also provides the attacker with access to other resources on the system which is being exploited. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system because the attackers can access arbitrary states and events, allowing them to have full control over the system. The focus of this research is to prevent and decrease the attacks on the browser, libraries, operating systems and system services.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&lt;br /&gt;
===Architecture and Design=== &lt;br /&gt;
The authors have developed IBOS to reduce security risks, without compromising speed and efficiency which leads to reduced TCB. One of the ways they have achieved this is through the use of process creation. Essentially there are two types of processes. A web page instance and a traditional process. Any time the user opens a new tab, clicks on a link, or enters a web address in the uniform resource locator(URL) bar, the IBOS kernel creates a new process. Upon creating a web page instance process, the kernel labels it with the originating address of the HTTP request. If a web site such as &#039;&#039;facebook.com&#039;&#039; decides to host an outside script, also known as an iframe, from another website, the kernel creates a new process for the embedded script and labels it appropriately.   Traditional processes are every other process that is created for the local machine. These processes are simply labeled as &#039;&#039;localhost&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
An IBOS label contains a protocol, domain and port. By creating unique labels for each web page instance, the kernel can isolate them from one another. This prevents a compromised component from taking control of other processes. Also by labeling where requests come from, the IBOS kernel can ensure that the data it is receiving is in fact from the expected origin.&lt;br /&gt;
&lt;br /&gt;
IBOS has considerably smaller TCB compared to other modern browsers. Where both Chrome and Firefox come in at over 4 million plus lines of code in their trusted computing base, IBOS has only about 42,000. Since IBOS isolates each process, it was also able to prevent between 75-100% of vulnerabilities from affected components on a machine. Using Chrome, the researchers tested 175 known issues on the IBOS kernel which ranged from memory exploits to interface spoofing. Out of all the known issues, IBOS was able to prevent 135 or 77% of the issues whereas Chrome was only able to contain 83 of them. The issue is that Chrome is able to catch exploits in its rendering engine since it is in a sandbox but any exploits that took advantage of the browser kernel could not be prevented. This is not a problem for IBOS because many of the browser components inside the trusted computing base in Chrome have been brought outside of the IBOS TCB limiting what can be done with exploitation. IBOS also contains tabs abstraction which multiplexes the display between different web pages instances. Input devices are programmed to route to a visible tab, which prevents keylogger from hijacking another instance&#039;s session.&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
In terms of performance, IBOS is comparable to the two best performing web browsers currently released: Firefox and Chrome. For websites such as Google Maps and Facebook, IBOS actually performs much better than Firefox while loading pages. This may be due partly to the fact that IBOS was developed with the WebKit engine, which has been optimized to run Google Maps. For Facebook and Wikipedia, sites that use many HTTP requests, IBOS performs slightly slower than the other two browsers, but for the others, where there are only a few HTTP requests, IBOS runs just as quickly as the others.&lt;br /&gt;
&lt;br /&gt;
IBOS have the same functionality as Firefox and Chrome which uses the standard Web kit but it gives better performance.&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
In addition to labels, IBOS has other approaches at reaching their goals in security. Security variants are a way for IBOS to enforce their subsystems to perform their designated functions without interfering with other subsystems. To reach this goal, they designed invariants for different components such as driver, storage, network processes, and UI invariants. &lt;br /&gt;
&lt;br /&gt;
For driver invariants, IBOS insures drivers do not access DMA buffer directly and devices can only access validated DMA buffers. their approach is to separate the the management of device control registers from the use of device buffers. Using this separation, processes can fill device specific buffers for DMA transfers, and the IBOS kernel instructs the driver to enforce the device to use a verified DMA buffer. In storage invariant IBOS encrypts all objects before passing them to the storage subsystem. That way All of our key-value pairs maintain confidentiality and integrity even if the storage stack itself becomes compromised.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
===Structure===&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
===Evaluation===&lt;br /&gt;
The evaluation of the IBOS security has some flaws,it is not very thorough and the data set the testing against is potentially confounding.  &lt;br /&gt;
&lt;br /&gt;
The IBOS has shown through internal testing that it is able to resist 77% of  attacks from a set of 175 security bugs whereas Chrome is only able prevent 46%.  The improvement sounds impressive however, the set of security bugs they tested against was obtained from Google “Chrome’s bug tracker”.    The fact they are comparing known security flaws in Chrome against the new IBOS makes their improvement of 31% far less impressive. &lt;br /&gt;
&lt;br /&gt;
In addition, Their initial test set contained 217 bugs with duplicates removed, and 42 bugs were omitted because they were denial of service attacks and the IBOS does not protect against that form of attack. It is understandable this is out of the scope of this research. However, that is a big set of flaws which are not addressed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, the researches only compared their results against the Chrome web browser. A comparison which also includes other browsers such as Mozilla Firefox, Internet Explorer and Safari would be much more compelling. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] CVE - Common Vulnerabilities and Exposures (CVE). http://cve.mitre.org.&lt;br /&gt;
&lt;br /&gt;
[2] Rushby, John (1981). &amp;quot;Design and Verification of Secure Systems&amp;quot;. 8th ACM Symposium on Operating System Principles. Pacific Grove, California, US. pp. 12–21.&lt;br /&gt;
&lt;br /&gt;
[3] B. Lampson, M. Abadi, M. Burrows and E. Wobber, Authentication in Distributed Systems: Theory and Practice, ACM Transactions on Computer Systems 1992, on page 6.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6492</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6492"/>
		<updated>2010-12-02T20:02:58Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are constantly being revised and updated to keep up with the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, slightly harmful assaults on web applications, but many attacks are on the browser or even the operating system and its libraries. Since the browser runs lower on the shared storage stack, a successful attack on a browser can have horrible repercussions because it gives access to all of the browser data for all of the web application. It also provides the attacker with access to other resources on the system which is being exploited. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system because the attackers can access arbitrary states and events, allowing them to have full control over the system. The focus of this research is to prevent and decrease the attacks on the browser, libraries, operating systems and system services. &lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It was developed by three graduate students at the University of Illinois. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. These attackers are always finding new ways of exploiting even the most secure systems. Just recently, cross-site scripting (XSS) has become the most common security vulnerability over the age old buffer overflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted computing base(TCB). IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By using all of these methods, the IBOS system ultimately aims to reduce the computer&#039;s TCB. &lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. Modern operating system-browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, you make it smaller, thereby reducing the risk of having an attack get inside.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&lt;br /&gt;
The authors have developed IBOS to reduce security risks, without compromising speed and efficiency. One of the ways they have achieved this is through the use of process creation. Essentially there are two types of processes. A web page instance and a traditional process. Any time the user opens a new tab, clicks on a link, or enters a web address in the uniform resource locator(URL) bar, the IBOS kernel creates a new process. Upon creating a web page instance process, the kernel labels it with the originating address of the HTTP request. If a web site such as &#039;&#039;facebook.com&#039;&#039; decides to host an outside script, also known as an iframe, from another website, the kernel creates a new process for the embedded script and labels it appropriately.   Traditional processes are every other process that is created for the local machine. These processes are simply labeled as &#039;&#039;localhost&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
By creating unique labels for each web page instance, the kernel can isolate them from one another. This prevents a compromised component from taking control of other processes. Also by labeling where requests come from, the IBOS kernel can ensure that the data it is receiving is in fact from the expected origin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IBOS has considerably smaller TCB compared to other modern browsers. Where both Chrome and Firefox come in at over 4 million plus lines of code in their trusted computing base, IBOS has only about 42,000. Since IBOS isolates each process, it was also able to prevent between 75-100% of vulnerabilities from affected components on a machine. Using Chrome, the researchers tested 175 known issues on the IBOS kernel which ranged from memory exploits to interface spoofing. Out of all the known issues, IBOS was able to prevent 135 or 77% of the issues whereas Chrome was only able to contain 83 of them. The issue is that Chrome is able to catch exploits in its rendering engine since it is in a sandbox but any exploits that took advantage of the browser kernel could not be prevented. This is not a problem for IBOS because many of the browser components inside the trusted computing base in Chrome have been brought outside of the IBOS TCB limiting what can be done with exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In terms of performance, IBOS is comparable to the two best performing web browsers currently released: Firefox and Chrome. For websites such as Google Maps and Facebook, IBOS actually performs much better than Firefox while loading pages. This may be due partly to the fact that IBOS was developed with the WebKit engine, which has been optimized to run Google Maps. For Facebook and Wikipedia, sites that use many HTTP requests, IBOS performs slightly slower than the other two browsers, but for the others, where there are only a few HTTP requests, IBOS runs just as quickly as the others.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6487</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6487"/>
		<updated>2010-12-02T19:35:40Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are constantly being revised and updated to keep up with the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, slightly harmful assaults on web applications, but many attacks are on the browser or even the operating system and its libraries. Since the browser runs lower on the shared storage stack, a successful attack on a browser can have horrible repercussions because it gives access to all of the browser data for all of the web application. It also provides the attacker with access to other resources on the system which is being exploited. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system because the attackers can access arbitrary states and events, allowing them to have full control over the system. The focus of this research is to prevent and decrease the attacks on the browser, libraries, operating systems and system services. &lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. Just recently, cross-site scripting (XSS) has become the most common security vulnerability over the age old buffer overflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted code base. IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By using all of these methods, the IBOS system ultimately aims to reduce the computers Trusted Computing Base(TCB). &lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. Modern operating system/browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, the risk of having an attack get inside is greatly reduced.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&lt;br /&gt;
IBOS has considerably smaller trusted code base compared to other modern browsers. Where both Chrome and Firefox come in at over 4 million plus lines of code in their trusted computing base, IBOS has only about 42,000. Since IBOS isolates each process, it was also able to prevent between 75-100% of vulnerabilities from affected components on a machine. Using Chrome, the researchers tested 175 known issues on the IBOS kernel which ranged from memory exploits to interface spoofing. Out of all the known issues, IBOS was able to prevent 135 or 77% of the issues whereas Chrome was only able to contain 83 of them. The issue is that Chrome is able to catch exploits in its rendering engine since it is in a sandbox but any exploits that took advantage of the browser kernel could not be prevented. This is not a problem for IBOS because many of the browser components inside the trusted computing base in Chrome have been brought outside of the IBOS TCB limiting what can be done with exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In terms of performance, IBOS is comparable to the two best performing web browsers currently released: Firefox and Chrome. For websites such as Google Maps and Facebook, IBOS actually performs much better than Firefox while loading pages. This may be due partly to the fact that IBOS was developed with the WebKit engine, which has been optimized to run Google Maps. For Facebook and Wikipedia, sites that use many HTTP requests, IBOS performs slightly slower than the other two browsers, but for the others, where there are only a few HTTP requests, IBOS runs just as quickly as the others.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6388</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6388"/>
		<updated>2010-12-02T16:27:40Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Contribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are constantly being revised and updated to keep up with the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, slightly harmful assaults on web applications, but many attacks are on the browser or even the operating system/libraries. A successful attack on a browser can have horrible repercussion because these occur lower on the shared storage stack than the attacks on the applications because it gives access to all the browser data for all the web application and also provides the attacker with the access to other system resources on the system which is being exploited. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system this is due to the fact that the attackers can access arbitrary states and events, allowing them to have full control over the system. The focus of this research is to prevent or/and to decrease the attacks on browser, libraries, operating systems and system services. &lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. Just recently, cross-site scripting (XSS) has become the most common security vulnerability over the age old buffer overflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted code base. IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By using all of these methods, the IBOS system ultimately aims to reduce the computers Trusted Computing Base(TCB). &lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. Modern operating system/browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, the risk of having an attack get inside is greatly reduced.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&lt;br /&gt;
IBOS has considerably smaller trusted code base compared to other modern browsers. Where both Chrome and Firefox come in at over 4 million plus lines of code in their trusted computing base, IBOS has only about 42,000. Since IBOS isolates each process, it was also able to prevent between 75-100% of vulnerabilities from affected components on a machine. Using Chrome, the researchers tested 175 known issues on the IBOS kernel which ranged from memory exploits to interface spoofing. Out of all the known issues, IBOS was able to prevent 135 or 77% of the issues whereas Chrome was only able to contain 83 of them. The issue is that Chrome is able to catch exploits in its rendering engine since it is in a sandbox but any exploits that took advantage of the browser kernel could not be prevented. This is not a problem for IBOS because many of the browser components inside the trusted computing base in Chrome have been brought outside of the IBOS TCB limiting what can be done with exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In terms of performance, IBOS is comparable to the two best performing web browsers currently released: Firefox and Chrome. For websites such as Google Maps and Facebook, IBOS actually performs much better than Firefox while loading pages. This may be due partly to the fact that IBOS was developed with the WebKit engine, which has been optimized to run Google Maps. For Facebook and Wikipedia, sites that use many HTTP requests, IBOS performs slightly slower than the other two browsers, but for the others, where there are only a few HTTP requests, IBOS runs just as quickly as the others.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6380</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6380"/>
		<updated>2010-12-02T16:15:52Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Background Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are constantly being revised and updated to keep up with the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, slightly harmful assaults on web applications, but many attacks are on the browser or even the operating system/libraries. A successful attack on a browser can have horrible repercussion because these occur lower on the shared storage stack than the attacks on the applications because it gives access to all the browser data for all the web application and also provides the attacker with the access to other system resources on the system which is being exploited. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system this is due to the fact that the attackers can access arbitrary states and events, allowing them to have full control over the system. The focus of this research is to prevent or/and to decrease the attacks on browser, libraries, operating systems and system services. &lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. Just recently, cross-site scripting (XSS) has become the most common security vulnerability over the age old buffer overflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted code base. IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By using all of these methods, the IBOS system ultimately aims to reduce the computers Trusted Computing Base(TCB). &lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. Modern operating system/browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, the risk of having an attack get inside is greatly reduced.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&lt;br /&gt;
IBOS has considerably smaller trusted code base compared to other modern browsers. Where both Chrome and Firefox come in at over 4 million plus lines of code in their trusted code base, IBOS has only about 42,000. Since IBOS is separated into lower level components, it was also able to prevent between 75-100% of vulnerabilities from affected components on a machine. Using Chrome, the researchers tested 175 known issues on the IBOS kernel which ranged from memory exploits to interface spoofing. Out of all the known issues, IBOS was able to prevent 135 or 77% of the issues whereas Chrome was only able to contain 83 of them. The issue is that Chrome is able to catch exploits in its rendering engine since it is in a sandbox but any exploits that took advantage of the browser kernel could not be prevented. This is not a problem for IBOS because many of the browser components inside the trusted code base in Chrome have been brought outside of the IBOS trusted code base limiting what can be done with exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In terms of performance, IBOS is comparable to the two best performing web browsers out current: Firefox and Chrome. For websites such as Google Maps and Facebook, IBOS actually performs much better than Firefox while loading pages. For other sites like Wikipedia, Craigslist and Bing, IBOS performs on a level between Chrome and Firefox so essentially there will be a negligible change in the user&#039;s browsing experience based on the websites they view using IBOS.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6378</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6378"/>
		<updated>2010-12-02T16:15:37Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are constantly being revised and updated to keep up with the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, slightly harmful assaults on web applications, but many attacks are on the browser or even the operating system/libraries. A successful attack on a browser can have horrible repercussion because these occur lower on the shared storage stack than the attacks on the applications because it gives access to all the browser data for all the web application and also provides the attacker with the access to other system resources on the system which is being exploited. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system this is due to the fact that the attackers can access arbitrary states and events, allowing them to have full control over the system. The focus of this research is to prevent or/and to decrease the attacks on browser, libraries, operating systems and system services. &lt;br /&gt;
&lt;br /&gt;
=Background Concepts=&lt;br /&gt;
The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. Just recently, cross-site scripting (XSS) has become the most common security vulnerability over the age old buffer overflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted code base. IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By using all of these methods, the IBOS system ultimately aims to reduce the computers Trusted Computing Base(TCB). &lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. Modern operating system/browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, the risk of having an attack get inside is greatly reduced.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&lt;br /&gt;
IBOS has considerably smaller trusted code base compared to other modern browsers. Where both Chrome and Firefox come in at over 4 million plus lines of code in their trusted code base, IBOS has only about 42,000. Since IBOS is separated into lower level components, it was also able to prevent between 75-100% of vulnerabilities from affected components on a machine. Using Chrome, the researchers tested 175 known issues on the IBOS kernel which ranged from memory exploits to interface spoofing. Out of all the known issues, IBOS was able to prevent 135 or 77% of the issues whereas Chrome was only able to contain 83 of them. The issue is that Chrome is able to catch exploits in its rendering engine since it is in a sandbox but any exploits that took advantage of the browser kernel could not be prevented. This is not a problem for IBOS because many of the browser components inside the trusted code base in Chrome have been brought outside of the IBOS trusted code base limiting what can be done with exploitation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In terms of performance, IBOS is comparable to the two best performing web browsers out current: Firefox and Chrome. For websites such as Google Maps and Facebook, IBOS actually performs much better than Firefox while loading pages. For other sites like Wikipedia, Craigslist and Bing, IBOS performs on a level between Chrome and Firefox so essentially there will be a negligible change in the user&#039;s browsing experience based on the websites they view using IBOS.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=6377</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=6377"/>
		<updated>2010-12-02T16:14:37Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Comments &amp;amp; Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Comments &amp;amp; Discussion=&lt;br /&gt;
I&#039;ve added to the Contribution part of the essay. I&#039;ve basically explained as much as I thought was pertinent in what the section was asking for but don&#039;t be shy to add more!&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 14:11, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IBOS is designed to talk directly to the hardware. That&#039;s why they have everything at the lower level. All that extra TCB in other browsers was for all the extra stuff like services, OS components blah blah. I get their drift and how less code is secure but I don&#039;t get how they did it! From where do they get the services they claim to have taken out but still operates the same as any other browser. There is a catch somewhere but I can&#039;t find it in the paper or maybe I&#039;m blind. I&#039;ve been reading a lot of text but I got nowhere, its either too complex or not close to what I&#039;m looking for. &lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 04:19, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Brief description of the research problem below. (Still Needs expanding/fleshing out. can anyone help expand on why exactly shrinking the TCB will be more secure. I&#039;m fuzzy on that)&lt;br /&gt;
 &lt;br /&gt;
The IBOS attempts to improve the security of web browsers. The writers argue that the large size of the trusted code bases (TCB) which modern web browsers make use of increases the possibility of a security hole. For example a hijacked window manager could be used to draw a fake phishing website overtop a web browser. The researchers solution is drastically shrinking the size of the TCB. The TCB is shrunk by turning the web browser into an operating system in itself with direct access to hardware abstractions. &lt;br /&gt;
&lt;br /&gt;
Meanwhile, the IBOS must still support existing web applications while maintaining security.&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]] 03:36, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is what I understand of the TCB. Basically it is all of the components that are essential to the security of the computer system. Pretty much the stuff inside the kernel that if is compromised is &amp;quot;bad news bears&amp;quot;. By removing things like device drivers, you reduce the TCB quite considerably (like probably 10s of thousands of lines of code). The smaller the TCB, the less of a chance that you have of an essential component getting corrupted. I don&#039;t know if I&#039;m explaining it right, but maybe someone else can expand on what I&#039;ve written here.&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 16:13, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EDIT: I&#039;ve pretty much explained the background concept behind IBOS and I kind of added the way it&#039;s executed near the end. Feel free to move that into the research section.&lt;br /&gt;
&lt;br /&gt;
I can work on the background of IBOS&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 23:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It seems we only have 5/7 members. We should start splitting up the tasks and assign who gets what. So if everybody writes what section they would like to work on that would be great.&lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 15:19, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll do the contribution section. I&#039;ll be reading through the paper thoroughly today and taking notes as I go. I&#039;ll post them later on this page as a sort of cheat-sheet/reminder. --[[User:Gsmith6|Gsmith6]] 17:45, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Group Members=&lt;br /&gt;
&lt;br /&gt;
Leave your name and e-mail address if you are assigned to this question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ymoussou|Youcef M.]] moussoud@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am alive and still in the class, selliot3@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 18:12, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Still in the class, andrewtubman84@gmail.com&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]]&lt;br /&gt;
&lt;br /&gt;
I&#039;m here. I have received an email reply from John Vanden Heuvel as well (he may not see this) gsmith0413@gmail.com&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:31, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
I am here... and replied to the email&lt;br /&gt;
&lt;br /&gt;
=Question 2 members=&lt;br /&gt;
&lt;br /&gt;
Elliott Charles selliot3&lt;br /&gt;
&lt;br /&gt;
Moussoud Youcef ymoussou&lt;br /&gt;
&lt;br /&gt;
Pharand Alexandre apharan2&lt;br /&gt;
&lt;br /&gt;
Smith Geoffrey gsmith6&lt;br /&gt;
&lt;br /&gt;
Tubman Andrew   atubman&lt;br /&gt;
&lt;br /&gt;
Vanden Heuvel John jvheuvel&lt;br /&gt;
&lt;br /&gt;
Vivekanandarajah Vijitharan vviveka2&lt;br /&gt;
&lt;br /&gt;
=Raw Information=&lt;br /&gt;
&lt;br /&gt;
The web itself is ubiquitous which a person can use for communication; banking, business, social networking and it can be useful for other purposes. There are different type of vulnerabilities web applications, browser, OS and library vulnerabilities. Insecure web browsers are monolithic, and they are easy to exploit. Secure  web browser such as chrome isolate web applications and it still contain huge trusted computing base (TCB). Browser abstractions as the first-class OS, contains reduced TCB for web browser and it also have protection to withstand attacks to most components. [[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Extra Resources=&lt;br /&gt;
http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
I found some presentation slides by Shuo Tang, Haohui Mai and Sam King, the authors and developers of IBOS&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:35, 25 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=6376</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=6376"/>
		<updated>2010-12-02T16:13:16Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Comments &amp;amp; Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Comments &amp;amp; Discussion=&lt;br /&gt;
I&#039;ve added to the Contribution part of the essay. I&#039;ve basically explained as much as I thought was pertinent in what the section was asking for but don&#039;t be shy to add more!&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 14:11, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IBOS is designed to talk directly to the hardware. That&#039;s why they have everything at the lower level. All that extra TCB in other browsers was for all the extra stuff like services, OS components blah blah. I get their drift and how less code is secure but I don&#039;t get how they did it! From where do they get the services they claim to have taken out but still operates the same as any other browser. There is a catch somewhere but I can&#039;t find it in the paper or maybe I&#039;m blind. I&#039;ve been reading a lot of text but I got nowhere, its either too complex or not close to what I&#039;m looking for. &lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 04:19, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Brief description of the research problem below. (Still Needs expanding/fleshing out. can anyone help expand on why exactly shrinking the TCB will be more secure. I&#039;m fuzzy on that)&lt;br /&gt;
 &lt;br /&gt;
The IBOS attempts to improve the security of web browsers. The writers argue that the large size of the trusted code bases (TCB) which modern web browsers make use of increases the possibility of a security hole. For example a hijacked window manager could be used to draw a fake phishing website overtop a web browser. The researchers solution is drastically shrinking the size of the TCB. The TCB is shrunk by turning the web browser into an operating system in itself with direct access to hardware abstractions. &lt;br /&gt;
&lt;br /&gt;
Meanwhile, the IBOS must still support existing web applications while maintaining security.&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]] 03:36, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is what I understand of the TCB. Basically it is all of the components that are essential to the security of the computer system. Pretty much the stuff inside the kernel that if is compromised is &amp;quot;bad news bears&amp;quot;. By removing things like device drivers, you reduce the TCB quite considerably (like probably 10s of thousands of lines of code). The smaller the TCB, the less of a chance that you have an essential component getting corrupted. I don&#039;t know if I&#039;m explaining it right, but maybe someone else can expand on what I&#039;ve written here.&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 16:13, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
EDIT: I&#039;ve pretty much explained the background concept behind IBOS and I kind of added the way it&#039;s executed near the end. Feel free to move that into the research section.&lt;br /&gt;
&lt;br /&gt;
I can work on the background of IBOS&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 23:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It seems we only have 5/7 members. We should start splitting up the tasks and assign who gets what. So if everybody writes what section they would like to work on that would be great.&lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 15:19, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll do the contribution section. I&#039;ll be reading through the paper thoroughly today and taking notes as I go. I&#039;ll post them later on this page as a sort of cheat-sheet/reminder. --[[User:Gsmith6|Gsmith6]] 17:45, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Group Members=&lt;br /&gt;
&lt;br /&gt;
Leave your name and e-mail address if you are assigned to this question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ymoussou|Youcef M.]] moussoud@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am alive and still in the class, selliot3@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 18:12, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Still in the class, andrewtubman84@gmail.com&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]]&lt;br /&gt;
&lt;br /&gt;
I&#039;m here. I have received an email reply from John Vanden Heuvel as well (he may not see this) gsmith0413@gmail.com&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:31, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
I am here... and replied to the email&lt;br /&gt;
&lt;br /&gt;
=Question 2 members=&lt;br /&gt;
&lt;br /&gt;
Elliott Charles selliot3&lt;br /&gt;
&lt;br /&gt;
Moussoud Youcef ymoussou&lt;br /&gt;
&lt;br /&gt;
Pharand Alexandre apharan2&lt;br /&gt;
&lt;br /&gt;
Smith Geoffrey gsmith6&lt;br /&gt;
&lt;br /&gt;
Tubman Andrew   atubman&lt;br /&gt;
&lt;br /&gt;
Vanden Heuvel John jvheuvel&lt;br /&gt;
&lt;br /&gt;
Vivekanandarajah Vijitharan vviveka2&lt;br /&gt;
&lt;br /&gt;
=Raw Information=&lt;br /&gt;
&lt;br /&gt;
The web itself is ubiquitous which a person can use for communication; banking, business, social networking and it can be useful for other purposes. There are different type of vulnerabilities web applications, browser, OS and library vulnerabilities. Insecure web browsers are monolithic, and they are easy to exploit. Secure  web browser such as chrome isolate web applications and it still contain huge trusted computing base (TCB). Browser abstractions as the first-class OS, contains reduced TCB for web browser and it also have protection to withstand attacks to most components. [[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Extra Resources=&lt;br /&gt;
http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
I found some presentation slides by Shuo Tang, Haohui Mai and Sam King, the authors and developers of IBOS&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:35, 25 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6173</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6173"/>
		<updated>2010-12-02T04:15:48Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Paper=&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
==Research Problem==&lt;br /&gt;
Modern browsers, such as Google Chrome and Mozilla Firefox, are constantly being revised and updated to keep up with the latest attacks, but continuously have hundreds of security vulnerabilities. Most of these attacks are simple, slightly harmful assaults on web applications, but many attacks are on the browser or even the operating system/libraries. A successful attack on a browser can have horrible repercussion because these occur lower on the shared storage stack than the attacks on the applications. An attack on the operating system can be disastrous if it is successful and may cause serious damage to the entire system.&lt;br /&gt;
&lt;br /&gt;
=Background Concepts=&lt;br /&gt;
The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. Just recently, cross-site scripting has become the most common security vulnerability over the age old buffer overflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted code base. IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By using all of these methods, the IBOS system ultimately aims to reduce the computers Trusted Computing Base(TCB). &lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. Modern operating system/browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, the risk of having an attack get inside is greatly reduced. &lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;!! Don&#039;t forget to erase this !!&#039;&#039;&#039; &#039;&#039;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6153</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6153"/>
		<updated>2010-12-02T03:45:37Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* TCB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Paper=&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
=Background Concepts=&lt;br /&gt;
The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. Just recently, cross-site scripting has become the most common security vulnerability over the age old buffer overflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted code base. IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By using all of these methods, the IBOS system ultimately aims to reduce the computers Trusted Computing Base(TCB). &lt;br /&gt;
&lt;br /&gt;
===TCB===&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. Modern operating system/browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, the risk of having an attack get inside is greatly reduced.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
What is the research problem being addressed by the paper? How does this problem relate to past related work?&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;!! Don&#039;t forget to erase this !!&#039;&#039;&#039; &#039;&#039;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6151</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6151"/>
		<updated>2010-12-02T03:45:08Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Background Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Paper=&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
=Background Concepts=&lt;br /&gt;
The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. Just recently, cross-site scripting has become the most common security vulnerability over the age old buffer overflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted code base. IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer. By using all of these methods, the IBOS system ultimately aims to reduce the computers Trusted Computing Base(TCB). &lt;br /&gt;
&lt;br /&gt;
==TCB==&lt;br /&gt;
The TCB is the hardware and software that is critical to the computer&#039;s security. Modern operating system/browser combinations have massive TCBs that may have several millions of lines of code. By extracting components such as device drivers from the kernel, one can lower a systems TCB considerably. If a device driver is outside of the TCB and becomes corrupted, the effects would not be too severe, but if the driver is left in the TCB, then the results could be cataclysmic. By removing elements from the TCB, the risk of having an attack get inside is greatly reduced.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
What is the research problem being addressed by the paper? How does this problem relate to past related work?&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;!! Don&#039;t forget to erase this !!&#039;&#039;&#039; &#039;&#039;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6127</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6127"/>
		<updated>2010-12-02T03:22:51Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Paper */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Paper=&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Presentation slides to go along with the paper: Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
&lt;br /&gt;
=Background Concepts=&lt;br /&gt;
The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. Just recently, cross-site scripting has become the most common security vulnerability over the age old buffer overflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted code base. IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
What is the research problem being addressed by the paper? How does this problem relate to past related work?&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;!! Don&#039;t forget to erase this !!&#039;&#039;&#039; &#039;&#039;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6124</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6124"/>
		<updated>2010-12-02T03:22:16Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Paper=&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Background Concepts=&lt;br /&gt;
The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. Just recently, cross-site scripting has become the most common security vulnerability over the age old buffer overflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted code base. IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
What is the research problem being addressed by the paper? How does this problem relate to past related work?&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;!! Don&#039;t forget to erase this !!&#039;&#039;&#039; &#039;&#039;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6118</id>
		<title>COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_2&amp;diff=6118"/>
		<updated>2010-12-02T03:18:10Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Paper=&lt;br /&gt;
&#039;&#039;&#039;Trust and Protection in the Illinois Browser Operating System&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
http://www.usenix.org/events/osdi10/tech/full_papers/Tang.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Shuo Tang, Haohui Mai, Samuel T. King&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;University of Illinois at Urbana-Champaig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Background Concepts=&lt;br /&gt;
The Illinois Browser Operating System (IBOS) is not just a new browser to improve security, it is also a full operating system. It’s main goal is to expose browser-level abstractions at the lowest possible software layer, reducing the trusted computing base for web browsers. Many websites and web applications have become major targets for attackers and hackers. Just recently, cross-site scripting has become the most common security vulnerability over the age old buffer overflow.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Plenty of research has gone in to improving security among the various web browsers on the market today but all browsers still remain susceptible to attacks on the lower layers. Compromised Ethernet drivers can send sensitive HTTP packets to third parties, compromised storage modules can send persistent data to unwanted viewers and compromised window managers can overlay fake interfaces common in phishing attacks. Common web browsers run on top of commodity operating systems with shared system services and user-mode libraries, increasing the trusted code base. IBOS looks to solve this issue by exposing browser-level abstractions rather than just general-purpose abstractions. Important concepts such as cookies, HTTP connections and tabs for displaying pages are all brought into the browser abstraction layer.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
What is the research problem being addressed by the paper? How does this problem relate to past related work?&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
What are the research contribution(s) of this work? Specifically, what are the key research results, and what do they mean? (What was implemented? Why is it any better than what came before?)&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
This paper was very well organized and executed. It naturally flows and keeps order in what it is trying to explain without the need to flip back and reference another piece of content in the paper. Starting with the core mechanics of why it is needed to how the kernel is organized and working its way up to many high-level pieces of information it felt like a natural progression of ideas, giving you the information you need to understand upcoming concepts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;!! Don&#039;t forget to erase this !!&#039;&#039;&#039; &#039;&#039;What is good and not-so-good about this paper? You may discuss both the style and content; be sure to ground your discussion with specific references. Simple assertions that something is good or bad is not enough - you must explain why.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
You will almost certainly have to refer to other resources; please cite these resources in the style of citation of the papers assigned (inlined numbered references). Place your bibliographic entries in this section.&lt;br /&gt;
&lt;br /&gt;
Trust and Protection in the Illinois Browser Operating System. http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=6081</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=6081"/>
		<updated>2010-12-02T01:59:56Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Comments &amp;amp; Discussion=&lt;br /&gt;
&lt;br /&gt;
EDIT: I&#039;ve pretty much explained the background concept behind IBOS and I kind of added the way it&#039;s executed near the end. Feel free to move that into the research section.&lt;br /&gt;
&lt;br /&gt;
I can work on the background of IBOS&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 23:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It seems we only have 5/7 members. We should start splitting up the tasks and assign who gets what. So if everybody writes what section they would like to work on that would be great.&lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 15:19, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll do the contribution section. I&#039;ll be reading through the paper thoroughly today and taking notes as I go. I&#039;ll post them later on this page as a sort of cheat-sheet/reminder. --[[User:Gsmith6|Gsmith6]] 17:45, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Group Members=&lt;br /&gt;
&lt;br /&gt;
Leave your name and e-mail address if you are assigned to this question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ymoussou|Youcef M.]] moussoud@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am alive and still in the class, selliot3@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 18:12, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Still in the class, andrewtubman84@gmail.com&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]]&lt;br /&gt;
&lt;br /&gt;
I&#039;m here. I have received an email reply from John Vanden Heuvel as well (he may not see this) gsmith0413@gmail.com&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:31, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
I am here... and replied to the email&lt;br /&gt;
&lt;br /&gt;
=Question 2 members=&lt;br /&gt;
&lt;br /&gt;
Elliott Charles selliot3&lt;br /&gt;
&lt;br /&gt;
Moussoud Youcef ymoussou&lt;br /&gt;
&lt;br /&gt;
Pharand Alexandre apharan2&lt;br /&gt;
&lt;br /&gt;
Smith Geoffrey gsmith6&lt;br /&gt;
&lt;br /&gt;
Tubman Andrew   atubman&lt;br /&gt;
&lt;br /&gt;
Vanden Heuvel John jvheuvel&lt;br /&gt;
&lt;br /&gt;
Vivekanandarajah Vijitharan vviveka2&lt;br /&gt;
&lt;br /&gt;
=Raw Information=&lt;br /&gt;
&lt;br /&gt;
The web itself is ubiquitous which a person can use for communication; banking, business, social networking and it can be useful for other purposes. There are different type of vulnerabilities web applications, browser, OS and library vulnerabilities. Insecure web browsers are monolithic, and they are easy to exploit. Secure  web browser such as chrome isolate web applications and it still contain huge trusted computing base (TCB). Browser abstractions as the first-class OS, contains reduced TCB for web browser and it also have protection to withstand attacks to most components. [[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Extra Resources=&lt;br /&gt;
http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
I found some presentation slides by Shuo Tang, Haohui Mai and Sam King, the authors and developers of IBOS&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:35, 25 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=6079</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=6079"/>
		<updated>2010-12-02T01:58:02Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Raw Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Comments &amp;amp; Discussion=&lt;br /&gt;
&lt;br /&gt;
EDIT: I&#039;ve pretty much explained the background concept behind IBOS and I kind of added the way it&#039;s executed near the end. Feel free to move that into the research section.&lt;br /&gt;
&lt;br /&gt;
I can work on the background of IBOS&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 23:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It seems we only have 5/7 members. We should start splitting up the tasks and assign who gets what. So if everybody writes what section they would like to work on that would be great.&lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 15:19, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll do the contribution section. I&#039;ll be reading through the paper thoroughly today and taking notes as I go. I&#039;ll post them later on this page as a sort of cheat-sheet/reminder. --[[User:Gsmith6|Gsmith6]] 17:45, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Group Members=&lt;br /&gt;
&lt;br /&gt;
Leave your name and e-mail address if you are assigned to this question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ymoussou|Youcef M.]] moussoud@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am alive and still in the class, selliot3@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 18:12, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Still in the class, andrewtubman84@gmail.com&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]]&lt;br /&gt;
&lt;br /&gt;
I&#039;m here. I have received an email reply from John Vanden Heuvel as well (he may not see this) gsmith0413@gmail.com&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:31, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
I am here... and replied to the email&lt;br /&gt;
&lt;br /&gt;
=Question 2 members=&lt;br /&gt;
&lt;br /&gt;
Elliott Charles selliot3&lt;br /&gt;
&lt;br /&gt;
Moussoud Youcef ymoussou&lt;br /&gt;
&lt;br /&gt;
Pharand Alexandre apharan2&lt;br /&gt;
&lt;br /&gt;
Smith Geoffrey gsmith6&lt;br /&gt;
&lt;br /&gt;
Tubman Andrew   atubman&lt;br /&gt;
&lt;br /&gt;
Vanden Heuvel John jvheuvel&lt;br /&gt;
&lt;br /&gt;
Vivekanandarajah Vijitharan vviveka2&lt;br /&gt;
&lt;br /&gt;
=Raw Information=&lt;br /&gt;
&lt;br /&gt;
The web itself is ubiquitous which a person can use for communication; banking, business, social networking and it can be useful for other purposes. There are different type of vulnerabilities web applications, browser, OS and library vulnerabilities. Insecure web browsers are monolithic, and they are easy to exploit. Secure  web browser such as chrome isolate web applications and it still contain huge trusted computing base (TCB). Browser abstractions as the first-class OS, contains reduced TCB for web browser and it also have protection to withstand attacks to most components. [[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
==Rough Notes==&lt;br /&gt;
&lt;br /&gt;
Essay Notes&lt;br /&gt;
-most attacks are on web apps, but some attack the browser itself&lt;br /&gt;
-if the attack on the browser is successful, it can be more devestating because the attacker can access much more of the system (lower on the computer stack than web apps)&lt;br /&gt;
-even more serious if an attacker gets lower in the stack (i.e. libraries, OSes)&lt;br /&gt;
-higher level vulnerabilities are more common, but low levels mean more devastating attacks&lt;br /&gt;
-new browsers create a seperation between functionality of browser, and security mechanisms, but they still share certain services and libraries that attackers can use to infiltrate the system.&lt;br /&gt;
-Illinois Browser Operating System (IBOS) is an effort to reduce the TCB of web browsers.&lt;br /&gt;
-achieves this by taking out shared OS components and services from the browser&#039;s TCB.&lt;br /&gt;
-These include device drivers, network protocol implementations, storage stack, and window-management software.&lt;br /&gt;
-they are put into the browser level abstractions.&lt;br /&gt;
-traditional methods are to put application-specific abstractions on top of the OS abstractions.&lt;br /&gt;
&lt;br /&gt;
CONTRIBUTIONS:&lt;br /&gt;
-first system to improve broswer and OS security by making browser-level abstractions into first class OS abstractions, creating seperation between browser functionality and browser security&lt;br /&gt;
-by having low-layer software expose browser abstractions allows for removal of almost all traditional OS components from the TCB&lt;br /&gt;
-IBOS still allows traditional applications to interact with the browser and shared OS services without compromising security.&lt;br /&gt;
&lt;br /&gt;
ARCHITECTURE:&lt;br /&gt;
-uses microkernel, exokernel, and safety kernel concepts&lt;br /&gt;
-by making the security decisions at the lowest layer of software, the authors avoid putting the millions of lines of library and OS code in the TCB.&lt;br /&gt;
-monitors the sharing of data between web apps and traditional apps&lt;br /&gt;
-built to enforce browser policies of existing systems&lt;br /&gt;
-IBOS kernel acts similarily to traditional microkernels, it manages global resources and creates new processes.&lt;br /&gt;
-All messages being passed travel through the reference monitor, where it is subjected to the overall security policy.&lt;br /&gt;
-HTTP requests are reformated into a TCP stream which then gets converted into a series of Ethernet frames.&lt;br /&gt;
-by storing HTTP cookies and HTML5 local storage objects using the storage manager, they can be examined by the reference monitor.&lt;br /&gt;
-by using namespaces, the OS isolates objects such as web apps, traditional apps and device drivers&lt;br /&gt;
-two different types of processes, web page instances and traditional processes&lt;br /&gt;
-new process, called a web page instance, is created for each individual web page that the user visits&lt;br /&gt;
-these are resposnsible for issuing HTTP reguests, parsing HTML, executing JavaScript, and rendering web content to a tab&lt;br /&gt;
-the key difference between the two types of processes is the security label the IBOS kernel gives them&lt;br /&gt;
-plugins are run as traditional processes, but they are launched by the browser and are given access to browser states&lt;br /&gt;
&lt;br /&gt;
CURRENT BROWSER POLICIES&lt;br /&gt;
-same-origin policy (SOP) isolates web pages that come from different origins&lt;br /&gt;
-modern browsers have their SOP scattered throught millions of lines of code, and are often troublesome to implement&lt;br /&gt;
-iframes can be labeled by the page developers as from the same origin as the hosting page, or from different origins&lt;br /&gt;
&lt;br /&gt;
IBOS SECURITY POLICIES AND MECHANISMS&lt;br /&gt;
-want to be able to ensure the IBOS kernel upholds security policies even if any number of subsystems have been compromised&lt;br /&gt;
-susceptible components include all drivers, browser API managers, web page instances, and traditional processes.&lt;br /&gt;
-IBOS labels specify the resources that a process can access or messages it can receive&lt;br /&gt;
-web page instances are labeled by the origin of the HTML document&lt;br /&gt;
-traditional processes are labeled as &amp;quot;localhost&amp;quot;&lt;br /&gt;
-IBOS labels the processes upon creation, and keeps the labels unchanged throughout the processes life&lt;br /&gt;
-because the IBOS kernel labels processes itself, rather than the process labelling itself, it ensures it has the correct label information.&lt;br /&gt;
-by using these security invariants, they can extracting security relevant information from messages automatically, they can remove almost all of the components found in modern operating systems from the TCB, including device drivers&lt;br /&gt;
-SI 0: All components can only perform their designated functions&lt;br /&gt;
-SI 1: Drivers cannot access DMA buffers directly&lt;br /&gt;
-SI 2: Devices can only access validated DMA buffers&lt;br /&gt;
-seperates management of device control registers from the use of the device buffers to allow checking that the communications are within the IBOS security policies&lt;br /&gt;
-SI 3: All of the key-value pairs maintain confidentiality and integrity even if the storage stack becomes compromised&lt;br /&gt;
	-this is acheived by encrypting objects before passing them to the storage subsystem&lt;br /&gt;
-SI 4: The kernel must route network requests from web page instances to the proper network process&lt;br /&gt;
-SI 5: The kernel must route Ethernet frames from the NIC to the proper netwok processes&lt;br /&gt;
-SI 6: Ethernet frames from network processes to the NIC must have an IP address and TCP port that matches the origin of the network process&lt;br /&gt;
-SI 7: HTTP data from network process to web page instances must adhere to the SOP&lt;br /&gt;
-SI 8: Network processes for different web page instances must remain isolated&lt;br /&gt;
-all network processes are put into their own protection domains&lt;br /&gt;
-using the labeling system, the kernel can ensure that network requests from web page instances and Ethernet frames from the NIC are routed to the correct network process&lt;br /&gt;
-by cross checking the outgoing requests with the sending network process, the IBOS kernel ensures that the NIC send the request to the right host, and that it is sending the right data&lt;br /&gt;
-SI 9: The browser chrome and web page content displays are isolated&lt;br /&gt;
-SI 10: Only the current tab can access the screen, mouse and keyboard&lt;br /&gt;
-SI 11: The URL of the current tab is displayed to the user&lt;br /&gt;
-sections of the IBOS display are isolated from one another&lt;br /&gt;
-3 horizontal sections, each with its own access privelages&lt;br /&gt;
-top bar is only for the IBOS kernel, middle section is reserved for the UI subsystem to draw the browser chrome, and the rest is for the web page instance&lt;br /&gt;
-by displaying the current URL in the top section, the kernel cross-references that URL with the URL the web page instance claims to be&lt;br /&gt;
	-this is a simple task, but is not currently implemented right in modern browsers&lt;br /&gt;
-by running iframes in a seperate web page instance, the kernel can examine the label, and determine if it is safe&lt;br /&gt;
-IBOS cannot stop XSS (cross-site scripting) but it does try and prevent the attack from causing any serious damage&lt;br /&gt;
&lt;br /&gt;
IMPLEMENTATION&lt;br /&gt;
-divided into 3 parts. The IBOS kernel, the IBOS messaging passing interfaces, and the IBOS subsystems&lt;br /&gt;
-IBOS kernel is implemented on top of the L4Ka::Pistachio microkernel&lt;br /&gt;
-scheduler is a static priority system&lt;br /&gt;
-entire IBOS TCB has 42,044 lines of code compared to:&lt;br /&gt;
	-Firefox on Linux &amp;gt; 5,684,639&lt;br /&gt;
	-ChromeOS &amp;gt; 4,407,066&lt;br /&gt;
-looked at 28 known Linux vulnerabilities, and were able to prevent 27 of them for a success rate of 96%&lt;br /&gt;
-also looked at Chrome&#039;s 295 bugs, 42 of which cause denial-of-service, which IBOS does not address currently&lt;br /&gt;
-78 were not actual security issues&lt;br /&gt;
-175 were legit issues, and can be grouped into 7 categories&lt;br /&gt;
	-Memory Exploitation = IBOS contained or eliminated slightly more problems than Chrome contained&lt;br /&gt;
	-XSS = IBOS was able to eliminate or contain all issues known in Chrome&lt;br /&gt;
	-SOP circumvention = also stopped all issues, vs. Chrome did not contain any&lt;br /&gt;
	-Sandbox bypassing = all vs. none&lt;br /&gt;
	-Interface spoofing = all vs. none&lt;br /&gt;
	-UI design flaw = neither browser was able to contain or eliminate any of these issues&lt;br /&gt;
	-Miscellaneous = IBOS only managed to stop 14% of these problems&lt;br /&gt;
-Overall, Chrome was able to contain 46%, while IBOS either contained or eliminated 77% of these known issues&lt;br /&gt;
-Chrome can contain most issues that get into the rendering engine, but cannot contain those that are in the browser kernel&lt;br /&gt;
-a compromised Ethernet driver cannot access the DMA buffers&lt;br /&gt;
-a compromised storage module has little impact on the data confidentiality and integrity because the IBOS kernel encrypts all data, only thing it can do is delete objects&lt;br /&gt;
-a compromised network stack is constrained as well because the IBOS kernel ensures that each network process can only send relevant data to the expected host&lt;br /&gt;
-a compromised window manager cannot affect other subsystems, because IBOS does not allow it to do anything but draw the browser chrome.&lt;br /&gt;
-compared IBOS, IBOS-Linux, Firefox, and Chrome loading several different websites&lt;br /&gt;
	-overall, Chrome was the fastest&lt;br /&gt;
	-IBOS, and IBOS-Linux were as fast as Chrome when loading web pages with few HTTP requests, but web pages like facebook, and wikipedia (which use a 		lot of HTTP requests, slowed IBOS and IBOS-Linux considerably)&lt;br /&gt;
&lt;br /&gt;
ADDITIONAL RELATED WORK&lt;br /&gt;
-ChromeOS and IBOS have fundamentally differnt design philosophies&lt;br /&gt;
-ChromeOS is implemented on top of the pre-existing Linux kernel, but will make modifications to the kernel to strip out uneeded portions&lt;br /&gt;
-IBOS starts with a clean slate and only includes the system functionality for the system. &lt;br /&gt;
-by starting from scratch, IBOS is able to keep the lines of code down in the TCB by 2 to 3 orders of magnitude compared to ChromeOS&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 01:58, 2 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Extra Resources=&lt;br /&gt;
http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
I found some presentation slides by Shuo Tang, Haohui Mai and Sam King, the authors and developers of IBOS&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:35, 25 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=5582</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=5582"/>
		<updated>2010-11-25T22:41:14Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Extra Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Comments &amp;amp; Discussion=&lt;br /&gt;
&lt;br /&gt;
EDIT: I&#039;ve pretty much explained the background concept behind IBOS and I kind of added the way it&#039;s executed near the end. Feel free to move that into the research section.&lt;br /&gt;
&lt;br /&gt;
I can work on the background of IBOS&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 23:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It seems we only have 5/7 members. We should start splitting up the tasks and assign who gets what. So if everybody writes what section they would like to work on that would be great.&lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 15:19, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll do the contribution section. I&#039;ll be reading through the paper thoroughly today and taking notes as I go. I&#039;ll post them later on this page as a sort of cheat-sheet/reminder. --[[User:Gsmith6|Gsmith6]] 17:45, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Group Members=&lt;br /&gt;
&lt;br /&gt;
Leave your name and e-mail address if you are assigned to this question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ymoussou|Youcef M.]] moussoud@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am alive and still in the class, selliot3@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 18:12, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Still in the class, andrewtubman84@gmail.com&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]]&lt;br /&gt;
&lt;br /&gt;
I&#039;m here. I have received an email reply from John Vanden Heuvel as well (he may not see this) gsmith0413@gmail.com&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:31, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
I am here... and replied to the email&lt;br /&gt;
&lt;br /&gt;
=Question 2 members=&lt;br /&gt;
&lt;br /&gt;
Elliott Charles selliot3&lt;br /&gt;
&lt;br /&gt;
Moussoud Youcef ymoussou&lt;br /&gt;
&lt;br /&gt;
Pharand Alexandre apharan2&lt;br /&gt;
&lt;br /&gt;
Smith Geoffrey gsmith6&lt;br /&gt;
&lt;br /&gt;
Tubman Andrew   atubman&lt;br /&gt;
&lt;br /&gt;
Vanden Heuvel John jvheuvel&lt;br /&gt;
&lt;br /&gt;
Vivekanandarajah Vijitharan vviveka2&lt;br /&gt;
&lt;br /&gt;
=Raw Information=&lt;br /&gt;
&lt;br /&gt;
The web itself is ubiquitous which a person can use for communication; banking, business, social networking and it can be useful for other purposes. There are different type of vulnerabilities web applications, browser, OS and library vulnerabilities. Insecure web browsers are monolithic, and they are easy to exploit. Secure  web browser such as chrome isolate web applications and it still contain huge trusted computing base (TCB). Browser abstractions as the first-class OS, contains reduced TCB for web browser and it also have protection to withstand attacks to most components. [[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
=Extra Resources=&lt;br /&gt;
http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
I found some presentation slides by Shuo Tang, Haohui Mai and Sam King, the authors and developers of IBOS&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:35, 25 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=5581</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=5581"/>
		<updated>2010-11-25T22:35:23Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Question 2 members */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Comments &amp;amp; Discussion=&lt;br /&gt;
&lt;br /&gt;
EDIT: I&#039;ve pretty much explained the background concept behind IBOS and I kind of added the way it&#039;s executed near the end. Feel free to move that into the research section.&lt;br /&gt;
&lt;br /&gt;
I can work on the background of IBOS&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 23:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It seems we only have 5/7 members. We should start splitting up the tasks and assign who gets what. So if everybody writes what section they would like to work on that would be great.&lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 15:19, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll do the contribution section. I&#039;ll be reading through the paper thoroughly today and taking notes as I go. I&#039;ll post them later on this page as a sort of cheat-sheet/reminder. --[[User:Gsmith6|Gsmith6]] 17:45, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Group Members=&lt;br /&gt;
&lt;br /&gt;
Leave your name and e-mail address if you are assigned to this question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ymoussou|Youcef M.]] moussoud@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am alive and still in the class, selliot3@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 18:12, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Still in the class, andrewtubman84@gmail.com&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]]&lt;br /&gt;
&lt;br /&gt;
I&#039;m here. I have received an email reply from John Vanden Heuvel as well (he may not see this) gsmith0413@gmail.com&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:31, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
I am here... and replied to the email&lt;br /&gt;
&lt;br /&gt;
=Question 2 members=&lt;br /&gt;
&lt;br /&gt;
Elliott Charles selliot3&lt;br /&gt;
&lt;br /&gt;
Moussoud Youcef ymoussou&lt;br /&gt;
&lt;br /&gt;
Pharand Alexandre apharan2&lt;br /&gt;
&lt;br /&gt;
Smith Geoffrey gsmith6&lt;br /&gt;
&lt;br /&gt;
Tubman Andrew   atubman&lt;br /&gt;
&lt;br /&gt;
Vanden Heuvel John jvheuvel&lt;br /&gt;
&lt;br /&gt;
Vivekanandarajah Vijitharan vviveka2&lt;br /&gt;
&lt;br /&gt;
=Raw Information=&lt;br /&gt;
&lt;br /&gt;
The web itself is ubiquitous which a person can use for communication; banking, business, social networking and it can be useful for other purposes. There are different type of vulnerabilities web applications, browser, OS and library vulnerabilities. Insecure web browsers are monolithic, and they are easy to exploit. Secure  web browser such as chrome isolate web applications and it still contain huge trusted computing base (TCB). Browser abstractions as the first-class OS, contains reduced TCB for web browser and it also have protection to withstand attacks to most components. [[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
=Extra Resources=&lt;br /&gt;
I found some presentation slides by Shuo Tang, Haohui Mai and Sam King, the authors and developers of IBOS&lt;br /&gt;
http://www.cs.uiuc.edu/homes/stang6/ibos.html#slide1&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:35, 25 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=5576</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=5576"/>
		<updated>2010-11-25T17:45:13Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Comments &amp;amp; Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Comments &amp;amp; Discussion=&lt;br /&gt;
&lt;br /&gt;
EDIT: I&#039;ve pretty much explained the background concept behind IBOS and I kind of added the way it&#039;s executed near the end. Feel free to move that into the research section.&lt;br /&gt;
&lt;br /&gt;
I can work on the background of IBOS&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 23:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It seems we only have 5/7 members. We should start splitting up the tasks and assign who gets what. So if everybody writes what section they would like to work on that would be great.&lt;br /&gt;
&lt;br /&gt;
--[[User:Ymoussou|Youcef M.]] 15:19, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll do the contribution section. I&#039;ll be reading through the paper thoroughly today and taking notes as I go. I&#039;ll post them later on this page as a sort of cheat-sheet/reminder. --[[User:Gsmith6|Gsmith6]] 17:45, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Group Members=&lt;br /&gt;
&lt;br /&gt;
Leave your name and e-mail address if you are assigned to this question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ymoussou|Youcef M.]] moussoud@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am alive and still in the class, selliot3@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 18:12, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Still in the class, andrewtubman84@gmail.com&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]]&lt;br /&gt;
&lt;br /&gt;
I&#039;m here. I have received an email reply from John Vanden Heuvel as well (he may not see this) gsmith0413@gmail.com&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:31, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[User:vviveka2|vG]]&lt;br /&gt;
&lt;br /&gt;
I am here... and replied to the email&lt;br /&gt;
&lt;br /&gt;
=Question 2 members=&lt;br /&gt;
&lt;br /&gt;
Elliott Charles selliot3&lt;br /&gt;
&lt;br /&gt;
Moussoud Youcef ymoussou&lt;br /&gt;
&lt;br /&gt;
Pharand Alexandre apharan2&lt;br /&gt;
&lt;br /&gt;
Smith Geoffrey gsmith6&lt;br /&gt;
&lt;br /&gt;
Tubman Andrew   atubman&lt;br /&gt;
&lt;br /&gt;
Vanden Heuvel John jvheuvel&lt;br /&gt;
&lt;br /&gt;
Vivekanandarajah Vijitharan vviveka2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The web itself is ubiquitous which a person can use for communication; banking, business, social networking and it can be useful for other purposes. There are different type of vulnerabilities web applications, browser, OS and library vulnerabilities. Insecure web browsers are monolithic, and they are easy to exploit. Secure  web browser such as chrome isolate web applications and it still contain huge trusted computing base (TCB). Browser abstractions as the first-class OS, contains reduced TCB for web browser and it also have protection to withstand attacks to most components. [[User:vviveka2|vG]]&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=5029</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 2</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_2&amp;diff=5029"/>
		<updated>2010-11-15T22:31:59Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Group Members */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Group Members=&lt;br /&gt;
&lt;br /&gt;
Leave your name and e-mail address if you are assigned to this question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[User:Ymoussou|Youcef M.]] moussoud@gmail.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am alive and still in the class, selliot3@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
--[[User:Selliot3|Selliot3]] 18:12, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Still in the class, andrewtubman84@gmail.com&lt;br /&gt;
&lt;br /&gt;
[[User:Atubman|Atubman]]&lt;br /&gt;
&lt;br /&gt;
I&#039;m here. I have received an email reply from John Vanden Heuvel as well (he may not see this) gsmith0413@gmail.com&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 22:31, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
=Question 2 members=&lt;br /&gt;
&lt;br /&gt;
Elliott Charles selliot3&lt;br /&gt;
&lt;br /&gt;
Moussoud Youcef ymoussou&lt;br /&gt;
&lt;br /&gt;
Pharand Alexandre apharan2&lt;br /&gt;
&lt;br /&gt;
Smith Geoffrey gsmith6&lt;br /&gt;
&lt;br /&gt;
Tubman Andrew   atubman&lt;br /&gt;
&lt;br /&gt;
Vanden Heuvel John jvheuvel&lt;br /&gt;
&lt;br /&gt;
Vivekanandarajah Vijitharan vviveka2&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_10&amp;diff=4611</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_10&amp;diff=4611"/>
		<updated>2010-10-15T07:38:32Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey all,&lt;br /&gt;
&lt;br /&gt;
I think we should write down our emails here so we can further discuss stuff without having to login here.&lt;br /&gt;
(&#039;&#039;&#039;***Note that discussions over email can&#039;t be counted towards your participation grade!***&#039;&#039;&#039;--[[User:Soma|Anil]])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geoff Smith (gsmith0413@gmail.com) - gsmith6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andrew Bujáki (abujaki [at] Connect or Live.ca)&lt;br /&gt;
***I&#039;m usually on MSN(Live) for collaboration at nights, Just make sure to put in a little message about who you are when you&#039;re adding me. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I used Google Scholar and came to this page http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&lt;br /&gt;
Which briefly touches on the issues of Flash memory. Specifically, inability to update in place, and limited write/erase cycles.&lt;br /&gt;
&lt;br /&gt;
Inability to update in place could refer to the way the flash disk is programmed, instead of bit-by-bit, it is programmed block-by-block. A block would have to be erased and completely reprogrammed in order to flip one bit after it&#039;s been set.&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_memory#Block_erasure&lt;br /&gt;
&lt;br /&gt;
Limited write/erase: Flash memory typically has a short lifespan if it&#039;s being used a lot. Writing and erasing the memory (Changing, updating, etc) Will wear it out. Flash memory has a finite amount of writes, (varying on manufacturer, models, etc), and once they&#039;ve been used up, you&#039;ll get bad sectors, corrupt data, and generally be SOL.&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_memory#Memory_wear&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Filesystems would have to be changed to play nicely with these constraints, where it must use blocks efficiently and nicely, and minimize writing/erasing as much as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I found a paper that talks about the performance, capabilities and limitations of NAND flash storage. &lt;br /&gt;
&lt;br /&gt;
Abstract: &amp;quot;This presentation provides an in-depth examination of the&lt;br /&gt;
fundamental theoretical performance, capabilities, and&lt;br /&gt;
limitations of NAND Flash-based Solid State Storage (SSS). The&lt;br /&gt;
tutorial will explore the raw performance capabilities of NAND&lt;br /&gt;
Flash, and limitations to performance imposed by mitigation of&lt;br /&gt;
reliability issues, interfaces, protocols, and technology types.&lt;br /&gt;
Best practices for system integration of SSS will be discussed.&lt;br /&gt;
Performance achievements will be reviewed for various&lt;br /&gt;
products and applications. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Link: http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&lt;br /&gt;
&lt;br /&gt;
There&#039;s no Starting place like Wikipedia, even if you shouldn&#039;t source it. &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_Memory &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/LogFS &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Hard_disk &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Wear_leveling &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Solid-state_drive&lt;br /&gt;
&lt;br /&gt;
Hey Guys,&lt;br /&gt;
&lt;br /&gt;
We really don&#039;t have much time to get this done. Lets meet tomorrow after class and get our bearings to do this properly.&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A few of us have Networking immediately after class. I know personally I won&#039;t be able to make anything set on Tuesday.&lt;br /&gt;
Additionally, he spoke briefly about hotspots on the disk for our question last week, where places on the disk would be written to far more often than others. &lt;br /&gt;
As well, for bibliographical citing, http://bibme.org is a wonderful resource for the popular formats (I.e. MLA). If it should come down to that.&lt;br /&gt;
~Andrew&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===links===&lt;br /&gt;
&lt;br /&gt;
Start Posting some stuff to source from:&lt;br /&gt;
&lt;br /&gt;
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&lt;br /&gt;
--&amp;quot;Introduction to flash memory&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://portal.acm.org/citation.cfm?id=1244248&lt;br /&gt;
--&amp;quot;Wear Leveling&amp;quot; (it&#039;s about a proposed way of doing it, but explains a whole bunch of other things to do that)&lt;br /&gt;
&lt;br /&gt;
http://portal.acm.org/citation.cfm?id=1731355&lt;br /&gt;
--&amp;quot;Online maintenance of very large random samples on flash storage&amp;quot; (ie dealing with the constraints of Flash Storage in a system that might actually be written to 100000 times)&lt;br /&gt;
&lt;br /&gt;
http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&lt;br /&gt;
--&amp;quot;An Efficient NAND Flash File System for Flash Memory Storage&amp;quot; discuses shortcomings of using hard disk based file systems and current flash based file systems&lt;br /&gt;
&lt;br /&gt;
http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&lt;br /&gt;
--&amp;quot;NAND vs NOR Flash Memory&amp;quot; (note: i didn&#039;t get this off of Google scholar but it seems to be written by someone from Toshiba. is that ok?)&lt;br /&gt;
&lt;br /&gt;
Hi everybody,&lt;br /&gt;
&lt;br /&gt;
So here are the latest news. Geoff, Andrew and myself had a meeting after class today and came up with a plan for writing this thing. &lt;br /&gt;
&lt;br /&gt;
We decided to have 3 parts:&lt;br /&gt;
&lt;br /&gt;
1. What flash storage is, why its good but also why it must have the problems that it does (the assumption is that it must have them, why would it otherwise?)&lt;br /&gt;
[don&#039;t know much about this just now... basics include that there is NOR (reads slightly faster)and NAND (holds more, writes faster, erases much faster, lasts about ten times longer) flash with NAND being especially popular for storage (what&#039;s NOR good for?). Here, we&#039;d ideally want to talk about why flash was invented (supposed as an alternative to slow ROM), why it was suitable for that, and how it works on a technical level. Then, we&#039;d want to mention why this technical functionality was innovative and useful but also why it came with two serious set-backs: having a limited-number of re-write cycles and needing to erase a block at a time.]&lt;br /&gt;
&lt;br /&gt;
Either way, Flash storage affords far faster fetch times than the traditional platter-based HDD, and stability of information in a sense. Where the data is not actually stored, but reprogrammed, in a sense, the data is more secure and is less likely to be erased easily. On that note, in order to flip a single bit, that entire block will need to be erased, then reprogrammed. In an &#039;old&#039; HDD, let&#039;s say, When the HDD fails at the end of its life cycle, your data is gone. (unless you&#039;re willing to shell out $200/hr to have it recovered, yes I&#039;ve seen companies in Ottawa that do this.) In a flash HDD, when it reaches the end of its life, it merely becomes read-only. Bugger for Databases, but useful for technical notes and archives, let&#039;s say.&lt;br /&gt;
With today&#039;s modern gaming computers, Flash memory can be good on quick load times, however with limited read-writes, it could afford better use to things that are not updated as frequently. I.e... Well I don&#039;t have a better example than a webserver hosting a company&#039;s CSS and scripts.&lt;br /&gt;
~Source: Years in the &#039;biz &lt;br /&gt;
&lt;br /&gt;
Flash memory started out as a replacement for EPROMs.  At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips.&lt;br /&gt;
source: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1 , http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&lt;br /&gt;
&lt;br /&gt;
2. How a traditional disk-based file-system works and why the limitations of flash storage make the two a poor match&lt;br /&gt;
[the obvious answer seems to be that traditional file-systems could just write to whatever memory was available but if they did this with a flash file-systems, certain chunks of memory would become unusable before others and the memory would be more difficult to work with. Also, disk-based file systems need to deal with seeking times which means that they want to organize their data in such a way as to reduce those (by putting related things together?) - with Flash, this isn&#039;t really a problem and thus one constraint the less to be concerned with.]&lt;br /&gt;
&lt;br /&gt;
3. How a log based file-system works and why this method of operation is so well suited to working with flash memory especially in light of the latter&#039;s inherent limitations&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
At this time, the plan is that Geoff will work on #3 today, Andrew will work on #1 tomorrow and I will work on #2 tomorrow. The three of us will make an effort to consult some somewhat more painfully technical literature in order to gain insight into our respective queries. Whatever insight we find will be posted here. &lt;br /&gt;
&lt;br /&gt;
Then, we will meet again on Thursday after class to decide how to actually write the essay.&lt;br /&gt;
&lt;br /&gt;
PS, if there is anybody in the group besides the three of us - let us know so you can find a way to contribute to this... as at least two of us are competent essayists, painfully technical research would on one or more of the above topics would be a great way to contribute... especially if you could post it here prior to one of us going over the same thing. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
-- I&#039;m not that great (but absolutely horrid) at essays and I&#039;m alright at research, but if nothing else I have Thursday off and nothing (else) that needs doing by Friday so I can probably spend a bunch of time working on it just before it&#039;s due. -- &#039;&#039;Nick L&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-- Hay sorry I was unable to attend the meeting after class today. I am not too good at writing essays as well but I am pretty good at summarizing and researching. I am not too sure at what you would like me to do. Right now I&#039;ll assume you need me to research/summarizing articles for the 3 topics above. If you need me to do anything else post it here. I&#039;ll be checking the discussion regularly until this due. once again sorry for missing the meeting-- Paul Cox.&lt;br /&gt;
&lt;br /&gt;
-- Hey i&#039;m also supposed to be in on this. Sorry i couldn&#039;t contribute sooner because i was playing catchup in my other classes. Let me know what i can do and i&#039;ll be on it asap. - kirill (k.kashigin@gmail.com)&lt;br /&gt;
update: i&#039;m gonna be helping Fedor with #2&lt;br /&gt;
&lt;br /&gt;
PS, this article http://docs.google.com/viewer?a=v&amp;amp;q=cache:E7-H_pv_18wJ:citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.92.2279%26rep%3Drep1%26type%3Dpdf+flash+memory+and+disk-based+file+systems&amp;amp;hl=en&amp;amp;gl=ca&amp;amp;pid=bl&amp;amp;srcid=ADGEESgspy-jqIdLOpaLYlPPoM56kjLPwXcL3_eMbTTBRkI7PG0jQKl9vIieTAYHubPu0EdQ0V4ccaf_p0S_SnqKMirSIM0Qoq5E0NpLd0M7LAGaE51wkD0F55cRSkX8dnTqx_9Yx2E7&amp;amp;sig=AHIEtbS-yfGI9Y48DJ0WyEEhmsXInelRGw looks really useful for part 3.&lt;br /&gt;
&lt;br /&gt;
---same article as above but shorter link: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&lt;br /&gt;
&lt;br /&gt;
PPS, and this article looks really great for understanding how log based file systems work: http://delivery.acm.org/10.1145/150000/146943/p26-rosenblum.pdf?key1=146943&amp;amp;key2=3656986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Luc (TA) here, Anandtech ran a series of articles on solid state drives that you guys might find useful.  It mostly looked at hardware aspects but it gives some interesting insights on how to modify file systems to better support flash memory.&lt;br /&gt;
&lt;br /&gt;
http://www.anandtech.com/cpuchipsets/intel/showdoc.aspx?i=3403&lt;br /&gt;
&lt;br /&gt;
http://www.anandtech.com/storage/showdoc.aspx?i=3531&amp;amp;p=1&lt;br /&gt;
&lt;br /&gt;
http://anandtech.com/storage/showdoc.aspx?i=3631&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:3maisons|3maisons]] 19:44, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hey Paul&amp;amp;Kirill,&lt;br /&gt;
&lt;br /&gt;
If one of you guys could help me out with #2, that would be really great. I was going to work on that tomorrow, but I also have another large assignment to deal with and not having to do this research would greatly ease my life. Moreover, I do intend to work on writing&amp;amp;polishing the essay on Thursday as I have a lot of experience with that and it far more than research. Let me know if either one of you can help me with this. &lt;br /&gt;
&lt;br /&gt;
The other person could probably read over what Luc posted for us and see if it fits into our framework. Just be sure to state who is going to do what. &lt;br /&gt;
&lt;br /&gt;
Nick, &lt;br /&gt;
&lt;br /&gt;
Honestly, we really hope to have the research done by Thursday. If that is the only day that you are free and you&#039;re not a writer, I&#039;m honestly not sure what you could do. Perhaps someone else can think of something.&lt;br /&gt;
&lt;br /&gt;
- Fedor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m gonna have something for #2 up tonight. -kirill&lt;br /&gt;
&lt;br /&gt;
So I found this article on Reddit, posted from Linux Weekly News on pretty much exactly what we are looking at. It&#039;s entitled &amp;quot;Solid-state storage devices and the block layer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://lwn.net/SubscriberLink/408428/68fa8465da45967a/    --[[User:Gsmith6|Gsmith6]] 20:36, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I wasn&#039;t exactly sure how much information i was supposed to present but here&#039;s what i got for #2:&lt;br /&gt;
&lt;br /&gt;
	Most conventional file systems are designed to me implemented on hard disk drives. This fact does not mean they cannot be implemented on a solid state drive (file storage that uses flash memory instead of magnetic discs). It would however, in many ways, defeat the purpose of using flash memory. The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically so there is no need to waste resources laying out the data in close proximity.&lt;br /&gt;
	A traditional HDD file system will also attempt to defragment itself, moving blocks of data around for closer proximity on the magnetic disk. This process, although beneficial for HDD&#039;s, is harmful and inefficient for flash based storage. A flash optimal file system needs to reduce the amount of erase operations, since flash memory only has a limited amount of erase cycles as well as having very slow erase speeds.&lt;br /&gt;
	When an HDD rewrites data to a physical location there is no need for it to erase the previously occupying data first, so a traditional disk based file system doesn&#039;t worry about erasing data from unused memory blocks. In contrast flash memory needs to first erase the data block before it can modify any of it contents. Since the erase procedure is extremely slow, its not practical to overwrite old data every time. It is also decremental to the life span of flash memory.&lt;br /&gt;
	To maximize the potential of flash based memory the file system would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to erase unused blocks when the system is idle, which does not get implemented in conventional file systems since it is not needed.&lt;br /&gt;
&lt;br /&gt;
--kirill&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So Fedor and I were talking in the labs, and we came to the conclusion that we have been focusing on just the translation from a regular file system to a flash drive. We were under the impression that this was in fact the &amp;quot;Flash Optimized System&amp;quot;, but pulling up some more articles, I&#039;m finding that this is not necessarily the case. &lt;br /&gt;
&lt;br /&gt;
This paper here http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf.&lt;br /&gt;
shows an example from Axis Communications where they developed a file system specifically designed to be used on flash drives. &lt;br /&gt;
&lt;br /&gt;
Now I haven&#039;t completely read it, so it might just be an optimized translational system, but its at least a start.&lt;br /&gt;
&lt;br /&gt;
At our meeting today, we&#039;ve decided that it would be best if people could post a rough summary of their notes in the appropriate sections, and I will rewrite them into an essay, which Fedor will go through later tonight to edit and add some more information.&lt;br /&gt;
&lt;br /&gt;
Paul: I missed your comment that you weren&#039;t that great at writing, and good at research. If you want some articles behind the pay-walls, I&#039;ve saved a bunch of them and emailed them to myself. Just email me (at the address at the top of the page) and I&#039;ll be more than happy to send some your way.&lt;br /&gt;
&lt;br /&gt;
PS. some more references&lt;br /&gt;
&lt;br /&gt;
Design tradeoffs for SSD performance http://portal.acm.org/citation.cfm?id=1404014.1404019 &lt;br /&gt;
A log buffer-based flash translation layer using fully-associative sector translation http://delivery.acm.org/10.1145/1280000/1275990/a18-lee.pdf?key1=1275990&amp;amp;key2=0709607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=105787273&amp;amp;CFTOKEN=74601780&lt;br /&gt;
&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 15:03, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don&#039;t have any notes on this computer. &amp;gt;: I will be adding more to my section later on tonight. Sorry. ~Andrew&lt;br /&gt;
&lt;br /&gt;
Hello dudes,&lt;br /&gt;
&lt;br /&gt;
Just a quick note, try to include citations in your paragraphs - each time that you make a claim which came from evidence, put a little number [X, pp. page-number (if applicable)] into your text. Then, put the same [X] at the bottom of the page with the bibliographical information about the source. The prof hasn&#039;t yet gotten back to me about his preferred citation format, so just stick with this one for now:&lt;br /&gt;
&lt;br /&gt;
Authors. &#039;&#039;Title&#039;&#039;. Web-page. Date of article. Web (the word). Date you accessed it.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example:&lt;br /&gt;
&lt;br /&gt;
[1] Kawaguchi, Nishioka, Tamoda. &#039;&#039;A Flash Memory Based File System&#039;&#039;.&lt;br /&gt;
http://docs.google.com/viewer?a=v&amp;amp;q=cache:E7-H_pv_18wJ:citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.92.2279%26rep%3Drep1%26type%3Dpdf+flash+memory+and+disk-based+file+systems&amp;amp;hl=en&amp;amp;gl=ca&amp;amp;pid=bl&amp;amp;srcid=ADGEESgspy-jqIdLOpaLYlPPoM56kjLPwXcL3_eMbTTBRkI7PG0jQKl9vIieTAYHubPu0EdQ0V4ccaf_p0S_SnqKMirSIM0Qoq5E0NpLd0M7LAGaE51wkD0F55cRSkX8dnTqx_9Yx2E7&amp;amp;sig=AHIEtbS-yfGI9Y48DJ0WyEEhmsXInelRGw . 1995. Web. Oct. 14, 2010.&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
PS, its a good idea to check this fairly frequently between now and tomorrow morning - you never know when something will come up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Phew... for a while there I was starting to think that I had nothing about the actual &amp;quot;Log-Based System&amp;quot;, but it turns out that the &amp;quot;Transitional Layer&amp;quot; is the same thing. It looks like some articles are calling it the Log system, while others are calling it the transitional layer. Pretty sure I&#039;m going to have an experts knowledge about flash drives after reading all these articles :P&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 18:13, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hay Geoff this is what i got so far after reading a couple of the pdfs. the double tabed points are just my annotation on how they relate to the question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ware leveling: p1126-chang.pdf&lt;br /&gt;
&lt;br /&gt;
* Uneven wearing of flash memory due to storing data close together&lt;br /&gt;
* Garbage collection prefers that no blocks have pages that have data that is constantly becoming invalid&lt;br /&gt;
* data that remains the same for longs periods of time should be moved from block that have not be written to much and moved to blocks that haven been erased frequently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log file structure: 926-rosenblum.pdf&lt;br /&gt;
&lt;br /&gt;
* LFS based on assumption that frequently read files will be stored in cash and that the hard disk traffic will be dominated by writes&lt;br /&gt;
* Writes all new info to disk in a sequential structure called a log&lt;br /&gt;
* Data is stored permanently in these logs no other data is stored on the hard drive&lt;br /&gt;
* Converts many small random synchronous writes to a large asynchronous sequential write&lt;br /&gt;
** Good for flash because it cuts down on writing (prolongs drive life)&lt;br /&gt;
** It also good because it writes to a bigger section then a page. This means it can fill a block at a time so it doesn’t fill up other blocks with random writes that would later need to be cleaned. Cuts down on cleaning.&lt;br /&gt;
* Inode is stored in the log on the disk while an inode map is maintained in memory which points to the inode in the hard disk. as&lt;br /&gt;
** This is good for flash drives because reading does not hurt the drives life and it is fast.&lt;br /&gt;
** This means the map will not have to be updated on the disk as frequently cutting down on the writes.&lt;br /&gt;
* Log systems weakness is that it is susceptible to becoming fragmented due to the larger writes. &lt;br /&gt;
** Since flash drives do not require fragmentation this is fine. Also since flash drives have very fast random access the system does not become bogged down when the logs are fragmented&lt;br /&gt;
* Log system implements a cleaning system that scans a segment in and sees if there is live data in it. If there is a certain percentage of invalid data which goes according to the cleaning policy it will be cleaned. All the live data will be copied out and the segment will be erased.&lt;br /&gt;
** This is a garbage collector but its built into the file system.&lt;br /&gt;
* Segments contain a number of blocks. Segments can contain logs or parts of logs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m still sifting though the other pdfs you sent me. Would you like me to post more info or should i format this into a paragraph or 2?&lt;br /&gt;
&lt;br /&gt;
--Paul&lt;br /&gt;
&lt;br /&gt;
I&#039;m sorting through my notes and putting them into a digital format. Difficult because It&#039;s hard to remember what I copied directly out of the notes for my own reference, so I&#039;m trying to de-plagarize. I&#039;ll upload what I have to the section by 20:30, but expect more updates. ~Andrew&lt;br /&gt;
&lt;br /&gt;
Hey Paul,&lt;br /&gt;
&lt;br /&gt;
Thanks for helping out with the research&lt;br /&gt;
I&#039;m thinking that we probably have enough information (at least for the log-based system), so maybe if you could &amp;quot;try&amp;quot; and putting them into paragraphs. I&#039;m kind of in the middle of typing up the essay, and I&#039;m uploading new information every 10-20 minutes or so. Even if you could get something into paragraph form, I can go through and edit, rearrange, and add stuff as I get there. --[[User:Gsmith6|Gsmith6]] 23:51, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m just going to dump my entire wiki so far into my profile page, because everything&#039;s being updated so quickly.&lt;br /&gt;
[[User:Abujaki]] ~Andrew&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m sitting at my computer working on much less immediately important homework if someone wants me to do something. I&#039;m not a great writer but if there&#039;s something that needs doing I can do it. -- Nick [[User:Nlessard|Nlessard]] 00:55, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
Keep up the good work!&lt;br /&gt;
&lt;br /&gt;
Geoff, it would be good if you uploaded the stuff you were typing as you got each section finished. I rewrote part 2 and the intro some hours ago and I guess I could go out and write a conclusion while stuff is still being updated. &lt;br /&gt;
&lt;br /&gt;
The other thing is that the current version of part 1 doesn&#039;t really seem to serve the argument - I mean, it doesn&#039;t actually tell us why flash has the constraints that it does on a technical level... and that&#039;s not surprising because that information seems to be hard to find. Still, I&#039;m going to see if I can find out anything about that, though, so far, I haven&#039;t had much luck.&lt;br /&gt;
&lt;br /&gt;
Apart from this, I&#039;ll try to get up early tomorrow to look over what&#039;s there: make sure the argument works, etc.&lt;br /&gt;
&lt;br /&gt;
Good luck with the writing,&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
I think it has to do with how some transistors are made. Give me a second to research that... ~Andrew&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From source 20, page 269 sec 4.6.4&lt;br /&gt;
Stress Induced Oxide leakage&lt;br /&gt;
...These devices are either erased ... orboth programmed and erased by a high field (Fowler-Nordheim) injection of electrons into a very thin dielectric film to charge and discharge the floating gate. Unfortunately, [passing] this current through the oxide degrades the quality of the oxide and eventually leads to breakdown. The wearout of tunnel oxide films during high-field stress has been correlated with the buildup of both positive or negative trapped charges.&amp;quot;... there are still some things missing from this explanation... Give me a couple more seconds... and my brain won&#039;t process this for some reason. =_= What can you guys make of this? ~Andrew&lt;br /&gt;
&lt;br /&gt;
And I said NOR Flash memory had fast fetch times. I found what I was looking for, just not too sure how to explain it in text. Silicon Oxide is used for electron injection methods, including the Fowler-Nordheim Tunneling method, where it seems to say that an electric current is passed across the oxide and it thins enough for a current to be passed through a barrier into the oxide conduction... band?&lt;br /&gt;
&lt;br /&gt;
Kay. New resource [19], the massively complicated theories and science would put anyone to sleep, but the basic point is The Silicon oxide layer will degrade in quality to the point where charge trapping begins to occur, the more it&#039;s used, and the more electrons that tunnel through it over time. It&#039;s like a kneaded eraser scenario. The more you use it, the poorer quality it gets until it gets all flakey and cannot do its job anymore. The same happens with the SiO2 layer in the floating gate transistors ~Andrew&lt;br /&gt;
&lt;br /&gt;
hmmm... alright, I think I understand that, could you maybe try your best and add it into the essay? If not I can try and whip something up to put in there. thanks --[[User:Gsmith6|Gsmith6]] 02:39, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Wow, I&#039;m sorry I made you go into that... that does explain the limited erase-cycles, though. Was it the use of these materials that made flash innovative? How does that explain the block-sized erasures?&lt;br /&gt;
&lt;br /&gt;
Going to go write a conclusion now.&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While looking for what you requested, I found an entire section on the oxide breakdown... oops. :P&lt;br /&gt;
So really nothing changes, As electrons tunnel through the oxide layer, it deteriorates. When the damage becomes too great, the oxide abruptly loses its insulative properties. (damn firefox, that&#039;s a word) Looking for the erasures now ~Andrew&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
I&#039;m off to sleep, but I&#039;ll be up at 5am to see what else I can do.&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Aw, I just missed you.&lt;br /&gt;
It turns out that erasing entire blocks is necessary based on how the chip is built. For both NOR and NAND, pairs of word lines share an erase line, which is located near the floating gate. It uses FN tunneling to erase two lines of words at a time, making the sector the smallest size you can erase simply because that&#039;s how it&#039;s physically wired.&lt;br /&gt;
i.e []-mem byte |-erase line&lt;br /&gt;
&lt;br /&gt;
#[]|[][]|[]&lt;br /&gt;
#[]|[][]|[]&lt;br /&gt;
#[]|[][]|[]&lt;br /&gt;
#[]|[][]|[] ... If that makes any sense... The erase line is separate from the byte select or word select lines&lt;br /&gt;
&lt;br /&gt;
Numbers for formatting sake.&lt;br /&gt;
&lt;br /&gt;
I&#039;m prolly gonna take Fedor&#039;s advice and head to bed, but I&#039;ll likely pop back on before I go to sleep in case anyone needs me to look up anything else. :P&lt;br /&gt;
&lt;br /&gt;
--[[User:Lmundt|Lmundt]] 03:23, 15 October 2010 (UTC) Interesting article compaing speeds&lt;br /&gt;
https://noc.sara.nl/nrg/publications/RoN2010-D1.1.pdf&lt;br /&gt;
&lt;br /&gt;
Wow, I can&#039;t believe I completely forgot. Hybrid Drives... I can&#039;t remember for the life of me whether they exist yet or not, but there will eventually exist a hard drive that&#039;s both flash and traditional platter. It allocates files that are not rewritten often, like an OS (well except windows and all its lovely updates) to the flash memory on install, and the remainder of the files (Documents, programs etc) to the traditional platter. Because you can&#039;t reformat an OS 100,000 times (no matter HOW badly you screw it up with viruses and the like), the flash memory will retain usability, and all the hotspots are on the platters, so you don&#039;t need to worry about minimizing disk usage.&lt;br /&gt;
I&#039;m out for the night. Cheers all! ~Andrew&lt;br /&gt;
&lt;br /&gt;
Alright guys... I&#039;ve done as much as I can for tonight. I&#039;m exhausted and I&#039;m having troubles concentrating anymore. I added a few questions for people to answer as they read. I&#039;m going to bed, hopefully people will be up early enough to fix some things that I may have missed because I sure as hell won&#039;t be :P. Really wish I could keep going though.  --[[User:Gsmith6|Gsmith6]] 07:38, 15 October 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4608</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4608"/>
		<updated>2010-10-15T07:34:20Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Questions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage. It started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically.[7] Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
This extreme read speed makes flash drives a preferred method of storing games. This effectively makes loading times virtually non-existent. There is however a downside to this method. Games constantly save, modify, and change files wearing out the blocks much quicker. Flash drives have been shown be effective for the use in web-servers for running their CSS scripts or HTML pages.&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
The transistors that store the data are created with a thin strip of Silicon Oxide separating them. When the erase operation is called on the block where the transistors are located, the system fires electrons down the strip, wiping whatever bits the transistors are holding.   &lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Translational Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &#039;&#039;wear leveling&#039;&#039;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system.&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of wear leveling ensures that he drive does not keep erasing and writing to the same block over and over. This is achieved by writing data that doesn’t change often to blocks that have been erased frequently.  Wear leveling tries to make all the blocks use up there write cycles at an even pace increasing the overall life of the hard drive.[3] This is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased. [8]&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
===Why a Log File System is efficient for flash had drive===&lt;br /&gt;
The file system only writes a bank at a time. This means that the OS can save up the small random writes and write them all at the same time in a bank.  This will cut down on the use of the expensive write command improving the overall performance of the hard drive.[9]&lt;br /&gt;
&lt;br /&gt;
If a collision occurs when writing a new bank, the file system will sends the new data to an empty bank rather then erasing the existing bank and replacing it. This will cut down on using the erase function improving the life of the hard drive. Also since it only performs writes command and not a erase command and write command like a traditional file system this improves performance of the drive as well.[16]&lt;br /&gt;
&lt;br /&gt;
===Systems Developed For Flash===&lt;br /&gt;
In 1999 a Swedish company by the name of Axis Communications, developed and released a file system that was designed specifically to be run on a flash drive. Instead of mapping each physical address space with an emulated block sector, the system creates nodes that store data. The system keeps a log of the nodes and when each node was last updated. The system also keeps track of inodes. These inodes keep a list of nodes that correspond to the relevant data. The nodes also contain information about which inode it belongs to. When the drive is mounted, the system scans all the nodes on the drive, and rebuilds the directory.&lt;br /&gt;
As the directory gets built, the nodes containing the data also map the physical location for each piece of data.[14] &lt;br /&gt;
&lt;br /&gt;
When writing data to the drive, the nodes carrying that data get attached to the end of the log.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
# Even though flash drives are exponentially faster than traditional HDDs, why are HDDs still the main method of data storage?&lt;br /&gt;
# Writing and erasing data are costly operations for a flash based storage drive. Why does modifying data (even a single bit) take the most amount of time?&lt;br /&gt;
# Why is the Flash Translational Layer so important to a flash drive&#039;s functionality? Why can you not use the traditional interface to deal with the block layer?&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4597</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4597"/>
		<updated>2010-10-15T07:22:58Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Banks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage. It started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically.[7] Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
This extreme read speed makes flash drives a preferred method of storing games. This effectively makes loading times virtually non-existent. There is however a downside to this method. Games constantly save, modify, and change files wearing out the blocks much quicker. Flash drives have been shown be effective for the use in web-servers for running their CSS scripts or HTML pages.&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
The transistors that store the data are created with a thin strip of Silicon Oxide separating them. When the erase operation is called on the block where the transistors are located, the system fires electrons down the strip, wiping whatever bits the transistors are holding.   &lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Translational Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &#039;&#039;wear leveling&#039;&#039;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system.&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of wear leveling ensures that he drive does not keep erasing and writing to the same block over and over. This is achieved by writing data that doesn’t change often to blocks that have been erased frequently.  Wear leveling tries to make all the blocks use up there write cycles at an even pace increasing the overall life of the hard drive.[3] This is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased. [8]&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
===Why a Log File System is efficient for flash had drive===&lt;br /&gt;
The file system only writes a bank at a time. This means that the OS can save up the small random writes and write them all at the same time in a bank.  This will cut down on the use of the expensive write command improving the overall performance of the hard drive.[9]&lt;br /&gt;
&lt;br /&gt;
If a collision occurs when writing a new bank, the file system will sends the new data to an empty bank rather then erasing the existing bank and replacing it. This will cut down on using the erase function improving the life of the hard drive. Also since it only performs writes command and not a erase command and write command like a traditional file system this improves performance of the drive as well.[16]&lt;br /&gt;
&lt;br /&gt;
===Systems Developed For Flash===&lt;br /&gt;
In 1999 a Swedish company by the name of Axis Communications, developed and released a file system that was designed specifically to be run on a flash drive. Instead of mapping each physical address space with an emulated block sector, the system creates nodes that store data. The system keeps a log of the nodes and when each node was last updated. The system also keeps track of inodes. These inodes keep a list of nodes that correspond to the relevant data. The nodes also contain information about which inode it belongs to. When the drive is mounted, the system scans all the nodes on the drive, and rebuilds the directory.&lt;br /&gt;
As the directory gets built, the nodes containing the data also map the physical location for each piece of data.[14] &lt;br /&gt;
&lt;br /&gt;
When writing data to the drive, the nodes carrying that data get attached to the end of the log.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4595</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4595"/>
		<updated>2010-10-15T07:22:09Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Banks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage. It started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically.[7] Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
This extreme read speed makes flash drives a preferred method of storing games. This effectively makes loading times virtually non-existent. There is however a downside to this method. Games constantly save, modify, and change files wearing out the blocks much quicker. Flash drives have been shown be effective for the use in web-servers for running their CSS scripts or HTML pages.&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
The transistors that store the data are created with a thin strip of Silicon Oxide separating them. When the erase operation is called on the block where the transistors are located, the system fires electrons down the strip, wiping whatever bits the transistors are holding.   &lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Translational Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &#039;&#039;wear leveling&#039;&#039;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system.&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of wear leveling ensures that he drive does not keep erasing and writing to the same block over and over. This is achieved by writing data that doesn’t change often to blocks that have been erased frequently.  Wear leveling tries to make all the blocks use up there write cycles at an even pace increasing the overall life of the hard drive.[3] This is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased. [14]&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
===Why a Log File System is efficient for flash had drive===&lt;br /&gt;
The file system only writes a bank at a time. This means that the OS can save up the small random writes and write them all at the same time in a bank.  This will cut down on the use of the expensive write command improving the overall performance of the hard drive.[9]&lt;br /&gt;
&lt;br /&gt;
If a collision occurs when writing a new bank, the file system will sends the new data to an empty bank rather then erasing the existing bank and replacing it. This will cut down on using the erase function improving the life of the hard drive. Also since it only performs writes command and not a erase command and write command like a traditional file system this improves performance of the drive as well.[16]&lt;br /&gt;
&lt;br /&gt;
===Systems Developed For Flash===&lt;br /&gt;
In 1999 a Swedish company by the name of Axis Communications, developed and released a file system that was designed specifically to be run on a flash drive. Instead of mapping each physical address space with an emulated block sector, the system creates nodes that store data. The system keeps a log of the nodes and when each node was last updated. The system also keeps track of inodes. These inodes keep a list of nodes that correspond to the relevant data. The nodes also contain information about which inode it belongs to. When the drive is mounted, the system scans all the nodes on the drive, and rebuilds the directory.&lt;br /&gt;
As the directory gets built, the nodes containing the data also map the physical location for each piece of data.[14] &lt;br /&gt;
&lt;br /&gt;
When writing data to the drive, the nodes carrying that data get attached to the end of the log.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4594</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4594"/>
		<updated>2010-10-15T07:20:50Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Systems Developed For Flash */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage. It started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically.[7] Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
This extreme read speed makes flash drives a preferred method of storing games. This effectively makes loading times virtually non-existent. There is however a downside to this method. Games constantly save, modify, and change files wearing out the blocks much quicker. Flash drives have been shown be effective for the use in web-servers for running their CSS scripts or HTML pages.&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
The transistors that store the data are created with a thin strip of Silicon Oxide separating them. When the erase operation is called on the block where the transistors are located, the system fires electrons down the strip, wiping whatever bits the transistors are holding.   &lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Translational Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &#039;&#039;wear leveling&#039;&#039;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system.&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of wear leveling ensures that he drive does not keep erasing and writing to the same block over and over. This is achieved by writing data that doesn’t change often to blocks that have been erased frequently.  Wear leveling tries to make all the blocks use up there write cycles at an even pace increasing the overall life of the hard drive.[3] This is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
===Why a Log File System is efficient for flash had drive===&lt;br /&gt;
The file system only writes a bank at a time. This means that the OS can save up the small random writes and write them all at the same time in a bank.  This will cut down on the use of the expensive write command improving the overall performance of the hard drive.[9]&lt;br /&gt;
&lt;br /&gt;
If a collision occurs when writing a new bank, the file system will sends the new data to an empty bank rather then erasing the existing bank and replacing it. This will cut down on using the erase function improving the life of the hard drive. Also since it only performs writes command and not a erase command and write command like a traditional file system this improves performance of the drive as well.[16]&lt;br /&gt;
&lt;br /&gt;
===Systems Developed For Flash===&lt;br /&gt;
In 1999 a Swedish company by the name of Axis Communications, developed and released a file system that was designed specifically to be run on a flash drive. Instead of mapping each physical address space with an emulated block sector, the system creates nodes that store data. The system keeps a log of the nodes and when each node was last updated. The system also keeps track of inodes. These inodes keep a list of nodes that correspond to the relevant data. The nodes also contain information about which inode it belongs to. When the drive is mounted, the system scans all the nodes on the drive, and rebuilds the directory.&lt;br /&gt;
As the directory gets built, the nodes containing the data also map the physical location for each piece of data.[14] &lt;br /&gt;
&lt;br /&gt;
When writing data to the drive, the nodes carrying that data get attached to the end of the log.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4591</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4591"/>
		<updated>2010-10-15T07:19:23Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Systems Developed For Flash */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage. It started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically.[7] Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
This extreme read speed makes flash drives a preferred method of storing games. This effectively makes loading times virtually non-existent. There is however a downside to this method. Games constantly save, modify, and change files wearing out the blocks much quicker. Flash drives have been shown be effective for the use in web-servers for running their CSS scripts or HTML pages.&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
The transistors that store the data are created with a thin strip of Silicon Oxide separating them. When the erase operation is called on the block where the transistors are located, the system fires electrons down the strip, wiping whatever bits the transistors are holding.   &lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Translational Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &#039;&#039;wear leveling&#039;&#039;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system.&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of wear leveling ensures that he drive does not keep erasing and writing to the same block over and over. This is achieved by writing data that doesn’t change often to blocks that have been erased frequently.  Wear leveling tries to make all the blocks use up there write cycles at an even pace increasing the overall life of the hard drive.[3] This is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
===Why a Log File System is efficient for flash had drive===&lt;br /&gt;
The file system only writes a bank at a time. This means that the OS can save up the small random writes and write them all at the same time in a bank.  This will cut down on the use of the expensive write command improving the overall performance of the hard drive.[9]&lt;br /&gt;
&lt;br /&gt;
If a collision occurs when writing a new bank, the file system will sends the new data to an empty bank rather then erasing the existing bank and replacing it. This will cut down on using the erase function improving the life of the hard drive. Also since it only performs writes command and not a erase command and write command like a traditional file system this improves performance of the drive as well.[16]&lt;br /&gt;
&lt;br /&gt;
===Systems Developed For Flash===&lt;br /&gt;
In 1999 a Swedish company by the name of Axis Communications, developed and released a file system that was designed specifically to be run on a flash drive. Instead of mapping each physical address space with an emulated block sector, the system creates nodes that store data. The system keeps a log of the nodes and when each node was last updated. The system also keeps track of inodes. These inodes keep a list of nodes that correspond to the relevant data. The nodes also contain information about which inode it belongs to. When the drive is mounted, the system scans all the nodes on the drive, and rebuilds the directory.&lt;br /&gt;
As the directory gets built, the nodes containing the data also map the physical location for each piece of data. &lt;br /&gt;
&lt;br /&gt;
When writing data to the drive, the nodes carrying that data get attached to the end of the log.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4587</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4587"/>
		<updated>2010-10-15T07:09:10Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Traditionally Optimized File Systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage. It started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically.[7] Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
This extreme read speed makes flash drives a preferred method of storing games. This effectively makes loading times virtually non-existent. There is however a downside to this method. Games constantly save, modify, and change files wearing out the blocks much quicker. Flash drives have been shown be effective for the use in web-servers for running their CSS scripts or HTML pages.&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
The transistors that store the data are created with a thin strip of Silicon Oxide separating them. When the erase operation is called on the block where the transistors are located, the system fires electrons down the strip, wiping whatever bits the transistors are holding.   &lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Translational Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &#039;&#039;wear leveling&#039;&#039;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system.&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of wear leveling ensures that he drive does not keep erasing and writing to the same block over and over. This is achieved by writing data that doesn’t change often to blocks that have been erased frequently.  Wear leveling tries to make all the blocks use up there write cycles at an even pace increasing the overall life of the hard drive.[3] This is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
===Why a Log File System is efficient for flash had drive===&lt;br /&gt;
The file system only writes a bank at a time. This means that the OS can save up the small random writes and write them all at the same time in a bank.  This will cut down on the use of the expensive write command improving the overall performance of the hard drive.[9]&lt;br /&gt;
&lt;br /&gt;
If a collision occurs when writing a new bank, the file system will sends the new data to an empty bank rather then erasing the existing bank and replacing it. This will cut down on using the erase function improving the life of the hard drive. Also since it only performs writes command and not a erase command and write command like a traditional file system this improves performance of the drive as well.[16]&lt;br /&gt;
&lt;br /&gt;
===Systems Developed For Flash===&lt;br /&gt;
In 1999 a Swedish company by the name of Axis Communications, developed and released a file system that was designed specifically to be run on a flash drive. Instead of mapping each physical address space with an emulated block sector, the system creates nodes that store data. The system also keeps track of inodes. These inodes keep a list of several nodes that correspond to the relevant data. &lt;br /&gt;
&lt;br /&gt;
developed by Axis Communications and first released in 1999&lt;br /&gt;
- nodes containing metadata and data are stored sequentially on the device&lt;br /&gt;
- each node is associated with a single inode&lt;br /&gt;
- starts with header contianing the inode number of the inode to which it belongs and all the current file system metadata for that inode&lt;br /&gt;
- node also stores a version number that is written  with a version higher than all previous nodes belonging to the same inode&lt;br /&gt;
- also stores the inode number and is never reused&lt;br /&gt;
- inode metadata includes uid, gid, mtime, atime, mtime, etc&lt;br /&gt;
- inode points to several nodes&lt;br /&gt;
&lt;br /&gt;
OPERATION&lt;br /&gt;
- the entire drive is scanned when it is mounted&lt;br /&gt;
- the raw nodes have the information needed to rebuild the directory and a map for each inode of the phyical location&lt;br /&gt;
- when writing files, a node holding the data is attached to the end of the log&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4576</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4576"/>
		<updated>2010-10-15T06:28:26Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage. It started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically.[7] Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
This extreme read speed makes flash drives a preferred method of storing games. This effectively makes loading times virtually non-existent. There is however a downside to this method. Games constantly save, modify, and change files wearing out the blocks much quicker. Flash drives have been shown be effective for the use in web-servers for running their CSS scripts or HTML pages.&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
The transistors that store the data are created with a thin strip of Silicon Oxide separating them. When the erase operation is called on the block where the transistors are located, the system fires electrons down the strip, wiping whatever bits the transistors are holding.   &lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Translational Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of wear leveling ensures that he drive does not keep erasing and writing to the same block over and over. This is achieved by writing data that doesn’t change often to blocks that have been erased frequently.  Wear leveling tries to make all the blocks use up there write cycles at an even pace increasing the overall life of the hard drive.[3] This is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
===Systems Developed For Flash===&lt;br /&gt;
In 1999 a Swedish company by the name of Axis Communications, developed and released a file system that was designed specifically to be run on a flash drive. Instead of mapping each physical address space with an emulated block sector, the system creates nodes that store data. The system also keeps track of inodes. These inodes keep a list of several nodes that correspond to the relevant data. &lt;br /&gt;
&lt;br /&gt;
developed by Axis Communications and first released in 1999&lt;br /&gt;
- nodes containing metadata and data are stored sequentially on the device&lt;br /&gt;
- each node is associated with a single inode&lt;br /&gt;
- starts with header contianing the inode number of the inode to which it belongs and all the current file system metadata for that inode&lt;br /&gt;
- node also stores a version number that is written  with a version higher than all previous nodes belonging to the same inode&lt;br /&gt;
- also stores the inode number and is never reused&lt;br /&gt;
- inode metadata includes uid, gid, mtime, atime, mtime, etc&lt;br /&gt;
- inode points to several nodes&lt;br /&gt;
&lt;br /&gt;
OPERATION&lt;br /&gt;
- the entire drive is scanned when it is mounted&lt;br /&gt;
- the raw nodes have the information needed to rebuild the directory and a map for each inode of the phyical location&lt;br /&gt;
- when writing files, a node holding the data is attached to the end of the log&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4561</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4561"/>
		<updated>2010-10-15T05:52:28Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage. It started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically.[7] Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
Flash memory started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips &#039;&#039;&#039;-not sure if this is rephrased&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
This extreme read speed makes flash drives a preferred method of storing games. This effectively makes loading times virtually non-existent. There is however a downside to this method. Games constantly save, modify, and change files wearing out the blocks much quicker. Flash drives have been shown be effective for the use in web-servers for running their CSS scripts or HTML pages.&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
The transistors that store the data are created with a thin strip of Silicon Oxide separating them. When the erase operation is called on the block where the transistors are located, the system fires electrons down the strip, wiping whatever bits the transistors are holding.   &lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Translational Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; ensures that he drive does not keep erasing and writing to the same block over and over. This is achieved by writing data that doesn’t change often to blocks that have been erased frequently.  Wear leveling tries to make all the blocks use up there write cycles at an even pace increasing the overall life of the hard drive.[3] This is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4535</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4535"/>
		<updated>2010-10-15T05:10:18Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage. It started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically.[7] Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash memory started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
This extreme read speed makes flash drives a preferred method of storing games. This effectively makes loading times virtually non-existent. There is however a downside to this method. Games constantly save, modify, and change files wearing out the blocks much quicker. Flash drives have been shown be effective for the use in web-servers for running their CSS scripts or HTML pages.&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8] &lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Translational Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; ensures that he drive does not keep erasing and writing to the same block over and over. This is achieved by writing data that doesn’t change often to blocks that have been erased frequently.  Wear leveling tries to make all the blocks use up there write cycles at an even pace increasing the overall life of the hard drive.[3] This is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4530</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4530"/>
		<updated>2010-10-15T05:02:50Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage. It started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically.[7] Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
This extreme read speed makes flash drives a preferred method of storing games. This effectively makes loading times virtually non-existent. There is however a downside to this method. Games constantly save, modify, and change files wearing out the blocks much quicker. Flash drives have been shown be effective for the use in web-servers for running their CSS scripts or HTML pages. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash memory started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Translational Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
	Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; ensures that he drive does not keep erasing and writing to the same block over and over. This is achieved by writing data that doesn’t change often to blocks that have been erased frequently.  Wear leveling tries to make all the blocks use up there write cycles at an even pace increasing the overall life of the hard drive.[3] This is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4528</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4528"/>
		<updated>2010-10-15T05:02:11Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Flash Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage. It started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically.[7] Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
This extreme read speed makes flash drives a preferred method of storing games. This effectively makes loading times virtually non-existent. There is however a downside to this method. Games constantly save, modify, and change files wearing out the blocks much quicker. Flash drives have been shown be effective for the use in web-servers for running their CSS scripts or HTML pages. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Flash memory started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Translational Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
	Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; ensures that he drive does not keep erasing and writing to the same block over and over. This is achieved by writing data that doesn’t change often to blocks that have been erased frequently.  Wear leveling tries to make all the blocks use up there write cycles at an even pace increasing the overall life of the hard drive.[3] This is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4419</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4419"/>
		<updated>2010-10-15T03:26:12Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Flash Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage.  Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. What flash storage is, why its good but also why it must have the problems that it does (the assumption is that it must have them, why would it otherwise?) [don&#039;t know much about this just now... basics include that there is NOR (reads slightly faster)and NAND (holds more, writes faster, erases much faster, lasts about ten times longer) flash with NAND being especially popular for storage (what&#039;s NOR good for?). Here, we&#039;d ideally want to talk about why flash was invented (supposed as an alternative to slow ROM), why it was suitable for that, and how it works on a technical level. Then, we&#039;d want to mention why this technical functionality was innovative and useful but also why it came with two serious set-backs: having a limited-number of re-write cycles and needing to erase a block at a time.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Either way, Flash storage affords far faster fetch times than the traditional platter-based HDD, and stability of information in a sense. Where the data is not actually stored, but reprogrammed, in a sense, the data is more secure and is less likely to be erased easily. On that note, in order to flip a single bit, that entire block will need to be erased, then reprogrammed. In an &#039;old&#039; HDD, let&#039;s say, When the HDD fails at the end of its life cycle, your data is gone. (unless you&#039;re willing to shell out $200/hr to have it recovered, yes I&#039;ve seen companies in Ottawa that do this.) In a flash HDD, when it reaches the end of its life, it merely becomes read-only. Bugger for Databases, but useful for technical notes and archives, let&#039;s say. With today&#039;s modern gaming computers, Flash memory can be good on quick load times, however with limited read-writes, it could afford better use to things that are not updated as frequently. I.e... Well I don&#039;t have a better example than a webserver hosting a company&#039;s CSS and scripts. ~Source: Years in the &#039;biz&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Flash memory started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Transition Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
	Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; [WHAT IS THIS?] is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=old=&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
This is what I&#039;ve got so far... mostly based on wikipedia:&lt;br /&gt;
&lt;br /&gt;
Flash memory has two limitations: it can only be erased in blocks and and it wears out after a certain number of erase cycles. Furthermore, a particular kind of Flash memory (NAND) is not able to provide random access.  &lt;br /&gt;
As a result of these Flash based file-systems cannot be handled in the same way as disk-based file systems. Here are a few of the key differences:&lt;br /&gt;
&lt;br /&gt;
-	Because memory must be erased in blocks, its erasure tends to take up time. Consequently, it is necessary to time the erasures in a way so as not to interfere with the efficiency of the system’s other operations. This is is not a real concern with disk-based file-systems. &lt;br /&gt;
-	A disk file-system needs to minimize the seeking time, but Flash file-system does not concern itself with this as it doesn’t have a disk. &lt;br /&gt;
-	A flash system tries to distribute memory in such a way so as not to make a particular block of memory subject to a disproportionally large number of erasures. The purpose of this is to keep the block from wearing out prematurely. The result of it is that memory needs to be distributed differently than in a disk based file-system. &lt;br /&gt;
Log-sturctured file systems are thus best suited to dealing with flash memory (they apparently do all of the above things). &lt;br /&gt;
&lt;br /&gt;
For the essay form, I&#039;m thinking of doing a section about traditional hard-disk systems, another about flash-memory and a third about flash systems. At this point, I am imagining the thesis as something like, &amp;quot;Flash systems require a fundamentally different system architecture than disk-based systems due to their need to adapt to the constraints inherent in flash memory: specifically, due to that memory&#039;s limited life-span and block-based erasures.&amp;quot; The argument would then talk about how these two differences directly lead to a new FS approach. &lt;br /&gt;
&lt;br /&gt;
That&#039;s how I see it at the moment. Honestly, I don&#039;t like doing research about this kind of stuff, so my data isn&#039;t very deep. That said, if you guys could find more info and summarize it, I&#039;m pretty sure that I could synthesize it all into a coherent essay. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4418</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4418"/>
		<updated>2010-10-15T03:25:41Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Flash Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage.  Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. What flash storage is, why its good but also why it must have the problems that it does (the assumption is that it must have them, why would it otherwise?) [don&#039;t know much about this just now... basics include that there is NOR (reads slightly faster)and NAND (holds more, writes faster, erases much faster, lasts about ten times longer) flash with NAND being especially popular for storage (what&#039;s NOR good for?). Here, we&#039;d ideally want to talk about why flash was invented (supposed as an alternative to slow ROM), why it was suitable for that, and how it works on a technical level. Then, we&#039;d want to mention why this technical functionality was innovative and useful but also why it came with two serious set-backs: having a limited-number of re-write cycles and needing to erase a block at a time.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;Either way, Flash storage affords far faster fetch times than the traditional platter-based HDD, and stability of information in a sense. Where the data is not actually stored, but reprogrammed, in a sense, the data is more secure and is less likely to be erased easily. On that note, in order to flip a single bit, that entire block will need to be erased, then reprogrammed. In an &#039;old&#039; HDD, let&#039;s say, When the HDD fails at the end of its life cycle, your data is gone. (unless you&#039;re willing to shell out $200/hr to have it recovered, yes I&#039;ve seen companies in Ottawa that do this.) In a flash HDD, when it reaches the end of its life, it merely becomes read-only. Bugger for Databases, but useful for technical notes and archives, let&#039;s say. With today&#039;s modern gaming computers, Flash memory can be good on quick load times, however with limited read-writes, it could afford better use to things that are not updated as frequently. I.e... Well I don&#039;t have a better example than a webserver hosting a company&#039;s CSS and scripts. ~Source: Years in the &#039;biz&lt;br /&gt;
Flash memory started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Transition Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
	Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; [WHAT IS THIS?] is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=old=&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
This is what I&#039;ve got so far... mostly based on wikipedia:&lt;br /&gt;
&lt;br /&gt;
Flash memory has two limitations: it can only be erased in blocks and and it wears out after a certain number of erase cycles. Furthermore, a particular kind of Flash memory (NAND) is not able to provide random access.  &lt;br /&gt;
As a result of these Flash based file-systems cannot be handled in the same way as disk-based file systems. Here are a few of the key differences:&lt;br /&gt;
&lt;br /&gt;
-	Because memory must be erased in blocks, its erasure tends to take up time. Consequently, it is necessary to time the erasures in a way so as not to interfere with the efficiency of the system’s other operations. This is is not a real concern with disk-based file-systems. &lt;br /&gt;
-	A disk file-system needs to minimize the seeking time, but Flash file-system does not concern itself with this as it doesn’t have a disk. &lt;br /&gt;
-	A flash system tries to distribute memory in such a way so as not to make a particular block of memory subject to a disproportionally large number of erasures. The purpose of this is to keep the block from wearing out prematurely. The result of it is that memory needs to be distributed differently than in a disk based file-system. &lt;br /&gt;
Log-sturctured file systems are thus best suited to dealing with flash memory (they apparently do all of the above things). &lt;br /&gt;
&lt;br /&gt;
For the essay form, I&#039;m thinking of doing a section about traditional hard-disk systems, another about flash-memory and a third about flash systems. At this point, I am imagining the thesis as something like, &amp;quot;Flash systems require a fundamentally different system architecture than disk-based systems due to their need to adapt to the constraints inherent in flash memory: specifically, due to that memory&#039;s limited life-span and block-based erasures.&amp;quot; The argument would then talk about how these two differences directly lead to a new FS approach. &lt;br /&gt;
&lt;br /&gt;
That&#039;s how I see it at the moment. Honestly, I don&#039;t like doing research about this kind of stuff, so my data isn&#039;t very deep. That said, if you guys could find more info and summarize it, I&#039;m pretty sure that I could synthesize it all into a coherent essay. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4415</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4415"/>
		<updated>2010-10-15T03:24:05Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Flash Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage.  Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. What flash storage is, why its good but also why it must have the problems that it does (the assumption is that it must have them, why would it otherwise?) [don&#039;t know much about this just now... basics include that there is NOR (reads slightly faster)and NAND (holds more, writes faster, erases much faster, lasts about ten times longer) flash with NAND being especially popular for storage (what&#039;s NOR good for?). Here, we&#039;d ideally want to talk about why flash was invented (supposed as an alternative to slow ROM), why it was suitable for that, and how it works on a technical level. Then, we&#039;d want to mention why this technical functionality was innovative and useful but also why it came with two serious set-backs: having a limited-number of re-write cycles and needing to erase a block at a time.&lt;br /&gt;
Either way, Flash storage affords far faster fetch times than the traditional platter-based HDD, and stability of information in a sense. Where the data is not actually stored, but reprogrammed, in a sense, the data is more secure and is less likely to be erased easily. On that note, in order to flip a single bit, that entire block will need to be erased, then reprogrammed. In an &#039;old&#039; HDD, let&#039;s say, When the HDD fails at the end of its life cycle, your data is gone. (unless you&#039;re willing to shell out $200/hr to have it recovered, yes I&#039;ve seen companies in Ottawa that do this.) In a flash HDD, when it reaches the end of its life, it merely becomes read-only. Bugger for Databases, but useful for technical notes and archives, let&#039;s say. With today&#039;s modern gaming computers, Flash memory can be good on quick load times, however with limited read-writes, it could afford better use to things that are not updated as frequently. I.e... Well I don&#039;t have a better example than a webserver hosting a company&#039;s CSS and scripts. ~Source: Years in the &#039;biz&lt;br /&gt;
Flash memory started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Transition Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
	Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; [WHAT IS THIS?] is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=old=&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
This is what I&#039;ve got so far... mostly based on wikipedia:&lt;br /&gt;
&lt;br /&gt;
Flash memory has two limitations: it can only be erased in blocks and and it wears out after a certain number of erase cycles. Furthermore, a particular kind of Flash memory (NAND) is not able to provide random access.  &lt;br /&gt;
As a result of these Flash based file-systems cannot be handled in the same way as disk-based file systems. Here are a few of the key differences:&lt;br /&gt;
&lt;br /&gt;
-	Because memory must be erased in blocks, its erasure tends to take up time. Consequently, it is necessary to time the erasures in a way so as not to interfere with the efficiency of the system’s other operations. This is is not a real concern with disk-based file-systems. &lt;br /&gt;
-	A disk file-system needs to minimize the seeking time, but Flash file-system does not concern itself with this as it doesn’t have a disk. &lt;br /&gt;
-	A flash system tries to distribute memory in such a way so as not to make a particular block of memory subject to a disproportionally large number of erasures. The purpose of this is to keep the block from wearing out prematurely. The result of it is that memory needs to be distributed differently than in a disk based file-system. &lt;br /&gt;
Log-sturctured file systems are thus best suited to dealing with flash memory (they apparently do all of the above things). &lt;br /&gt;
&lt;br /&gt;
For the essay form, I&#039;m thinking of doing a section about traditional hard-disk systems, another about flash-memory and a third about flash systems. At this point, I am imagining the thesis as something like, &amp;quot;Flash systems require a fundamentally different system architecture than disk-based systems due to their need to adapt to the constraints inherent in flash memory: specifically, due to that memory&#039;s limited life-span and block-based erasures.&amp;quot; The argument would then talk about how these two differences directly lead to a new FS approach. &lt;br /&gt;
&lt;br /&gt;
That&#039;s how I see it at the moment. Honestly, I don&#039;t like doing research about this kind of stuff, so my data isn&#039;t very deep. That said, if you guys could find more info and summarize it, I&#039;m pretty sure that I could synthesize it all into a coherent essay. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4414</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4414"/>
		<updated>2010-10-15T03:23:16Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage.  Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. What flash storage is, why its good but also why it must have the problems that it does (the assumption is that it must have them, why would it otherwise?) [don&#039;t know much about this just now... basics include that there is NOR (reads slightly faster)and NAND (holds more, writes faster, erases much faster, lasts about ten times longer) flash with NAND being especially popular for storage (what&#039;s NOR good for?). Here, we&#039;d ideally want to talk about why flash was invented (supposed as an alternative to slow ROM), why it was suitable for that, and how it works on a technical level. Then, we&#039;d want to mention why this technical functionality was innovative and useful but also why it came with two serious set-backs: having a limited-number of re-write cycles and needing to erase a block at a time.]&lt;br /&gt;
Either way, Flash storage affords far faster fetch times than the traditional platter-based HDD, and stability of information in a sense. Where the data is not actually stored, but reprogrammed, in a sense, the data is more secure and is less likely to be erased easily. On that note, in order to flip a single bit, that entire block will need to be erased, then reprogrammed. In an &#039;old&#039; HDD, let&#039;s say, When the HDD fails at the end of its life cycle, your data is gone. (unless you&#039;re willing to shell out $200/hr to have it recovered, yes I&#039;ve seen companies in Ottawa that do this.) In a flash HDD, when it reaches the end of its life, it merely becomes read-only. Bugger for Databases, but useful for technical notes and archives, let&#039;s say. With today&#039;s modern gaming computers, Flash memory can be good on quick load times, however with limited read-writes, it could afford better use to things that are not updated as frequently. I.e... Well I don&#039;t have a better example than a webserver hosting a company&#039;s CSS and scripts. ~Source: Years in the &#039;biz&lt;br /&gt;
Flash memory started out as a replacement for EPROMs. At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Transition Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
	Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; [WHAT IS THIS?] is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
In this way, thanks to its [WHATEVER MAKES LOG FSs ACTUALLY GOOD AT DEALING WITH FLASH], the log-based file-system is far better suited to working with flash memory than a traditional HDD file system. The latter is utterly unfit for this task due to its placing primacy on the minimization of seeks rather than on the minimization and management of erasures. Dealing smartly with erasures is extremely important for a flash memory file system, as that memory type&#039;s particular weaknesses, the limited number of erasure cycles, the necessity to erase by the block and the relative slowness of the erasures themselves, all have to do with erasing. A good flash memory file system must therefore be built with the aim of making the best of these weaknesses and this is precisely the reason why older disk-based file systems are not suitable for flash memory while log-based file systems are. [INSPIRATIONAL LAST WORDS]&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=old=&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
This is what I&#039;ve got so far... mostly based on wikipedia:&lt;br /&gt;
&lt;br /&gt;
Flash memory has two limitations: it can only be erased in blocks and and it wears out after a certain number of erase cycles. Furthermore, a particular kind of Flash memory (NAND) is not able to provide random access.  &lt;br /&gt;
As a result of these Flash based file-systems cannot be handled in the same way as disk-based file systems. Here are a few of the key differences:&lt;br /&gt;
&lt;br /&gt;
-	Because memory must be erased in blocks, its erasure tends to take up time. Consequently, it is necessary to time the erasures in a way so as not to interfere with the efficiency of the system’s other operations. This is is not a real concern with disk-based file-systems. &lt;br /&gt;
-	A disk file-system needs to minimize the seeking time, but Flash file-system does not concern itself with this as it doesn’t have a disk. &lt;br /&gt;
-	A flash system tries to distribute memory in such a way so as not to make a particular block of memory subject to a disproportionally large number of erasures. The purpose of this is to keep the block from wearing out prematurely. The result of it is that memory needs to be distributed differently than in a disk based file-system. &lt;br /&gt;
Log-sturctured file systems are thus best suited to dealing with flash memory (they apparently do all of the above things). &lt;br /&gt;
&lt;br /&gt;
For the essay form, I&#039;m thinking of doing a section about traditional hard-disk systems, another about flash-memory and a third about flash systems. At this point, I am imagining the thesis as something like, &amp;quot;Flash systems require a fundamentally different system architecture than disk-based systems due to their need to adapt to the constraints inherent in flash memory: specifically, due to that memory&#039;s limited life-span and block-based erasures.&amp;quot; The argument would then talk about how these two differences directly lead to a new FS approach. &lt;br /&gt;
&lt;br /&gt;
That&#039;s how I see it at the moment. Honestly, I don&#039;t like doing research about this kind of stuff, so my data isn&#039;t very deep. That said, if you guys could find more info and summarize it, I&#039;m pretty sure that I could synthesize it all into a coherent essay. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4380</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4380"/>
		<updated>2010-10-15T03:00:11Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Flash Optimized File Systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage.  Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possibly more on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Transition Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
	Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; [WHAT IS THIS?] is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive. Each block has a flag which keeps track of its state. When a block is being written to, the FTL marks the blocks needed as &#039;&#039;allocated&#039;&#039;. This prevents other data being written to the block that has already been allocated. The FTL then goes on to write the data in the allocated blocks. Once it completes the transaction, the system updates the allocated blocks to &#039;&#039;pre-valid&#039;&#039;. Once that is completed, the drive marks the invalidated blocks to &#039;&#039;invalid&#039;&#039;, while marking the newly written block as &#039;&#039;valid&#039;&#039;. This entire flagging process is to ensure that the newly allocated blocks are never mixed up with the invalidated blocks. &lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space. When cleaning up the bank, the system puts it into what is called the Cleaning Bank List and removes it from the Bank List, thus avoiding any chance of some data being written to that bank while something is being erased.&lt;br /&gt;
&lt;br /&gt;
===Cleaner===	&lt;br /&gt;
When the FTL realizes that there is not enough room to write new data onto the drive, it runs a garbage collection routine. This routine selects a segment to be cleaned, copies all of the valid data into a new segment, then erases everything in the old segment. This frees up the otherwise useless invalidated blocks and by not erasing every block as soon as it becomes invalidated, it saves on the amount of times that the expensive erase operation is called. The kernel can preemptively clean the drive when the system is idle.&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=old=&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
This is what I&#039;ve got so far... mostly based on wikipedia:&lt;br /&gt;
&lt;br /&gt;
Flash memory has two limitations: it can only be erased in blocks and and it wears out after a certain number of erase cycles. Furthermore, a particular kind of Flash memory (NAND) is not able to provide random access.  &lt;br /&gt;
As a result of these Flash based file-systems cannot be handled in the same way as disk-based file systems. Here are a few of the key differences:&lt;br /&gt;
&lt;br /&gt;
-	Because memory must be erased in blocks, its erasure tends to take up time. Consequently, it is necessary to time the erasures in a way so as not to interfere with the efficiency of the system’s other operations. This is is not a real concern with disk-based file-systems. &lt;br /&gt;
-	A disk file-system needs to minimize the seeking time, but Flash file-system does not concern itself with this as it doesn’t have a disk. &lt;br /&gt;
-	A flash system tries to distribute memory in such a way so as not to make a particular block of memory subject to a disproportionally large number of erasures. The purpose of this is to keep the block from wearing out prematurely. The result of it is that memory needs to be distributed differently than in a disk based file-system. &lt;br /&gt;
Log-sturctured file systems are thus best suited to dealing with flash memory (they apparently do all of the above things). &lt;br /&gt;
&lt;br /&gt;
For the essay form, I&#039;m thinking of doing a section about traditional hard-disk systems, another about flash-memory and a third about flash systems. At this point, I am imagining the thesis as something like, &amp;quot;Flash systems require a fundamentally different system architecture than disk-based systems due to their need to adapt to the constraints inherent in flash memory: specifically, due to that memory&#039;s limited life-span and block-based erasures.&amp;quot; The argument would then talk about how these two differences directly lead to a new FS approach. &lt;br /&gt;
&lt;br /&gt;
That&#039;s how I see it at the moment. Honestly, I don&#039;t like doing research about this kind of stuff, so my data isn&#039;t very deep. That said, if you guys could find more info and summarize it, I&#039;m pretty sure that I could synthesize it all into a coherent essay. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4351</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4351"/>
		<updated>2010-10-15T02:39:36Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Flash Optimized File Systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistant and efficiently readable type of storage.  Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminately while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possibly more on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Transition Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
	Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes directly out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive.&lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the current bank for the one with the most available space.&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=old=&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
This is what I&#039;ve got so far... mostly based on wikipedia:&lt;br /&gt;
&lt;br /&gt;
Flash memory has two limitations: it can only be erased in blocks and and it wears out after a certain number of erase cycles. Furthermore, a particular kind of Flash memory (NAND) is not able to provide random access.  &lt;br /&gt;
As a result of these Flash based file-systems cannot be handled in the same way as disk-based file systems. Here are a few of the key differences:&lt;br /&gt;
&lt;br /&gt;
-	Because memory must be erased in blocks, its erasure tends to take up time. Consequently, it is necessary to time the erasures in a way so as not to interfere with the efficiency of the system’s other operations. This is is not a real concern with disk-based file-systems. &lt;br /&gt;
-	A disk file-system needs to minimize the seeking time, but Flash file-system does not concern itself with this as it doesn’t have a disk. &lt;br /&gt;
-	A flash system tries to distribute memory in such a way so as not to make a particular block of memory subject to a disproportionally large number of erasures. The purpose of this is to keep the block from wearing out prematurely. The result of it is that memory needs to be distributed differently than in a disk based file-system. &lt;br /&gt;
Log-sturctured file systems are thus best suited to dealing with flash memory (they apparently do all of the above things). &lt;br /&gt;
&lt;br /&gt;
For the essay form, I&#039;m thinking of doing a section about traditional hard-disk systems, another about flash-memory and a third about flash systems. At this point, I am imagining the thesis as something like, &amp;quot;Flash systems require a fundamentally different system architecture than disk-based systems due to their need to adapt to the constraints inherent in flash memory: specifically, due to that memory&#039;s limited life-span and block-based erasures.&amp;quot; The argument would then talk about how these two differences directly lead to a new FS approach. &lt;br /&gt;
&lt;br /&gt;
That&#039;s how I see it at the moment. Honestly, I don&#039;t like doing research about this kind of stuff, so my data isn&#039;t very deep. That said, if you guys could find more info and summarize it, I&#039;m pretty sure that I could synthesize it all into a coherent essay. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_10&amp;diff=4349</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_10&amp;diff=4349"/>
		<updated>2010-10-15T02:39:01Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey all,&lt;br /&gt;
&lt;br /&gt;
I think we should write down our emails here so we can further discuss stuff without having to login here.&lt;br /&gt;
(&#039;&#039;&#039;***Note that discussions over email can&#039;t be counted towards your participation grade!***&#039;&#039;&#039;--[[User:Soma|Anil]])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geoff Smith (gsmith0413@gmail.com) - gsmith6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andrew Bujáki (abujaki [at] Connect or Live.ca)&lt;br /&gt;
***I&#039;m usually on MSN(Live) for collaboration at nights, Just make sure to put in a little message about who you are when you&#039;re adding me. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I used Google Scholar and came to this page http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&lt;br /&gt;
Which briefly touches on the issues of Flash memory. Specifically, inability to update in place, and limited write/erase cycles.&lt;br /&gt;
&lt;br /&gt;
Inability to update in place could refer to the way the flash disk is programmed, instead of bit-by-bit, it is programmed block-by-block. A block would have to be erased and completely reprogrammed in order to flip one bit after it&#039;s been set.&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_memory#Block_erasure&lt;br /&gt;
&lt;br /&gt;
Limited write/erase: Flash memory typically has a short lifespan if it&#039;s being used a lot. Writing and erasing the memory (Changing, updating, etc) Will wear it out. Flash memory has a finite amount of writes, (varying on manufacturer, models, etc), and once they&#039;ve been used up, you&#039;ll get bad sectors, corrupt data, and generally be SOL.&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_memory#Memory_wear&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Filesystems would have to be changed to play nicely with these constraints, where it must use blocks efficiently and nicely, and minimize writing/erasing as much as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I found a paper that talks about the performance, capabilities and limitations of NAND flash storage. &lt;br /&gt;
&lt;br /&gt;
Abstract: &amp;quot;This presentation provides an in-depth examination of the&lt;br /&gt;
fundamental theoretical performance, capabilities, and&lt;br /&gt;
limitations of NAND Flash-based Solid State Storage (SSS). The&lt;br /&gt;
tutorial will explore the raw performance capabilities of NAND&lt;br /&gt;
Flash, and limitations to performance imposed by mitigation of&lt;br /&gt;
reliability issues, interfaces, protocols, and technology types.&lt;br /&gt;
Best practices for system integration of SSS will be discussed.&lt;br /&gt;
Performance achievements will be reviewed for various&lt;br /&gt;
products and applications. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Link: http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&lt;br /&gt;
&lt;br /&gt;
There&#039;s no Starting place like Wikipedia, even if you shouldn&#039;t source it. &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_Memory &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/LogFS &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Hard_disk &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Wear_leveling &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Solid-state_drive&lt;br /&gt;
&lt;br /&gt;
Hey Guys,&lt;br /&gt;
&lt;br /&gt;
We really don&#039;t have much time to get this done. Lets meet tomorrow after class and get our bearings to do this properly.&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A few of us have Networking immediately after class. I know personally I won&#039;t be able to make anything set on Tuesday.&lt;br /&gt;
Additionally, he spoke briefly about hotspots on the disk for our question last week, where places on the disk would be written to far more often than others. &lt;br /&gt;
As well, for bibliographical citing, http://bibme.org is a wonderful resource for the popular formats (I.e. MLA). If it should come down to that.&lt;br /&gt;
~Andrew&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===links===&lt;br /&gt;
&lt;br /&gt;
Start Posting some stuff to source from:&lt;br /&gt;
&lt;br /&gt;
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&lt;br /&gt;
--&amp;quot;Introduction to flash memory&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://portal.acm.org/citation.cfm?id=1244248&lt;br /&gt;
--&amp;quot;Wear Leveling&amp;quot; (it&#039;s about a proposed way of doing it, but explains a whole bunch of other things to do that)&lt;br /&gt;
&lt;br /&gt;
http://portal.acm.org/citation.cfm?id=1731355&lt;br /&gt;
--&amp;quot;Online maintenance of very large random samples on flash storage&amp;quot; (ie dealing with the constraints of Flash Storage in a system that might actually be written to 100000 times)&lt;br /&gt;
&lt;br /&gt;
http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&lt;br /&gt;
--&amp;quot;An Efficient NAND Flash File System for Flash Memory Storage&amp;quot; discuses shortcomings of using hard disk based file systems and current flash based file systems&lt;br /&gt;
&lt;br /&gt;
http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&lt;br /&gt;
--&amp;quot;NAND vs NOR Flash Memory&amp;quot; (note: i didn&#039;t get this off of Google scholar but it seems to be written by someone from Toshiba. is that ok?)&lt;br /&gt;
&lt;br /&gt;
Hi everybody,&lt;br /&gt;
&lt;br /&gt;
So here are the latest news. Geoff, Andrew and myself had a meeting after class today and came up with a plan for writing this thing. &lt;br /&gt;
&lt;br /&gt;
We decided to have 3 parts:&lt;br /&gt;
&lt;br /&gt;
1. What flash storage is, why its good but also why it must have the problems that it does (the assumption is that it must have them, why would it otherwise?)&lt;br /&gt;
[don&#039;t know much about this just now... basics include that there is NOR (reads slightly faster)and NAND (holds more, writes faster, erases much faster, lasts about ten times longer) flash with NAND being especially popular for storage (what&#039;s NOR good for?). Here, we&#039;d ideally want to talk about why flash was invented (supposed as an alternative to slow ROM), why it was suitable for that, and how it works on a technical level. Then, we&#039;d want to mention why this technical functionality was innovative and useful but also why it came with two serious set-backs: having a limited-number of re-write cycles and needing to erase a block at a time.]&lt;br /&gt;
&lt;br /&gt;
Either way, Flash storage affords far faster fetch times than the traditional platter-based HDD, and stability of information in a sense. Where the data is not actually stored, but reprogrammed, in a sense, the data is more secure and is less likely to be erased easily. On that note, in order to flip a single bit, that entire block will need to be erased, then reprogrammed. In an &#039;old&#039; HDD, let&#039;s say, When the HDD fails at the end of its life cycle, your data is gone. (unless you&#039;re willing to shell out $200/hr to have it recovered, yes I&#039;ve seen companies in Ottawa that do this.) In a flash HDD, when it reaches the end of its life, it merely becomes read-only. Bugger for Databases, but useful for technical notes and archives, let&#039;s say.&lt;br /&gt;
With today&#039;s modern gaming computers, Flash memory can be good on quick load times, however with limited read-writes, it could afford better use to things that are not updated as frequently. I.e... Well I don&#039;t have a better example than a webserver hosting a company&#039;s CSS and scripts.&lt;br /&gt;
~Source: Years in the &#039;biz &lt;br /&gt;
&lt;br /&gt;
Flash memory started out as a replacement for EPROMs.  At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips.&lt;br /&gt;
source: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1 , http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&lt;br /&gt;
&lt;br /&gt;
2. How a traditional disk-based file-system works and why the limitations of flash storage make the two a poor match&lt;br /&gt;
[the obvious answer seems to be that traditional file-systems could just write to whatever memory was available but if they did this with a flash file-systems, certain chunks of memory would become unusable before others and the memory would be more difficult to work with. Also, disk-based file systems need to deal with seeking times which means that they want to organize their data in such a way as to reduce those (by putting related things together?) - with Flash, this isn&#039;t really a problem and thus one constraint the less to be concerned with.]&lt;br /&gt;
&lt;br /&gt;
3. How a log based file-system works and why this method of operation is so well suited to working with flash memory especially in light of the latter&#039;s inherent limitations&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
At this time, the plan is that Geoff will work on #3 today, Andrew will work on #1 tomorrow and I will work on #2 tomorrow. The three of us will make an effort to consult some somewhat more painfully technical literature in order to gain insight into our respective queries. Whatever insight we find will be posted here. &lt;br /&gt;
&lt;br /&gt;
Then, we will meet again on Thursday after class to decide how to actually write the essay.&lt;br /&gt;
&lt;br /&gt;
PS, if there is anybody in the group besides the three of us - let us know so you can find a way to contribute to this... as at least two of us are competent essayists, painfully technical research would on one or more of the above topics would be a great way to contribute... especially if you could post it here prior to one of us going over the same thing. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
-- I&#039;m not that great (but absolutely horrid) at essays and I&#039;m alright at research, but if nothing else I have Thursday off and nothing (else) that needs doing by Friday so I can probably spend a bunch of time working on it just before it&#039;s due. -- &#039;&#039;Nick L&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-- Hay sorry I was unable to attend the meeting after class today. I am not too good at writing essays as well but I am pretty good at summarizing and researching. I am not too sure at what you would like me to do. Right now I&#039;ll assume you need me to research/summarizing articles for the 3 topics above. If you need me to do anything else post it here. I&#039;ll be checking the discussion regularly until this due. once again sorry for missing the meeting-- Paul Cox.&lt;br /&gt;
&lt;br /&gt;
-- Hey i&#039;m also supposed to be in on this. Sorry i couldn&#039;t contribute sooner because i was playing catchup in my other classes. Let me know what i can do and i&#039;ll be on it asap. - kirill (k.kashigin@gmail.com)&lt;br /&gt;
update: i&#039;m gonna be helping Fedor with #2&lt;br /&gt;
&lt;br /&gt;
PS, this article http://docs.google.com/viewer?a=v&amp;amp;q=cache:E7-H_pv_18wJ:citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.92.2279%26rep%3Drep1%26type%3Dpdf+flash+memory+and+disk-based+file+systems&amp;amp;hl=en&amp;amp;gl=ca&amp;amp;pid=bl&amp;amp;srcid=ADGEESgspy-jqIdLOpaLYlPPoM56kjLPwXcL3_eMbTTBRkI7PG0jQKl9vIieTAYHubPu0EdQ0V4ccaf_p0S_SnqKMirSIM0Qoq5E0NpLd0M7LAGaE51wkD0F55cRSkX8dnTqx_9Yx2E7&amp;amp;sig=AHIEtbS-yfGI9Y48DJ0WyEEhmsXInelRGw looks really useful for part 3.&lt;br /&gt;
&lt;br /&gt;
---same article as above but shorter link: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&lt;br /&gt;
&lt;br /&gt;
PPS, and this article looks really great for understanding how log based file systems work: http://delivery.acm.org/10.1145/150000/146943/p26-rosenblum.pdf?key1=146943&amp;amp;key2=3656986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Luc (TA) here, Anandtech ran a series of articles on solid state drives that you guys might find useful.  It mostly looked at hardware aspects but it gives some interesting insights on how to modify file systems to better support flash memory.&lt;br /&gt;
&lt;br /&gt;
http://www.anandtech.com/cpuchipsets/intel/showdoc.aspx?i=3403&lt;br /&gt;
&lt;br /&gt;
http://www.anandtech.com/storage/showdoc.aspx?i=3531&amp;amp;p=1&lt;br /&gt;
&lt;br /&gt;
http://anandtech.com/storage/showdoc.aspx?i=3631&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:3maisons|3maisons]] 19:44, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hey Paul&amp;amp;Kirill,&lt;br /&gt;
&lt;br /&gt;
If one of you guys could help me out with #2, that would be really great. I was going to work on that tomorrow, but I also have another large assignment to deal with and not having to do this research would greatly ease my life. Moreover, I do intend to work on writing&amp;amp;polishing the essay on Thursday as I have a lot of experience with that and it far more than research. Let me know if either one of you can help me with this. &lt;br /&gt;
&lt;br /&gt;
The other person could probably read over what Luc posted for us and see if it fits into our framework. Just be sure to state who is going to do what. &lt;br /&gt;
&lt;br /&gt;
Nick, &lt;br /&gt;
&lt;br /&gt;
Honestly, we really hope to have the research done by Thursday. If that is the only day that you are free and you&#039;re not a writer, I&#039;m honestly not sure what you could do. Perhaps someone else can think of something.&lt;br /&gt;
&lt;br /&gt;
- Fedor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m gonna have something for #2 up tonight. -kirill&lt;br /&gt;
&lt;br /&gt;
So I found this article on Reddit, posted from Linux Weekly News on pretty much exactly what we are looking at. It&#039;s entitled &amp;quot;Solid-state storage devices and the block layer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://lwn.net/SubscriberLink/408428/68fa8465da45967a/    --[[User:Gsmith6|Gsmith6]] 20:36, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I wasn&#039;t exactly sure how much information i was supposed to present but here&#039;s what i got for #2:&lt;br /&gt;
&lt;br /&gt;
	Most conventional file systems are designed to me implemented on hard disk drives. This fact does not mean they cannot be implemented on a solid state drive (file storage that uses flash memory instead of magnetic discs). It would however, in many ways, defeat the purpose of using flash memory. The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically so there is no need to waste resources laying out the data in close proximity.&lt;br /&gt;
	A traditional HDD file system will also attempt to defragment itself, moving blocks of data around for closer proximity on the magnetic disk. This process, although beneficial for HDD&#039;s, is harmful and inefficient for flash based storage. A flash optimal file system needs to reduce the amount of erase operations, since flash memory only has a limited amount of erase cycles as well as having very slow erase speeds.&lt;br /&gt;
	When an HDD rewrites data to a physical location there is no need for it to erase the previously occupying data first, so a traditional disk based file system doesn&#039;t worry about erasing data from unused memory blocks. In contrast flash memory needs to first erase the data block before it can modify any of it contents. Since the erase procedure is extremely slow, its not practical to overwrite old data every time. It is also decremental to the life span of flash memory.&lt;br /&gt;
	To maximize the potential of flash based memory the file system would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to erase unused blocks when the system is idle, which does not get implemented in conventional file systems since it is not needed.&lt;br /&gt;
&lt;br /&gt;
--kirill&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So Fedor and I were talking in the labs, and we came to the conclusion that we have been focusing on just the translation from a regular file system to a flash drive. We were under the impression that this was in fact the &amp;quot;Flash Optimized System&amp;quot;, but pulling up some more articles, I&#039;m finding that this is not necessarily the case. &lt;br /&gt;
&lt;br /&gt;
This paper here http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf.&lt;br /&gt;
shows an example from Axis Communications where they developed a file system specifically designed to be used on flash drives. &lt;br /&gt;
&lt;br /&gt;
Now I haven&#039;t completely read it, so it might just be an optimized translational system, but its at least a start.&lt;br /&gt;
&lt;br /&gt;
At our meeting today, we&#039;ve decided that it would be best if people could post a rough summary of their notes in the appropriate sections, and I will rewrite them into an essay, which Fedor will go through later tonight to edit and add some more information.&lt;br /&gt;
&lt;br /&gt;
Paul: I missed your comment that you weren&#039;t that great at writing, and good at research. If you want some articles behind the pay-walls, I&#039;ve saved a bunch of them and emailed them to myself. Just email me (at the address at the top of the page) and I&#039;ll be more than happy to send some your way.&lt;br /&gt;
&lt;br /&gt;
PS. some more references&lt;br /&gt;
&lt;br /&gt;
Design tradeoffs for SSD performance http://portal.acm.org/citation.cfm?id=1404014.1404019 &lt;br /&gt;
A log buffer-based flash translation layer using fully-associative sector translation http://delivery.acm.org/10.1145/1280000/1275990/a18-lee.pdf?key1=1275990&amp;amp;key2=0709607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=105787273&amp;amp;CFTOKEN=74601780&lt;br /&gt;
&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 15:03, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don&#039;t have any notes on this computer. &amp;gt;: I will be adding more to my section later on tonight. Sorry. ~Andrew&lt;br /&gt;
&lt;br /&gt;
Hello dudes,&lt;br /&gt;
&lt;br /&gt;
Just a quick note, try to include citations in your paragraphs - each time that you make a claim which came from evidence, put a little number [X, pp. page-number (if applicable)] into your text. Then, put the same [X] at the bottom of the page with the bibliographical information about the source. The prof hasn&#039;t yet gotten back to me about his preferred citation format, so just stick with this one for now:&lt;br /&gt;
&lt;br /&gt;
Authors. &#039;&#039;Title&#039;&#039;. Web-page. Date of article. Web (the word). Date you accessed it.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example:&lt;br /&gt;
&lt;br /&gt;
[1] Kawaguchi, Nishioka, Tamoda. &#039;&#039;A Flash Memory Based File System&#039;&#039;.&lt;br /&gt;
http://docs.google.com/viewer?a=v&amp;amp;q=cache:E7-H_pv_18wJ:citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.92.2279%26rep%3Drep1%26type%3Dpdf+flash+memory+and+disk-based+file+systems&amp;amp;hl=en&amp;amp;gl=ca&amp;amp;pid=bl&amp;amp;srcid=ADGEESgspy-jqIdLOpaLYlPPoM56kjLPwXcL3_eMbTTBRkI7PG0jQKl9vIieTAYHubPu0EdQ0V4ccaf_p0S_SnqKMirSIM0Qoq5E0NpLd0M7LAGaE51wkD0F55cRSkX8dnTqx_9Yx2E7&amp;amp;sig=AHIEtbS-yfGI9Y48DJ0WyEEhmsXInelRGw . 1995. Web. Oct. 14, 2010.&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
PS, its a good idea to check this fairly frequently between now and tomorrow morning - you never know when something will come up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Phew... for a while there I was starting to think that I had nothing about the actual &amp;quot;Log-Based System&amp;quot;, but it turns out that the &amp;quot;Transitional Layer&amp;quot; is the same thing. It looks like some articles are calling it the Log system, while others are calling it the transitional layer. Pretty sure I&#039;m going to have an experts knowledge about flash drives after reading all these articles :P&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 18:13, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hay Geoff this is what i got so far after reading a couple of the pdfs. the double tabed points are just my annotation on how they relate to the question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ware leveling: p1126-chang.pdf&lt;br /&gt;
&lt;br /&gt;
* Uneven wearing of flash memory due to storing data close together&lt;br /&gt;
* Garbage collection prefers that no blocks have pages that have data that is constantly becoming invalid&lt;br /&gt;
* data that remains the same for longs periods of time should be moved from block that have not be written to much and moved to blocks that haven been erased frequently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log file structure: 926-rosenblum.pdf&lt;br /&gt;
&lt;br /&gt;
* LFS based on assumption that frequently read files will be stored in cash and that the hard disk traffic will be dominated by writes&lt;br /&gt;
* Writes all new info to disk in a sequential structure called a log&lt;br /&gt;
* Data is stored permanently in these logs no other data is stored on the hard drive&lt;br /&gt;
* Converts many small random synchronous writes to a large asynchronous sequential write&lt;br /&gt;
** Good for flash because it cuts down on writing (prolongs drive life)&lt;br /&gt;
** It also good because it writes to a bigger section then a page. This means it can fill a block at a time so it doesn’t fill up other blocks with random writes that would later need to be cleaned. Cuts down on cleaning.&lt;br /&gt;
* Inode is stored in the log on the disk while an inode map is maintained in memory which points to the inode in the hard disk. as&lt;br /&gt;
** This is good for flash drives because reading does not hurt the drives life and it is fast.&lt;br /&gt;
** This means the map will not have to be updated on the disk as frequently cutting down on the writes.&lt;br /&gt;
* Log systems weakness is that it is susceptible to becoming fragmented due to the larger writes. &lt;br /&gt;
** Since flash drives do not require fragmentation this is fine. Also since flash drives have very fast random access the system does not become bogged down when the logs are fragmented&lt;br /&gt;
* Log system implements a cleaning system that scans a segment in and sees if there is live data in it. If there is a certain percentage of invalid data which goes according to the cleaning policy it will be cleaned. All the live data will be copied out and the segment will be erased.&lt;br /&gt;
** This is a garbage collector but its built into the file system.&lt;br /&gt;
* Segments contain a number of blocks. Segments can contain logs or parts of logs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m still sifting though the other pdfs you sent me. Would you like me to post more info or should i format this into a paragraph or 2?&lt;br /&gt;
&lt;br /&gt;
--Paul&lt;br /&gt;
&lt;br /&gt;
I&#039;m sorting through my notes and putting them into a digital format. Difficult because It&#039;s hard to remember what I copied directly out of the notes for my own reference, so I&#039;m trying to de-plagarize. I&#039;ll upload what I have to the section by 20:30, but expect more updates. ~Andrew&lt;br /&gt;
&lt;br /&gt;
Hey Paul,&lt;br /&gt;
&lt;br /&gt;
Thanks for helping out with the research&lt;br /&gt;
I&#039;m thinking that we probably have enough information (at least for the log-based system), so maybe if you could &amp;quot;try&amp;quot; and putting them into paragraphs. I&#039;m kind of in the middle of typing up the essay, and I&#039;m uploading new information every 10-20 minutes or so. Even if you could get something into paragraph form, I can go through and edit, rearrange, and add stuff as I get there. --[[User:Gsmith6|Gsmith6]] 23:51, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m just going to dump my entire wiki so far into my profile page, because everything&#039;s being updated so quickly.&lt;br /&gt;
[[User:Abujaki]] ~Andrew&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m sitting at my computer working on much less immediately important homework if someone wants me to do something. I&#039;m not a great writer but if there&#039;s something that needs doing I can do it. -- Nick [[User:Nlessard|Nlessard]] 00:55, 15 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
Keep up the good work!&lt;br /&gt;
&lt;br /&gt;
Geoff, it would be good if you uploaded the stuff you were typing as you got each section finished. I rewrote part 2 and the intro some hours ago and I guess I could go out and write a conclusion while stuff is still being updated. &lt;br /&gt;
&lt;br /&gt;
The other thing is that the current version of part 1 doesn&#039;t really seem to serve the argument - I mean, it doesn&#039;t actually tell us why flash has the constraints that it does on a technical level... and that&#039;s not surprising because that information seems to be hard to find. Still, I&#039;m going to see if I can find out anything about that, though, so far, I haven&#039;t had much luck.&lt;br /&gt;
&lt;br /&gt;
Apart from this, I&#039;ll try to get up early tomorrow to look over what&#039;s there: make sure the argument works, etc.&lt;br /&gt;
&lt;br /&gt;
Good luck with the writing,&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
I think it has to do with how some transistors are made. Give me a second to research that... ~Andrew&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From source 20, page 269 sec 4.6.4&lt;br /&gt;
Stress Induced Oxide leakage&lt;br /&gt;
...These devices are either erased ... orboth programmed and erased by a high field (Fowler-Nordheim) injection of electrons into a very thin dielectric film to charge and discharge the floating gate. Unfortunately, [passing] this current through the oxide degrades the quality of the oxide and eventually leads to breakdown. The wearout of tunnel oxide films during high-field stress has been correlated with the buildup of both positive or negative trapped charges.&amp;quot;... there are still some things missing from this explanation... Give me a couple more seconds... and my brain won&#039;t process this for some reason. =_= What can you guys make of this? ~Andrew&lt;br /&gt;
&lt;br /&gt;
And I said NOR Flash memory had fast fetch times. I found what I was looking for, just not too sure how to explain it in text. Silicon Oxide is used for electron injection methods, including the Fowler-Nordheim Tunneling method, where it seems to say that an electric current is passed across the oxide and it thins enough for a current to be passed through a barrier into the oxide conduction... band?&lt;br /&gt;
&lt;br /&gt;
Kay. New resource [19], the massively complicated theories and science would put anyone to sleep, but the basic point is The Silicon oxide layer will degrade in quality to the point where charge trapping begins to occur, the more it&#039;s used, and the more electrons that tunnel through it over time. It&#039;s like a kneaded eraser scenario. The more you use it, the poorer quality it gets until it gets all flakey and cannot do its job anymore. The same happens with the SiO2 layer in the floating gate transistors ~Andrew&lt;br /&gt;
&lt;br /&gt;
hmmm... alright, I think I understand that, could you maybe try your best and add it into the essay? If not I can try and whip something up to put in there. thanks --[[User:Gsmith6|Gsmith6]] 02:39, 15 October 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4329</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4329"/>
		<updated>2010-10-15T02:10:16Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Flash Optimized File Systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistent and efficiently readable type of storage.  Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminently while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terrabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possibly more on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Transition Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
	Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes direclty out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; is achieved through a Log-based File System, often referred to as the Flash Transitional Layer(FTL). Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased). The translational layer has a translation table, where each physical memory address is associated with an emulated block sectors. This allows a traditional file system that uses block sectors to be used on the flash drive.&lt;br /&gt;
&lt;br /&gt;
===Banks===&lt;br /&gt;
The FTL organizes data using structures called banks. When the FTL gets a request to write something to memory, it uses a bank list to determine which area of the drive should be used. Essentially a bank is a group of sequential addresses, that keeps track of when it was last updated using timestamps. The FTL will only write to that bank, and once there is not enough space to write anymore, it switches out the bank for the bank with the oldest timestamp.&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS, LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=old=&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
This is what I&#039;ve got so far... mostly based on wikipedia:&lt;br /&gt;
&lt;br /&gt;
Flash memory has two limitations: it can only be erased in blocks and and it wears out after a certain number of erase cycles. Furthermore, a particular kind of Flash memory (NAND) is not able to provide random access.  &lt;br /&gt;
As a result of these Flash based file-systems cannot be handled in the same way as disk-based file systems. Here are a few of the key differences:&lt;br /&gt;
&lt;br /&gt;
-	Because memory must be erased in blocks, its erasure tends to take up time. Consequently, it is necessary to time the erasures in a way so as not to interfere with the efficiency of the system’s other operations. This is is not a real concern with disk-based file-systems. &lt;br /&gt;
-	A disk file-system needs to minimize the seeking time, but Flash file-system does not concern itself with this as it doesn’t have a disk. &lt;br /&gt;
-	A flash system tries to distribute memory in such a way so as not to make a particular block of memory subject to a disproportionally large number of erasures. The purpose of this is to keep the block from wearing out prematurely. The result of it is that memory needs to be distributed differently than in a disk based file-system. &lt;br /&gt;
Log-sturctured file systems are thus best suited to dealing with flash memory (they apparently do all of the above things). &lt;br /&gt;
&lt;br /&gt;
For the essay form, I&#039;m thinking of doing a section about traditional hard-disk systems, another about flash-memory and a third about flash systems. At this point, I am imagining the thesis as something like, &amp;quot;Flash systems require a fundamentally different system architecture than disk-based systems due to their need to adapt to the constraints inherent in flash memory: specifically, due to that memory&#039;s limited life-span and block-based erasures.&amp;quot; The argument would then talk about how these two differences directly lead to a new FS approach. &lt;br /&gt;
&lt;br /&gt;
That&#039;s how I see it at the moment. Honestly, I don&#039;t like doing research about this kind of stuff, so my data isn&#039;t very deep. That said, if you guys could find more info and summarize it, I&#039;m pretty sure that I could synthesize it all into a coherent essay. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4323</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4323"/>
		<updated>2010-10-15T01:55:31Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: /* Flash Optimized File Systems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistent and efficiently readable type of storage.  Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminently while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terrabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possibly more on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Transition Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
	Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes direclty out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
The process of &amp;quot;wear leveling&amp;quot; is achieved through a &amp;quot;log-based file system&amp;quot;, often referred to as the &amp;quot;transitional layer&amp;quot;. Essentially, the drive stores a log that keeps track of how many times each erase sector has been invalidated (or erased).&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, Accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &#039;&#039;Micron Technology Inc&#039;&#039;. Micro Technology Inc, Accessed 14 Oct 2010. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[18] &#039;&#039;Flash Memories.&#039;&#039; 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] &#039;&#039;Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] &#039;&#039;Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices&#039;&#039;. &#039;&#039;IEEE Press Series on Microelectronic Systems&#039;&#039;. New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relevant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS, LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=old=&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
This is what I&#039;ve got so far... mostly based on wikipedia:&lt;br /&gt;
&lt;br /&gt;
Flash memory has two limitations: it can only be erased in blocks and and it wears out after a certain number of erase cycles. Furthermore, a particular kind of Flash memory (NAND) is not able to provide random access.  &lt;br /&gt;
As a result of these Flash based file-systems cannot be handled in the same way as disk-based file systems. Here are a few of the key differences:&lt;br /&gt;
&lt;br /&gt;
-	Because memory must be erased in blocks, its erasure tends to take up time. Consequently, it is necessary to time the erasures in a way so as not to interfere with the efficiency of the system’s other operations. This is is not a real concern with disk-based file-systems. &lt;br /&gt;
-	A disk file-system needs to minimize the seeking time, but Flash file-system does not concern itself with this as it doesn’t have a disk. &lt;br /&gt;
-	A flash system tries to distribute memory in such a way so as not to make a particular block of memory subject to a disproportionally large number of erasures. The purpose of this is to keep the block from wearing out prematurely. The result of it is that memory needs to be distributed differently than in a disk based file-system. &lt;br /&gt;
Log-sturctured file systems are thus best suited to dealing with flash memory (they apparently do all of the above things). &lt;br /&gt;
&lt;br /&gt;
For the essay form, I&#039;m thinking of doing a section about traditional hard-disk systems, another about flash-memory and a third about flash systems. At this point, I am imagining the thesis as something like, &amp;quot;Flash systems require a fundamentally different system architecture than disk-based systems due to their need to adapt to the constraints inherent in flash memory: specifically, due to that memory&#039;s limited life-span and block-based erasures.&amp;quot; The argument would then talk about how these two differences directly lead to a new FS approach. &lt;br /&gt;
&lt;br /&gt;
That&#039;s how I see it at the moment. Honestly, I don&#039;t like doing research about this kind of stuff, so my data isn&#039;t very deep. That said, if you guys could find more info and summarize it, I&#039;m pretty sure that I could synthesize it all into a coherent essay. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4268</id>
		<title>COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_10&amp;diff=4268"/>
		<updated>2010-10-15T00:19:53Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
First introduced in the late 80s, Flash-memory is a light, energy-independent, compact, shock-resistent and efficiently readable type of storage.  Because of the particular limitations of this kind of memory, flash file systems require a fundamentally different system architecture than disk-based file-systems:  these systems need to be designed in light of flash-memory’s limited number of erase-cycles and its need to conduct erasures one entire block at a time. These constraints are a direct result of the same design that gives flash its advantages with regard to [ TO WHAT?] as both are due to [TO WHAT?] . Thus, a typical disk-based file-system is not suitable for working with flash memory as it erases far too frequently and indiscriminently while being simultaneously optimized for other constraints that do not affect flash memory. This means that a different solution is necessary and that solution is the log-based file-system which is far better suited to working with flash memory because it optimizes erasures by [WHAT?].&lt;br /&gt;
&lt;br /&gt;
==Flash Memory==&lt;br /&gt;
Flash memory is non-volatile(meaning digital storage that does not require power to retain its memory) storage space that has become more popular recently due to its fast fetch times. There are two basic forms of the flash storage system, NOR and NAND. Each type has its advantages and disadvantages. NOR has the fastest read times, but is much slower at writing. NAND on the other hand has much more capacity, faster write times, is less expensive, and has a much longer life expectancy.[2]&lt;br /&gt;
&lt;br /&gt;
More and more people use flash memory, with many sizes of drives, ranging from a few hundred megabyte USB key, to a few terrabyte internal solid-state drive(SSD). Two main reasons for this movement are because of flash&#039;s extremely fast read times, and its falling price. A typical flash drive has read speeds of up to 14 times faster than a hard disk drive (HDD).[17]&lt;br /&gt;
&lt;br /&gt;
Although flash drives are exponentially faster than HDDs, they still have not become the main source of data management. The reason for this is because HDDs are simply much cheaper, and flash drives still have many faults. The most critical fault is that each block in flash memory can only be erased approximately 100,000 times.[14] This poses a problem because when modifying a file, even if its a single bit, the entire block must be erased, and rewritten. This erase/rewrite slows down the write operation considerably, making it actually slower to write a file to flash than an HDD.[8]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possibly more on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
HDDs use a block system, in which the kernel specifies which blocks to read and write. When using a flash drive, the blocks are emulated and mapped to a physical memory address. It does through what is called a &amp;quot;Transition Layer&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Traditionally Optimized File Systems==&lt;br /&gt;
&lt;br /&gt;
	Since the kernel asks for a block number, a conventional hard disk drive (HDD) file-system is not optimized to work with flash memory. The reason for this is that conventional hard-disks have different constraints from those of flash memory - their primary problem is to reduce seeking time, while the primary problem when working with flash memory is to erase in a minimal and balanced way. &lt;br /&gt;
&lt;br /&gt;
The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk in order to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically. This is also why defragmentaion, a procedure used by HDDs to put files into more convenient configurations and thus minimize seeking times, loses its purpose in a flash memory context. Indeed, the unnecessary erasures that it entails are both inefficient and harmful for a flash memory unit. &lt;br /&gt;
&lt;br /&gt;
This comes direclty out of flash memory&#039;s aforementioned constraints: the slow block-sized erasures and the limited number of erase-cycles. Because of these, a flash optimal file system needs to minimize its erase operations and also to spread out its erasures in such a way as to avoid the formation of hot-spots: sections of memory which have undergone a disproportionately high number of erasures and are thus in danger of burning out. This process of spreading out data is referred to as &amp;quot;wear leveling&amp;quot;. To minimize hotspots, a system using flash memory would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to conduct necessary erasure operations while the system is idle. It makes better sense to do these at this time because of the slow nature of erasures in the flash memory context. Of course, there is no such feature in a traditional HDD file-system. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;More on this later&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Flash Optimized File Systems==&lt;br /&gt;
&#039;&#039;Flash Optimized files systems do to optimize HDD read/write/etc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Questions=&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to start making up some proper citations for the websites we have. the order they&#039;re going in probably won&#039;t line up with the actual essay so I put the number for the link I&#039;m actually citing next to each link, renumber as appropriate:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;also, add in the right page number&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[1] [http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf]&lt;br /&gt;
&lt;br /&gt;
[3][http://portal.acm.org/citation.cfm?id=1244248]&lt;br /&gt;
&lt;br /&gt;
[4] [http://portal.acm.org/citation.cfm?id=1731355]&lt;br /&gt;
&lt;br /&gt;
[5] [http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf]&lt;br /&gt;
&lt;br /&gt;
[6] [http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf]&lt;br /&gt;
&lt;br /&gt;
[7] [http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1]&lt;br /&gt;
&lt;br /&gt;
[8] [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142]&lt;br /&gt;
&lt;br /&gt;
[9] [http://delivery.acm.org/10.1145/150000/146943/p26-rosenblum.pdf?key1=146943&amp;amp;key2=3656986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973]&lt;br /&gt;
&lt;br /&gt;
[10] [http://www.anandtech.com/show/2614]&lt;br /&gt;
&lt;br /&gt;
[11] [http://www.anandtech.com/storage/showdoc.aspx?i=3531&amp;amp;p=1]&lt;br /&gt;
&lt;br /&gt;
[12] [http://anandtech.com/storage/showdoc.aspx?i=3631]&lt;br /&gt;
&lt;br /&gt;
[13] [http://lwn.net/SubscriberLink/408428/68fa8465da45967a/]&lt;br /&gt;
&lt;br /&gt;
[14] [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf]&lt;br /&gt;
&lt;br /&gt;
[15] [http://portal.acm.org/citation.cfm?id=1404014.1404019]&lt;br /&gt;
&lt;br /&gt;
[16] [http://portal.acm.org/citation.cfm?id=1275990]&lt;br /&gt;
&lt;br /&gt;
[17] [http://www.micron.com/products/solid_state_storage/client_ssd.html]&lt;br /&gt;
&lt;br /&gt;
==actual references start here==&lt;br /&gt;
&lt;br /&gt;
[1]  Kim, Han-joon; Lee, Sang-goo. &#039;&#039;A New Flash Memory Management for Flash Storage System&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. Dept. of Comput. Sci., Seoul Nat. Univ., 06 Aug 2002. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[2] Smith, Lance. &#039;&#039;NAND Flash Solid State Storage Performance and Capability&#039;&#039;. &#039;&#039;Flash Memory Summit&#039;&#039;. SNIA Education Committee, 18 Aug 2009. &amp;lt;http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[3] Chang, LiPin. &#039;&#039;On Efficient Wear Leveling for Large-Scale Flash-Memory Storage Systems&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. Dept. of Comput. Sci.,Nat. ChiaoTung Univ., 15 Mar 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1244248&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[4] Nath, Suman; Gibbons, Phillip. &#039;&#039;Online maintenance of very large random samples on flash storage&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. The VLDB Journal, 27 Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1731355&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[5] Lim, Seung-Ho; Park; Kyu-Ho. &#039;&#039;An Efficient NAND Flash File System for Flash Memory Storage&#039;&#039;. &#039;&#039;CORE Laboratory&#039;&#039;. IEEE Transactions On Computers, Jul 2006. &amp;lt;http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[6] &#039;&#039;NAND vs. NOR Flash Memory Technology Overview&#039;&#039;. &#039;&#039;RMG and Associates&#039;&#039;. Toshiba America, accessed 14 Oct 2010. &amp;lt;http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[7] Bez, Roberto; Camerlenghi, Emilio; Modelli, Alberto; Visconti, Angelo. &#039;&#039;Introduction to Flash Memory&#039;&#039;. &#039;&#039;IEEExplore&#039;&#039;. STMicroelectronics, 21 May 2003. &amp;lt;http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[8] Kawaguchi, Atsuo; Nishioka, Shingo; Motoda Hiroshi. &#039;&#039;A Flash-Memory Based File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039; Advanced Research laboratory, Hitachi, Ltd., 1995. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[9] Rosenblum, Mendel; Ouserhout, John. &#039;&#039;The Design and Implementation of a Log-structured File System&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. University of California at Berkeley, Feb 1992. &amp;lt;http://portal.acm.org/citation.cfm?id=146943&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&amp;amp;ret=1#Fulltext&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[10] Shimpi, Anand. &#039;&#039;Intel X25-M SSD: Intel Delivers One of the World&#039;s Fastest Drives&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 8 Sep 2008. &amp;lt;http://www.anandtech.com/show/2614&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[11] Shimpi, Anand. &#039;&#039;The SSD Relapse: Understanding and Choosing the Best SSD&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 30 Aug 2009. &amp;lt;http://www.anandtech.com/show/2829&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[12] Shimpi, Anand. &#039;&#039;The SSD Anthology: Understanding SSDs and New Drives from OCZ&#039;&#039;. &#039;&#039;AnAndTech&#039;&#039;. AnAndTech, 18 Mar 2009. &amp;lt;http://www.anandtech.com/show/2738&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[13] Corbet, Jonathan. &#039;&#039;Solid-State Storage Devices and the Block Layer&#039;&#039;. &#039;&#039;Linux Weekly News&#039;&#039;. Linux Weekly News, 4 Oct 2010. &amp;lt;http://lwn.net/Articles/408428/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[14] Woodhouse, David. &#039;&#039;JFFS : The Journalling Flash File System&#039;&#039;. &#039;&#039;CiteSeerX&#039;&#039;. Red Hat, Inc, accessed 14 Oct 2010. &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[15] Agrawal, Nitin; Prabhakaran, Vijayan; Wobber, Ted; Davis, John; Manasse, Mark. Panigrahy, Rina. &#039;&#039;Design Tradeoffs for SSD Performance&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;, USENIX 2008 Annual Technical Conference, 2008. &amp;lt;http://portal.acm.org/citation.cfm?id=1404014.1404019&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[16] Lee, Sang-Won, et al. &#039;&#039;A Log Buffer-Based Flash Translation Layer Using Fully-Associative Sector Translation&#039;&#039;. &#039;&#039;Association for Computing Machinery (ACM)&#039;&#039;. ACM Transactions on Embedded Computing Systems (TECS), Jul 2007. &amp;lt;http://portal.acm.org/citation.cfm?id=1275990&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[17] Micron Technology Inc, &#039;&#039;Reach New Heights in Computing Performance&#039;&#039;. &amp;lt;http://www.micron.com/products/solid_state_storage/client_ssd.html&amp;gt;  (may need reworking)&lt;br /&gt;
&lt;br /&gt;
[18] Flash Memories. 1 ed. New York: Springer, 1999. Print.&lt;br /&gt;
&lt;br /&gt;
[19] Nonvolatile Memory Technologies with Emphasis on Flash: A Comprehensive Guide to Understanding and Using Flash Memory Devices (IEEE Press Series on Microelectronic Systems). New York: Wiley-Ieee Press, 2008. Print.&lt;br /&gt;
&lt;br /&gt;
[20] Nonvolatile Semiconductor Memory Technology: A Comprehensive Guide to Understanding and Using NVSM Devices (IEEE Press Series on Microelectronic Systems). New York: Wiley-Ieee Press, 1997. Print.&lt;br /&gt;
&lt;br /&gt;
=External links=&lt;br /&gt;
&lt;br /&gt;
Relivant Wikipedia articles: [http://en.wikipedia.org/wiki/Flash_Memory Flash Memory], [http://en.wikipedia.org/wiki/LogFS, LogFS], [http://en.wikipedia.org/wiki/Hard_disk Hard Disk Drives], [http://en.wikipedia.org/wiki/Wear_leveling Wear Leveling], [http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29 Hot Spots], [http://en.wikipedia.org/wiki/Solid-state_drive Sold State Drive].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=old=&lt;br /&gt;
&lt;br /&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
This is what I&#039;ve got so far... mostly based on wikipedia:&lt;br /&gt;
&lt;br /&gt;
Flash memory has two limitations: it can only be erased in blocks and and it wears out after a certain number of erase cycles. Furthermore, a particular kind of Flash memory (NAND) is not able to provide random access.  &lt;br /&gt;
As a result of these Flash based file-systems cannot be handled in the same way as disk-based file systems. Here are a few of the key differences:&lt;br /&gt;
&lt;br /&gt;
-	Because memory must be erased in blocks, its erasure tends to take up time. Consequently, it is necessary to time the erasures in a way so as not to interfere with the efficiency of the system’s other operations. This is is not a real concern with disk-based file-systems. &lt;br /&gt;
-	A disk file-system needs to minimize the seeking time, but Flash file-system does not concern itself with this as it doesn’t have a disk. &lt;br /&gt;
-	A flash system tries to distribute memory in such a way so as not to make a particular block of memory subject to a disproportionally large number of erasures. The purpose of this is to keep the block from wearing out prematurely. The result of it is that memory needs to be distributed differently than in a disk based file-system. &lt;br /&gt;
Log-sturctured file systems are thus best suited to dealing with flash memory (they apparently do all of the above things). &lt;br /&gt;
&lt;br /&gt;
For the essay form, I&#039;m thinking of doing a section about traditional hard-disk systems, another about flash-memory and a third about flash systems. At this point, I am imagining the thesis as something like, &amp;quot;Flash systems require a fundamentally different system architecture than disk-based systems due to their need to adapt to the constraints inherent in flash memory: specifically, due to that memory&#039;s limited life-span and block-based erasures.&amp;quot; The argument would then talk about how these two differences directly lead to a new FS approach. &lt;br /&gt;
&lt;br /&gt;
That&#039;s how I see it at the moment. Honestly, I don&#039;t like doing research about this kind of stuff, so my data isn&#039;t very deep. That said, if you guys could find more info and summarize it, I&#039;m pretty sure that I could synthesize it all into a coherent essay. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_10&amp;diff=4204</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_10&amp;diff=4204"/>
		<updated>2010-10-14T23:51:45Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey all,&lt;br /&gt;
&lt;br /&gt;
I think we should write down our emails here so we can further discuss stuff without having to login here.&lt;br /&gt;
(&#039;&#039;&#039;***Note that discussions over email can&#039;t be counted towards your participation grade!***&#039;&#039;&#039;--[[User:Soma|Anil]])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geoff Smith (gsmith0413@gmail.com) - gsmith6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andrew Bujáki (abujaki [at] Connect or Live.ca)&lt;br /&gt;
***I&#039;m usually on MSN(Live) for collaboration at nights, Just make sure to put in a little message about who you are when you&#039;re adding me. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I used Google Scholar and came to this page http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&lt;br /&gt;
Which briefly touches on the issues of Flash memory. Specifically, inability to update in place, and limited write/erase cycles.&lt;br /&gt;
&lt;br /&gt;
Inability to update in place could refer to the way the flash disk is programmed, instead of bit-by-bit, it is programmed block-by-block. A block would have to be erased and completely reprogrammed in order to flip one bit after it&#039;s been set.&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_memory#Block_erasure&lt;br /&gt;
&lt;br /&gt;
Limited write/erase: Flash memory typically has a short lifespan if it&#039;s being used a lot. Writing and erasing the memory (Changing, updating, etc) Will wear it out. Flash memory has a finite amount of writes, (varying on manufacturer, models, etc), and once they&#039;ve been used up, you&#039;ll get bad sectors, corrupt data, and generally be SOL.&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_memory#Memory_wear&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Filesystems would have to be changed to play nicely with these constraints, where it must use blocks efficiently and nicely, and minimize writing/erasing as much as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I found a paper that talks about the performance, capabilities and limitations of NAND flash storage. &lt;br /&gt;
&lt;br /&gt;
Abstract: &amp;quot;This presentation provides an in-depth examination of the&lt;br /&gt;
fundamental theoretical performance, capabilities, and&lt;br /&gt;
limitations of NAND Flash-based Solid State Storage (SSS). The&lt;br /&gt;
tutorial will explore the raw performance capabilities of NAND&lt;br /&gt;
Flash, and limitations to performance imposed by mitigation of&lt;br /&gt;
reliability issues, interfaces, protocols, and technology types.&lt;br /&gt;
Best practices for system integration of SSS will be discussed.&lt;br /&gt;
Performance achievements will be reviewed for various&lt;br /&gt;
products and applications. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Link: http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&lt;br /&gt;
&lt;br /&gt;
There&#039;s no Starting place like Wikipedia, even if you shouldn&#039;t source it. &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_Memory &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/LogFS &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Hard_disk &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Wear_leveling &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Solid-state_drive&lt;br /&gt;
&lt;br /&gt;
Hey Guys,&lt;br /&gt;
&lt;br /&gt;
We really don&#039;t have much time to get this done. Lets meet tomorrow after class and get our bearings to do this properly.&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A few of us have Networking immediately after class. I know personally I won&#039;t be able to make anything set on Tuesday.&lt;br /&gt;
Additionally, he spoke briefly about hotspots on the disk for our question last week, where places on the disk would be written to far more often than others. &lt;br /&gt;
As well, for bibliographical citing, http://bibme.org is a wonderful resource for the popular formats (I.e. MLA). If it should come down to that.&lt;br /&gt;
~Andrew&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===links===&lt;br /&gt;
&lt;br /&gt;
Start Posting some stuff to source from:&lt;br /&gt;
&lt;br /&gt;
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&lt;br /&gt;
--&amp;quot;Introduction to flash memory&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://portal.acm.org/citation.cfm?id=1244248&lt;br /&gt;
--&amp;quot;Wear Leveling&amp;quot; (it&#039;s about a proposed way of doing it, but explains a whole bunch of other things to do that)&lt;br /&gt;
&lt;br /&gt;
http://portal.acm.org/citation.cfm?id=1731355&lt;br /&gt;
--&amp;quot;Online maintenance of very large random samples on flash storage&amp;quot; (ie dealing with the constraints of Flash Storage in a system that might actually be written to 100000 times)&lt;br /&gt;
&lt;br /&gt;
http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&lt;br /&gt;
--&amp;quot;An Efficient NAND Flash File System for Flash Memory Storage&amp;quot; discuses shortcomings of using hard disk based file systems and current flash based file systems&lt;br /&gt;
&lt;br /&gt;
http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&lt;br /&gt;
--&amp;quot;NAND vs NOR Flash Memory&amp;quot; (note: i didn&#039;t get this off of Google scholar but it seems to be written by someone from Toshiba. is that ok?)&lt;br /&gt;
&lt;br /&gt;
Hi everybody,&lt;br /&gt;
&lt;br /&gt;
So here are the latest news. Geoff, Andrew and myself had a meeting after class today and came up with a plan for writing this thing. &lt;br /&gt;
&lt;br /&gt;
We decided to have 3 parts:&lt;br /&gt;
&lt;br /&gt;
1. What flash storage is, why its good but also why it must have the problems that it does (the assumption is that it must have them, why would it otherwise?)&lt;br /&gt;
[don&#039;t know much about this just now... basics include that there is NOR (reads slightly faster)and NAND (holds more, writes faster, erases much faster, lasts about ten times longer) flash with NAND being especially popular for storage (what&#039;s NOR good for?). Here, we&#039;d ideally want to talk about why flash was invented (supposed as an alternative to slow ROM), why it was suitable for that, and how it works on a technical level. Then, we&#039;d want to mention why this technical functionality was innovative and useful but also why it came with two serious set-backs: having a limited-number of re-write cycles and needing to erase a block at a time.]&lt;br /&gt;
&lt;br /&gt;
Either way, Flash storage affords far faster fetch times than the traditional platter-based HDD, and stability of information in a sense. Where the data is not actually stored, but reprogrammed, in a sense, the data is more secure and is less likely to be erased easily. On that note, in order to flip a single bit, that entire block will need to be erased, then reprogrammed. In an &#039;old&#039; HDD, let&#039;s say, When the HDD fails at the end of its life cycle, your data is gone. (unless you&#039;re willing to shell out $200/hr to have it recovered, yes I&#039;ve seen companies in Ottawa that do this.) In a flash HDD, when it reaches the end of its life, it merely becomes read-only. Bugger for Databases, but useful for technical notes and archives, let&#039;s say.&lt;br /&gt;
With today&#039;s modern gaming computers, Flash memory can be good on quick load times, however with limited read-writes, it could afford better use to things that are not updated as frequently. I.e... Well I don&#039;t have a better example than a webserver hosting a company&#039;s CSS and scripts.&lt;br /&gt;
~Source: Years in the &#039;biz &lt;br /&gt;
&lt;br /&gt;
Flash memory started out as a replacement for EPROMs.  At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips.&lt;br /&gt;
source: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1 , http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&lt;br /&gt;
&lt;br /&gt;
2. How a traditional disk-based file-system works and why the limitations of flash storage make the two a poor match&lt;br /&gt;
[the obvious answer seems to be that traditional file-systems could just write to whatever memory was available but if they did this with a flash file-systems, certain chunks of memory would become unusable before others and the memory would be more difficult to work with. Also, disk-based file systems need to deal with seeking times which means that they want to organize their data in such a way as to reduce those (by putting related things together?) - with Flash, this isn&#039;t really a problem and thus one constraint the less to be concerned with.]&lt;br /&gt;
&lt;br /&gt;
3. How a log based file-system works and why this method of operation is so well suited to working with flash memory especially in light of the latter&#039;s inherent limitations&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
At this time, the plan is that Geoff will work on #3 today, Andrew will work on #1 tomorrow and I will work on #2 tomorrow. The three of us will make an effort to consult some somewhat more painfully technical literature in order to gain insight into our respective queries. Whatever insight we find will be posted here. &lt;br /&gt;
&lt;br /&gt;
Then, we will meet again on Thursday after class to decide how to actually write the essay.&lt;br /&gt;
&lt;br /&gt;
PS, if there is anybody in the group besides the three of us - let us know so you can find a way to contribute to this... as at least two of us are competent essayists, painfully technical research would on one or more of the above topics would be a great way to contribute... especially if you could post it here prior to one of us going over the same thing. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
-- I&#039;m not that great (but absolutely horrid) at essays and I&#039;m alright at research, but if nothing else I have Thursday off and nothing (else) that needs doing by Friday so I can probably spend a bunch of time working on it just before it&#039;s due. -- &#039;&#039;Nick L&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-- Hay sorry I was unable to attend the meeting after class today. I am not too good at writing essays as well but I am pretty good at summarizing and researching. I am not too sure at what you would like me to do. Right now I&#039;ll assume you need me to research/summarizing articles for the 3 topics above. If you need me to do anything else post it here. I&#039;ll be checking the discussion regularly until this due. once again sorry for missing the meeting-- Paul Cox.&lt;br /&gt;
&lt;br /&gt;
-- Hey i&#039;m also supposed to be in on this. Sorry i couldn&#039;t contribute sooner because i was playing catchup in my other classes. Let me know what i can do and i&#039;ll be on it asap. - kirill (k.kashigin@gmail.com)&lt;br /&gt;
update: i&#039;m gonna be helping Fedor with #2&lt;br /&gt;
&lt;br /&gt;
PS, this article http://docs.google.com/viewer?a=v&amp;amp;q=cache:E7-H_pv_18wJ:citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.92.2279%26rep%3Drep1%26type%3Dpdf+flash+memory+and+disk-based+file+systems&amp;amp;hl=en&amp;amp;gl=ca&amp;amp;pid=bl&amp;amp;srcid=ADGEESgspy-jqIdLOpaLYlPPoM56kjLPwXcL3_eMbTTBRkI7PG0jQKl9vIieTAYHubPu0EdQ0V4ccaf_p0S_SnqKMirSIM0Qoq5E0NpLd0M7LAGaE51wkD0F55cRSkX8dnTqx_9Yx2E7&amp;amp;sig=AHIEtbS-yfGI9Y48DJ0WyEEhmsXInelRGw looks really useful for part 3.&lt;br /&gt;
&lt;br /&gt;
---same article as above but shorter link: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&lt;br /&gt;
&lt;br /&gt;
PPS, and this article looks really great for understanding how log based file systems work: http://delivery.acm.org/10.1145/150000/146943/p26-rosenblum.pdf?key1=146943&amp;amp;key2=3656986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Luc (TA) here, Anandtech ran a series of articles on solid state drives that you guys might find useful.  It mostly looked at hardware aspects but it gives some interesting insights on how to modify file systems to better support flash memory.&lt;br /&gt;
&lt;br /&gt;
http://www.anandtech.com/cpuchipsets/intel/showdoc.aspx?i=3403&lt;br /&gt;
&lt;br /&gt;
http://www.anandtech.com/storage/showdoc.aspx?i=3531&amp;amp;p=1&lt;br /&gt;
&lt;br /&gt;
http://anandtech.com/storage/showdoc.aspx?i=3631&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:3maisons|3maisons]] 19:44, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hey Paul&amp;amp;Kirill,&lt;br /&gt;
&lt;br /&gt;
If one of you guys could help me out with #2, that would be really great. I was going to work on that tomorrow, but I also have another large assignment to deal with and not having to do this research would greatly ease my life. Moreover, I do intend to work on writing&amp;amp;polishing the essay on Thursday as I have a lot of experience with that and it far more than research. Let me know if either one of you can help me with this. &lt;br /&gt;
&lt;br /&gt;
The other person could probably read over what Luc posted for us and see if it fits into our framework. Just be sure to state who is going to do what. &lt;br /&gt;
&lt;br /&gt;
Nick, &lt;br /&gt;
&lt;br /&gt;
Honestly, we really hope to have the research done by Thursday. If that is the only day that you are free and you&#039;re not a writer, I&#039;m honestly not sure what you could do. Perhaps someone else can think of something.&lt;br /&gt;
&lt;br /&gt;
- Fedor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m gonna have something for #2 up tonight. -kirill&lt;br /&gt;
&lt;br /&gt;
So I found this article on Reddit, posted from Linux Weekly News on pretty much exactly what we are looking at. It&#039;s entitled &amp;quot;Solid-state storage devices and the block layer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://lwn.net/SubscriberLink/408428/68fa8465da45967a/    --[[User:Gsmith6|Gsmith6]] 20:36, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I wasn&#039;t exactly sure how much information i was supposed to present but here&#039;s what i got for #2:&lt;br /&gt;
&lt;br /&gt;
	Most conventional file systems are designed to me implemented on hard disk drives. This fact does not mean they cannot be implemented on a solid state drive (file storage that uses flash memory instead of magnetic discs). It would however, in many ways, defeat the purpose of using flash memory. The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically so there is no need to waste resources laying out the data in close proximity.&lt;br /&gt;
	A traditional HDD file system will also attempt to defragment itself, moving blocks of data around for closer proximity on the magnetic disk. This process, although beneficial for HDD&#039;s, is harmful and inefficient for flash based storage. A flash optimal file system needs to reduce the amount of erase operations, since flash memory only has a limited amount of erase cycles as well as having very slow erase speeds.&lt;br /&gt;
	When an HDD rewrites data to a physical location there is no need for it to erase the previously occupying data first, so a traditional disk based file system doesn&#039;t worry about erasing data from unused memory blocks. In contrast flash memory needs to first erase the data block before it can modify any of it contents. Since the erase procedure is extremely slow, its not practical to overwrite old data every time. It is also decremental to the life span of flash memory.&lt;br /&gt;
	To maximize the potential of flash based memory the file system would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to erase unused blocks when the system is idle, which does not get implemented in conventional file systems since it is not needed.&lt;br /&gt;
&lt;br /&gt;
--kirill&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So Fedor and I were talking in the labs, and we came to the conclusion that we have been focusing on just the translation from a regular file system to a flash drive. We were under the impression that this was in fact the &amp;quot;Flash Optimized System&amp;quot;, but pulling up some more articles, I&#039;m finding that this is not necessarily the case. &lt;br /&gt;
&lt;br /&gt;
This paper here http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf.&lt;br /&gt;
shows an example from Axis Communications where they developed a file system specifically designed to be used on flash drives. &lt;br /&gt;
&lt;br /&gt;
Now I haven&#039;t completely read it, so it might just be an optimized translational system, but its at least a start.&lt;br /&gt;
&lt;br /&gt;
At our meeting today, we&#039;ve decided that it would be best if people could post a rough summary of their notes in the appropriate sections, and I will rewrite them into an essay, which Fedor will go through later tonight to edit and add some more information.&lt;br /&gt;
&lt;br /&gt;
Paul: I missed your comment that you weren&#039;t that great at writing, and good at research. If you want some articles behind the pay-walls, I&#039;ve saved a bunch of them and emailed them to myself. Just email me (at the address at the top of the page) and I&#039;ll be more than happy to send some your way.&lt;br /&gt;
&lt;br /&gt;
PS. some more references&lt;br /&gt;
&lt;br /&gt;
Design tradeoffs for SSD performance http://portal.acm.org/citation.cfm?id=1404014.1404019 &lt;br /&gt;
A log buffer-based flash translation layer using fully-associative sector translation http://delivery.acm.org/10.1145/1280000/1275990/a18-lee.pdf?key1=1275990&amp;amp;key2=0709607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=105787273&amp;amp;CFTOKEN=74601780&lt;br /&gt;
&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 15:03, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don&#039;t have any notes on this computer. &amp;gt;: I will be adding more to my section later on tonight. Sorry. ~Andrew&lt;br /&gt;
&lt;br /&gt;
Hello dudes,&lt;br /&gt;
&lt;br /&gt;
Just a quick note, try to include citations in your paragraphs - each time that you make a claim which came from evidence, put a little number [X, pp. page-number (if applicable)] into your text. Then, put the same [X] at the bottom of the page with the bibliographical information about the source. The prof hasn&#039;t yet gotten back to me about his preferred citation format, so just stick with this one for now:&lt;br /&gt;
&lt;br /&gt;
Authors. &#039;&#039;Title&#039;&#039;. Web-page. Date of article. Web (the word). Date you accessed it.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example:&lt;br /&gt;
&lt;br /&gt;
[1] Kawaguchi, Nishioka, Tamoda. &#039;&#039;A Flash Memory Based File System&#039;&#039;.&lt;br /&gt;
http://docs.google.com/viewer?a=v&amp;amp;q=cache:E7-H_pv_18wJ:citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.92.2279%26rep%3Drep1%26type%3Dpdf+flash+memory+and+disk-based+file+systems&amp;amp;hl=en&amp;amp;gl=ca&amp;amp;pid=bl&amp;amp;srcid=ADGEESgspy-jqIdLOpaLYlPPoM56kjLPwXcL3_eMbTTBRkI7PG0jQKl9vIieTAYHubPu0EdQ0V4ccaf_p0S_SnqKMirSIM0Qoq5E0NpLd0M7LAGaE51wkD0F55cRSkX8dnTqx_9Yx2E7&amp;amp;sig=AHIEtbS-yfGI9Y48DJ0WyEEhmsXInelRGw . 1995. Web. Oct. 14, 2010.&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
PS, its a good idea to check this fairly frequently between now and tomorrow morning - you never know when something will come up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Phew... for a while there I was starting to think that I had nothing about the actual &amp;quot;Log-Based System&amp;quot;, but it turns out that the &amp;quot;Transitional Layer&amp;quot; is the same thing. It looks like some articles are calling it the Log system, while others are calling it the transitional layer. Pretty sure I&#039;m going to have an experts knowledge about flash drives after reading all these articles :P&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 18:13, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hay Geoff this is what i got so far after reading a couple of the pdfs. the double tabed points are just my annotation on how they relate to the question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ware leveling: p1126-chang.pdf&lt;br /&gt;
&lt;br /&gt;
* Uneven wearing of flash memory due to storing data close together&lt;br /&gt;
* Garbage collection prefers that no blocks have pages that have data that is constantly becoming invalid&lt;br /&gt;
* data that remains the same for longs periods of time should be moved from block that have not be written to much and moved to blocks that haven been erased frequently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log file structure: 926-rosenblum.pdf&lt;br /&gt;
&lt;br /&gt;
* LFS based on assumption that frequently read files will be stored in cash and that the hard disk traffic will be dominated by writes&lt;br /&gt;
* Writes all new info to disk in a sequential structure called a log&lt;br /&gt;
* Data is stored permanently in these logs no other data is stored on the hard drive&lt;br /&gt;
* Converts many small random synchronous writes to a large asynchronous sequential write&lt;br /&gt;
** Good for flash because it cuts down on writing (prolongs drive life)&lt;br /&gt;
** It also good because it writes to a bigger section then a page. This means it can fill a block at a time so it doesn’t fill up other blocks with random writes that would later need to be cleaned. Cuts down on cleaning.&lt;br /&gt;
* Inode is stored in the log on the disk while an inode map is maintained in memory which points to the inode in the hard disk. as&lt;br /&gt;
** This is good for flash drives because reading does not hurt the drives life and it is fast.&lt;br /&gt;
** This means the map will not have to be updated on the disk as frequently cutting down on the writes.&lt;br /&gt;
* Log systems weakness is that it is susceptible to becoming fragmented due to the larger writes. &lt;br /&gt;
** Since flash drives do not require fragmentation this is fine. Also since flash drives have very fast random access the system does not become bogged down when the logs are fragmented&lt;br /&gt;
* Log system implements a cleaning system that scans a segment in and sees if there is live data in it. If there is a certain percentage of invalid data which goes according to the cleaning policy it will be cleaned. All the live data will be copied out and the segment will be erased.&lt;br /&gt;
** This is a garbage collector but its built into the file system.&lt;br /&gt;
* Segments contain a number of blocks. Segments can contain logs or parts of logs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m still sifting though the other pdfs you sent me. Would you like me to post more info or should i format this into a paragraph or 2?&lt;br /&gt;
&lt;br /&gt;
--Paul&lt;br /&gt;
&lt;br /&gt;
I&#039;m sorting through my notes and putting them into a digital format. Difficult because It&#039;s hard to remember what I copied directly out of the notes for my own reference, so I&#039;m trying to de-plagarize. I&#039;ll upload what I have to the section by 20:00, but expect more updates. ~Andrew&lt;br /&gt;
&lt;br /&gt;
Hey Paul,&lt;br /&gt;
&lt;br /&gt;
Thanks for helping out with the research&lt;br /&gt;
I&#039;m thinking that we probably have enough information (at least for the log-based system), so maybe if you could &amp;quot;try&amp;quot; and putting them into paragraphs. I&#039;m kind of in the middle of typing up the essay, and I&#039;m uploading new information every 10-20 minutes or so. Even if you could get something into paragraph form, I can go through and edit, rearrange, and add stuff as I get there. --[[User:Gsmith6|Gsmith6]] 23:51, 14 October 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_10&amp;diff=4203</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 10</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_10&amp;diff=4203"/>
		<updated>2010-10-14T23:51:31Z</updated>

		<summary type="html">&lt;p&gt;Gsmith6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey all,&lt;br /&gt;
&lt;br /&gt;
I think we should write down our emails here so we can further discuss stuff without having to login here.&lt;br /&gt;
(&#039;&#039;&#039;***Note that discussions over email can&#039;t be counted towards your participation grade!***&#039;&#039;&#039;--[[User:Soma|Anil]])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Geoff Smith (gsmith0413@gmail.com) - gsmith6&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Andrew Bujáki (abujaki [at] Connect or Live.ca)&lt;br /&gt;
***I&#039;m usually on MSN(Live) for collaboration at nights, Just make sure to put in a little message about who you are when you&#039;re adding me. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I used Google Scholar and came to this page http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=812717&amp;amp;tag=1#&lt;br /&gt;
Which briefly touches on the issues of Flash memory. Specifically, inability to update in place, and limited write/erase cycles.&lt;br /&gt;
&lt;br /&gt;
Inability to update in place could refer to the way the flash disk is programmed, instead of bit-by-bit, it is programmed block-by-block. A block would have to be erased and completely reprogrammed in order to flip one bit after it&#039;s been set.&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_memory#Block_erasure&lt;br /&gt;
&lt;br /&gt;
Limited write/erase: Flash memory typically has a short lifespan if it&#039;s being used a lot. Writing and erasing the memory (Changing, updating, etc) Will wear it out. Flash memory has a finite amount of writes, (varying on manufacturer, models, etc), and once they&#039;ve been used up, you&#039;ll get bad sectors, corrupt data, and generally be SOL.&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_memory#Memory_wear&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Filesystems would have to be changed to play nicely with these constraints, where it must use blocks efficiently and nicely, and minimize writing/erasing as much as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I found a paper that talks about the performance, capabilities and limitations of NAND flash storage. &lt;br /&gt;
&lt;br /&gt;
Abstract: &amp;quot;This presentation provides an in-depth examination of the&lt;br /&gt;
fundamental theoretical performance, capabilities, and&lt;br /&gt;
limitations of NAND Flash-based Solid State Storage (SSS). The&lt;br /&gt;
tutorial will explore the raw performance capabilities of NAND&lt;br /&gt;
Flash, and limitations to performance imposed by mitigation of&lt;br /&gt;
reliability issues, interfaces, protocols, and technology types.&lt;br /&gt;
Best practices for system integration of SSS will be discussed.&lt;br /&gt;
Performance achievements will be reviewed for various&lt;br /&gt;
products and applications. &amp;quot;&lt;br /&gt;
&lt;br /&gt;
Link: http://www.flashmemorysummit.com/English/Collaterals/Proceedings/2009/20090812_T1B_Smith.pdf&lt;br /&gt;
&lt;br /&gt;
There&#039;s no Starting place like Wikipedia, even if you shouldn&#039;t source it. &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Flash_Memory &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/LogFS &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Hard_disk &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Wear_leveling &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Hot_spot_%28computer_science%29&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Solid-state_drive&lt;br /&gt;
&lt;br /&gt;
Hey Guys,&lt;br /&gt;
&lt;br /&gt;
We really don&#039;t have much time to get this done. Lets meet tomorrow after class and get our bearings to do this properly.&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A few of us have Networking immediately after class. I know personally I won&#039;t be able to make anything set on Tuesday.&lt;br /&gt;
Additionally, he spoke briefly about hotspots on the disk for our question last week, where places on the disk would be written to far more often than others. &lt;br /&gt;
As well, for bibliographical citing, http://bibme.org is a wonderful resource for the popular formats (I.e. MLA). If it should come down to that.&lt;br /&gt;
~Andrew&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===links===&lt;br /&gt;
&lt;br /&gt;
Start Posting some stuff to source from:&lt;br /&gt;
&lt;br /&gt;
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1&lt;br /&gt;
--&amp;quot;Introduction to flash memory&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://portal.acm.org/citation.cfm?id=1244248&lt;br /&gt;
--&amp;quot;Wear Leveling&amp;quot; (it&#039;s about a proposed way of doing it, but explains a whole bunch of other things to do that)&lt;br /&gt;
&lt;br /&gt;
http://portal.acm.org/citation.cfm?id=1731355&lt;br /&gt;
--&amp;quot;Online maintenance of very large random samples on flash storage&amp;quot; (ie dealing with the constraints of Flash Storage in a system that might actually be written to 100000 times)&lt;br /&gt;
&lt;br /&gt;
http://vlsi.kaist.ac.kr/paper_list/2006_TC_CFFS.pdf&lt;br /&gt;
--&amp;quot;An Efficient NAND Flash File System for Flash Memory Storage&amp;quot; discuses shortcomings of using hard disk based file systems and current flash based file systems&lt;br /&gt;
&lt;br /&gt;
http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&lt;br /&gt;
--&amp;quot;NAND vs NOR Flash Memory&amp;quot; (note: i didn&#039;t get this off of Google scholar but it seems to be written by someone from Toshiba. is that ok?)&lt;br /&gt;
&lt;br /&gt;
Hi everybody,&lt;br /&gt;
&lt;br /&gt;
So here are the latest news. Geoff, Andrew and myself had a meeting after class today and came up with a plan for writing this thing. &lt;br /&gt;
&lt;br /&gt;
We decided to have 3 parts:&lt;br /&gt;
&lt;br /&gt;
1. What flash storage is, why its good but also why it must have the problems that it does (the assumption is that it must have them, why would it otherwise?)&lt;br /&gt;
[don&#039;t know much about this just now... basics include that there is NOR (reads slightly faster)and NAND (holds more, writes faster, erases much faster, lasts about ten times longer) flash with NAND being especially popular for storage (what&#039;s NOR good for?). Here, we&#039;d ideally want to talk about why flash was invented (supposed as an alternative to slow ROM), why it was suitable for that, and how it works on a technical level. Then, we&#039;d want to mention why this technical functionality was innovative and useful but also why it came with two serious set-backs: having a limited-number of re-write cycles and needing to erase a block at a time.]&lt;br /&gt;
&lt;br /&gt;
Either way, Flash storage affords far faster fetch times than the traditional platter-based HDD, and stability of information in a sense. Where the data is not actually stored, but reprogrammed, in a sense, the data is more secure and is less likely to be erased easily. On that note, in order to flip a single bit, that entire block will need to be erased, then reprogrammed. In an &#039;old&#039; HDD, let&#039;s say, When the HDD fails at the end of its life cycle, your data is gone. (unless you&#039;re willing to shell out $200/hr to have it recovered, yes I&#039;ve seen companies in Ottawa that do this.) In a flash HDD, when it reaches the end of its life, it merely becomes read-only. Bugger for Databases, but useful for technical notes and archives, let&#039;s say.&lt;br /&gt;
With today&#039;s modern gaming computers, Flash memory can be good on quick load times, however with limited read-writes, it could afford better use to things that are not updated as frequently. I.e... Well I don&#039;t have a better example than a webserver hosting a company&#039;s CSS and scripts.&lt;br /&gt;
~Source: Years in the &#039;biz &lt;br /&gt;
&lt;br /&gt;
Flash memory started out as a replacement for EPROMs.  At the time EPROMs needed a UV photoemission to be erased while flash memory could be erased electronically. The first flash memory product came out in 1988 but it did not take off until the late 1990’s because it could not be reliable produced. NOR and NAND memory is named after the arrangement of the cells in the memory array. NOR based flash memory benefits from having very fast burst read times but slower write times. Due to the structure of NOR memory programs stored in NOR based memory can be executed without being loaded into RAM first. NAND flash memory has a very large storage capacity and can read and write large files relatively fast. NAND is more suited for storage while NOR memory is better suited for direct program execution such as in CMOS chips.&lt;br /&gt;
source: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1199079&amp;amp;tag=1 , http://maltiel-consulting.com/NAND_vs_NOR_Flash_Memory_Technology_Overview_Read_Write_Erase_speed_for_SLC_MLC_semiconductor_consulting_expert.pdf&lt;br /&gt;
&lt;br /&gt;
2. How a traditional disk-based file-system works and why the limitations of flash storage make the two a poor match&lt;br /&gt;
[the obvious answer seems to be that traditional file-systems could just write to whatever memory was available but if they did this with a flash file-systems, certain chunks of memory would become unusable before others and the memory would be more difficult to work with. Also, disk-based file systems need to deal with seeking times which means that they want to organize their data in such a way as to reduce those (by putting related things together?) - with Flash, this isn&#039;t really a problem and thus one constraint the less to be concerned with.]&lt;br /&gt;
&lt;br /&gt;
3. How a log based file-system works and why this method of operation is so well suited to working with flash memory especially in light of the latter&#039;s inherent limitations&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
At this time, the plan is that Geoff will work on #3 today, Andrew will work on #1 tomorrow and I will work on #2 tomorrow. The three of us will make an effort to consult some somewhat more painfully technical literature in order to gain insight into our respective queries. Whatever insight we find will be posted here. &lt;br /&gt;
&lt;br /&gt;
Then, we will meet again on Thursday after class to decide how to actually write the essay.&lt;br /&gt;
&lt;br /&gt;
PS, if there is anybody in the group besides the three of us - let us know so you can find a way to contribute to this... as at least two of us are competent essayists, painfully technical research would on one or more of the above topics would be a great way to contribute... especially if you could post it here prior to one of us going over the same thing. &lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
-- I&#039;m not that great (but absolutely horrid) at essays and I&#039;m alright at research, but if nothing else I have Thursday off and nothing (else) that needs doing by Friday so I can probably spend a bunch of time working on it just before it&#039;s due. -- &#039;&#039;Nick L&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-- Hay sorry I was unable to attend the meeting after class today. I am not too good at writing essays as well but I am pretty good at summarizing and researching. I am not too sure at what you would like me to do. Right now I&#039;ll assume you need me to research/summarizing articles for the 3 topics above. If you need me to do anything else post it here. I&#039;ll be checking the discussion regularly until this due. once again sorry for missing the meeting-- Paul Cox.&lt;br /&gt;
&lt;br /&gt;
-- Hey i&#039;m also supposed to be in on this. Sorry i couldn&#039;t contribute sooner because i was playing catchup in my other classes. Let me know what i can do and i&#039;ll be on it asap. - kirill (k.kashigin@gmail.com)&lt;br /&gt;
update: i&#039;m gonna be helping Fedor with #2&lt;br /&gt;
&lt;br /&gt;
PS, this article http://docs.google.com/viewer?a=v&amp;amp;q=cache:E7-H_pv_18wJ:citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.92.2279%26rep%3Drep1%26type%3Dpdf+flash+memory+and+disk-based+file+systems&amp;amp;hl=en&amp;amp;gl=ca&amp;amp;pid=bl&amp;amp;srcid=ADGEESgspy-jqIdLOpaLYlPPoM56kjLPwXcL3_eMbTTBRkI7PG0jQKl9vIieTAYHubPu0EdQ0V4ccaf_p0S_SnqKMirSIM0Qoq5E0NpLd0M7LAGaE51wkD0F55cRSkX8dnTqx_9Yx2E7&amp;amp;sig=AHIEtbS-yfGI9Y48DJ0WyEEhmsXInelRGw looks really useful for part 3.&lt;br /&gt;
&lt;br /&gt;
---same article as above but shorter link: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.5142&lt;br /&gt;
&lt;br /&gt;
PPS, and this article looks really great for understanding how log based file systems work: http://delivery.acm.org/10.1145/150000/146943/p26-rosenblum.pdf?key1=146943&amp;amp;key2=3656986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108397378&amp;amp;CFTOKEN=72657973&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Luc (TA) here, Anandtech ran a series of articles on solid state drives that you guys might find useful.  It mostly looked at hardware aspects but it gives some interesting insights on how to modify file systems to better support flash memory.&lt;br /&gt;
&lt;br /&gt;
http://www.anandtech.com/cpuchipsets/intel/showdoc.aspx?i=3403&lt;br /&gt;
&lt;br /&gt;
http://www.anandtech.com/storage/showdoc.aspx?i=3531&amp;amp;p=1&lt;br /&gt;
&lt;br /&gt;
http://anandtech.com/storage/showdoc.aspx?i=3631&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:3maisons|3maisons]] 19:44, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Hey Paul&amp;amp;Kirill,&lt;br /&gt;
&lt;br /&gt;
If one of you guys could help me out with #2, that would be really great. I was going to work on that tomorrow, but I also have another large assignment to deal with and not having to do this research would greatly ease my life. Moreover, I do intend to work on writing&amp;amp;polishing the essay on Thursday as I have a lot of experience with that and it far more than research. Let me know if either one of you can help me with this. &lt;br /&gt;
&lt;br /&gt;
The other person could probably read over what Luc posted for us and see if it fits into our framework. Just be sure to state who is going to do what. &lt;br /&gt;
&lt;br /&gt;
Nick, &lt;br /&gt;
&lt;br /&gt;
Honestly, we really hope to have the research done by Thursday. If that is the only day that you are free and you&#039;re not a writer, I&#039;m honestly not sure what you could do. Perhaps someone else can think of something.&lt;br /&gt;
&lt;br /&gt;
- Fedor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m gonna have something for #2 up tonight. -kirill&lt;br /&gt;
&lt;br /&gt;
So I found this article on Reddit, posted from Linux Weekly News on pretty much exactly what we are looking at. It&#039;s entitled &amp;quot;Solid-state storage devices and the block layer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
http://lwn.net/SubscriberLink/408428/68fa8465da45967a/    --[[User:Gsmith6|Gsmith6]] 20:36, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I wasn&#039;t exactly sure how much information i was supposed to present but here&#039;s what i got for #2:&lt;br /&gt;
&lt;br /&gt;
	Most conventional file systems are designed to me implemented on hard disk drives. This fact does not mean they cannot be implemented on a solid state drive (file storage that uses flash memory instead of magnetic discs). It would however, in many ways, defeat the purpose of using flash memory. The most consuming process for an HDD is seeking data by relocating the read-head and spinning the magnetic disk. A traditional file system optimizes the way it stores data by placing related blocks close-by on the disk to minimize mechanical movement within the HDD. One of the great advantages of flash memory, which accounts for its fast read speed, is that there is no need to seek data physically so there is no need to waste resources laying out the data in close proximity.&lt;br /&gt;
	A traditional HDD file system will also attempt to defragment itself, moving blocks of data around for closer proximity on the magnetic disk. This process, although beneficial for HDD&#039;s, is harmful and inefficient for flash based storage. A flash optimal file system needs to reduce the amount of erase operations, since flash memory only has a limited amount of erase cycles as well as having very slow erase speeds.&lt;br /&gt;
	When an HDD rewrites data to a physical location there is no need for it to erase the previously occupying data first, so a traditional disk based file system doesn&#039;t worry about erasing data from unused memory blocks. In contrast flash memory needs to first erase the data block before it can modify any of it contents. Since the erase procedure is extremely slow, its not practical to overwrite old data every time. It is also decremental to the life span of flash memory.&lt;br /&gt;
	To maximize the potential of flash based memory the file system would have to write new data to empty memory blocks. This method would also call for some sort of garbage collection to erase unused blocks when the system is idle, which does not get implemented in conventional file systems since it is not needed.&lt;br /&gt;
&lt;br /&gt;
--kirill&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So Fedor and I were talking in the labs, and we came to the conclusion that we have been focusing on just the translation from a regular file system to a flash drive. We were under the impression that this was in fact the &amp;quot;Flash Optimized System&amp;quot;, but pulling up some more articles, I&#039;m finding that this is not necessarily the case. &lt;br /&gt;
&lt;br /&gt;
This paper here http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.6156&amp;amp;rep=rep1&amp;amp;type=pdf.&lt;br /&gt;
shows an example from Axis Communications where they developed a file system specifically designed to be used on flash drives. &lt;br /&gt;
&lt;br /&gt;
Now I haven&#039;t completely read it, so it might just be an optimized translational system, but its at least a start.&lt;br /&gt;
&lt;br /&gt;
At our meeting today, we&#039;ve decided that it would be best if people could post a rough summary of their notes in the appropriate sections, and I will rewrite them into an essay, which Fedor will go through later tonight to edit and add some more information.&lt;br /&gt;
&lt;br /&gt;
Paul: I missed your comment that you weren&#039;t that great at writing, and good at research. If you want some articles behind the pay-walls, I&#039;ve saved a bunch of them and emailed them to myself. Just email me (at the address at the top of the page) and I&#039;ll be more than happy to send some your way.&lt;br /&gt;
&lt;br /&gt;
PS. some more references&lt;br /&gt;
&lt;br /&gt;
Design tradeoffs for SSD performance http://portal.acm.org/citation.cfm?id=1404014.1404019 &lt;br /&gt;
A log buffer-based flash translation layer using fully-associative sector translation http://delivery.acm.org/10.1145/1280000/1275990/a18-lee.pdf?key1=1275990&amp;amp;key2=0709607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=105787273&amp;amp;CFTOKEN=74601780&lt;br /&gt;
&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 15:03, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I don&#039;t have any notes on this computer. &amp;gt;: I will be adding more to my section later on tonight. Sorry. ~Andrew&lt;br /&gt;
&lt;br /&gt;
Hello dudes,&lt;br /&gt;
&lt;br /&gt;
Just a quick note, try to include citations in your paragraphs - each time that you make a claim which came from evidence, put a little number [X, pp. page-number (if applicable)] into your text. Then, put the same [X] at the bottom of the page with the bibliographical information about the source. The prof hasn&#039;t yet gotten back to me about his preferred citation format, so just stick with this one for now:&lt;br /&gt;
&lt;br /&gt;
Authors. &#039;&#039;Title&#039;&#039;. Web-page. Date of article. Web (the word). Date you accessed it.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s an example:&lt;br /&gt;
&lt;br /&gt;
[1] Kawaguchi, Nishioka, Tamoda. &#039;&#039;A Flash Memory Based File System&#039;&#039;.&lt;br /&gt;
http://docs.google.com/viewer?a=v&amp;amp;q=cache:E7-H_pv_18wJ:citeseerx.ist.psu.edu/viewdoc/download%3Fdoi%3D10.1.1.92.2279%26rep%3Drep1%26type%3Dpdf+flash+memory+and+disk-based+file+systems&amp;amp;hl=en&amp;amp;gl=ca&amp;amp;pid=bl&amp;amp;srcid=ADGEESgspy-jqIdLOpaLYlPPoM56kjLPwXcL3_eMbTTBRkI7PG0jQKl9vIieTAYHubPu0EdQ0V4ccaf_p0S_SnqKMirSIM0Qoq5E0NpLd0M7LAGaE51wkD0F55cRSkX8dnTqx_9Yx2E7&amp;amp;sig=AHIEtbS-yfGI9Y48DJ0WyEEhmsXInelRGw . 1995. Web. Oct. 14, 2010.&lt;br /&gt;
&lt;br /&gt;
Fedor&lt;br /&gt;
&lt;br /&gt;
PS, its a good idea to check this fairly frequently between now and tomorrow morning - you never know when something will come up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Phew... for a while there I was starting to think that I had nothing about the actual &amp;quot;Log-Based System&amp;quot;, but it turns out that the &amp;quot;Transitional Layer&amp;quot; is the same thing. It looks like some articles are calling it the Log system, while others are calling it the transitional layer. Pretty sure I&#039;m going to have an experts knowledge about flash drives after reading all these articles :P&lt;br /&gt;
--[[User:Gsmith6|Gsmith6]] 18:13, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hay Geoff this is what i got so far after reading a couple of the pdfs. the double tabed points are just my annotation on how they relate to the question.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ware leveling: p1126-chang.pdf&lt;br /&gt;
&lt;br /&gt;
* Uneven wearing of flash memory due to storing data close together&lt;br /&gt;
* Garbage collection prefers that no blocks have pages that have data that is constantly becoming invalid&lt;br /&gt;
* data that remains the same for longs periods of time should be moved from block that have not be written to much and moved to blocks that haven been erased frequently.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log file structure: 926-rosenblum.pdf&lt;br /&gt;
&lt;br /&gt;
* LFS based on assumption that frequently read files will be stored in cash and that the hard disk traffic will be dominated by writes&lt;br /&gt;
* Writes all new info to disk in a sequential structure called a log&lt;br /&gt;
* Data is stored permanently in these logs no other data is stored on the hard drive&lt;br /&gt;
* Converts many small random synchronous writes to a large asynchronous sequential write&lt;br /&gt;
** Good for flash because it cuts down on writing (prolongs drive life)&lt;br /&gt;
** It also good because it writes to a bigger section then a page. This means it can fill a block at a time so it doesn’t fill up other blocks with random writes that would later need to be cleaned. Cuts down on cleaning.&lt;br /&gt;
* Inode is stored in the log on the disk while an inode map is maintained in memory which points to the inode in the hard disk. as&lt;br /&gt;
** This is good for flash drives because reading does not hurt the drives life and it is fast.&lt;br /&gt;
** This means the map will not have to be updated on the disk as frequently cutting down on the writes.&lt;br /&gt;
* Log systems weakness is that it is susceptible to becoming fragmented due to the larger writes. &lt;br /&gt;
** Since flash drives do not require fragmentation this is fine. Also since flash drives have very fast random access the system does not become bogged down when the logs are fragmented&lt;br /&gt;
* Log system implements a cleaning system that scans a segment in and sees if there is live data in it. If there is a certain percentage of invalid data which goes according to the cleaning policy it will be cleaned. All the live data will be copied out and the segment will be erased.&lt;br /&gt;
** This is a garbage collector but its built into the file system.&lt;br /&gt;
* Segments contain a number of blocks. Segments can contain logs or parts of logs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m still sifting though the other pdfs you sent me. Would you like me to post more info or should i format this into a paragraph or 2?&lt;br /&gt;
&lt;br /&gt;
--Paul&lt;br /&gt;
&lt;br /&gt;
I&#039;m sorting through my notes and putting them into a digital format. Difficult because It&#039;s hard to remember what I copied directly out of the notes for my own reference, so I&#039;m trying to de-plagarize. I&#039;ll upload what I have to the section by 20:00, but expect more updates. ~Andrew&lt;br /&gt;
&lt;br /&gt;
Hey Paul,&lt;br /&gt;
&lt;br /&gt;
Thanks for helping out with the research&lt;br /&gt;
I&#039;m thinking that we probably have enough information (at least for the log-based system), so maybe if you could &amp;quot;try&amp;quot; and putting them into paragraphs. I&#039;m kind of in the middle of typing up the essay, and I&#039;m uploading new information every 10-20 minutes or so. Even if you could get something into paragraph form, I can go through and edit, rearrange, and add stuff as I get there.&lt;/div&gt;</summary>
		<author><name>Gsmith6</name></author>
	</entry>
</feed>