<?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=Jbaubin</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=Jbaubin"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Jbaubin"/>
	<updated>2026-04-22T17:09:07Z</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_4&amp;diff=5939</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5939"/>
		<updated>2010-12-01T16:49:02Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
**Possible alternative  for the first part : &lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper. &lt;br /&gt;
***Let me know what you think about it. I removed the redundant part, and I think made it clearer and more concise. [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
** looks good to me, we&#039;ll put this part into the final essay instead of mine below --[[User:Mchou2|Mchou2]] 20:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
/// omit&lt;br /&gt;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. &lt;br /&gt;
&lt;br /&gt;
////&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
Why is it better?&lt;br /&gt;
[To Do]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I read through it and fixed a few missing letters here and there, so if someone else could read it as well and then sign under me we can probably move it to the essay. Thanks . --[[User:Mchou2|Mchou2]] 23:53, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I just read it and fixed some small parts. Looks good. --[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// first part of my writing; this is just part1 [[User:Sschnei1|Sschnei1]] 00:35, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved. &lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server. &lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [12]&lt;br /&gt;
&lt;br /&gt;
Additional Critiques:&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.  &lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.  &lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation. &lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
// more Critiques&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. &lt;br /&gt;
Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I have started work on the contribution section. I&#039;ll have something up today or tomorrow. --[[User:Hirving|Hirving]] 19:55, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-if anyone has information that they are working on they can just post it up and at least others can look at it and maybe build up stuff on it, and I&#039;m sure everyone is aware of the extension that we got also, but let&#039;s try to finish this in the next few days --[[User:Mchou2|Mchou2]] 20:43, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I agree with finishing it in the next few days. Then we have more time to focus on other courses like 3004. I will post something later that night. -- [[User:Sschnei1|Sschnei1]] 21:29, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- Just added my contribution section, can someone proof read and sign it before I move it over to the essay. I didn&#039;t do the &amp;quot;why is it better&amp;quot; part because I found the implementation took a lot of writing. For anyone that wants to do the other part, I&#039;d suggest comparing AVMs to PunkBuster and/or VAC, and a cloud computing service (focusing on the auditing). Cheers --[[User:Hirving|Hirving]] 19:44, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I started that what is better/worse part in the Critique section. I will add the comparison with AVMs to Punkbuster and/or VAC soon. I personally feel like there is not that much to write for the Critique section. -- [[User:Sschnei1|Sschnei1]] 20:39, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Hay. I got a bit to add to your Critique section section. Its mostly expanding on your last paragraph and a bit on how the tests were performed. ill post my stuff later tonight, I just need to find some sources for my argument.--[[User:Pcox|Pcox]] 01:06, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I read through critiques and will post some modification. I was wondering the last point of critique says that the author didn&#039;t mention recording the game.  In page 2 they did, and &lt;br /&gt;
&amp;quot;However, replay by itself is not sufficient to detect faults on a re-&lt;br /&gt;
mote machine, since the machine could record incorrect&lt;br /&gt;
information in such a way that the replay looks correct,&lt;br /&gt;
or provide inconsistent information to different auditors&lt;br /&gt;
&amp;quot;&lt;br /&gt;
So should we remove the last point?&lt;br /&gt;
Also, the second and third paragraph in the Critique does not critique really anything but more states the contribution in the paper, should we keep it?&lt;br /&gt;
&lt;br /&gt;
- Sure post some modifications. What I meant in the first part is, that the game has an internal recording mechanism to record a 1:1 video of your in-game screen, which can be replayed from in-game itself. I thought it&#039;s useful to put in, but if it&#039;s unnecessary for the paper, then we can take it out.&lt;br /&gt;
&lt;br /&gt;
- I did some modification in critique and moved it to the front page. - [[User:Jbaubin|Jbaubin]]&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5937</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5937"/>
		<updated>2010-12-01T16:21:16Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Critique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[[#References |[10]]]. A 10 year old game [[#References |[10]]] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [[#References |[12]]]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5936</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5936"/>
		<updated>2010-12-01T16:20:36Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Critique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [[#References |[12]]]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5935</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5935"/>
		<updated>2010-12-01T16:19:30Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [12]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5934</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5934"/>
		<updated>2010-12-01T16:15:16Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Critique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [12]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5933</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5933"/>
		<updated>2010-12-01T16:14:15Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Critique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [12]&lt;br /&gt;
&lt;br /&gt;
Additional Critiques:&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5932</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5932"/>
		<updated>2010-12-01T16:13:18Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
**Possible alternative  for the first part : &lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper. &lt;br /&gt;
***Let me know what you think about it. I removed the redundant part, and I think made it clearer and more concise. [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
** looks good to me, we&#039;ll put this part into the final essay instead of mine below --[[User:Mchou2|Mchou2]] 20:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
/// omit&lt;br /&gt;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. &lt;br /&gt;
&lt;br /&gt;
////&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
Why is it better?&lt;br /&gt;
[To Do]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I read through it and fixed a few missing letters here and there, so if someone else could read it as well and then sign under me we can probably move it to the essay. Thanks . --[[User:Mchou2|Mchou2]] 23:53, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I just read it and fixed some small parts. Looks good. --[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// first part of my writing; this is just part1 [[User:Sschnei1|Sschnei1]] 00:35, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved. &lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server. &lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [12]&lt;br /&gt;
&lt;br /&gt;
Additional Critiques:&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.  &lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.  &lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation. &lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
// more Critiques&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. &lt;br /&gt;
Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I have started work on the contribution section. I&#039;ll have something up today or tomorrow. --[[User:Hirving|Hirving]] 19:55, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-if anyone has information that they are working on they can just post it up and at least others can look at it and maybe build up stuff on it, and I&#039;m sure everyone is aware of the extension that we got also, but let&#039;s try to finish this in the next few days --[[User:Mchou2|Mchou2]] 20:43, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I agree with finishing it in the next few days. Then we have more time to focus on other courses like 3004. I will post something later that night. -- [[User:Sschnei1|Sschnei1]] 21:29, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- Just added my contribution section, can someone proof read and sign it before I move it over to the essay. I didn&#039;t do the &amp;quot;why is it better&amp;quot; part because I found the implementation took a lot of writing. For anyone that wants to do the other part, I&#039;d suggest comparing AVMs to PunkBuster and/or VAC, and a cloud computing service (focusing on the auditing). Cheers --[[User:Hirving|Hirving]] 19:44, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I started that what is better/worse part in the Critique section. I will add the comparison with AVMs to Punkbuster and/or VAC soon. I personally feel like there is not that much to write for the Critique section. -- [[User:Sschnei1|Sschnei1]] 20:39, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Hay. I got a bit to add to your Critique section section. Its mostly expanding on your last paragraph and a bit on how the tests were performed. ill post my stuff later tonight, I just need to find some sources for my argument.--[[User:Pcox|Pcox]] 01:06, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I read through critiques and will post some modification. I was wondering the last point of critique says that the author didn&#039;t mention recording the game.  In page 2 they did, and &lt;br /&gt;
&amp;quot;However, replay by itself is not sufficient to detect faults on a re-&lt;br /&gt;
mote machine, since the machine could record incorrect&lt;br /&gt;
information in such a way that the replay looks correct,&lt;br /&gt;
or provide inconsistent information to different auditors&lt;br /&gt;
&amp;quot;&lt;br /&gt;
So should we remove the last point?&lt;br /&gt;
Also, the second and third paragraph in the Critique does not critique really anything but more states the contribution in the paper, should we keep it?&lt;br /&gt;
&lt;br /&gt;
- Sure post some modifications. What I meant in the first part is, that the game has an internal recording mechanism to record a 1:1 video of your in-game screen, which can be replayed from in-game itself. I thought it&#039;s useful to put in, but if it&#039;s unnecessary for the paper, then we can take it out.&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5931</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5931"/>
		<updated>2010-12-01T16:12:55Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
**Possible alternative  for the first part : &lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper. &lt;br /&gt;
***Let me know what you think about it. I removed the redundant part, and I think made it clearer and more concise. [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
** looks good to me, we&#039;ll put this part into the final essay instead of mine below --[[User:Mchou2|Mchou2]] 20:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
/// omit&lt;br /&gt;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. &lt;br /&gt;
&lt;br /&gt;
////&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
Why is it better?&lt;br /&gt;
[To Do]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I read through it and fixed a few missing letters here and there, so if someone else could read it as well and then sign under me we can probably move it to the essay. Thanks . --[[User:Mchou2|Mchou2]] 23:53, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I just read it and fixed some small parts. Looks good. --[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// first part of my writing; this is just part1 [[User:Sschnei1|Sschnei1]] 00:35, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved. &lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server. &lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [12]&lt;br /&gt;
&lt;br /&gt;
Additional Critiques:&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.  &lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.  &lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation. &lt;br /&gt;
&lt;br /&gt;
AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
// more Critiques&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. &lt;br /&gt;
Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I have started work on the contribution section. I&#039;ll have something up today or tomorrow. --[[User:Hirving|Hirving]] 19:55, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-if anyone has information that they are working on they can just post it up and at least others can look at it and maybe build up stuff on it, and I&#039;m sure everyone is aware of the extension that we got also, but let&#039;s try to finish this in the next few days --[[User:Mchou2|Mchou2]] 20:43, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I agree with finishing it in the next few days. Then we have more time to focus on other courses like 3004. I will post something later that night. -- [[User:Sschnei1|Sschnei1]] 21:29, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- Just added my contribution section, can someone proof read and sign it before I move it over to the essay. I didn&#039;t do the &amp;quot;why is it better&amp;quot; part because I found the implementation took a lot of writing. For anyone that wants to do the other part, I&#039;d suggest comparing AVMs to PunkBuster and/or VAC, and a cloud computing service (focusing on the auditing). Cheers --[[User:Hirving|Hirving]] 19:44, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I started that what is better/worse part in the Critique section. I will add the comparison with AVMs to Punkbuster and/or VAC soon. I personally feel like there is not that much to write for the Critique section. -- [[User:Sschnei1|Sschnei1]] 20:39, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Hay. I got a bit to add to your Critique section section. Its mostly expanding on your last paragraph and a bit on how the tests were performed. ill post my stuff later tonight, I just need to find some sources for my argument.--[[User:Pcox|Pcox]] 01:06, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I read through critiques and will post some modification. I was wondering the last point of critique says that the author didn&#039;t mention recording the game.  In page 2 they did, and &lt;br /&gt;
&amp;quot;However, replay by itself is not sufficient to detect faults on a re-&lt;br /&gt;
mote machine, since the machine could record incorrect&lt;br /&gt;
information in such a way that the replay looks correct,&lt;br /&gt;
or provide inconsistent information to different auditors&lt;br /&gt;
&amp;quot;&lt;br /&gt;
So should we remove the last point?&lt;br /&gt;
Also, the second and third paragraph in the Critique does not critique really anything but more states the contribution in the paper, should we keep it?&lt;br /&gt;
&lt;br /&gt;
- Sure post some modifications. What I meant in the first part is, that the game has an internal recording mechanism to record a 1:1 video of your in-game screen, which can be replayed from in-game itself. I thought it&#039;s useful to put in, but if it&#039;s unnecessary for the paper, then we can take it out.&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5703</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5703"/>
		<updated>2010-11-29T23:14:33Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Discussion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
**Possible alternative  for the first part : &lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper. &lt;br /&gt;
***Let me know what you think about it. I removed the redundant part, and I think made it clearer and more concise. [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
** looks good to me, we&#039;ll put this part into the final essay instead of mine below --[[User:Mchou2|Mchou2]] 20:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
/// omit&lt;br /&gt;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. &lt;br /&gt;
&lt;br /&gt;
////&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
Why is it better?&lt;br /&gt;
[To Do]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I read through it and fixed a few missing letters here and there, so if someone else could read it as well and then sign under me we can probably move it to the essay. Thanks . --[[User:Mchou2|Mchou2]] 23:53, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I just read it and fixed some small parts. Looks good. --[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// first part of my writing; this is just part1 [[User:Sschnei1|Sschnei1]] 00:35, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved. &lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server. &lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [12]&lt;br /&gt;
&lt;br /&gt;
Additional Critiques:&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger then one to one scenario, it certainly does not test in a 1:16, 1:32, 1:64 or much higher scenario that would likely exist in a real world application.&lt;br /&gt;
&lt;br /&gt;
In order to keep a lower overhead, spot checking is necessary, and leave a chance of a fault going undetected in a worst case.&lt;br /&gt;
&lt;br /&gt;
More and more programs are using more then one cpu core, which cannot be efficiently deterministically logged at this time. Fortunately it has been shown to be possible if with a large overhead, and could potentially be reasonable at a later date.&lt;br /&gt;
&lt;br /&gt;
The paper repeatedly claims that AVM&#039;s could be used for arbitrary applications but only ever shows evidence of one, counterstrike.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are only extremely effective against one type of cheating, that which gives incorrect networking messages. While it was shown in the paper to be effective at catching current cheat programs that require installation on the VM, those could be evolved to exist on the hostmachine, and avoid the issue of a AVM entirely. Further, since an AVM wouldn&#039;t even catch installing a cheat program as faulty without disabling installation while in use, no installation/updating can go on while the program is in use, which may not be desirable.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
// more Critiques&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. &lt;br /&gt;
Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I have started work on the contribution section. I&#039;ll have something up today or tomorrow. --[[User:Hirving|Hirving]] 19:55, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-if anyone has information that they are working on they can just post it up and at least others can look at it and maybe build up stuff on it, and I&#039;m sure everyone is aware of the extension that we got also, but let&#039;s try to finish this in the next few days --[[User:Mchou2|Mchou2]] 20:43, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I agree with finishing it in the next few days. Then we have more time to focus on other courses like 3004. I will post something later that night. -- [[User:Sschnei1|Sschnei1]] 21:29, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- Just added my contribution section, can someone proof read and sign it before I move it over to the essay. I didn&#039;t do the &amp;quot;why is it better&amp;quot; part because I found the implementation took a lot of writing. For anyone that wants to do the other part, I&#039;d suggest comparing AVMs to PunkBuster and/or VAC, and a cloud computing service (focusing on the auditing). Cheers --[[User:Hirving|Hirving]] 19:44, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I started that what is better/worse part in the Critique section. I will add the comparison with AVMs to Punkbuster and/or VAC soon. I personally feel like there is not that much to write for the Critique section. -- [[User:Sschnei1|Sschnei1]] 20:39, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Hay. I got a bit to add to your Critique section section. Its mostly expanding on your last paragraph and a bit on how the tests were performed. ill post my stuff later tonight, I just need to find some sources for my argument.--[[User:Pcox|Pcox]] 01:06, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I read through critiques and will post some modification. I was wondering the last point of critique says that the author didn&#039;t mention recording the game.  In page 2 they did, and &lt;br /&gt;
&amp;quot;However, replay by itself is not sufficient to detect faults on a re-&lt;br /&gt;
mote machine, since the machine could record incorrect&lt;br /&gt;
information in such a way that the replay looks correct,&lt;br /&gt;
or provide inconsistent information to different auditors&lt;br /&gt;
&amp;quot;&lt;br /&gt;
So should we remove the last point?&lt;br /&gt;
Also, the second and third paragraph in the Critique does not critique really anything but more states the contribution in the paper, should we keep it?&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5702</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5702"/>
		<updated>2010-11-29T23:12:50Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Critique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
**Possible alternative  for the first part : &lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper. &lt;br /&gt;
***Let me know what you think about it. I removed the redundant part, and I think made it clearer and more concise. [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
** looks good to me, we&#039;ll put this part into the final essay instead of mine below --[[User:Mchou2|Mchou2]] 20:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
/// omit&lt;br /&gt;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. &lt;br /&gt;
&lt;br /&gt;
////&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
Why is it better?&lt;br /&gt;
[To Do]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I read through it and fixed a few missing letters here and there, so if someone else could read it as well and then sign under me we can probably move it to the essay. Thanks . --[[User:Mchou2|Mchou2]] 23:53, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I just read it and fixed some small parts. Looks good. --[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// first part of my writing; this is just part1 [[User:Sschnei1|Sschnei1]] 00:35, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved. &lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server. &lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [12]&lt;br /&gt;
&lt;br /&gt;
Additional Critiques:&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger then one to one scenario, it certainly does not test in a 1:16, 1:32, 1:64 or much higher scenario that would likely exist in a real world application.&lt;br /&gt;
&lt;br /&gt;
In order to keep a lower overhead, spot checking is necessary, and leave a chance of a fault going undetected in a worst case.&lt;br /&gt;
&lt;br /&gt;
More and more programs are using more then one cpu core, which cannot be efficiently deterministically logged at this time. Fortunately it has been shown to be possible if with a large overhead, and could potentially be reasonable at a later date.&lt;br /&gt;
&lt;br /&gt;
The paper repeatedly claims that AVM&#039;s could be used for arbitrary applications but only ever shows evidence of one, counterstrike.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are only extremely effective against one type of cheating, that which gives incorrect networking messages. While it was shown in the paper to be effective at catching current cheat programs that require installation on the VM, those could be evolved to exist on the hostmachine, and avoid the issue of a AVM entirely. Further, since an AVM wouldn&#039;t even catch installing a cheat program as faulty without disabling installation while in use, no installation/updating can go on while the program is in use, which may not be desirable.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
// more Critiques&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. &lt;br /&gt;
Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I have started work on the contribution section. I&#039;ll have something up today or tomorrow. --[[User:Hirving|Hirving]] 19:55, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-if anyone has information that they are working on they can just post it up and at least others can look at it and maybe build up stuff on it, and I&#039;m sure everyone is aware of the extension that we got also, but let&#039;s try to finish this in the next few days --[[User:Mchou2|Mchou2]] 20:43, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I agree with finishing it in the next few days. Then we have more time to focus on other courses like 3004. I will post something later that night. -- [[User:Sschnei1|Sschnei1]] 21:29, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- Just added my contribution section, can someone proof read and sign it before I move it over to the essay. I didn&#039;t do the &amp;quot;why is it better&amp;quot; part because I found the implementation took a lot of writing. For anyone that wants to do the other part, I&#039;d suggest comparing AVMs to PunkBuster and/or VAC, and a cloud computing service (focusing on the auditing). Cheers --[[User:Hirving|Hirving]] 19:44, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I started that what is better/worse part in the Critique section. I will add the comparison with AVMs to Punkbuster and/or VAC soon. I personally feel like there is not that much to write for the Critique section. -- [[User:Sschnei1|Sschnei1]] 20:39, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Hay. I got a bit to add to your Critique section section. Its mostly expanding on your last paragraph and a bit on how the tests were performed. ill post my stuff later tonight, I just need to find some sources for my argument.--[[User:Pcox|Pcox]] 01:06, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I read through critiques and will post some modification. I was wondering the last point of critique says that the author didn&#039;t mention recording the game.  In page 2 they did, and &lt;br /&gt;
&amp;quot;However, replay by itself is not sufficient to detect faults on a re-&lt;br /&gt;
mote machine, since the machine could record incorrect&lt;br /&gt;
information in such a way that the replay looks correct,&lt;br /&gt;
or provide inconsistent information to different auditors&lt;br /&gt;
&amp;quot;&lt;br /&gt;
So should we remove the last point?&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5701</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5701"/>
		<updated>2010-11-29T22:13:17Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
**Possible alternative  for the first part : &lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper. &lt;br /&gt;
***Let me know what you think about it. I removed the redundant part, and I think made it clearer and more concise. [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
** looks good to me, we&#039;ll put this part into the final essay instead of mine below --[[User:Mchou2|Mchou2]] 20:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
/// omit&lt;br /&gt;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. &lt;br /&gt;
&lt;br /&gt;
////&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
Why is it better?&lt;br /&gt;
[To Do]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I read through it and fixed a few missing letters here and there, so if someone else could read it as well and then sign under me we can probably move it to the essay. Thanks . --[[User:Mchou2|Mchou2]] 23:53, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I just read it and fixed some small parts. Looks good. --[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// first part of my writing; this is just part1 [[User:Sschnei1|Sschnei1]] 00:35, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
For the comprehension of the reader, it is important of a paper/article/essay to have a good overview/layout. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved. &lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server. &lt;br /&gt;
&lt;br /&gt;
The test case for the AVM was using it to detect people using cheats in the popular online game Counter-Strike. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [12]&lt;br /&gt;
&lt;br /&gt;
Additional Critiques:&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger then one to one scenario, it certainly does not test in a 1:16, 1:32, 1:64 or much higher scenario that would likely exist in a real world application.&lt;br /&gt;
&lt;br /&gt;
In order to keep a lower overhead, spot checking is necessary, and leave a chance of a fault going undetected in a worst case.&lt;br /&gt;
&lt;br /&gt;
More and more programs are using more then one cpu core, which cannot be efficiently deterministically logged at this time. Fortunately it has been shown to be possible if with a large overhead, and could potentially be reasonable at a later date.&lt;br /&gt;
&lt;br /&gt;
The paper repeatedly claims that AVM&#039;s could be used for arbitrary applications but only ever shows evidence of one, counterstrike.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are only extremely effective against one type of cheating, that which gives incorrect networking messages. While it was shown in the paper to be effective at catching current cheat programs that require installation on the VM, those could be evolved to exist on the hostmachine, and avoid the issue of a AVM entirely. Further, since an AVM wouldn&#039;t even catch installing a cheat program as faulty without disabling installation while in use, no installation/updating can go on while the program is in use, which may not be desirable.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
// more Critiques&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. &lt;br /&gt;
Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I have started work on the contribution section. I&#039;ll have something up today or tomorrow. --[[User:Hirving|Hirving]] 19:55, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-if anyone has information that they are working on they can just post it up and at least others can look at it and maybe build up stuff on it, and I&#039;m sure everyone is aware of the extension that we got also, but let&#039;s try to finish this in the next few days --[[User:Mchou2|Mchou2]] 20:43, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I agree with finishing it in the next few days. Then we have more time to focus on other courses like 3004. I will post something later that night. -- [[User:Sschnei1|Sschnei1]] 21:29, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- Just added my contribution section, can someone proof read and sign it before I move it over to the essay. I didn&#039;t do the &amp;quot;why is it better&amp;quot; part because I found the implementation took a lot of writing. For anyone that wants to do the other part, I&#039;d suggest comparing AVMs to PunkBuster and/or VAC, and a cloud computing service (focusing on the auditing). Cheers --[[User:Hirving|Hirving]] 19:44, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I started that what is better/worse part in the Critique section. I will add the comparison with AVMs to Punkbuster and/or VAC soon. I personally feel like there is not that much to write for the Critique section. -- [[User:Sschnei1|Sschnei1]] 20:39, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Hay. I got a bit to add to your Critique section section. Its mostly expanding on your last paragraph and a bit on how the tests were performed. ill post my stuff later tonight, I just need to find some sources for my argument.--[[User:Pcox|Pcox]] 01:06, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I read through critiques and will post some modification. I was wondering the last point of critique says that the author didn&#039;t mention recording the game.  In page 2 they did, and &lt;br /&gt;
&amp;quot;However, replay by itself is not sufficient to detect faults on a re-&lt;br /&gt;
mote machine, since the machine could record incorrect&lt;br /&gt;
information in such a way that the replay looks correct,&lt;br /&gt;
or provide inconsistent information to different auditors&lt;br /&gt;
&amp;quot;&lt;br /&gt;
So should we remove the last point?&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5626</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5626"/>
		<updated>2010-11-27T15:28:54Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Contribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
**Possible alternative  for the first part : &lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper. &lt;br /&gt;
***Let me know what you think about it. I removed the redundant part, and I think made it clearer and more concise. [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
** looks good to me, we&#039;ll put this part into the final essay instead of mine below --[[User:Mchou2|Mchou2]] 20:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
/// omit&lt;br /&gt;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. &lt;br /&gt;
&lt;br /&gt;
////&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
Why is it better?&lt;br /&gt;
[To Do]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I read through it and fixed a few missing letters here and there, so if someone else could read it as well and then sign under me we can probably move it to the essay. Thanks . --[[User:Mchou2|Mchou2]] 23:53, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I just read it and fixed some small parts. Looks good. --[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// first part of my writing; this is just part1 [[User:Sschnei1|Sschnei1]] 00:35, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
For the comprehension of the reader, it is important of a paper/article/essay to have a good overview/layout. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved. &lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server. &lt;br /&gt;
&lt;br /&gt;
The test case for the AVM was using it to detect people using cheats in the popular online game Counter-Strike. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [12]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I have started work on the contribution section. I&#039;ll have something up today or tomorrow. --[[User:Hirving|Hirving]] 19:55, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-if anyone has information that they are working on they can just post it up and at least others can look at it and maybe build up stuff on it, and I&#039;m sure everyone is aware of the extension that we got also, but let&#039;s try to finish this in the next few days --[[User:Mchou2|Mchou2]] 20:43, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I agree with finishing it in the next few days. Then we have more time to focus on other courses like 3004. I will post something later that night. -- [[User:Sschnei1|Sschnei1]] 21:29, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- Just added my contribution section, can someone proof read and sign it before I move it over to the essay. I didn&#039;t do the &amp;quot;why is it better&amp;quot; part because I found the implementation took a lot of writing. For anyone that wants to do the other part, I&#039;d suggest comparing AVMs to PunkBuster and/or VAC, and a cloud computing service (focusing on the auditing). Cheers --[[User:Hirving|Hirving]] 19:44, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I started that what is better/worse part in the Critique section. I will add the comparison with AVMs to Punkbuster and/or VAC soon. I personally feel like there is not that much to write for the Critique section. -- [[User:Sschnei1|Sschnei1]] 20:39, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Hay. I got a bit to add to your Critique section section. Its mostly expanding on your last paragraph and a bit on how the tests were performed. ill post my stuff later tonight, I just need to find some sources for my argument.--[[User:Pcox|Pcox]] 01:06, 25 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5625</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5625"/>
		<updated>2010-11-27T15:20:53Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Contribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
**Possible alternative  for the first part : &lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper. &lt;br /&gt;
***Let me know what you think about it. I removed the redundant part, and I think made it clearer and more concise. [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
** looks good to me, we&#039;ll put this part into the final essay instead of mine below --[[User:Mchou2|Mchou2]] 20:03, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
/// omit&lt;br /&gt;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. &lt;br /&gt;
&lt;br /&gt;
////&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so that the inputs can be  injected at the same points during replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallel streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
Why is it better?&lt;br /&gt;
[To Do]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I read through it and fixed a few missing letters here and there, so if someone else could read it as well and then sign under me we can probably move it to the essay. Thanks . --[[User:Mchou2|Mchou2]] 23:53, 25 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// first part of my writing; this is just part1 [[User:Sschnei1|Sschnei1]] 00:35, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
For the comprehension of the reader, it is important of a paper/article/essay to have a good overview/layout. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved. &lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server. &lt;br /&gt;
&lt;br /&gt;
The test case for the AVM was using it to detect people using cheats in the popular online game Counter-Strike. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[10]. A 10 year old game [10] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [12]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I have started work on the contribution section. I&#039;ll have something up today or tomorrow. --[[User:Hirving|Hirving]] 19:55, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-if anyone has information that they are working on they can just post it up and at least others can look at it and maybe build up stuff on it, and I&#039;m sure everyone is aware of the extension that we got also, but let&#039;s try to finish this in the next few days --[[User:Mchou2|Mchou2]] 20:43, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I agree with finishing it in the next few days. Then we have more time to focus on other courses like 3004. I will post something later that night. -- [[User:Sschnei1|Sschnei1]] 21:29, 23 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- Just added my contribution section, can someone proof read and sign it before I move it over to the essay. I didn&#039;t do the &amp;quot;why is it better&amp;quot; part because I found the implementation took a lot of writing. For anyone that wants to do the other part, I&#039;d suggest comparing AVMs to PunkBuster and/or VAC, and a cloud computing service (focusing on the auditing). Cheers --[[User:Hirving|Hirving]] 19:44, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
- I started that what is better/worse part in the Critique section. I will add the comparison with AVMs to Punkbuster and/or VAC soon. I personally feel like there is not that much to write for the Critique section. -- [[User:Sschnei1|Sschnei1]] 20:39, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Hay. I got a bit to add to your Critique section section. Its mostly expanding on your last paragraph and a bit on how the tests were performed. ill post my stuff later tonight, I just need to find some sources for my argument.--[[User:Pcox|Pcox]] 01:06, 25 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5403</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5403"/>
		<updated>2010-11-22T22:45:17Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Research problem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
=Background Concepts=&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
=Critique=&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5402</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5402"/>
		<updated>2010-11-22T22:44:42Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Research problem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
=Background Concepts=&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[4] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running.&lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt that node is faulty and can prove it with solid evidence. It can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[7], which is a system closely related to what the research team have worked on, must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[8] is another example that inspects a small number of packets periodically. Another way of determining the fault remotely is to use a trusted node, where it can tell immediately if a fault occurs or a modification is made where it should not have been made.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
=Critique=&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5401</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=5401"/>
		<updated>2010-11-22T22:44:24Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Research problem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
=Background Concepts=&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
=Critique=&lt;br /&gt;
=References=&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5356</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5356"/>
		<updated>2010-11-22T19:11:45Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
**Possible alternative  for the first part : &lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that haunt computer scientist since a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper. &lt;br /&gt;
***Let me know what you think about it. I removed the redundant part, and I think made it clearer and more concise. [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt a faulty node and can proves it with solid evidence. It can also be used to defend a node when threaten with false accusation. Numerous systems already used accountability in their system, but they were mostly all linked to specific application, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verify the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspect a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occur or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5355</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5355"/>
		<updated>2010-11-22T19:11:03Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
**Possible alternative  for the first part : &lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that haunt computer scientist since a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper. &lt;br /&gt;
***Let me know what you think about it. I removed the redundant part, and I think made it clearer and more concise. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt a faulty node and can proves it with solid evidence. It can also be used to defend a node when threaten with false accusation. Numerous systems already used accountability in their system, but they were mostly all linked to specific application, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verify the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspect a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occur or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5348</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5348"/>
		<updated>2010-11-22T18:18:48Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt a faulty node and can proves it with solid evidence. It can also be used to defend a node when threaten with false accusation. Numerous systems already used accountability in their system, but they were mostly all linked to specific application, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verify the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspect a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occur or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5347</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5347"/>
		<updated>2010-11-22T18:10:04Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt a faulty node and can proves it with solid evidence. It can also be used to defend a node when threaten with false accusation. Numerous systems already used accountability in their system, but they were mostly all linked to specific application, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verify the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is remote fault detection in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspect a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occur or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-If you could please fill in this section about Remote Fault detection it would awesome, and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5337</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5337"/>
		<updated>2010-11-22T16:16:00Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt a faulty node and can proves it with solid evidence. It can also be used to defend a node when threaten with false accusation. Numerous systems already used accountability in their system, but they were mostly all linked to specific application, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verify the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- I am working on Remote fault detection now -Jb&lt;br /&gt;
&lt;br /&gt;
-If you could please fill in this section about Remote Fault detection it would awesome, and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5336</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5336"/>
		<updated>2010-11-22T16:12:11Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; [http://research.microsoft.com/en-us/people/sriram/druschel.pptx Accountable distributed systems and the accountable cloud] - background of similar AVM implementation for distributed systems.&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
Accountability is another important problem that many have already worked on. The main goal of an accountable system is to be able to determine without a doubt a faulty node and can proves it with solid evidence. It can also be used to defend a node when threaten with false accusation. Numerous systems already used accountability in their system, but they were mostly all linked to specific application, where a point of reference must be used to compare. As example PeerReview, which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an AVM. PeerReview verify the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- I am working on Remote fault detection now -Jb&lt;br /&gt;
&lt;br /&gt;
-If you could please fill in this section about Remote Fault detection it would awesome, and anything else you would to add or modify, or leave a note in the discussion sections if you want me to relook or change something. --[[User:Mchou2|Mchou2]] 20:10, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for deterministic replay. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
- Sorry I didn&#039;t write anything yet to Critique. I&#039;m making my notes and will post something tonight or tomorrow. -- [[User:Sschnei1|Sschnei1]] 14:50, 22 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5315</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5315"/>
		<updated>2010-11-21T19:37:24Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Simple replaying is not sufficient for the purposes of finding changes/cheats in a system because the data being outputted into the replay may be tampered with by the system so that it generates optimal results. Remus [[#References | [1]]] has contributed a highly efficient snapshotting mechanism for these replays, and its usage can be directly benefit the AVM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
&lt;br /&gt;
Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a system of trust between users and a host. These different examples must have a certain amount of trust between the interactions of one user and another, as well as the user interacting with a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done with node A is the same it would be done with another node, node B. Let&#039;s say for example that node A interacts with node B with execution exe1, now when node A and B interact with node C, they would both expect to interact with execution exe1, but what happens if node C interacts differently and executes with exe2, then it would be beneficial to be notified of this difference. The previous explanation might not seem too relevant without some examples, such as; Node A is playing a game with node B, the game executed on node B is the same as on A, now when node A plays with node C, node C is executing the same operations as node A plus a cheating program; when node A buys some products from node B&#039;s server, the server processes the order and then deletes node A&#039;s sensitive information, denoted by execution 1, now when node A buys from node C&#039;s server, the order is processed as well as the sensitive information that node A has provided is also rerouted to another server so that it can be used without permission. These are only a few examples where the operations in an execution is necessary to be logged and verified. The problem that is trying to be handled here is to create a procedure that can be done so that a node can be known as accountable, and to log the operations in an execution to provide evidence of these faults done by a node. Previous work that has been done in efforts to prevent or detect integrity violations can be separated into different categories of operations. The first would be Cheat Detection, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being done, more so they are checking whether the a cheating operation that they have logged before is being operated on the user&#039;s system. For example, if there was a known program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system was implemented on the user&#039;s system and had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer existent.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I&#039;m not sure whether the background concepts should be in point form or a paragraph, and whether it needs to be very long or not, but I shall work on both background concepts and research problem with you Jbaubin. --[[User:Mchou2|Mchou2]] 18:11, 21 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-Sounds good, and As i was going to post what I had for research problem, I just saw you posted a big chunk of it. I&#039;ll be out for a while, but tonight I&#039;ll take a serious look at what you write and add what I had written. - [[User:Jbaubin|Jbaubin]]&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5288</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5288"/>
		<updated>2010-11-20T20:30:19Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Simple replaying is not sufficient for the purposes of finding changes/cheats in a system because the data being outputted into the replay may be tampered with by the system so that it generates optimal results. Remus [[#References | [1]]] has contributed a highly efficient snapshotting mechanism for these replays, and its usage can be directly benefit the AVM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to the progress  and execution of a remotely executing program by receiving packets. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I can either work on Background Concepts, or Research problem. -[[User:Jbaubin|Jbaubin]]&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5287</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5287"/>
		<updated>2010-11-20T19:42:05Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Simple replaying is not sufficient for the purposes of finding changes/cheats in a system because the data being outputted into the replay may be tampered with by the system so that it generates optimal results. Remus [[#References | [1]]] has contributed a highly efficient snapshotting mechanism for these replays, and its usage can be directly benefit the AVM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to the progress  and execution of a remotely executing program by receiving packets. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5286</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5286"/>
		<updated>2010-11-20T19:37:46Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Simple replaying is not sufficient for the purposes of finding changes/cheats in a system because the data being outputted into the replay may be tampered with by the system so that it generates optimal results. Remus [[#References | [1]]] has contributed a highly efficient snapshotting mechanism for these replays, and its usage can be directly benefit the AVM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to the progress  and execution of a remotely executing program by receiving packets. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trusted machine&#039;&#039;&#039; : AVM does not require faith into the machine where it will be utilized. It does not need to have any confidence into the software or hardware and can be used on machine believed to be compromised.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5285</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5285"/>
		<updated>2010-11-20T19:37:31Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Simple replaying is not sufficient for the purposes of finding changes/cheats in a system because the data being outputted into the replay may be tampered with by the system so that it generates optimal results. Remus [[#References | [1]]] has contributed a highly efficient snapshotting mechanism for these replays, and its usage can be directly benefit the AVM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to the progress  and execution of a remotely executing program by receiving packets. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trusted machine&#039;&#039;&#039; : Trusted machine : AVM does not require faith into the machine where it will be utilized. It does not need to have any confidence into the software or hardware and can be used on machine believed to be compromised.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5284</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5284"/>
		<updated>2010-11-20T19:16:45Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Paper==&lt;br /&gt;
&lt;br /&gt;
 the paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; Accountable Virtual Machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
 Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Simple replaying is not sufficient for the purposes of finding changes/cheats in a system because the data being outputted into the replay may be tampered with by the system so that it generates optimal results. Remus [[#References | [1]]] has contributed a highly efficient snapshotting mechanism for these replays, and its usage can be directly benefit the AVM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to the progress  and execution of a remotely executing program by receiving packets. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
==Research problem== &lt;br /&gt;
&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;
&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;
&lt;br /&gt;
 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.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&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;
 &lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
=Discussion=&lt;br /&gt;
 We can use this area to discuss or leave notes on general ideas or whatever you want to write here.&lt;br /&gt;
&lt;br /&gt;
-The current due date posted on the site for this essay is November 25th  --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
-I think that since we are given the headings to this article, we can easily choose what parts each member would like to work on, obviously since there are more members than parts, multiple members will have to work on the same parts or can work on all parts, I guess it&#039;s really up to you. I know that most people have a lot of projects coming up so let&#039;s try to get this done asap, or at least bit by bit so it&#039;s not something we have to worry too much about. --[[User:Mchou2|Mchou2]] 05:18, 19 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- I would like to do the Contribution or Critique. -- [[User:Sschnei1|Sschnei1]] 02:40, 20 November 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5006</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5006"/>
		<updated>2010-11-15T18:41:21Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Group Essay 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan answered the email &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_12&amp;diff=4788</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_12&amp;diff=4788"/>
		<updated>2010-10-15T17:55:56Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://portal.acm.org.proxy.library.carleton.ca/citation.cfm?id=364716.364719&amp;amp;coll=Portal&amp;amp;dl=GUIDE&amp;amp;CFID=107313098&amp;amp;CFTOKEN=63043022&lt;br /&gt;
&lt;br /&gt;
http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf &lt;br /&gt;
&lt;br /&gt;
http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php  It looks to be pretty accurate &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ntfs.com/winfs_basics.htm&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/winfs/ The team blog &lt;br /&gt;
&lt;br /&gt;
http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now  &amp;lt;-- If you are bored and want to learn about WinFs, 54 min video. &lt;br /&gt;
&lt;br /&gt;
http://www.splorp.com/newton/faq/newton-faq-nos.html#IIID3c an overview of the Newton OS filesystem to help you out --Rannath&lt;br /&gt;
&lt;br /&gt;
http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7 BeOS --Rannath&lt;br /&gt;
&lt;br /&gt;
I found some other stuff for Palm OS data base, but didn&#039;t find any good yet. &lt;br /&gt;
&lt;br /&gt;
All the above links give good explanation of the subject. I will try to update later.&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I found a little bit more in depth about NewtonOS:&lt;br /&gt;
http://lowendmac.com/orchard/06/john-sculley-newton-origin.html&lt;br /&gt;
&lt;br /&gt;
Also, another name for Palm OS is Garnet OS. I haven&#039;t had time yet to look too much into this, but the wiki has many links to references and to the main site:&lt;br /&gt;
http://en.wikipedia.org/wiki/Palm_OS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edit:&lt;br /&gt;
Since there are 5 database systems listed, and 5 people in the group, we can each pick one to work on. If anyone needs help with the one they pick, holla! Also, if you find another database system you want to work on, just add it to the list and put your name beside it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WinFS -  Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
ReiserFS - Sarah L&lt;br /&gt;
&lt;br /&gt;
Newton OS - Daniel&lt;br /&gt;
&lt;br /&gt;
PalmOS/Garnet OS - Tuan Pham&lt;br /&gt;
&lt;br /&gt;
BeOS - Xi Chen&lt;br /&gt;
&lt;br /&gt;
Other (list)...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-Daniel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Just to check how everybody are going? There is still two people who haven&#039;t picked an FileSystem, is there a problem or you simply didn&#039;t write your name next to it? &lt;br /&gt;
&lt;br /&gt;
Also, for others i found an other database System made by Oracle. It is called : Internet File System.  http://download.oracle.com/docs/html/A90434_01/toc.htm Here a good link to get started.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll probably posted in the page what I have written so far later today.&lt;br /&gt;
&lt;br /&gt;
Also, to keep consistence, I don&#039;t know how you are writing yours, but mine will look something like that : &lt;br /&gt;
Short history of Winfs, predecessor , etc.  (by short i mean roughly 200-300 words)&lt;br /&gt;
Short explanation on how WinFs works.&lt;br /&gt;
It&#039;s fate and Why&lt;br /&gt;
 &lt;br /&gt;
If you have any other idea, please share it. &lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Hey I am curious to how we are going to put all this together, are we each writing an essay for our chosen OS and then edit all the essays into one big one?&lt;br /&gt;
&lt;br /&gt;
-Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I was thinking that we could simply have an introduction to express the general advantages and disadvantages of Database as filesystem, then create &lt;br /&gt;
sections for our different OS. Then at the end a conclusion. &lt;br /&gt;
&lt;br /&gt;
But for that to work, we need most of our essay to be done in the next 2 days or so. Tuesday during the day we would need all the essay to be done so we can edit each other and write introduction + conclusion. &lt;br /&gt;
&lt;br /&gt;
What do you think ? Any idea?&lt;br /&gt;
&lt;br /&gt;
Edit : I just posted what I have so far. If you have any idea to add anything , just let me know. Also, English isn&#039;t my first language, so feel free to fix any of my errors. &lt;br /&gt;
&lt;br /&gt;
I&#039;ll add the reference tomorow&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Yeah i think we should do that but how about the two section that does not have the other group member&#039;s names beside?&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will have to post my part of the project sometime Wednesday (most likely before 2pm). I apologize if this causes some problems for the group, but I have an assignment for another class that needs to be done by Wednesday, and I have little time Tuesday to work on this (work and classes). Here is a little summary of Newton OS to get an idea. I will make sure that by Wednesday afternoon I will have at least a near-finished copy of my work (some input may be required :p ).&lt;br /&gt;
&lt;br /&gt;
Newton OS was used on PDAs and doesn’t have a file system, but instead uses a shallow database system. The OS considers each inserted card, as well as its internal storage, as separate stores. Each store contains either read/write databases or read-only objects. Newton eventually was cancelled and became an Apple subsidiary company, then shortly thereafter was reabsorbed into Apple. Developers from the Newton project helped with the iPod OS and the project may have had a hand in the iPhone’s development.&lt;br /&gt;
&lt;br /&gt;
Edit: I left a notice to the group on the front page. Hopefully the other two members will see the notice. And about the two other sections: If we have at least 3 sections, we should be good, but hopefully we hear word from the other two members...&lt;br /&gt;
&lt;br /&gt;
- Daniel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I just posted what i have so far. I am having difficulties finding the fate and why so if you guys know anything let me know. Also let me know if you have any suggestions for my part.&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
----&lt;br /&gt;
Sorry, I couldn&#039;t post this weekend. I&#039;ll gladly work on MurderFS/ReiserFS, and I can definitely finish before Wednesday afternoon (2ish).&lt;br /&gt;
&lt;br /&gt;
I really like how the WinFS sectioned is structured (although maybe condense the fate/why sections for readability?), it seems easy to follow. I agree we should all use the same sections (with additional subsections if need be). It&#039;ll make it look a lot cleaner/better put together.&lt;br /&gt;
&lt;br /&gt;
- Sarah&lt;br /&gt;
&lt;br /&gt;
Sorry, guys&lt;br /&gt;
Seems like I am the last member of the group, I am now doing works on the BeOS, and some stuff will be posted tonight or tomorrow morning. &lt;br /&gt;
Again, sorry for showing up late.&lt;br /&gt;
&lt;br /&gt;
Xi Chen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hi guys, Luc (lab TA ¬.¬) here, I&#039;m seeing some good collaboration here, but I&#039;m concerned about how coherent the end product will be.  I think you guys need to spend some time working out the central thesis and how the various components will advance that point before everybody goes off to work on their little piece.&lt;br /&gt;
&lt;br /&gt;
--[[User:3maisons|3maisons]] 20:14, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I agree. I believe the prof said today that he wants a thesis and we use the examples (WinFS, ReiserFS, Newton OS, PalmOS/Garnet OS, and BeOS) to prove our argument. So we should discuss a thesis and how to format the essay&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
&lt;br /&gt;
That sounds good, and you guys thinking about meeting up sometime in lab?&lt;br /&gt;
or we can chat through gTalk or the wiki.&lt;br /&gt;
&lt;br /&gt;
ps: my gmail acct is xintai1985@gmail.com&lt;br /&gt;
--Xi Chen&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
It could be a good idea to meet up to put everything together. &lt;br /&gt;
Or atleast use gTalk/msn/ whatever else people would like to use. &lt;br /&gt;
As we only have 2 days remaining, what about tonight ? &lt;br /&gt;
&lt;br /&gt;
And as Tuan said, we would need a thesis subject and then prove why it fails most of the time. &lt;br /&gt;
I&#039;m down to work on it whenever you guys are ready (or so obviously). Just send me an email to : jbout13@hotmail.com &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will be available until 2pm today (Wednesday) and then from 7pm onwards. I think we should discuss the thesis and such tonight (if possible), then finish the essay up after class tomorrow morning. My email is demongyro@gmail.com.&lt;br /&gt;
&lt;br /&gt;
-Daniel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Let&#039;s try to be all around tonight for 7:30 ish ? so we can get thesis and start writing introduction + conclusion and to put everything together.&lt;br /&gt;
&lt;br /&gt;
We either can go to Carleton, or msn / Gmail. (or any other option I forgot) I&#039;m down for both of these.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xintai1985@gmail.com Xi Chen 613-799-5893(in case)&lt;br /&gt;
&lt;br /&gt;
jbout13@hotmail.com Jean-Benoit &lt;br /&gt;
&lt;br /&gt;
demongyro@gmail.com Daniel - on gmail&lt;br /&gt;
&lt;br /&gt;
tuan-pham@hotmail.com Tuan Pham - lets do it over msn/gtalk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edit : Daniel and I are on Gmail, gtalk. &lt;br /&gt;
Add him or me to join the conversation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Guys add my gmail, t.m.pham3@gmail.com - Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php&lt;br /&gt;
http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf&lt;br /&gt;
http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf&lt;br /&gt;
&lt;br /&gt;
so i don&#039;t lose these&lt;br /&gt;
&lt;br /&gt;
Reiser4, Part II: Designing Trees that Cache Well&lt;br /&gt;
Performance Evaluation of Linux File Systems for Data Warehousing Workloads&lt;br /&gt;
&lt;br /&gt;
sarah&lt;br /&gt;
----&lt;br /&gt;
moving this here because i&#039;m a little ocd...&lt;br /&gt;
&lt;br /&gt;
=Note to Group=&lt;br /&gt;
&lt;br /&gt;
=Contact Details=&lt;br /&gt;
Dustin Martin: 613-325-9427 dustin.adam.martin@gmail.com&lt;br /&gt;
&lt;br /&gt;
899-8826 Tuan Pham&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Wikipedia:Citing_Wikipedia&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4456</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4456"/>
		<updated>2010-10-15T04:01:01Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS &lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal  computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase  in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system using a database driven file system, each developed to satisfy its individual needs. We will visit five different operating systems that used a database as file system. First, both Palm OS and WinFS implemented a database file system for their operating systems for improve efficiency. NewtonOS was produced to be used on a desktop machine, but evolved into one of the best and most secure PDA operating systems. BeOS was a new operating system and decided to use a database driven file system to leverage both improved efficiency and compability. Lastly, ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux.&lt;br /&gt;
The success of each of these file systems is intrinsically tied to that of its host operating system, and vice versa. One cannot succeed without the other. With that in mind, by closely examining each file system and operating system combination individually, it is clear that none have been successful. We will first examine the trials of Palm OS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf [1]]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf [1]]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications. Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [2]. The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [2]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record[2]. This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf [3]] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html [4]] Its latest release, Garnet version 6, still includes a database based file system. Unlike the Palm OS, WinFS was not as fortunate and leads a different path.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp [5]]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs [6]]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [7]].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [7]], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting[8]]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx [9]], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx[9]] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [7]] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now [12]] This shows that the team might have had some management problem, which evidently led to the termination of the project. We will now talk about NewtonOS.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton [13]]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html [14]]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html [15]].&lt;br /&gt;
&lt;br /&gt;
Newton OS uses a database-like store for data. The object storage system within Newton OS has frames, slots, soups, and union soups to handle the data for the OS. The frame is essentially the same as a record database, as that used in Palm OS. “Frames are flexible and can represent a wide variety of structures.”[49] A slot is like a database field. The slot is used to hold single pieces of data and these slots are contained in a frame. Related frames are stored in soups, Newton&#039;s equivalent of a database, that are automatically indexed and can be queried by the index directly, or searched through by keywords. A union soup is a collection of soups of the same name[16].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html [17]].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys [18]]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [19]]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html [20]][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [19]]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [19]]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/ [21]], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/ [22]]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html [23]], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html [24]].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/ [25]]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html [26]][http://everything2.com/title/Inkwell [27]]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture [28]][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod [29]]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo [30]].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.[http://en.wikipedia.org/wiki/BeOS [31]]&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
BeOS is an operating system that was first developed from scratch in 1991 to run a proprietary hardware. The goal for BeOs was to compete with both Apple and Microsoft, by creating a new platform. Since both Apple and Microsoft were putting considerable effort into covering legacy versions of their systems, BeOs hoped to gain ground through efficiency.[http://www.letterp.com/~dbg/practical-file-system-design.pdf [32]]&lt;br /&gt;
 &lt;br /&gt;
BeOS was designed to be a better use on modern hardware. Compared to Windows and Mac OS, it greatly improved on digital media performance by using modern hardware facilities like symmetric multiprocessing, pervasive multithreading and preemptive multitasking.[http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7 [33]] Compared with other modern operating system, pervasive multithreading is allowing the system to better utilize system resources. It also has a simple and clear GUI and powerful command-line interface through BASH shell. However, since the system is not UNIX based, it is also compatible with POSIX. Furthermore, the API of BeOS is developed under C++ which facilitate application development.&lt;br /&gt;
&lt;br /&gt;
But since BeOS is a fully multithreaded system, programs which are written for the system need to be really well programmed in order to stop deadlock or errors from doing multiple simultaneous threads.[http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235 [34]] Also not a lot of hardware is supported by BeBox, the machine designed for BeOS.  And maintaining the system is another problem due to database like file system.&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204 [35]] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf [36]] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. This is because the system reliability is placed in the hands of the programmer.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
In the mid-1990&#039;s BeOs was pursued by Apple to serve as their new operating system. BeOs demanded a purchase price that Apple was not willing to pay and instead Apple decided  to acquire NeXT and implemented NeXTSTEP OS. BeOs then tried to penetrate the personal computer market but ran into compatibility issues. BeOs needed custom hardware to function correctly. Development ensued to port BeOs onto standard PCs, but ultimately fell flat when Be could not convince any manufacture to use their operating system. This was largely due to restriction and exclusive rights held by Microsoft which blocked BeOs&#039; entry into the market. By 2001, BeOs had failed to obtain even marginal market share and was acquired by Palm to be integrated into Palm OS. An small community driven open source project named Haiku OS has resumed development of BeOs and released Haiku Alpha 2 in May 2010.&lt;br /&gt;
&lt;br /&gt;
And now we will exam ReiserFS.&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html [37]]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4 [38]]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html [39]]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832 [40]]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php [41]]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf [42]]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS [43]]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf [44]], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html [45]]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html [46]]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf [47]]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/ [48]]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these examples of database-like systems, it becomes apparent that despite their potential, each did not live up to its expectations. Since the success of a file system  is tied to that of the operating system, a harmonious relationship must exist between the two. In each case defined above, Palm OS, WinFS, Newton OS, BeOS and ReiserFS, that relationship did not manifest into success. There has not yet been developed a highly flexible design that would be useful on the average system. The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch from a tried and true system to a newer and possibly unstable technology. In the case of database-like file systems, the few implementations that are available to the public are unstable, and therefore an unattractive choice.&lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that database-like stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1]Gloor, G. PalmOS from the Ground Up - http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf&lt;br /&gt;
&lt;br /&gt;
[2]McKeehan, J., &amp;amp; Rhodes, N. (2002). Palm OS programming: the Developer’s guide. Sebastopol, California, USA: O&#039;Reilly and Associates, Inc.&lt;br /&gt;
&lt;br /&gt;
[3]René Guadalupe Cruz Flores, Juan Ivan Nieto Hipólito, Gabriel López Morteo, and Elitania Jiménez García. - Mobile Operating Systems: a Comparative Analysis in Personal Devices. http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf &lt;br /&gt;
&lt;br /&gt;
[4]Company Website for Garnet OS - http://www.access-company.com/products/platforms/garnet/index.html &lt;br /&gt;
&lt;br /&gt;
[5]Blog of established tech reporter, Paul Thurrott - http://www.winsupersite.com/showcase/winfs_preview.asp&lt;br /&gt;
&lt;br /&gt;
[6]Presentation on WinFS by Ajilion consulting - http://www.slideshare.net/Severus/winfs&lt;br /&gt;
&lt;br /&gt;
[7]MSDN Introduction to WinFS - http://msdn.microsoft.com/en-US/library/aa480687.aspx&lt;br /&gt;
&lt;br /&gt;
[8]Video of the WinFS team discussing WinFS - http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting&lt;br /&gt;
&lt;br /&gt;
[9]Update on WinFS from MSDN - http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx&lt;br /&gt;
&lt;br /&gt;
[10]Interview with WinFS project lead on MSDN - http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now&lt;br /&gt;
&lt;br /&gt;
[11]Getting Started Newton video (that came with the product) - http://www.youtube.com/watch?v=64QuJdJmCbA&amp;amp;feature=player_embedded#!&lt;br /&gt;
&lt;br /&gt;
[12]History of Newton by Pen Computing Magazine - http://www.pencomputing.com/frames/newton_obituary.html&lt;br /&gt;
&lt;br /&gt;
[13]CNET news announcing end of Newton - http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html&lt;br /&gt;
&lt;br /&gt;
[14]Bey C., et al. (1996). Newton Programmer’s Guide for Newton 2.0. Cupertino, California, USA: Apple Computer, Inc.&lt;br /&gt;
&lt;br /&gt;
[15]http://www.pencomputing.com/frames/newton_obituary.html ------------duplicate&lt;br /&gt;
&lt;br /&gt;
[16]http://www.youtube.com/watch?v=xc3JzS0K3ys&lt;br /&gt;
&lt;br /&gt;
[17]Analysis by an Apple-centric magazine - http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html&lt;br /&gt;
&lt;br /&gt;
[18]Opinion piece via CNET - http://news.cnet.com/8301-13512_3-9754359-23.html&lt;br /&gt;
&lt;br /&gt;
[19]BNET reporting on Apple merger - http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/&lt;br /&gt;
&lt;br /&gt;
[20]BNET reporting on Apple merger - http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/&lt;br /&gt;
&lt;br /&gt;
[21]CNET reporting on uncertain future of Newton - http://news.cnet.com/2100-1001-206664.html&lt;br /&gt;
&lt;br /&gt;
[22]Apple announcing the discontinuation of Newton - http://www.apple.com/ca/press/1998/02/NewtonDisco.html&lt;br /&gt;
&lt;br /&gt;
[23]http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/ ---remove?&lt;br /&gt;
&lt;br /&gt;
[24]http://lowendmac.com/osx/jaguar-10.2/index.html ---remove?&lt;br /&gt;
&lt;br /&gt;
[25]http://everything2.com/title/Inkwell ---remove?&lt;br /&gt;
&lt;br /&gt;
[26]http://www.starmenusa.com/blog/category/Culture ----remove?&lt;br /&gt;
&lt;br /&gt;
[27]San Fransisco Chronicle discussing Pixio - http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod&lt;br /&gt;
&lt;br /&gt;
[28]http://www.servinghistory.com/topics/Pixo ---remove?&lt;br /&gt;
&lt;br /&gt;
[29]http://en.wikipedia.org/wiki/BeOS&lt;br /&gt;
&lt;br /&gt;
[30]Giampaolo, D. Practical File System Design with the Be File System. Be Inc. - http://www.letterp.com/~dbg/practical-file-system-design.pdf&lt;br /&gt;
&lt;br /&gt;
[31]History of file systems on ARS Technica - http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7&lt;br /&gt;
&lt;br /&gt;
[32]http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235&lt;br /&gt;
&lt;br /&gt;
[33]http://www.citeulike.org/user/msakai/article/638204 -----duplicate of 32&lt;br /&gt;
&lt;br /&gt;
[34]http://www.letterp.com/~dbg/practical-file-system-design.pdf ----duplicate of 32&lt;br /&gt;
&lt;br /&gt;
[35]Archive of the Namesys product page for Reiser4 - http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html&lt;br /&gt;
&lt;br /&gt;
[36]http://en.wikipedia.org/wiki/Reiser4&lt;br /&gt;
&lt;br /&gt;
[37]CNET discussing end of Namesys - http://news.cnet.com/8301-13580_3-9851703-39.html&lt;br /&gt;
&lt;br /&gt;
[38]Reiser, H. Kernal Korner: Trees in the Reiser file system. Namesys. - http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832&lt;br /&gt;
&lt;br /&gt;
[39]Analysis of the structure of ReiserFS, by an employee of Namesys - http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php&lt;br /&gt;
&lt;br /&gt;
[40]Bar, M. (2001). ReiserFS for Linux. In Linux File Systems. McGraw-Hill Companies. -  http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf&lt;br /&gt;
&lt;br /&gt;
[41]http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS ---remove&lt;br /&gt;
&lt;br /&gt;
[42]Sun file system benchmarks - http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf&lt;br /&gt;
&lt;br /&gt;
[43]Commentry on ReiserFS by Wietse Venema, PhD -  http://archives.neohapsis.com/archives/postfix/2001-05/1749.html&lt;br /&gt;
&lt;br /&gt;
[44]Discussion between kernel developers on the University of Indiana Mailing List - http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html&lt;br /&gt;
&lt;br /&gt;
[45]Arpaci-Dusseau, A., Arpaci-Dusseau, R, Prabhakaran, V. Analysis and Evolution of Journaling File Systems. University of Wisconsin, Madison. - http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf&lt;br /&gt;
&lt;br /&gt;
[46]Discussion of dropping ReiserFS, by the kernel team lead for SUSE, Jeff Mahoney - http://lwn.net/Articles/202780/&lt;br /&gt;
&lt;br /&gt;
==Other Links==&lt;br /&gt;
&lt;br /&gt;
*http://membres.multimania.fr/microfirst/palm/pdb.html - Information on Palm OS&lt;br /&gt;
&lt;br /&gt;
*http://mobile.eric-poncet.com/palm/tutorial/db.html - Tutorial on Palm OS programming&lt;br /&gt;
&lt;br /&gt;
*http://www.letterp.com/~dbg/practical-file-system-design.pdf, Practical File System Design with the Be File System - Dominic Giampaolo&lt;br /&gt;
&lt;br /&gt;
*http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235 - A Chinese article talks about Be,Inc. BeOS and their fate&lt;br /&gt;
&lt;br /&gt;
*http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7 - From BFS to ZFS: past, present, and future of file systems&lt;br /&gt;
&lt;br /&gt;
*http://en.wikipedia.org/wiki/BeOS - BeOS--Wikipedia&lt;br /&gt;
&lt;br /&gt;
*https://docs.google.com/document/d/1MgtOOuggnKvutmqpL2rR8ZD4vuKs9wYObX0ifGujUaA/edit?authkey=COnbkrIB#  Group discussion 10/13/2010&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4455</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4455"/>
		<updated>2010-10-15T04:00:55Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS &lt;br /&gt;
h&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal  computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase  in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system using a database driven file system, each developed to satisfy its individual needs. We will visit five different operating systems that used a database as file system. First, both Palm OS and WinFS implemented a database file system for their operating systems for improve efficiency. NewtonOS was produced to be used on a desktop machine, but evolved into one of the best and most secure PDA operating systems. BeOS was a new operating system and decided to use a database driven file system to leverage both improved efficiency and compability. Lastly, ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux.&lt;br /&gt;
The success of each of these file systems is intrinsically tied to that of its host operating system, and vice versa. One cannot succeed without the other. With that in mind, by closely examining each file system and operating system combination individually, it is clear that none have been successful. We will first examine the trials of Palm OS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf [1]]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf [1]]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications. Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [2]. The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [2]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record[2]. This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf [3]] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html [4]] Its latest release, Garnet version 6, still includes a database based file system. Unlike the Palm OS, WinFS was not as fortunate and leads a different path.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp [5]]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs [6]]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [7]].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [7]], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting[8]]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx [9]], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx[9]] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [7]] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now [12]] This shows that the team might have had some management problem, which evidently led to the termination of the project. We will now talk about NewtonOS.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton [13]]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html [14]]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html [15]].&lt;br /&gt;
&lt;br /&gt;
Newton OS uses a database-like store for data. The object storage system within Newton OS has frames, slots, soups, and union soups to handle the data for the OS. The frame is essentially the same as a record database, as that used in Palm OS. “Frames are flexible and can represent a wide variety of structures.”[49] A slot is like a database field. The slot is used to hold single pieces of data and these slots are contained in a frame. Related frames are stored in soups, Newton&#039;s equivalent of a database, that are automatically indexed and can be queried by the index directly, or searched through by keywords. A union soup is a collection of soups of the same name[16].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html [17]].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys [18]]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [19]]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html [20]][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [19]]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [19]]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/ [21]], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/ [22]]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html [23]], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html [24]].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/ [25]]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html [26]][http://everything2.com/title/Inkwell [27]]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture [28]][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod [29]]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo [30]].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.[http://en.wikipedia.org/wiki/BeOS [31]]&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
BeOS is an operating system that was first developed from scratch in 1991 to run a proprietary hardware. The goal for BeOs was to compete with both Apple and Microsoft, by creating a new platform. Since both Apple and Microsoft were putting considerable effort into covering legacy versions of their systems, BeOs hoped to gain ground through efficiency.[http://www.letterp.com/~dbg/practical-file-system-design.pdf [32]]&lt;br /&gt;
 &lt;br /&gt;
BeOS was designed to be a better use on modern hardware. Compared to Windows and Mac OS, it greatly improved on digital media performance by using modern hardware facilities like symmetric multiprocessing, pervasive multithreading and preemptive multitasking.[http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7 [33]] Compared with other modern operating system, pervasive multithreading is allowing the system to better utilize system resources. It also has a simple and clear GUI and powerful command-line interface through BASH shell. However, since the system is not UNIX based, it is also compatible with POSIX. Furthermore, the API of BeOS is developed under C++ which facilitate application development.&lt;br /&gt;
&lt;br /&gt;
But since BeOS is a fully multithreaded system, programs which are written for the system need to be really well programmed in order to stop deadlock or errors from doing multiple simultaneous threads.[http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235 [34]] Also not a lot of hardware is supported by BeBox, the machine designed for BeOS.  And maintaining the system is another problem due to database like file system.&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204 [35]] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf [36]] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. This is because the system reliability is placed in the hands of the programmer.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
In the mid-1990&#039;s BeOs was pursued by Apple to serve as their new operating system. BeOs demanded a purchase price that Apple was not willing to pay and instead Apple decided  to acquire NeXT and implemented NeXTSTEP OS. BeOs then tried to penetrate the personal computer market but ran into compatibility issues. BeOs needed custom hardware to function correctly. Development ensued to port BeOs onto standard PCs, but ultimately fell flat when Be could not convince any manufacture to use their operating system. This was largely due to restriction and exclusive rights held by Microsoft which blocked BeOs&#039; entry into the market. By 2001, BeOs had failed to obtain even marginal market share and was acquired by Palm to be integrated into Palm OS. An small community driven open source project named Haiku OS has resumed development of BeOs and released Haiku Alpha 2 in May 2010.&lt;br /&gt;
&lt;br /&gt;
And now we will exam ReiserFS.&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html [37]]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4 [38]]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html [39]]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832 [40]]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php [41]]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf [42]]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS [43]]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf [44]], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html [45]]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html [46]]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf [47]]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/ [48]]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these examples of database-like systems, it becomes apparent that despite their potential, each did not live up to its expectations. Since the success of a file system  is tied to that of the operating system, a harmonious relationship must exist between the two. In each case defined above, Palm OS, WinFS, Newton OS, BeOS and ReiserFS, that relationship did not manifest into success. There has not yet been developed a highly flexible design that would be useful on the average system. The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch from a tried and true system to a newer and possibly unstable technology. In the case of database-like file systems, the few implementations that are available to the public are unstable, and therefore an unattractive choice.&lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that database-like stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1]Gloor, G. PalmOS from the Ground Up - http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf&lt;br /&gt;
&lt;br /&gt;
[2]McKeehan, J., &amp;amp; Rhodes, N. (2002). Palm OS programming: the Developer’s guide. Sebastopol, California, USA: O&#039;Reilly and Associates, Inc.&lt;br /&gt;
&lt;br /&gt;
[3]René Guadalupe Cruz Flores, Juan Ivan Nieto Hipólito, Gabriel López Morteo, and Elitania Jiménez García. - Mobile Operating Systems: a Comparative Analysis in Personal Devices. http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf &lt;br /&gt;
&lt;br /&gt;
[4]Company Website for Garnet OS - http://www.access-company.com/products/platforms/garnet/index.html &lt;br /&gt;
&lt;br /&gt;
[5]Blog of established tech reporter, Paul Thurrott - http://www.winsupersite.com/showcase/winfs_preview.asp&lt;br /&gt;
&lt;br /&gt;
[6]Presentation on WinFS by Ajilion consulting - http://www.slideshare.net/Severus/winfs&lt;br /&gt;
&lt;br /&gt;
[7]MSDN Introduction to WinFS - http://msdn.microsoft.com/en-US/library/aa480687.aspx&lt;br /&gt;
&lt;br /&gt;
[8]Video of the WinFS team discussing WinFS - http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting&lt;br /&gt;
&lt;br /&gt;
[9]Update on WinFS from MSDN - http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx&lt;br /&gt;
&lt;br /&gt;
[10]Interview with WinFS project lead on MSDN - http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now&lt;br /&gt;
&lt;br /&gt;
[11]Getting Started Newton video (that came with the product) - http://www.youtube.com/watch?v=64QuJdJmCbA&amp;amp;feature=player_embedded#!&lt;br /&gt;
&lt;br /&gt;
[12]History of Newton by Pen Computing Magazine - http://www.pencomputing.com/frames/newton_obituary.html&lt;br /&gt;
&lt;br /&gt;
[13]CNET news announcing end of Newton - http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html&lt;br /&gt;
&lt;br /&gt;
[14]Bey C., et al. (1996). Newton Programmer’s Guide for Newton 2.0. Cupertino, California, USA: Apple Computer, Inc.&lt;br /&gt;
&lt;br /&gt;
[15]http://www.pencomputing.com/frames/newton_obituary.html ------------duplicate&lt;br /&gt;
&lt;br /&gt;
[16]http://www.youtube.com/watch?v=xc3JzS0K3ys&lt;br /&gt;
&lt;br /&gt;
[17]Analysis by an Apple-centric magazine - http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html&lt;br /&gt;
&lt;br /&gt;
[18]Opinion piece via CNET - http://news.cnet.com/8301-13512_3-9754359-23.html&lt;br /&gt;
&lt;br /&gt;
[19]BNET reporting on Apple merger - http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/&lt;br /&gt;
&lt;br /&gt;
[20]BNET reporting on Apple merger - http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/&lt;br /&gt;
&lt;br /&gt;
[21]CNET reporting on uncertain future of Newton - http://news.cnet.com/2100-1001-206664.html&lt;br /&gt;
&lt;br /&gt;
[22]Apple announcing the discontinuation of Newton - http://www.apple.com/ca/press/1998/02/NewtonDisco.html&lt;br /&gt;
&lt;br /&gt;
[23]http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/ ---remove?&lt;br /&gt;
&lt;br /&gt;
[24]http://lowendmac.com/osx/jaguar-10.2/index.html ---remove?&lt;br /&gt;
&lt;br /&gt;
[25]http://everything2.com/title/Inkwell ---remove?&lt;br /&gt;
&lt;br /&gt;
[26]http://www.starmenusa.com/blog/category/Culture ----remove?&lt;br /&gt;
&lt;br /&gt;
[27]San Fransisco Chronicle discussing Pixio - http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod&lt;br /&gt;
&lt;br /&gt;
[28]http://www.servinghistory.com/topics/Pixo ---remove?&lt;br /&gt;
&lt;br /&gt;
[29]http://en.wikipedia.org/wiki/BeOS&lt;br /&gt;
&lt;br /&gt;
[30]Giampaolo, D. Practical File System Design with the Be File System. Be Inc. - http://www.letterp.com/~dbg/practical-file-system-design.pdf&lt;br /&gt;
&lt;br /&gt;
[31]History of file systems on ARS Technica - http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7&lt;br /&gt;
&lt;br /&gt;
[32]http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235&lt;br /&gt;
&lt;br /&gt;
[33]http://www.citeulike.org/user/msakai/article/638204 -----duplicate of 32&lt;br /&gt;
&lt;br /&gt;
[34]http://www.letterp.com/~dbg/practical-file-system-design.pdf ----duplicate of 32&lt;br /&gt;
&lt;br /&gt;
[35]Archive of the Namesys product page for Reiser4 - http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html&lt;br /&gt;
&lt;br /&gt;
[36]http://en.wikipedia.org/wiki/Reiser4&lt;br /&gt;
&lt;br /&gt;
[37]CNET discussing end of Namesys - http://news.cnet.com/8301-13580_3-9851703-39.html&lt;br /&gt;
&lt;br /&gt;
[38]Reiser, H. Kernal Korner: Trees in the Reiser file system. Namesys. - http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832&lt;br /&gt;
&lt;br /&gt;
[39]Analysis of the structure of ReiserFS, by an employee of Namesys - http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php&lt;br /&gt;
&lt;br /&gt;
[40]Bar, M. (2001). ReiserFS for Linux. In Linux File Systems. McGraw-Hill Companies. -  http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf&lt;br /&gt;
&lt;br /&gt;
[41]http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS ---remove&lt;br /&gt;
&lt;br /&gt;
[42]Sun file system benchmarks - http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf&lt;br /&gt;
&lt;br /&gt;
[43]Commentry on ReiserFS by Wietse Venema, PhD -  http://archives.neohapsis.com/archives/postfix/2001-05/1749.html&lt;br /&gt;
&lt;br /&gt;
[44]Discussion between kernel developers on the University of Indiana Mailing List - http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html&lt;br /&gt;
&lt;br /&gt;
[45]Arpaci-Dusseau, A., Arpaci-Dusseau, R, Prabhakaran, V. Analysis and Evolution of Journaling File Systems. University of Wisconsin, Madison. - http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf&lt;br /&gt;
&lt;br /&gt;
[46]Discussion of dropping ReiserFS, by the kernel team lead for SUSE, Jeff Mahoney - http://lwn.net/Articles/202780/&lt;br /&gt;
&lt;br /&gt;
==Other Links==&lt;br /&gt;
&lt;br /&gt;
*http://membres.multimania.fr/microfirst/palm/pdb.html - Information on Palm OS&lt;br /&gt;
&lt;br /&gt;
*http://mobile.eric-poncet.com/palm/tutorial/db.html - Tutorial on Palm OS programming&lt;br /&gt;
&lt;br /&gt;
*http://www.letterp.com/~dbg/practical-file-system-design.pdf, Practical File System Design with the Be File System - Dominic Giampaolo&lt;br /&gt;
&lt;br /&gt;
*http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235 - A Chinese article talks about Be,Inc. BeOS and their fate&lt;br /&gt;
&lt;br /&gt;
*http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7 - From BFS to ZFS: past, present, and future of file systems&lt;br /&gt;
&lt;br /&gt;
*http://en.wikipedia.org/wiki/BeOS - BeOS--Wikipedia&lt;br /&gt;
&lt;br /&gt;
*https://docs.google.com/document/d/1MgtOOuggnKvutmqpL2rR8ZD4vuKs9wYObX0ifGujUaA/edit?authkey=COnbkrIB#  Group discussion 10/13/2010&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4311</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4311"/>
		<updated>2010-10-15T01:36:52Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal  computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase  in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system using a database driven file system, each developed to satisfy its individual needs. We will visit five different operating systems that used a database as file system. First, both Palm OS and WinFS implemented a database file system for their operating systems for improve efficiency. NewtonOS was produced to be used on a desktop machine, but evolved into one of the best and most secure PDA operating systems. BeOS was a new operating system and decided to use a database driven file system to leverage both improved efficiency and compability. Lastly, ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux.&lt;br /&gt;
The success of each of these file systems is intrinsically tied to that of its host operating system, and vice versa. One cannot succeed without the other. With that in mind, by closely examining each file system and operating system combination individually, it is clear that none have been successful. We will first examine the trials of Palm OS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf [1]]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf [1]]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications. Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [2]. The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [2]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record[2]. This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf [3]] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html [4]] Its latest release, Garnet version 6, still includes a database based file system. Unlike the Palm OS, WinFS was not as fortunate and leads a different path.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp [5]]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs [6]]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [7]].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [7]], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting[8]]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx [9]], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx[10]] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [11]] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now [12]] This shows that the team might have had some management problem, which evidently led to the termination of the project. We will now talk about NewtonOS.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton [13]]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html [14]]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html [15]].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html [16]].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys [17]]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [18]]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html [19]][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [20]]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [20]]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/ [21]], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/ [22]]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html [23]], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html [24]].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/ [25]]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html [26]][http://everything2.com/title/Inkwell [27]]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture [28]][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod [29]]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo [30]].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.[http://en.wikipedia.org/wiki/BeOS [31]]&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
BeOS is an operating system that was first developed from scratch in 1991 to run a proprietary hardware. The goal for BeOs was to compete with both Apple and Microsoft, by creating a new platform. Since both Apple and Microsoft were putting considerable effort into covering legacy versions of their systems, BeOs hoped to gain ground through efficiency.[http://www.letterp.com/~dbg/practical-file-system-design.pdf [32]]&lt;br /&gt;
 &lt;br /&gt;
BeOS was designed to be a better use on modern hardware. Compared to Windows and Mac OS, it greatly improved on digital media performance by using modern hardware facilities like symmetric multiprocessing, pervasive multithreading and preemptive multitasking.[http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7 [33]] Compared with other modern operating system, pervasive multithreading is allowing the system to better utilize system resources. It also has a simple and clear GUI and powerful command-line interface through BASH shell. However, since the system is not UNIX based, it is also compatible with POSIX. Furthermore, the API of BeOS is developed under C++ which facilitate application development.&lt;br /&gt;
&lt;br /&gt;
But since BeOS is a fully multithreaded system, programs which are written for the system need to be really well programmed in order to stop deadlock or errors from doing multiple simultaneous threads.[http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235 [34]] Also not a lot of hardware is supported by BeBox, the machine designed for BeOS.  And maintaining the system is another problem due to database like file system.&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204 [35]] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf [36]] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. This is because the system reliability is placed in the hands of the programmer.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
In the mid-1990&#039;s BeOs was pursued by Apple to serve as their new operating system. BeOs demanded a purchase price that Apple was not willing to pay and instead Apple decided  to acquire NeXT and implemented NeXTSTEP OS. BeOs then tried to penetrate the personal computer market but ran into compatibility issues. BeOs needed custom hardware to function correctly. Development ensued to port BeOs onto standard PCs, but ultimately fell flat when Be could not convince any manufacture to use their operating system. This was largely due to restriction and exclusive rights held by Microsoft which blocked BeOs&#039; entry into the market. By 2001, BeOs had failed to obtain even marginal market share and was acquired by Palm to be integrated into Palm OS. An small community driven open source project named Haiku OS has resumed development of BeOs and released Haiku Alpha 2 in May 2010.&lt;br /&gt;
&lt;br /&gt;
And now we will exam ReiserFS.&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html [37]]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4 [38]]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html [39]]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832 [40]]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php [41]]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf [42]]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS [43]]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf [44]], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html [45]]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html [46]]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf [47]]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/ [48]]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these examples of database-like systems, it becomes apparent that despite their potential, each did not live up to its expectations. Since the success of a file system  is tied to that of the operating system, a harmonious relationship must exist between the two. In each case defined above, Palm OS, WinFS, Newton OS, BeOS and ReiserFS, that relationship did not manifest into success. There has not yet been developed a highly flexible design that would be useful on the average system. The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch from a tried and true system to a newer and possibly unstable technology. In the case of database-like file systems, the few implementations that are available to the public are unstable, and therefore an unattractive choice.&lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9 [49]], so there is no guarantee that database-like stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1]http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf&lt;br /&gt;
&lt;br /&gt;
[2]McKeehan, J., &amp;amp; Rhodes, N. (2002). Palm OS programming: the Developer’s guide. Sebastopol, California, USA: O&#039;Reilly and Associates, Inc.&lt;br /&gt;
&lt;br /&gt;
[3]http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf &lt;br /&gt;
&lt;br /&gt;
[4]http://www.access-company.com/products/platforms/garnet/index.html &lt;br /&gt;
&lt;br /&gt;
[5]http://www.winsupersite.com/showcase/winfs_preview.asp&lt;br /&gt;
&lt;br /&gt;
[6]http://www.slideshare.net/Severus/winfs&lt;br /&gt;
&lt;br /&gt;
[7]http://msdn.microsoft.com/en-US/library/aa480687.aspx&lt;br /&gt;
&lt;br /&gt;
[8]http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting&lt;br /&gt;
&lt;br /&gt;
[9]http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx&lt;br /&gt;
&lt;br /&gt;
[10]http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx&lt;br /&gt;
&lt;br /&gt;
[11]http://msdn.microsoft.com/en-US/library/aa480687.aspx&lt;br /&gt;
&lt;br /&gt;
[12]http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now&lt;br /&gt;
&lt;br /&gt;
[13]http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton&lt;br /&gt;
&lt;br /&gt;
[14]http://www.pencomputing.com/frames/newton_obituary.html&lt;br /&gt;
&lt;br /&gt;
[15]http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html&lt;br /&gt;
&lt;br /&gt;
[16]http://www.pencomputing.com/frames/newton_obituary.html&lt;br /&gt;
&lt;br /&gt;
[17]http://www.youtube.com/watch?v=xc3JzS0K3ys&lt;br /&gt;
&lt;br /&gt;
[18]http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html&lt;br /&gt;
&lt;br /&gt;
[19]http://news.cnet.com/8301-13512_3-9754359-23.html&lt;br /&gt;
&lt;br /&gt;
[20]http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html&lt;br /&gt;
&lt;br /&gt;
[21]http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/&lt;br /&gt;
&lt;br /&gt;
[22]http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/&lt;br /&gt;
&lt;br /&gt;
[23]http://news.cnet.com/2100-1001-206664.html&lt;br /&gt;
&lt;br /&gt;
[24]http://www.apple.com/ca/press/1998/02/NewtonDisco.html&lt;br /&gt;
&lt;br /&gt;
[25]http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/&lt;br /&gt;
&lt;br /&gt;
[26]http://lowendmac.com/osx/jaguar-10.2/index.html&lt;br /&gt;
&lt;br /&gt;
[27]http://everything2.com/title/Inkwell&lt;br /&gt;
&lt;br /&gt;
[28]http://www.starmenusa.com/blog/category/Culture&lt;br /&gt;
&lt;br /&gt;
[29]http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod&lt;br /&gt;
&lt;br /&gt;
[30]http://www.servinghistory.com/topics/Pixo&lt;br /&gt;
&lt;br /&gt;
[31]http://en.wikipedia.org/wiki/BeOS&lt;br /&gt;
&lt;br /&gt;
[32]http://www.letterp.com/~dbg/practical-file-system-design.pdf&lt;br /&gt;
&lt;br /&gt;
[33]http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7&lt;br /&gt;
&lt;br /&gt;
[34]http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235&lt;br /&gt;
&lt;br /&gt;
[35]http://www.citeulike.org/user/msakai/article/638204&lt;br /&gt;
&lt;br /&gt;
[36]http://www.letterp.com/~dbg/practical-file-system-design.pdf&lt;br /&gt;
&lt;br /&gt;
[37]http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html&lt;br /&gt;
&lt;br /&gt;
[38]http://en.wikipedia.org/wiki/Reiser4&lt;br /&gt;
&lt;br /&gt;
[39]http://news.cnet.com/8301-13580_3-9851703-39.html&lt;br /&gt;
&lt;br /&gt;
[40]http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832&lt;br /&gt;
&lt;br /&gt;
[41]http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php&lt;br /&gt;
&lt;br /&gt;
[42]http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf&lt;br /&gt;
&lt;br /&gt;
[43]http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS&lt;br /&gt;
&lt;br /&gt;
[44]http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf&lt;br /&gt;
&lt;br /&gt;
[45]http://archives.neohapsis.com/archives/postfix/2001-05/1749.html&lt;br /&gt;
&lt;br /&gt;
[46]http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html&lt;br /&gt;
&lt;br /&gt;
[47]http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf&lt;br /&gt;
&lt;br /&gt;
[48]http://lwn.net/Articles/202780/&lt;br /&gt;
&lt;br /&gt;
[49]http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9&lt;br /&gt;
&lt;br /&gt;
==Other Links==&lt;br /&gt;
&lt;br /&gt;
*http://membres.multimania.fr/microfirst/palm/pdb.html - Information on Palm OS&lt;br /&gt;
&lt;br /&gt;
*http://mobile.eric-poncet.com/palm/tutorial/db.html - Tutorial on Palm OS programming&lt;br /&gt;
&lt;br /&gt;
*http://www.letterp.com/~dbg/practical-file-system-design.pdf, Practical File System Design with the Be File System - Dominic Giampaolo&lt;br /&gt;
&lt;br /&gt;
*http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235 - A Chinese article talks about Be,Inc. BeOS and their fate&lt;br /&gt;
&lt;br /&gt;
*http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7 - From BFS to ZFS: past, present, and future of file systems&lt;br /&gt;
&lt;br /&gt;
*http://en.wikipedia.org/wiki/BeOS - BeOS--Wikipedia&lt;br /&gt;
&lt;br /&gt;
*https://docs.google.com/document/d/1MgtOOuggnKvutmqpL2rR8ZD4vuKs9wYObX0ifGujUaA/edit?authkey=COnbkrIB#  Group discussion 10/13/2010&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4243</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4243"/>
		<updated>2010-10-15T00:09:39Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal  computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase  in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system using a database driven file system, each developed to satisfy its individual needs. We will visit five different operating systems that used a database as file system. First, both Palm OS and WinFS implemented a database file system for their operating systems for improve efficiency. NewtonOS was produced to be used on a desktop machine, but evolved into one of the best and most secure PDA operating systems. BeOS was a new operating system and decided to use a database driven file system to leverage both improved efficiency and compability. Lastly, ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux.&lt;br /&gt;
The success of each of these file systems is intrinsically tied to that of its host operating system, and vice versa. One cannot succeed without the other. With that in mind, by closely examining each file system and operating system combination individually, it is clear that none have been successful. We will first examine the trials of Palm OS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf [1]]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf [1]]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications. Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [2]. The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [2]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record[2]. This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf [3]] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html [4]] Its latest release, Garnet version 6, still includes a database based file system. Unlike the Palm OS, WinFS was not as fortunate and leads a different path.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp [5]]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs [6]]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [7]].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [7]], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting[8]]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx [9]], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx[10]] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx [11]] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now [12]] This shows that the team might have had some management problem, which evidently led to the termination of the project. We will now talk about NewtonOS.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton [13]]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html [14]]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html [15]].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html [16]].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys [17]]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [18]]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html [19]][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [20]]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html [20]]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
 **I dont think the sentence with the simpsons part is a good idea because it is not likely for essays to have something like that**&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/ [21]], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/ [22]]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html [23]], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html [24]].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.[http://en.wikipedia.org/wiki/BeOS]&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
BeOS is an operating system that was first developed from scratch in 1991 to run a proprietary hardware. The goal for BeOs was to compete with both Apple and Microsoft, by creating a new platform. Since both Apple and Microsoft were putting considerable effort into covering legacy versions of their systems, BeOs hoped to gain ground through efficiency.[http://www.letterp.com/~dbg/practical-file-system-design.pdf]&lt;br /&gt;
 &lt;br /&gt;
BeOS was designed to be a better use on modern hardware. Compared to Windows and Mac OS, it greatly improved on digital media performance by using modern hardware facilities like symmetric multiprocessing, pervasive multithreading and preemptive multitasking.[http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7] Compared with other modern operating system, pervasive multithreading is allowing the system to better utilize system resources. It also has a simple and clear GUI and powerful command-line interface through BASH shell. However, since the system is not UNIX based, it is also compatible with POSIX. Furthermore, the API of BeOS is developed under C++ which facilitate application development.&lt;br /&gt;
&lt;br /&gt;
But since BeOS is a fully multithreaded system, programs which are written for the system need to be really well programmed in order to stop deadlock or errors from doing multiple simultaneous threads.[http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235] Also not a lot of hardware is supported by BeBox, the machine designed for BeOS.  And maintaining the system is another problem due to database like file system.&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. This is because the system reliability is placed in the hands of the programmer.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
In the mid-1990&#039;s BeOs was pursued by Apple to serve as their new operating system. BeOs demanded a purchase price that Apple was not willing to pay and instead Apple decided  to acquire NeXT and implemented NeXTSTEP OS. BeOs then tried to penetrate the personal computer market but ran into compatibility issues. BeOs needed custom hardware to function correctly. Development ensued to port BeOs onto standard PCs, but ultimately fell flat when Be could not convince any manufacture to use their operating system. This was largely due to restriction and exclusive rights held by Microsoft which blocked BeOs&#039; entry into the market. By 2001, BeOs had failed to obtain even marginal market share and was acquired by Palm to be integrated into Palm OS. An small community driven open source project named Haiku OS has resumed development of BeOs and released Haiku Alpha 2 in May 2010.&lt;br /&gt;
&lt;br /&gt;
And now we will exam ReiserFS.&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these examples of database-like systems, it becomes apparent that despite their potential, each did not live up to its expectations. Since the success of a file system  is tied to that of the operating system, a harmonious relationship must exist between the two. In each case defined above, Palm OS, WinFS, Newton OS, BeOS and ReiserFS, that relationship did not manifest into success. There has not yet been developed a highly flexible design that would be useful on the average system. The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch from a tried and true system to a newer and possibly unstable technology. In the case of database-like file systems, the few implementations that are available to the public are unstable, and therefore an unattractive choice.&lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that database-like stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1]http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf&lt;br /&gt;
&lt;br /&gt;
[2]Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
[3]http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf &lt;br /&gt;
&lt;br /&gt;
[4]http://www.access-company.com/products/platforms/garnet/index.html &lt;br /&gt;
&lt;br /&gt;
[5]http://www.winsupersite.com/showcase/winfs_preview.asp&lt;br /&gt;
&lt;br /&gt;
[6]http://www.slideshare.net/Severus/winfs&lt;br /&gt;
&lt;br /&gt;
[7]http://msdn.microsoft.com/en-US/library/aa480687.aspx&lt;br /&gt;
&lt;br /&gt;
[8]http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting&lt;br /&gt;
&lt;br /&gt;
[9]http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx&lt;br /&gt;
&lt;br /&gt;
[10]http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx&lt;br /&gt;
&lt;br /&gt;
[11]http://msdn.microsoft.com/en-US/library/aa480687.aspx&lt;br /&gt;
&lt;br /&gt;
[12]http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now&lt;br /&gt;
&lt;br /&gt;
[13]http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton&lt;br /&gt;
&lt;br /&gt;
[14]http://www.pencomputing.com/frames/newton_obituary.html&lt;br /&gt;
&lt;br /&gt;
[15]http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html&lt;br /&gt;
&lt;br /&gt;
[16]http://www.pencomputing.com/frames/newton_obituary.html&lt;br /&gt;
&lt;br /&gt;
[17]http://www.youtube.com/watch?v=xc3JzS0K3ys&lt;br /&gt;
&lt;br /&gt;
[18]http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html&lt;br /&gt;
&lt;br /&gt;
[19]http://news.cnet.com/8301-13512_3-9754359-23.html&lt;br /&gt;
&lt;br /&gt;
[20]http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html&lt;br /&gt;
&lt;br /&gt;
[21]http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/&lt;br /&gt;
&lt;br /&gt;
[22]http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/&lt;br /&gt;
&lt;br /&gt;
[23]http://news.cnet.com/2100-1001-206664.html&lt;br /&gt;
&lt;br /&gt;
[24]http://www.apple.com/ca/press/1998/02/NewtonDisco.html&lt;br /&gt;
&lt;br /&gt;
[25]&lt;br /&gt;
&lt;br /&gt;
[26]&lt;br /&gt;
&lt;br /&gt;
[27]&lt;br /&gt;
&lt;br /&gt;
[28]&lt;br /&gt;
&lt;br /&gt;
[29]&lt;br /&gt;
&lt;br /&gt;
[30]&lt;br /&gt;
&lt;br /&gt;
[31]&lt;br /&gt;
&lt;br /&gt;
[32]&lt;br /&gt;
&lt;br /&gt;
[33]&lt;br /&gt;
 Hi Sarah, Can you come on Gtalk , Jean-Benoit. &lt;br /&gt;
 Thank you&lt;br /&gt;
[34]&lt;br /&gt;
&lt;br /&gt;
[35]&lt;br /&gt;
&lt;br /&gt;
[36]&lt;br /&gt;
&lt;br /&gt;
[37]&lt;br /&gt;
&lt;br /&gt;
[38]&lt;br /&gt;
&lt;br /&gt;
[39]&lt;br /&gt;
&lt;br /&gt;
[40]&lt;br /&gt;
&lt;br /&gt;
[41]&lt;br /&gt;
&lt;br /&gt;
[42]&lt;br /&gt;
&lt;br /&gt;
[43]&lt;br /&gt;
&lt;br /&gt;
[44]&lt;br /&gt;
&lt;br /&gt;
[45]&lt;br /&gt;
&lt;br /&gt;
[46]&lt;br /&gt;
&lt;br /&gt;
[47]&lt;br /&gt;
&lt;br /&gt;
[48]&lt;br /&gt;
&lt;br /&gt;
[49]&lt;br /&gt;
&lt;br /&gt;
[50]&lt;br /&gt;
&lt;br /&gt;
[51]&lt;br /&gt;
&lt;br /&gt;
==Other Links==&lt;br /&gt;
&lt;br /&gt;
*http://membres.multimania.fr/microfirst/palm/pdb.html - Information on Palm OS&lt;br /&gt;
&lt;br /&gt;
*http://mobile.eric-poncet.com/palm/tutorial/db.html - Tutorial on Palm OS programming&lt;br /&gt;
&lt;br /&gt;
*http://www.letterp.com/~dbg/practical-file-system-design.pdf, Practical File System Design with the Be File System - Dominic Giampaolo&lt;br /&gt;
&lt;br /&gt;
*http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235 - A Chinese article talks about Be,Inc. BeOS and their fate&lt;br /&gt;
&lt;br /&gt;
*http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7 - From BFS to ZFS: past, present, and future of file systems&lt;br /&gt;
&lt;br /&gt;
*http://en.wikipedia.org/wiki/BeOS - BeOS--Wikipedia&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4149</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4149"/>
		<updated>2010-10-14T22:50:42Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Why */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal  computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase  in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system using a database driven file system, each developed to satisfy its individual needs. We will visit five different operating systems that used a database as file system. First, both Palm OS and WinFS implemented a database file system for their operating systems for improve efficiency. NewtonOS was produced to be used on a desktop machine, but evolved into one of the best and most secure PDA operating systems. BeOS was a new operating system and decided to use a database driven file system to leverage both improved efficiency and compability. Lastly, ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux.&lt;br /&gt;
The success of each of these file systems is intrinsically tied to that of its host operating system, and vice versa. One cannot succeed without the other. With that in mind, by closely examining each file system and operating system combination individually, it is clear that none have been successful. We will first examine the trials of Palm OS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning,[url=http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project. We will now talk about NewtonOS.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
 **I dont think the sentence with the simpsons part is a good idea because it is not likely for essays to have something like that**&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.[http://en.wikipedia.org/wiki/BeOS]&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
BeOS is an operating system that was first developed from scratch in 1991 to run a proprietary hardware. The goal for BeOs was to compete with both Apple and Microsoft, by creating a new platform. Since both Apple and Microsoft were putting considerable effort into covering legacy versions of their systems, BeOs hoped to gain ground through efficiency.[http://www.letterp.com/~dbg/practical-file-system-design.pdf]&lt;br /&gt;
 &lt;br /&gt;
BeOS was designed to be a better use on modern hardware. Compared to Windows and Mac OS, it greatly improved on digital media performance by using modern hardware facilities like symmetric multiprocessing, pervasive multithreading and preemptive multitasking.[http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7] Compared with other modern operating system, pervasive multithreading is allowing the system to better utilize system resources. It also has a simple and clear GUI and powerful command-line interface through BASH shell. However, since the system is not UNIX based, it is also compatible with POSIX. Furthermore, the API of BeOS is developed under C++ which facilitate application development.&lt;br /&gt;
&lt;br /&gt;
But since BeOS is a fully multithreaded system, programs which are written for the system need to be really well programmed in order to stop deadlock or errors from doing multiple simultaneous threads.[http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235] Also not a lot of hardware is supported by BeBox, the machine designed for BeOS.  And maintaining the system is another problem due to database like file system.&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. This is because the system reliability is placed in the hands of the programmer.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
In the mid-1990&#039;s BeOs was pursued by Apple to serve as their new operating system. BeOs demanded a purchase price that Apple was not willing to pay and instead Apple decided  to acquire NeXT and implemented NeXTSTEP OS. BeOs then tried to penetrate the personal computer market but ran into compatibility issues. BeOs needed custom hardware to function correctly. Development ensued to port BeOs onto standard PCs, but ultimately fell flat when Be could not convince any manufacture to use their operating system. This was largely due to restriction and exclusive rights held by Microsoft which blocked BeOs&#039; entry into the market. By 2001, BeOs had failed to obtain even marginal market share and was acquired by Palm to be integrated into Palm OS. An small community driven open source project named Haiku OS has resumed development of BeOs and released Haiku Alpha 2 in May 2010.&lt;br /&gt;
&lt;br /&gt;
And now we will exam ReiserFS.&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these examples of database-like systems, it becomes apparent that despite their potential, each did not live up to its expectations. Since the success of a file system  is tied to that of the operating system, a harmonious relationship must exist between the two. In each case defined above, Palm OS, WinFS, Newton OS, BeOS and ReiserFS, that relationship did not manifest into success. There has not yet been developed a highly flexible design that would be useful on the average system. The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch from a tried and true system to a newer and possibly unstable technology. In the case of database-like file systems, the few implementations that are available to the public are unstable, and therefore an unattractive choice.&lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that database-like stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1]&lt;br /&gt;
&lt;br /&gt;
[2]&lt;br /&gt;
&lt;br /&gt;
[3]&lt;br /&gt;
&lt;br /&gt;
[4]&lt;br /&gt;
&lt;br /&gt;
[5]&lt;br /&gt;
&lt;br /&gt;
[6]&lt;br /&gt;
&lt;br /&gt;
[7]&lt;br /&gt;
&lt;br /&gt;
[8]&lt;br /&gt;
&lt;br /&gt;
[9]&lt;br /&gt;
&lt;br /&gt;
[10]&lt;br /&gt;
&lt;br /&gt;
[11]&lt;br /&gt;
&lt;br /&gt;
[12]&lt;br /&gt;
&lt;br /&gt;
[13]&lt;br /&gt;
&lt;br /&gt;
[14]&lt;br /&gt;
&lt;br /&gt;
[15]&lt;br /&gt;
&lt;br /&gt;
[16]&lt;br /&gt;
&lt;br /&gt;
[17]&lt;br /&gt;
&lt;br /&gt;
[18]&lt;br /&gt;
&lt;br /&gt;
[19]&lt;br /&gt;
&lt;br /&gt;
[20]&lt;br /&gt;
&lt;br /&gt;
[21]&lt;br /&gt;
&lt;br /&gt;
[22]&lt;br /&gt;
&lt;br /&gt;
[23]&lt;br /&gt;
&lt;br /&gt;
[24]&lt;br /&gt;
&lt;br /&gt;
[25]&lt;br /&gt;
&lt;br /&gt;
[26]&lt;br /&gt;
&lt;br /&gt;
[27]&lt;br /&gt;
&lt;br /&gt;
[28]&lt;br /&gt;
&lt;br /&gt;
[29]&lt;br /&gt;
&lt;br /&gt;
[30]&lt;br /&gt;
&lt;br /&gt;
[31]&lt;br /&gt;
&lt;br /&gt;
[32]&lt;br /&gt;
&lt;br /&gt;
[33]&lt;br /&gt;
&lt;br /&gt;
[34]&lt;br /&gt;
&lt;br /&gt;
[35]&lt;br /&gt;
&lt;br /&gt;
[36]&lt;br /&gt;
&lt;br /&gt;
[37]&lt;br /&gt;
&lt;br /&gt;
[38]&lt;br /&gt;
&lt;br /&gt;
[39]&lt;br /&gt;
&lt;br /&gt;
[40]&lt;br /&gt;
&lt;br /&gt;
[41]&lt;br /&gt;
&lt;br /&gt;
[42]&lt;br /&gt;
&lt;br /&gt;
[43]&lt;br /&gt;
&lt;br /&gt;
[44]&lt;br /&gt;
&lt;br /&gt;
[45]&lt;br /&gt;
&lt;br /&gt;
[46]&lt;br /&gt;
&lt;br /&gt;
[47]&lt;br /&gt;
&lt;br /&gt;
[48]&lt;br /&gt;
&lt;br /&gt;
[49]&lt;br /&gt;
&lt;br /&gt;
[50]&lt;br /&gt;
&lt;br /&gt;
[51]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;br /&gt;
&lt;br /&gt;
Practical File System Design with the Be File System, Dominic Giampaolo&lt;br /&gt;
&lt;br /&gt;
http://www.letterp.com/~dbg/practical-file-system-design.pdf&lt;br /&gt;
&lt;br /&gt;
A Chinese article talks about Be,Inc. BeOS and their fate&lt;br /&gt;
&lt;br /&gt;
http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235&lt;br /&gt;
&lt;br /&gt;
From BFS to ZFS: past, present, and future of file systems&lt;br /&gt;
&lt;br /&gt;
http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7&lt;br /&gt;
&lt;br /&gt;
BeOS--Wikipedia&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/BeOS&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_12&amp;diff=4116</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_12&amp;diff=4116"/>
		<updated>2010-10-14T21:48:11Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://portal.acm.org.proxy.library.carleton.ca/citation.cfm?id=364716.364719&amp;amp;coll=Portal&amp;amp;dl=GUIDE&amp;amp;CFID=107313098&amp;amp;CFTOKEN=63043022&lt;br /&gt;
&lt;br /&gt;
http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf &lt;br /&gt;
&lt;br /&gt;
http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php  It looks to be pretty accurate &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ntfs.com/winfs_basics.htm&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/winfs/ The team blog &lt;br /&gt;
&lt;br /&gt;
http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now  &amp;lt;-- If you are bored and want to learn about WinFs, 54 min video. &lt;br /&gt;
&lt;br /&gt;
http://www.splorp.com/newton/faq/newton-faq-nos.html#IIID3c an overview of the Newton OS filesystem to help you out --Rannath&lt;br /&gt;
&lt;br /&gt;
http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7 BeOS --Rannath&lt;br /&gt;
&lt;br /&gt;
I found some other stuff for Palm OS data base, but didn&#039;t find any good yet. &lt;br /&gt;
&lt;br /&gt;
All the above links give good explanation of the subject. I will try to update later.&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I found a little bit more in depth about NewtonOS:&lt;br /&gt;
http://lowendmac.com/orchard/06/john-sculley-newton-origin.html&lt;br /&gt;
&lt;br /&gt;
Also, another name for Palm OS is Garnet OS. I haven&#039;t had time yet to look too much into this, but the wiki has many links to references and to the main site:&lt;br /&gt;
http://en.wikipedia.org/wiki/Palm_OS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edit:&lt;br /&gt;
Since there are 5 database systems listed, and 5 people in the group, we can each pick one to work on. If anyone needs help with the one they pick, holla! Also, if you find another database system you want to work on, just add it to the list and put your name beside it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WinFS -  Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
ReiserFS - Sarah L&lt;br /&gt;
&lt;br /&gt;
Newton OS - Daniel&lt;br /&gt;
&lt;br /&gt;
PalmOS/Garnet OS - Tuan Pham&lt;br /&gt;
&lt;br /&gt;
BeOS - Xi Chen&lt;br /&gt;
&lt;br /&gt;
Other (list)...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-Daniel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Just to check how everybody are going? There is still two people who haven&#039;t picked an FileSystem, is there a problem or you simply didn&#039;t write your name next to it? &lt;br /&gt;
&lt;br /&gt;
Also, for others i found an other database System made by Oracle. It is called : Internet File System.  http://download.oracle.com/docs/html/A90434_01/toc.htm Here a good link to get started.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll probably posted in the page what I have written so far later today.&lt;br /&gt;
&lt;br /&gt;
Also, to keep consistence, I don&#039;t know how you are writing yours, but mine will look something like that : &lt;br /&gt;
Short history of Winfs, predecessor , etc.  (by short i mean roughly 200-300 words)&lt;br /&gt;
Short explanation on how WinFs works.&lt;br /&gt;
It&#039;s fate and Why&lt;br /&gt;
 &lt;br /&gt;
If you have any other idea, please share it. &lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Hey I am curious to how we are going to put all this together, are we each writing an essay for our chosen OS and then edit all the essays into one big one?&lt;br /&gt;
&lt;br /&gt;
-Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I was thinking that we could simply have an introduction to express the general advantages and disadvantages of Database as filesystem, then create &lt;br /&gt;
sections for our different OS. Then at the end a conclusion. &lt;br /&gt;
&lt;br /&gt;
But for that to work, we need most of our essay to be done in the next 2 days or so. Tuesday during the day we would need all the essay to be done so we can edit each other and write introduction + conclusion. &lt;br /&gt;
&lt;br /&gt;
What do you think ? Any idea?&lt;br /&gt;
&lt;br /&gt;
Edit : I just posted what I have so far. If you have any idea to add anything , just let me know. Also, English isn&#039;t my first language, so feel free to fix any of my errors. &lt;br /&gt;
&lt;br /&gt;
I&#039;ll add the reference tomorow&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Yeah i think we should do that but how about the two section that does not have the other group member&#039;s names beside?&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will have to post my part of the project sometime Wednesday (most likely before 2pm). I apologize if this causes some problems for the group, but I have an assignment for another class that needs to be done by Wednesday, and I have little time Tuesday to work on this (work and classes). Here is a little summary of Newton OS to get an idea. I will make sure that by Wednesday afternoon I will have at least a near-finished copy of my work (some input may be required :p ).&lt;br /&gt;
&lt;br /&gt;
Newton OS was used on PDAs and doesn’t have a file system, but instead uses a shallow database system. The OS considers each inserted card, as well as its internal storage, as separate stores. Each store contains either read/write databases or read-only objects. Newton eventually was cancelled and became an Apple subsidiary company, then shortly thereafter was reabsorbed into Apple. Developers from the Newton project helped with the iPod OS and the project may have had a hand in the iPhone’s development.&lt;br /&gt;
&lt;br /&gt;
Edit: I left a notice to the group on the front page. Hopefully the other two members will see the notice. And about the two other sections: If we have at least 3 sections, we should be good, but hopefully we hear word from the other two members...&lt;br /&gt;
&lt;br /&gt;
- Daniel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I just posted what i have so far. I am having difficulties finding the fate and why so if you guys know anything let me know. Also let me know if you have any suggestions for my part.&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
----&lt;br /&gt;
Sorry, I couldn&#039;t post this weekend. I&#039;ll gladly work on MurderFS/ReiserFS, and I can definitely finish before Wednesday afternoon (2ish).&lt;br /&gt;
&lt;br /&gt;
I really like how the WinFS sectioned is structured (although maybe condense the fate/why sections for readability?), it seems easy to follow. I agree we should all use the same sections (with additional subsections if need be). It&#039;ll make it look a lot cleaner/better put together.&lt;br /&gt;
&lt;br /&gt;
- Sarah&lt;br /&gt;
&lt;br /&gt;
Sorry, guys&lt;br /&gt;
Seems like I am the last member of the group, I am now doing works on the BeOS, and some stuff will be posted tonight or tomorrow morning. &lt;br /&gt;
Again, sorry for showing up late.&lt;br /&gt;
&lt;br /&gt;
Xi Chen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hi guys, Luc (lab TA ¬.¬) here, I&#039;m seeing some good collaboration here, but I&#039;m concerned about how coherent the end product will be.  I think you guys need to spend some time working out the central thesis and how the various components will advance that point before everybody goes off to work on their little piece.&lt;br /&gt;
&lt;br /&gt;
--[[User:3maisons|3maisons]] 20:14, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I agree. I believe the prof said today that he wants a thesis and we use the examples (WinFS, ReiserFS, Newton OS, PalmOS/Garnet OS, and BeOS) to prove our argument. So we should discuss a thesis and how to format the essay&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
&lt;br /&gt;
That sounds good, and you guys thinking about meeting up sometime in lab?&lt;br /&gt;
or we can chat through gTalk or the wiki.&lt;br /&gt;
&lt;br /&gt;
ps: my gmail acct is xintai1985@gmail.com&lt;br /&gt;
--Xi Chen&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
It could be a good idea to meet up to put everything together. &lt;br /&gt;
Or atleast use gTalk/msn/ whatever else people would like to use. &lt;br /&gt;
As we only have 2 days remaining, what about tonight ? &lt;br /&gt;
&lt;br /&gt;
And as Tuan said, we would need a thesis subject and then prove why it fails most of the time. &lt;br /&gt;
I&#039;m down to work on it whenever you guys are ready (or so obviously). Just send me an email to : jbout13@hotmail.com &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will be available until 2pm today (Wednesday) and then from 7pm onwards. I think we should discuss the thesis and such tonight (if possible), then finish the essay up after class tomorrow morning. My email is demongyro@gmail.com.&lt;br /&gt;
&lt;br /&gt;
-Daniel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Let&#039;s try to be all around tonight for 7:30 ish ? so we can get thesis and start writing introduction + conclusion and to put everything together.&lt;br /&gt;
&lt;br /&gt;
We either can go to Carleton, or msn / Gmail. (or any other option I forgot) I&#039;m down for both of these.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xintai1985@gmail.com Xi Chen 613-799-5893(in case)&lt;br /&gt;
&lt;br /&gt;
jbout13@hotmail.com Jean-Benoit &lt;br /&gt;
&lt;br /&gt;
demongyro@gmail.com Daniel - on gmail&lt;br /&gt;
&lt;br /&gt;
tuan-pham@hotmail.com Tuan Pham - lets do it over msn/gtalk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edit : Daniel and I are on Gmail, gtalk. &lt;br /&gt;
Add him or me to join the conversation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Guys add my gmail, t.m.pham3@gmail.com - Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php&lt;br /&gt;
http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf&lt;br /&gt;
http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf&lt;br /&gt;
&lt;br /&gt;
so i don&#039;t lose these&lt;br /&gt;
&lt;br /&gt;
Reiser4, Part II: Designing Trees that Cache Well&lt;br /&gt;
Performance Evaluation of Linux File Systems for Data Warehousing Workloads&lt;br /&gt;
&lt;br /&gt;
sarah&lt;br /&gt;
----&lt;br /&gt;
moving this here because i&#039;m a little ocd...&lt;br /&gt;
&lt;br /&gt;
=Note to Group=&lt;br /&gt;
&lt;br /&gt;
=Contact Details=&lt;br /&gt;
Dustin Martin: 613-325-9427 dustin.adam.martin@gmail.com&lt;br /&gt;
&lt;br /&gt;
794-five zero five six Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Wikipedia:Citing_Wikipedia&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_12&amp;diff=4115</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_12&amp;diff=4115"/>
		<updated>2010-10-14T21:47:57Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://portal.acm.org.proxy.library.carleton.ca/citation.cfm?id=364716.364719&amp;amp;coll=Portal&amp;amp;dl=GUIDE&amp;amp;CFID=107313098&amp;amp;CFTOKEN=63043022&lt;br /&gt;
&lt;br /&gt;
http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf &lt;br /&gt;
&lt;br /&gt;
http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php  It looks to be pretty accurate &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ntfs.com/winfs_basics.htm&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/winfs/ The team blog &lt;br /&gt;
&lt;br /&gt;
http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now  &amp;lt;-- If you are bored and want to learn about WinFs, 54 min video. &lt;br /&gt;
&lt;br /&gt;
http://www.splorp.com/newton/faq/newton-faq-nos.html#IIID3c an overview of the Newton OS filesystem to help you out --Rannath&lt;br /&gt;
&lt;br /&gt;
http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7 BeOS --Rannath&lt;br /&gt;
&lt;br /&gt;
I found some other stuff for Palm OS data base, but didn&#039;t find any good yet. &lt;br /&gt;
&lt;br /&gt;
All the above links give good explanation of the subject. I will try to update later.&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I found a little bit more in depth about NewtonOS:&lt;br /&gt;
http://lowendmac.com/orchard/06/john-sculley-newton-origin.html&lt;br /&gt;
&lt;br /&gt;
Also, another name for Palm OS is Garnet OS. I haven&#039;t had time yet to look too much into this, but the wiki has many links to references and to the main site:&lt;br /&gt;
http://en.wikipedia.org/wiki/Palm_OS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edit:&lt;br /&gt;
Since there are 5 database systems listed, and 5 people in the group, we can each pick one to work on. If anyone needs help with the one they pick, holla! Also, if you find another database system you want to work on, just add it to the list and put your name beside it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WinFS -  Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
ReiserFS - Sarah L&lt;br /&gt;
&lt;br /&gt;
Newton OS - Daniel&lt;br /&gt;
&lt;br /&gt;
PalmOS/Garnet OS - Tuan Pham&lt;br /&gt;
&lt;br /&gt;
BeOS - Xi Chen&lt;br /&gt;
&lt;br /&gt;
Other (list)...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-Daniel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Just to check how everybody are going? There is still two people who haven&#039;t picked an FileSystem, is there a problem or you simply didn&#039;t write your name next to it? &lt;br /&gt;
&lt;br /&gt;
Also, for others i found an other database System made by Oracle. It is called : Internet File System.  http://download.oracle.com/docs/html/A90434_01/toc.htm Here a good link to get started.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll probably posted in the page what I have written so far later today.&lt;br /&gt;
&lt;br /&gt;
Also, to keep consistence, I don&#039;t know how you are writing yours, but mine will look something like that : &lt;br /&gt;
Short history of Winfs, predecessor , etc.  (by short i mean roughly 200-300 words)&lt;br /&gt;
Short explanation on how WinFs works.&lt;br /&gt;
It&#039;s fate and Why&lt;br /&gt;
 &lt;br /&gt;
If you have any other idea, please share it. &lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Hey I am curious to how we are going to put all this together, are we each writing an essay for our chosen OS and then edit all the essays into one big one?&lt;br /&gt;
&lt;br /&gt;
-Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I was thinking that we could simply have an introduction to express the general advantages and disadvantages of Database as filesystem, then create &lt;br /&gt;
sections for our different OS. Then at the end a conclusion. &lt;br /&gt;
&lt;br /&gt;
But for that to work, we need most of our essay to be done in the next 2 days or so. Tuesday during the day we would need all the essay to be done so we can edit each other and write introduction + conclusion. &lt;br /&gt;
&lt;br /&gt;
What do you think ? Any idea?&lt;br /&gt;
&lt;br /&gt;
Edit : I just posted what I have so far. If you have any idea to add anything , just let me know. Also, English isn&#039;t my first language, so feel free to fix any of my errors. &lt;br /&gt;
&lt;br /&gt;
I&#039;ll add the reference tomorow&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Yeah i think we should do that but how about the two section that does not have the other group member&#039;s names beside?&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will have to post my part of the project sometime Wednesday (most likely before 2pm). I apologize if this causes some problems for the group, but I have an assignment for another class that needs to be done by Wednesday, and I have little time Tuesday to work on this (work and classes). Here is a little summary of Newton OS to get an idea. I will make sure that by Wednesday afternoon I will have at least a near-finished copy of my work (some input may be required :p ).&lt;br /&gt;
&lt;br /&gt;
Newton OS was used on PDAs and doesn’t have a file system, but instead uses a shallow database system. The OS considers each inserted card, as well as its internal storage, as separate stores. Each store contains either read/write databases or read-only objects. Newton eventually was cancelled and became an Apple subsidiary company, then shortly thereafter was reabsorbed into Apple. Developers from the Newton project helped with the iPod OS and the project may have had a hand in the iPhone’s development.&lt;br /&gt;
&lt;br /&gt;
Edit: I left a notice to the group on the front page. Hopefully the other two members will see the notice. And about the two other sections: If we have at least 3 sections, we should be good, but hopefully we hear word from the other two members...&lt;br /&gt;
&lt;br /&gt;
- Daniel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I just posted what i have so far. I am having difficulties finding the fate and why so if you guys know anything let me know. Also let me know if you have any suggestions for my part.&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
----&lt;br /&gt;
Sorry, I couldn&#039;t post this weekend. I&#039;ll gladly work on MurderFS/ReiserFS, and I can definitely finish before Wednesday afternoon (2ish).&lt;br /&gt;
&lt;br /&gt;
I really like how the WinFS sectioned is structured (although maybe condense the fate/why sections for readability?), it seems easy to follow. I agree we should all use the same sections (with additional subsections if need be). It&#039;ll make it look a lot cleaner/better put together.&lt;br /&gt;
&lt;br /&gt;
- Sarah&lt;br /&gt;
&lt;br /&gt;
Sorry, guys&lt;br /&gt;
Seems like I am the last member of the group, I am now doing works on the BeOS, and some stuff will be posted tonight or tomorrow morning. &lt;br /&gt;
Again, sorry for showing up late.&lt;br /&gt;
&lt;br /&gt;
Xi Chen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hi guys, Luc (lab TA ¬.¬) here, I&#039;m seeing some good collaboration here, but I&#039;m concerned about how coherent the end product will be.  I think you guys need to spend some time working out the central thesis and how the various components will advance that point before everybody goes off to work on their little piece.&lt;br /&gt;
&lt;br /&gt;
--[[User:3maisons|3maisons]] 20:14, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I agree. I believe the prof said today that he wants a thesis and we use the examples (WinFS, ReiserFS, Newton OS, PalmOS/Garnet OS, and BeOS) to prove our argument. So we should discuss a thesis and how to format the essay&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
&lt;br /&gt;
That sounds good, and you guys thinking about meeting up sometime in lab?&lt;br /&gt;
or we can chat through gTalk or the wiki.&lt;br /&gt;
&lt;br /&gt;
ps: my gmail acct is xintai1985@gmail.com&lt;br /&gt;
--Xi Chen&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
It could be a good idea to meet up to put everything together. &lt;br /&gt;
Or atleast use gTalk/msn/ whatever else people would like to use. &lt;br /&gt;
As we only have 2 days remaining, what about tonight ? &lt;br /&gt;
&lt;br /&gt;
And as Tuan said, we would need a thesis subject and then prove why it fails most of the time. &lt;br /&gt;
I&#039;m down to work on it whenever you guys are ready (or so obviously). Just send me an email to : jbout13@hotmail.com &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will be available until 2pm today (Wednesday) and then from 7pm onwards. I think we should discuss the thesis and such tonight (if possible), then finish the essay up after class tomorrow morning. My email is demongyro@gmail.com.&lt;br /&gt;
&lt;br /&gt;
-Daniel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Let&#039;s try to be all around tonight for 7:30 ish ? so we can get thesis and start writing introduction + conclusion and to put everything together.&lt;br /&gt;
&lt;br /&gt;
We either can go to Carleton, or msn / Gmail. (or any other option I forgot) I&#039;m down for both of these.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xintai1985@gmail.com Xi Chen 613-799-5893(in case)&lt;br /&gt;
&lt;br /&gt;
jbout13@hotmail.com Jean-Benoit &lt;br /&gt;
&lt;br /&gt;
demongyro@gmail.com Daniel - on gmail&lt;br /&gt;
&lt;br /&gt;
tuan-pham@hotmail.com Tuan Pham - lets do it over msn/gtalk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edit : Daniel and I are on Gmail, gtalk. &lt;br /&gt;
Add him or me to join the conversation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Guys add my gmail, t.m.pham3@gmail.com - Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php&lt;br /&gt;
http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf&lt;br /&gt;
http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf&lt;br /&gt;
&lt;br /&gt;
so i don&#039;t lose these&lt;br /&gt;
&lt;br /&gt;
Reiser4, Part II: Designing Trees that Cache Well&lt;br /&gt;
Performance Evaluation of Linux File Systems for Data Warehousing Workloads&lt;br /&gt;
&lt;br /&gt;
sarah&lt;br /&gt;
----&lt;br /&gt;
moving this here because i&#039;m a little ocd...&lt;br /&gt;
&lt;br /&gt;
=Note to Group=&lt;br /&gt;
&lt;br /&gt;
=Contact Details=&lt;br /&gt;
Dustin Martin: 613-325-9427 dustin.adam.martin@gmail.com&lt;br /&gt;
794-five zero five six Jean-Benoi t &lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Wikipedia:Citing_Wikipedia&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4056</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4056"/>
		<updated>2010-10-14T20:17:44Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal  computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase  in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system using a database driven file system, each developed to satisfy its individual needs. We will visit five different operating systems that used a database as file system. First, both Palm OS and WinFS implemented a database file system for their operating systems for improve efficiency. NewtonOS was produced to be used on a desktop machine, but evolved into one of the best and most secure PDA operating systems. BeOS was a new operating system and decided to use a database driven file system to leverage both improved efficiency and compability. Lastly, ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux.&lt;br /&gt;
The success of each of these file systems is intrinsically tied to that of its host operating system, and vice versa. One cannot succeed without the other. With that in mind, by closely examining each file system and operating system combination individually, it is clear that none have been successful. We will first examine the trials of Palm OS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning,&amp;lt;ref&amp;gt;[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]&amp;lt;/ref&amp;gt;. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
 **I dont think the sentence with the simpsons part is a good idea because it is not likely for essays to have something like that**&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.[http://en.wikipedia.org/wiki/BeOS]&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
BeOS is an operating system that was first developed from scratch in 1991 to run a proprietary hardware. The goal for BeOs was to compete with both Apple and Microsoft, by creating a new platform. Since both Apple and Microsoft were putting considerable effort into covering legacy versions of their systems, BeOs hoped to gain ground through efficiency.[http://www.letterp.com/~dbg/practical-file-system-design.pdf]&lt;br /&gt;
 &lt;br /&gt;
BeOS was designed to be a better use on modern hardware. Compared to Windows and Mac OS, it greatly improved on digital media performance by using modern hardware facilities like symmetric multiprocessing, pervasive multithreading and preemptive multitasking.[http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7] Compared with other modern operating system, pervasive multithreading is allowing the system to better utilize system resources. It also has a simple and clear GUI and powerful command-line interface through BASH shell. However, since the system is not UNIX based, it is also compatible with POSIX. Furthermore, the API of BeOS is developed under C++ which facilitate application development.&lt;br /&gt;
&lt;br /&gt;
But since BeOS is a fully multithreaded system, programs which are written for the system need to be really well programmed in order to stop deadlock or errors from doing multiple simultaneous threads.[http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235] Also not a lot of hardware is supported by BeBox, the machine designed for BeOS.  And maintaining the system is another problem due to database like file system.&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. This is because the system reliability is placed in the hands of the programmer.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
In the mid-1990&#039;s BeOs was pursued by Apple to serve as their new operating system. BeOs demanded a purchase price that Apple was not willing to pay and instead Apple decided  to acquire NeXT and implemented NeXTSTEP OS. BeOs then tried to penetrate the personal computer market but ran into compatibility issues. BeOs needed custom hardware to function correctly. Development ensued to port BeOs onto standard PCs, but ultimately fell flat when Be could not convince any manufacture to use their operating system. This was largely due to restriction and exclusive rights held by Microsoft which blocked BeOs&#039; entry into the market. By 2001, BeOs had failed to obtain even marginal market share and was acquired by Palm to be integrated into Palm OS. An small community driven open source project named Haiku OS has resumed development of BeOs and released Haiku Alpha 2 in May 2010.&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at these database-like systems that were examined, it becomes apparent that despite their potential, each did not live up to its expectations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
y useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;br /&gt;
&lt;br /&gt;
Practical File System Design with the Be File System, Dominic Giampaolo&lt;br /&gt;
&lt;br /&gt;
http://www.letterp.com/~dbg/practical-file-system-design.pdf&lt;br /&gt;
&lt;br /&gt;
A Chinese article talks about Be,Inc. BeOS and their fate&lt;br /&gt;
&lt;br /&gt;
http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235&lt;br /&gt;
&lt;br /&gt;
From BFS to ZFS: past, present, and future of file systems&lt;br /&gt;
&lt;br /&gt;
http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7&lt;br /&gt;
&lt;br /&gt;
BeOS--Wikipedia&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/BeOS&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4052</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4052"/>
		<updated>2010-10-14T20:14:00Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal  computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase  in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system using a database driven file system, each developed to satisfy its individual needs. We will visit five different operating systems that used a database as file system. First, both Palm OS and WinFS implemented a database file system for their operating systems for improve efficiency. NewtonOS was produced to be used on a desktop machine, but evolved into one of the best and most secure PDA operating systems. BeOS was a new operating system and decided to use a database driven file system to leverage both improved efficiency and compability. Lastly, ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux.&lt;br /&gt;
The success of each of these file systems is intrinsically tied to that of its host operating system, and vice versa. One cannot succeed without the other. With that in mind, by closely examining each file system and operating system combination individually, it is clear that none have been successful. We will first examine the trials of Palm OS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning,&amp;lt;ref&amp;gt;[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]&amp;lt;/ref&amp;gt;. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
 **I dont think the sentence with the simpsons part is a good idea because it is not likely for essays to have something like that**&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.[http://en.wikipedia.org/wiki/BeOS]&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
BeOS is an operating system that was first developed from scratch in 1991 to run a proprietary hardware. The goal for BeOs was to compete with both Apple and Microsoft, by creating a new platform. Since both Apple and Microsoft were putting considerable effort into covering legacy versions of their systems, BeOs hoped to gain ground through efficiency.[http://www.letterp.com/~dbg/practical-file-system-design.pdf]&lt;br /&gt;
 &lt;br /&gt;
BeOS was designed to be a better use on modern hardware. Compared to Windows and Mac OS, it greatly improved on digital media performance by using modern hardware facilities like symmetric multiprocessing, pervasive multithreading and preemptive multitasking.[http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7] Compared with other modern operating system, pervasive multithreading is allowing the system to better utilize system resources. It also has a simple and clear GUI and powerful command-line interface through BASH shell. However, since the system is not UNIX based, it is also compatible with POSIX. Furthermore, the API of BeOS is developed under C++ which facilitate application development.&lt;br /&gt;
&lt;br /&gt;
But since BeOS is a fully multithreaded system, programs which are written for the system need to be really well programmed in order to stop deadlock or errors from doing multiple simultaneous threads.[http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235] Also not a lot of hardware is supported by BeBox, the machine designed for BeOS.  And maintaining the system is another problem due to database like file system.&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. This is because the system reliability is placed in the hands of the programmer.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
In the mid-1990&#039;s BeOs was pursued by Apple to serve as their new operating system. BeOs demanded a purchase price that Apple was not willing to pay and instead Apple decided  to acquire NeXT and implemented NeXTSTEP OS. BeOs then tried to penetrate the personal computer market but ran into compatibility issues. BeOs needed custom hardware to function correctly. Development ensued to port BeOs onto standard PCs, but ultimately fell flat when Be could not convince any manufacture to use their operating system. This was largely due to restriction and exclusive rights held by Microsoft which blocked BeOs&#039; entry into the market. By 2001, BeOs had failed to obtain even marginal market share and was acquired by Palm to be integrated into Palm OS. An small community driven open source project named Haiku OS has resumed development of BeOs and released Haiku Alpha 2 in May 2010.&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at these database-like systems that were examined, it becomes apparent that despite their potential, each did not live up to its expectations. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
y useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;br /&gt;
&lt;br /&gt;
Practical File System Design with the Be File System, Dominic Giampaolo&lt;br /&gt;
&lt;br /&gt;
http://www.letterp.com/~dbg/practical-file-system-design.pdf&lt;br /&gt;
&lt;br /&gt;
A Chinese article talks about Be,Inc. BeOS and their fate&lt;br /&gt;
&lt;br /&gt;
http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235&lt;br /&gt;
&lt;br /&gt;
From BFS to ZFS: past, present, and future of file systems&lt;br /&gt;
&lt;br /&gt;
http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7&lt;br /&gt;
&lt;br /&gt;
BeOS--Wikipedia&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/BeOS&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4010</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=4010"/>
		<updated>2010-10-14T19:46:43Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
&lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, and web servers. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, or file systems that function as databases of objects [http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_11].&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of object stores in the real world, all chosen for certain features that made sense in that application. For PalmOS and NewtonOS, the security and modularity object stores provided was an attractive fit for mobile devices. Windows was drawn to object stores because of the possible speed increases, and so they developed WinFS. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. &lt;br /&gt;
&lt;br /&gt;
Object stores have caught on in a few niche applications, mostly scientific. However, this technology is in its infancy, still trying to engineer issues that are arising while implementing the concept. Combined with issues with management that surround most attempts at creating an object store, it is clear that object stores are a long way off from becoming a common file system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 What about something like this ? &lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal  computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase  in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system that use a database as file system  , all chosen for certain features that made sense in that application. We’ll visit five different operating systems that used a database as file system. Both Palm OS and WinFS implemented a database file system for their operating systems for improve efficiency. NewtonOS was produced to be used on a desktop machine, but evolved into one of the best and most secure PDA operating systems. BeOS was a new operating system and decided to use a database driven file system to leverage both improved efficiency and compability. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. We will first examine the trials of Palm OS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS does not use a relational or XML database[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Instead Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
 **I dont think the sentence with the simpsons part is a good idea because it is not likely for essays to have something like that**&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
	BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
BeOS is an operating system that was first developed from scratch in 1991 to run a proprietary hardware. The goal for BeOs was to compete with both Apple and Microsoft, by creating a new platform. Since both Apple and Microsoft were putting considerable effort into covering legacy versions of their systems, BeOs hoped to gain ground through efficiency.[http://www.letterp.com/~dbg/practical-file-system-design.pdf]&lt;br /&gt;
 &lt;br /&gt;
BeOS was designed to be a better use on modern hardware. Compared to Windows and Mac OS, it greatly improved on digital media performance by using modern hardware facilities like symmetric multiprocessing, pervasive multithreading and preemptive multitasking. Compared with other modern operating system, pervasive multithreading is allowing the system to better utilize system resources. It also has a simple and clear GUI and powerful command-line interface through BASH shell. However, since the system is not UNIX based, it is also compatible with POSIX. Furthermore, the API of BeOS is developed under C++ which facilitate application development.&lt;br /&gt;
&lt;br /&gt;
But since BeOS is a fully multithreaded system, programs which are written for the system need to be really well programmed in order to stop deadlock or errors from doing multiple simultaneous threads.[http://translate.google.com/translate?hl=en&amp;amp;sl=zh-CN&amp;amp;tl=en&amp;amp;u=http://www.techcn.com.cn/index.php%3Fdoc-view-135996%235] Also not a lot of hardware is supported by BeBox, the machine designed for BeOS.  And maintaining the system is another problem due to database like file system.&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. This is because the system reliability is placed in the hands of the programmer.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
In the mid-1990&#039;s BeOs was pursued by Apple to serve as their new operating system. BeOs demanded a purchase price that Apple was not willing to pay and instead Apple decided  to acquire NeXT and implemented NeXTSTEP OS. BeOs then tried to penetrate the personal computer market but ran into compatibility issues. BeOs needed custom hardware to function correctly. Development ensued to port BeOs onto standard PCs, but ultimately fell flat when Be could not convince any manufacture to use their operating system. This was largely due to restriction and exclusive rights held by Microsoft which blocked BeOs&#039; entry into the market. By 2001, BeOs had failed to obtain even marginal market share and was acquired by Palm to be integrated into Palm OS. An small community driven open source project named Haiku OS has resumed development of BeOs and released Haiku Alpha 2 in May 2010.&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_12&amp;diff=3966</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_12&amp;diff=3966"/>
		<updated>2010-10-14T19:02:51Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://portal.acm.org.proxy.library.carleton.ca/citation.cfm?id=364716.364719&amp;amp;coll=Portal&amp;amp;dl=GUIDE&amp;amp;CFID=107313098&amp;amp;CFTOKEN=63043022&lt;br /&gt;
&lt;br /&gt;
http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf &lt;br /&gt;
&lt;br /&gt;
http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php  It looks to be pretty accurate &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.ntfs.com/winfs_basics.htm&lt;br /&gt;
&lt;br /&gt;
http://blogs.msdn.com/b/winfs/ The team blog &lt;br /&gt;
&lt;br /&gt;
http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now  &amp;lt;-- If you are bored and want to learn about WinFs, 54 min video. &lt;br /&gt;
&lt;br /&gt;
http://www.splorp.com/newton/faq/newton-faq-nos.html#IIID3c an overview of the Newton OS filesystem to help you out --Rannath&lt;br /&gt;
&lt;br /&gt;
http://arstechnica.com/hardware/news/2008/03/past-present-future-file-systems.ars/7 BeOS --Rannath&lt;br /&gt;
&lt;br /&gt;
I found some other stuff for Palm OS data base, but didn&#039;t find any good yet. &lt;br /&gt;
&lt;br /&gt;
All the above links give good explanation of the subject. I will try to update later.&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I found a little bit more in depth about NewtonOS:&lt;br /&gt;
http://lowendmac.com/orchard/06/john-sculley-newton-origin.html&lt;br /&gt;
&lt;br /&gt;
Also, another name for Palm OS is Garnet OS. I haven&#039;t had time yet to look too much into this, but the wiki has many links to references and to the main site:&lt;br /&gt;
http://en.wikipedia.org/wiki/Palm_OS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edit:&lt;br /&gt;
Since there are 5 database systems listed, and 5 people in the group, we can each pick one to work on. If anyone needs help with the one they pick, holla! Also, if you find another database system you want to work on, just add it to the list and put your name beside it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WinFS -  Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
ReiserFS - Sarah L&lt;br /&gt;
&lt;br /&gt;
Newton OS - Daniel&lt;br /&gt;
&lt;br /&gt;
PalmOS/Garnet OS - Tuan Pham&lt;br /&gt;
&lt;br /&gt;
BeOS - Xi Chen&lt;br /&gt;
&lt;br /&gt;
Other (list)...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-Daniel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Just to check how everybody are going? There is still two people who haven&#039;t picked an FileSystem, is there a problem or you simply didn&#039;t write your name next to it? &lt;br /&gt;
&lt;br /&gt;
Also, for others i found an other database System made by Oracle. It is called : Internet File System.  http://download.oracle.com/docs/html/A90434_01/toc.htm Here a good link to get started.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll probably posted in the page what I have written so far later today.&lt;br /&gt;
&lt;br /&gt;
Also, to keep consistence, I don&#039;t know how you are writing yours, but mine will look something like that : &lt;br /&gt;
Short history of Winfs, predecessor , etc.  (by short i mean roughly 200-300 words)&lt;br /&gt;
Short explanation on how WinFs works.&lt;br /&gt;
It&#039;s fate and Why&lt;br /&gt;
 &lt;br /&gt;
If you have any other idea, please share it. &lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Hey I am curious to how we are going to put all this together, are we each writing an essay for our chosen OS and then edit all the essays into one big one?&lt;br /&gt;
&lt;br /&gt;
-Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I was thinking that we could simply have an introduction to express the general advantages and disadvantages of Database as filesystem, then create &lt;br /&gt;
sections for our different OS. Then at the end a conclusion. &lt;br /&gt;
&lt;br /&gt;
But for that to work, we need most of our essay to be done in the next 2 days or so. Tuesday during the day we would need all the essay to be done so we can edit each other and write introduction + conclusion. &lt;br /&gt;
&lt;br /&gt;
What do you think ? Any idea?&lt;br /&gt;
&lt;br /&gt;
Edit : I just posted what I have so far. If you have any idea to add anything , just let me know. Also, English isn&#039;t my first language, so feel free to fix any of my errors. &lt;br /&gt;
&lt;br /&gt;
I&#039;ll add the reference tomorow&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Yeah i think we should do that but how about the two section that does not have the other group member&#039;s names beside?&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will have to post my part of the project sometime Wednesday (most likely before 2pm). I apologize if this causes some problems for the group, but I have an assignment for another class that needs to be done by Wednesday, and I have little time Tuesday to work on this (work and classes). Here is a little summary of Newton OS to get an idea. I will make sure that by Wednesday afternoon I will have at least a near-finished copy of my work (some input may be required :p ).&lt;br /&gt;
&lt;br /&gt;
Newton OS was used on PDAs and doesn’t have a file system, but instead uses a shallow database system. The OS considers each inserted card, as well as its internal storage, as separate stores. Each store contains either read/write databases or read-only objects. Newton eventually was cancelled and became an Apple subsidiary company, then shortly thereafter was reabsorbed into Apple. Developers from the Newton project helped with the iPod OS and the project may have had a hand in the iPhone’s development.&lt;br /&gt;
&lt;br /&gt;
Edit: I left a notice to the group on the front page. Hopefully the other two members will see the notice. And about the two other sections: If we have at least 3 sections, we should be good, but hopefully we hear word from the other two members...&lt;br /&gt;
&lt;br /&gt;
- Daniel&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I just posted what i have so far. I am having difficulties finding the fate and why so if you guys know anything let me know. Also let me know if you have any suggestions for my part.&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
----&lt;br /&gt;
Sorry, I couldn&#039;t post this weekend. I&#039;ll gladly work on MurderFS/ReiserFS, and I can definitely finish before Wednesday afternoon (2ish).&lt;br /&gt;
&lt;br /&gt;
I really like how the WinFS sectioned is structured (although maybe condense the fate/why sections for readability?), it seems easy to follow. I agree we should all use the same sections (with additional subsections if need be). It&#039;ll make it look a lot cleaner/better put together.&lt;br /&gt;
&lt;br /&gt;
- Sarah&lt;br /&gt;
&lt;br /&gt;
Sorry, guys&lt;br /&gt;
Seems like I am the last member of the group, I am now doing works on the BeOS, and some stuff will be posted tonight or tomorrow morning. &lt;br /&gt;
Again, sorry for showing up late.&lt;br /&gt;
&lt;br /&gt;
Xi Chen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hi guys, Luc (lab TA ¬.¬) here, I&#039;m seeing some good collaboration here, but I&#039;m concerned about how coherent the end product will be.  I think you guys need to spend some time working out the central thesis and how the various components will advance that point before everybody goes off to work on their little piece.&lt;br /&gt;
&lt;br /&gt;
--[[User:3maisons|3maisons]] 20:14, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I agree. I believe the prof said today that he wants a thesis and we use the examples (WinFS, ReiserFS, Newton OS, PalmOS/Garnet OS, and BeOS) to prove our argument. So we should discuss a thesis and how to format the essay&lt;br /&gt;
&lt;br /&gt;
- Tuan Pham&lt;br /&gt;
&lt;br /&gt;
That sounds good, and you guys thinking about meeting up sometime in lab?&lt;br /&gt;
or we can chat through gTalk or the wiki.&lt;br /&gt;
&lt;br /&gt;
ps: my gmail acct is xintai1985@gmail.com&lt;br /&gt;
--Xi Chen&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
It could be a good idea to meet up to put everything together. &lt;br /&gt;
Or atleast use gTalk/msn/ whatever else people would like to use. &lt;br /&gt;
As we only have 2 days remaining, what about tonight ? &lt;br /&gt;
&lt;br /&gt;
And as Tuan said, we would need a thesis subject and then prove why it fails most of the time. &lt;br /&gt;
I&#039;m down to work on it whenever you guys are ready (or so obviously). Just send me an email to : jbout13@hotmail.com &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I will be available until 2pm today (Wednesday) and then from 7pm onwards. I think we should discuss the thesis and such tonight (if possible), then finish the essay up after class tomorrow morning. My email is demongyro@gmail.com.&lt;br /&gt;
&lt;br /&gt;
-Daniel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Let&#039;s try to be all around tonight for 7:30 ish ? so we can get thesis and start writing introduction + conclusion and to put everything together.&lt;br /&gt;
&lt;br /&gt;
We either can go to Carleton, or msn / Gmail. (or any other option I forgot) I&#039;m down for both of these.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xintai1985@gmail.com Xi Chen 613-799-5893(in case)&lt;br /&gt;
&lt;br /&gt;
jbout13@hotmail.com Jean-Benoit &lt;br /&gt;
&lt;br /&gt;
demongyro@gmail.com Daniel - on gmail&lt;br /&gt;
&lt;br /&gt;
tuan-pham@hotmail.com Tuan Pham - lets do it over msn/gtalk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edit : Daniel and I are on Gmail, gtalk. &lt;br /&gt;
Add him or me to join the conversation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Guys add my gmail, t.m.pham3@gmail.com - Tuan Pham&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php&lt;br /&gt;
http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf&lt;br /&gt;
http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf&lt;br /&gt;
&lt;br /&gt;
so i don&#039;t lose these&lt;br /&gt;
&lt;br /&gt;
Reiser4, Part II: Designing Trees that Cache Well&lt;br /&gt;
Performance Evaluation of Linux File Systems for Data Warehousing Workloads&lt;br /&gt;
&lt;br /&gt;
sarah&lt;br /&gt;
----&lt;br /&gt;
moving this here because i&#039;m a little ocd...&lt;br /&gt;
&lt;br /&gt;
=Note to Group=&lt;br /&gt;
&lt;br /&gt;
=Contact Details=&lt;br /&gt;
Dustin Martin: 613-325-9427 dustin.adam.martin@gmail.com&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Wikipedia:Citing_Wikipedia&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3963</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3963"/>
		<updated>2010-10-14T19:01:50Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
&lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, and web servers. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, or file systems that function as databases of objects [http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_11].&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of object stores in the real world, all chosen for certain features that made sense in that application. For PalmOS and NewtonOS, the security and modularity object stores provided was an attractive fit for mobile devices. Windows was drawn to object stores because of the possible speed increases, and so they developed WinFS. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. &lt;br /&gt;
&lt;br /&gt;
Object stores have caught on in a few niche applications, mostly scientific. However, this technology is in its infancy, still trying to engineer issues that are arising while implementing the concept. Combined with issues with management that surround most attempts at creating an object store, it is clear that object stores are a long way off from becoming a common file system.&lt;br /&gt;
&lt;br /&gt;
 **For the last two paragraphs did you mean database-like stores?**&lt;br /&gt;
&lt;br /&gt;
 What about something like this ? &lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal  computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase  in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system that use a database as file system  , all chosen for certain features that made sense in that application. We’ll visit five different operating systems that used a database as file system. Both Palm OS and WinFS implemented a database file system for their operating systems for improve efficiency. NewtonOS was produced to be used on a desktop machine, but evolved into one of the best and most secure PDA operating systems. BeOS was a new operating system and decided to use a database driven file system to leverage both improved efficiency and compability. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. We will first examine the trials of Palm OS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS does not use a relational or XML database[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Instead Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
 **I dont think the sentence with the simpsons part is a good idea because it is not likely for essays to have something like that**&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
	BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
Be OS is a brand new operating system, which is made from scratch. The idea is that, since both Apple and Microsoft, when they are developing a new platform,  are putting a lot of efforts on covering legacy versions of the systems. &lt;br /&gt;
Be OS has a better use on modern hardware. Compare to Windows and Mac OS, it gives a way better performance on digital media work by using modern hardware facilities like symmetric multiprocessing, pervasive multithreading and preemptive multitasking. Compare to what people use right now, pervasive multithreading is allowing the system to utilize system resources better. It also has a simple and clear GUI and really powerful command-line interface through BASH shell, but since the system is not a UNIX based system, it also compatible with POSIX. The API of Be OS is developed under C++ which is easy to program.&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. Because, system reliability is placed in the hands of the programmer, BeOs&#039;s multithreading capability is a potential cause for concern especially when combined with a slow access file system.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
Ultimately, BeOS was acquired by Palm&lt;br /&gt;
&lt;br /&gt;
BeOs &lt;br /&gt;
&lt;br /&gt;
ktop users and a competitor to Mac OS and Microsoft Windows. However, it was ultimately unable to achieve a significant market share and proved commercially unviable for Be Inc. The company was acquired by Palm Inc. and today BeOS is mainly used and developed by a small population of enthusiasts.&lt;br /&gt;
The open-source OS Haiku is designed to start up where BeOS left off. Alpha 2 of Haiku was released in May 2010.[1]&lt;br /&gt;
&lt;br /&gt;
Microsoft execlusive lisence with hardware manufacture made harder to enter the market&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3944</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3944"/>
		<updated>2010-10-14T18:49:57Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
&lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, and web servers. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, or file systems that function as databases of objects [http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_11].&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of object stores in the real world, all chosen for certain features that made sense in that application. For PalmOS and NewtonOS, the security and modularity object stores provided was an attractive fit for mobile devices. Windows was drawn to object stores because of the possible speed increases, and so they developed WinFS. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. &lt;br /&gt;
&lt;br /&gt;
Object stores have caught on in a few niche applications, mostly scientific. However, this technology is in its infancy, still trying to engineer issues that are arising while implementing the concept. Combined with issues with management that surround most attempts at creating an object store, it is clear that object stores are a long way off from becoming a common file system.&lt;br /&gt;
&lt;br /&gt;
 **For the last two paragraphs did you mean database-like stores?**&lt;br /&gt;
&lt;br /&gt;
 What about something like this ? &lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal  computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase  in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system that use a database as file system  , all chosen for certain features that made sense in that application. We’ll visit 5 differents operating systems that used a database as file system. First palmOS used database mainly for efficiently. WinFS was a file system for the operating system Windows that used database for efficiently too. NewtonOS was produced to be used on a desktop machine, but then became one of the best operating system for pda with a very good security. BeOS was a new operating system and decided to use a database for file system because of efficiently and for compability reason. ReiserFS was more of an experience that turned into a new file system using database. We will first examine the trials of PalmOS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS does not use a relational or XML database[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Instead Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
 **I dont think the sentence with the simpsons part is a good idea because it is not likely for essays to have something like that**&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
	BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. Because, system reliability is placed in the hands of the programmer, BeOs&#039;s multithreading capability is a potential cause for concern especially when combined with a slow access file system.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
The fate of BeOS &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Microsoft execlusive lisence with hardware manufacture made harder to enter the market&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3942</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3942"/>
		<updated>2010-10-14T18:49:00Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
&lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, and web servers. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, or file systems that function as databases of objects [http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_11].&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of object stores in the real world, all chosen for certain features that made sense in that application. For PalmOS and NewtonOS, the security and modularity object stores provided was an attractive fit for mobile devices. Windows was drawn to object stores because of the possible speed increases, and so they developed WinFS. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. &lt;br /&gt;
&lt;br /&gt;
Object stores have caught on in a few niche applications, mostly scientific. However, this technology is in its infancy, still trying to engineer issues that are arising while implementing the concept. Combined with issues with management that surround most attempts at creating an object store, it is clear that object stores are a long way off from becoming a common file system.&lt;br /&gt;
&lt;br /&gt;
 **For the last two paragraphs did you mean database-like stores?**&lt;br /&gt;
&lt;br /&gt;
 **What about something like this ? &lt;br /&gt;
&lt;br /&gt;
 **There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system that use a database as file system  , all chosen for certain features that made sense in that application. We’ll visit 5 differents operating systems that used a database as file system. First palmOS used database mainly for efficiently. WinFS was a file system for the operating system Windows that used database for efficiently too. NewtonOS was produced to be used on a desktop machine, but then became one of the best operating system for pda with a very good security. BeOS was a new operating system and decided to use a database for file system because of efficiently and for compability reason. ReiserFS was more of an experience that turned into a new file system using database. We will first examine the trials of PalmOS.**&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS does not use a relational or XML database[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Instead Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
 **I dont think the sentence with the simpsons part is a good idea because it is not likely for essays to have something like that**&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
	BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. Because, system reliability is placed in the hands of the programmer, BeOs&#039;s multithreading capability is a potential cause for concern especially when combined with a slow access file system.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
The fate of BeOS &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Microsoft execlusive lisence with hardware manufacture made harder to enter the market&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3941</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3941"/>
		<updated>2010-10-14T18:48:46Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
&lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, and web servers. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, or file systems that function as databases of objects [http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_11].&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of object stores in the real world, all chosen for certain features that made sense in that application. For PalmOS and NewtonOS, the security and modularity object stores provided was an attractive fit for mobile devices. Windows was drawn to object stores because of the possible speed increases, and so they developed WinFS. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. &lt;br /&gt;
&lt;br /&gt;
Object stores have caught on in a few niche applications, mostly scientific. However, this technology is in its infancy, still trying to engineer issues that are arising while implementing the concept. Combined with issues with management that surround most attempts at creating an object store, it is clear that object stores are a long way off from becoming a common file system.&lt;br /&gt;
&lt;br /&gt;
 **For the last two paragraphs did you mean database-like stores?**&lt;br /&gt;
&lt;br /&gt;
 **What about something like this ? &lt;br /&gt;
&lt;br /&gt;
 **There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.**&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system that use a database as file system  , all chosen for certain features that made sense in that application. We’ll visit 5 differents operating systems that used a database as file system. First palmOS used database mainly for efficiently. WinFS was a file system for the operating system Windows that used database for efficiently too. NewtonOS was produced to be used on a desktop machine, but then became one of the best operating system for pda with a very good security. BeOS was a new operating system and decided to use a database for file system because of efficiently and for compability reason. ReiserFS was more of an experience that turned into a new file system using database. We will first examine the trials of PalmOS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS does not use a relational or XML database[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Instead Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
 **I dont think the sentence with the simpsons part is a good idea because it is not likely for essays to have something like that**&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
	BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. Because, system reliability is placed in the hands of the programmer, BeOs&#039;s multithreading capability is a potential cause for concern especially when combined with a slow access file system.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
The fate of BeOS &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Microsoft execlusive lisence with hardware manufacture made harder to enter the market&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3940</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3940"/>
		<updated>2010-10-14T18:48:21Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
&lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, and web servers. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, or file systems that function as databases of objects [http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_11].&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of object stores in the real world, all chosen for certain features that made sense in that application. For PalmOS and NewtonOS, the security and modularity object stores provided was an attractive fit for mobile devices. Windows was drawn to object stores because of the possible speed increases, and so they developed WinFS. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. &lt;br /&gt;
&lt;br /&gt;
Object stores have caught on in a few niche applications, mostly scientific. However, this technology is in its infancy, still trying to engineer issues that are arising while implementing the concept. Combined with issues with management that surround most attempts at creating an object store, it is clear that object stores are a long way off from becoming a common file system.&lt;br /&gt;
&lt;br /&gt;
 **For the last two paragraphs did you mean database-like stores?**&lt;br /&gt;
&lt;br /&gt;
 **What about something like this ? &lt;br /&gt;
&lt;br /&gt;
**There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.**&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system that use a database as file system  , all chosen for certain features that made sense in that application. We’ll visit 5 differents operating systems that used a database as file system. First palmOS used database mainly for efficiently. WinFS was a file system for the operating system Windows that used database for efficiently too. NewtonOS was produced to be used on a desktop machine, but then became one of the best operating system for pda with a very good security. BeOS was a new operating system and decided to use a database for file system because of efficiently and for compability reason. ReiserFS was more of an experience that turned into a new file system using database. We will first examine the trials of PalmOS.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS does not use a relational or XML database[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Instead Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
 **I dont think the sentence with the simpsons part is a good idea because it is not likely for essays to have something like that**&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
	BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. Because, system reliability is placed in the hands of the programmer, BeOs&#039;s multithreading capability is a potential cause for concern especially when combined with a slow access file system.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
The fate of BeOS &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Microsoft execlusive lisence with hardware manufacture made harder to enter the market&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3939</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3939"/>
		<updated>2010-10-14T18:47:52Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
&lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, and web servers. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, or file systems that function as databases of objects [http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_11].&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of object stores in the real world, all chosen for certain features that made sense in that application. For PalmOS and NewtonOS, the security and modularity object stores provided was an attractive fit for mobile devices. Windows was drawn to object stores because of the possible speed increases, and so they developed WinFS. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. &lt;br /&gt;
&lt;br /&gt;
Object stores have caught on in a few niche applications, mostly scientific. However, this technology is in its infancy, still trying to engineer issues that are arising while implementing the concept. Combined with issues with management that surround most attempts at creating an object store, it is clear that object stores are a long way off from becoming a common file system.&lt;br /&gt;
&lt;br /&gt;
 **For the last two paragraphs did you mean database-like stores?**&lt;br /&gt;
&lt;br /&gt;
**What about something like this ? &lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, web servers and more. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, and file systems that function as databases.&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of operating system that use a database as file system  , all chosen for certain features that made sense in that application. We’ll visit 5 differents operating systems that used a database as file system. First palmOS used database mainly for efficiently. WinFS was a file system for the operating system Windows that used database for efficiently too. NewtonOS was produced to be used on a desktop machine, but then became one of the best operating system for pda with a very good security. BeOS was a new operating system and decided to use a database for file system because of efficiently and for compability reason. ReiserFS was more of an experience that turned into a new file system using database. We will first examine the trials of PalmOS. &lt;br /&gt;
**&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS does not use a relational or XML database[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Instead Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
 **I dont think the sentence with the simpsons part is a good idea because it is not likely for essays to have something like that**&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
	BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
The file system used by BeOS is called BFS. BFS is a custom file system developed by the same team as BeOs. BFS is a 64-bit journaling file system which logs all data before storing it. [http://www.citeulike.org/user/msakai/article/638204] This journaling increases both the stability and security of BeOs, by preventing system crashes from jeopardizing the file  system’s integrity as well as offering quicker recovery from crashes. However, this comes at the expensive of rapid data acess since a journaling file system is based on random memory access.  Uniquely, the BFS journaling file system was implemented by BFS to be a high performance file system that stores all data in a database, but also allows users to view it in a more traditional heirachical way. [http://www.letterp.com/~dbg/practical-file-system-design.pdf] It also boost flexibility by allowing users to store any possible data format of their choosing.&lt;br /&gt;
&lt;br /&gt;
Since BFS is a custom file system developed solely to be used by BeOs its success is intrinsically tied to that of its operating system. BeOs poses a threat to BFS both because of its inability to reach the masses as well as the potential memory errors caused by its unfiltered multithreading capability. Because, system reliability is placed in the hands of the programmer, BeOs&#039;s multithreading capability is a potential cause for concern especially when combined with a slow access file system.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
The fate of BeOS &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Microsoft execlusive lisence with hardware manufacture made harder to enter the market&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3892</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3892"/>
		<updated>2010-10-14T18:00:50Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Brief Concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
&lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, and web servers. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, or file systems that function as databases of objects [http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_11].&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of object stores in the real world, all chosen for certain features that made sense in that application. For PalmOS and NewtonOS, the security and modularity object stores provided was an attractive fit for mobile devices. Windows was drawn to object stores because of the possible speed increases, and so they developed WinFS. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. &lt;br /&gt;
&lt;br /&gt;
Object stores have caught on in a few niche applications, mostly scientific. However, this technology is in its infancy, still trying to engineer issues that are arising while implementing the concept. Combined with issues with management that surround most attempts at creating an object store, it is clear that object stores are a long way off from becoming a common file system.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS does not use a relational or XML database[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Instead Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
	BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3891</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3891"/>
		<updated>2010-10-14T17:59:01Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Brief Concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
&lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, and web servers. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, or file systems that function as databases of objects [http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_11].&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of object stores in the real world, all chosen for certain features that made sense in that application. For PalmOS and NewtonOS, the security and modularity object stores provided was an attractive fit for mobile devices. Windows was drawn to object stores because of the possible speed increases, and so they developed WinFS. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. &lt;br /&gt;
&lt;br /&gt;
Object stores have caught on in a few niche applications, mostly scientific. However, this technology is in its infancy, still trying to engineer issues that are arising while implementing the concept. Combined with issues with management that surround most attempts at creating an object store, it is clear that object stores are a long way off from becoming a common file system.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS does not use a relational or XML database[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Instead Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
 **&amp;quot;In our...to Bob.&amp;quot; Needs to be easier to read/understand. Also, treat data as data? Elaborate. Also, any reference?**&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.[http://channel9.msdn.com/Blogs/scobleizer/Shishir-Mehrotra-WinFS-beta-1-team-meeting]&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
	BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3889</id>
		<title>COMP 3000 Essay 1 2010 Question 12</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_12&amp;diff=3889"/>
		<updated>2010-10-14T17:58:29Z</updated>

		<summary type="html">&lt;p&gt;Jbaubin: /* Brief Concept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Question==&lt;br /&gt;
&lt;br /&gt;
There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS&lt;br /&gt;
&lt;br /&gt;
==Answer==&lt;br /&gt;
&lt;br /&gt;
There have been many attempts at creating file systems that use database-like stores. While the idea is an interesting one, database stores are just not ready for the consumer market. &lt;br /&gt;
&lt;br /&gt;
Traditionally, databases are used in applications where a project focuses on accessing large amounts of data quickly and efficiently, such as banking systems, telecommunications, and web servers. A personal computer did not traditionally need as much storage, and is organized in an easy-to-navigate tree structure. However, the recent shift towards object-oriented programming styles, along with the tremendous increase in the amount of data that can be stored on a home computer, has led to the idea of object stores, or file systems that function as databases of objects [http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_11].&lt;br /&gt;
&lt;br /&gt;
There have been various implementations of object stores in the real world, all chosen for certain features that made sense in that application. For PalmOS and NewtonOS, the security and modularity object stores provided was an attractive fit for mobile devices. Windows was drawn to object stores because of the possible speed increases, and so they developed WinFS. ReiserFS seemed to have started as a proof-of-concept, which found it&#039;s place with Linux. &lt;br /&gt;
&lt;br /&gt;
Object stores have caught on in a few niche applications, mostly scientific. However, this technology is in its infancy, still trying to engineer issues that are arising while implementing the concept. Combined with issues with management that surround most attempts at creating an object store, it is clear that object stores are a long way off from becoming a common file system.&lt;br /&gt;
&lt;br /&gt;
==Palm OS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
PalmOS was developed from Graffiti, a hand-recognition software which was believed to be doomed from the very beginning[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Graffiti’s fast and accurate hand-recognition software was thought to be useless because many companies did not see a purpose for it; there were no companies that wanted to make the hardware for it[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. The company Palm then decided to make their own hardware with Graffiti as the OS, which became what is known as Palm OS today.&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
Palm OS does not use a relational or XML database[http://www.iam.unibe.ch/~rvs/teaching/SS02/bs/arbeiten/Guido_Gloor-PalmOS.pdf]. Instead Palm OS has two different database types, record and resource database. There are similarities between these two databases, they both have headers which stores information onto the database and are both stored in the storage heap. The difference between the record database and resource database is how the information is stored, called, handled and how it is named. The record database is used to store data, and the resource database contains all applications.&lt;br /&gt;
&lt;br /&gt;
Furthermore a record database is a collection of records (blocks of memory) each record can only store up to 64KB of memory. It has information that is unique to the record; it has the location of the record, an ID, and an attribute, which contains delete, dirty, busy, and secret bits [book ref].  &lt;br /&gt;
&lt;br /&gt;
The resource database stores application code, name, icon, forms, alerts, menus, strings, and all other elements of the application [book ref]. Applications can be referenced by an ID number and a type (four-character constant).&lt;br /&gt;
&lt;br /&gt;
===Problem=== &lt;br /&gt;
Record and resource databases are stored in storage/database heap, which in turn is stored in the RAM (Random Access Memory). The database heap has a limit of 64KB of memory and since a record had to be small enough to fit within the heap, this made memory hard to manage. For example,  when a record is 50KB and there are three heaps which can only hold 64KB each, a total of 192KB of memory; say these three heaps are half full therefore there is 96KB of free memory, but the record of size 50KB cannot be stored because not a single heap has enough memory to store the record. [book ref] This problem arose in versions before OS 3.0 because the database heap was divided into smaller parts. This allowed for free space in memory, but some of those heaps were occupied by data, and there might not be enough space to store the record into the heap. Palm OS 3.0 and later solved this problem by to making a single large storage heap instead of multiple smaller heaps.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
In 2005, Palm OS was acquired by Access Systems Americas, Inc. Access decided to expand the breadth of the operating system’s offering to include more tools, a better user experience, and increased compatibility across many more devices.[http://azul.iing.mxl.uabc.mx/~renecruz/papers/Unpublished-Cruz-Flores-2.pdf] In 2007, development of Palm OS shifted to a new operating system called Garnet OS. [http://www.access-company.com/products/platforms/garnet/index.html] Its latest release, Garnet version 6, still includes a database based file system.&lt;br /&gt;
&lt;br /&gt;
==WinFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
&lt;br /&gt;
The history of WinFS is relatively long, as we can find trace of the project back in mid-90&#039;s with Storage +.  Microsoft had the idea to remove the NTFS file system and instead use a relational object-oriented file storage, which was based on SQL server 8.0.  This new file system was supposed to be implemented in Windows 2003 Server. But then in 2000, Windows announced that Storage + was to be forgotten, with Relational File System (RFS) as its successor. RFS was supposed to be included in SQL Server 2000, but never made the cut.  Another reason for the continual delays was that, in 2000, Oracle announced a new file system which was also a relational file system, Independent Internet File System. Microsoft had to rethink RFS to be ahead of the competition and that added additional delay.[http://www.winsupersite.com/showcase/winfs_preview.asp]&lt;br /&gt;
&lt;br /&gt;
RFS was forgotten about until the public heard in 2002 about a new file system that would be present in Longhorn (later renamed Vista).  The system would be once again be based on its predecessor, RFS, but it would have run on top of a NTFS file system. WinFS was included in a few public builds for Vista, but in 2004 it was removed from the beta builds. It was said it would be downloadable again after the release, but was definitely cut for good in 2006 from Vista.&lt;br /&gt;
&lt;br /&gt;
===Brief Concept===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With today’s data, we are facing a crisis of finding what we want, when we want, at a reasonable speed on our own computer. Data is stored in many different ways. We can recognize the uses of certain files by their file extensions, but the amount of file extensions that exist is astonishing, so it is quite difficult to remember each one. Also, a simple file may be stored with different extensions, in different databases, which makes finding, relating to, and acting on the file quite difficult to achieve. [http://www.slideshare.net/Severus/winfs]&lt;br /&gt;
&lt;br /&gt;
 **Obscure 1st sentence: data would be simply data? Elaborate.**&lt;br /&gt;
Microsoft had an idea to solve this problem by using a relational database as a file system, where data would be treated like it should be, as data and nothing else. To understand how WinFS works, we must have a general idea of the relational database. The data in this kind of database is spread into specific tables, like in a normal database, but there are multiple relations between these tables. This gives the programmer the power to search, find and present the result in an efficient way. In the case of WinFS, the main goal was to &amp;quot;Enable people to Find, Relate, and Act on their information&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx].&lt;br /&gt;
&lt;br /&gt;
 **Reference for quotation needed**&lt;br /&gt;
As already pointed out, data files are very broad nowadays. With that many file formats using complicated data storage methods, the &amp;quot;...current file system does not know how to collect and find information within these new types of data&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx], but with data treated as data inside a database, we could find what we are looking for quite easily. &lt;br /&gt;
&lt;br /&gt;
 **&amp;quot;In our...to Bob.&amp;quot; Needs to be easier to read/understand. Also, treat data as data? Elaborate. Also, any reference?**&lt;br /&gt;
Another important point of WinFS is the notion of how data relates to each other. In our current file system we can&#039;t, unless doing it manually, add a picture of our good friend Bob, and in the same time see all the picture related to Bob. On top of that, we can&#039;t find the picture of Bob, all the received emails, documents, movies, or whatever else we would want to find in the same request. In order to find them, we have to search for them one by one. If we treat data as data, once again, we can simply search in the tables of the database for the pictures, received emails, videos, and documents containing the name Bob, and present them to the user. As we can see, data can be related to each other with keywords, in our example it was the name Bob, but it can be anything.&lt;br /&gt;
&lt;br /&gt;
The last problem that WinFS was aiming to overcome was to run on top of NTFS. Basically, WinFS would scan all the data in the NTFS file system, and put it into its database. Thus, it would work as a file system, but it would be totally dependent of NTFS.&lt;br /&gt;
&lt;br /&gt;
===Fate of WinFS===&lt;br /&gt;
&lt;br /&gt;
As we have seen in the history of WinFS, its fate wasn&#039;t as desired. In 2006, on the team blog, Microsoft announced that it wouldn&#039;t include WinFS as a system file package, but instead deliver it into the next Microsoft SQL server, which was SQL Server 2008.  &amp;quot;These changes do mean that we are not pursuing a separate delivery of WinFS, including the previously planned Beta 2 release&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx], but instead, they will keep working on it and some &amp;quot;...may be used by other Microsoft products going forward.&amp;quot;[http://blogs.msdn.com/b/winfs/archive/2006/06/26/648075.aspx] So, we can see that WinFS didn&#039;t succeed as a file system, but some of the logistics will continue to live on in Microsoft’s database software.&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
Microsoft never released publicly what exactly went wrong. There was much speculation about the design of WinFS, but on the team blog Quentin Clark, Product Unit Manager of WinFS, answered that &amp;quot;[i]n fact, the Beta was coming together really well.&amp;quot;[http://msdn.microsoft.com/en-US/library/aa480687.aspx] He then replied that the technology used wasn&#039;t easy to build onto, so they had to rewrite some parts, but that this wouldn&#039;t have caused the end of WinFS. Some also speculate that no serious software used WinFS, nor did it receive the attention needed from the developers to have a good start. In an interview with Channel 9, Quentin Clark said, &amp;quot;We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.&amp;quot;[http://channel9.msdn.com/blogs/jonudell/where-is-winfs-now] This shows that the team might have had some management problem, which evidently led to the termination of the project.&lt;br /&gt;
&lt;br /&gt;
==Newton OS==&lt;br /&gt;
&lt;br /&gt;
===Brief History of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Newton OS was created by Apple and was used with their line of PDAs, becoming one of the world&#039;s first PDAs. Newton was originally meant to be an innovative OS to reinvent personal computing, but it was changed to become a PDA, due to fear of eating up Macintosh sales and because of project delays [http://www.techeblog.com/index.php/tech-gadget/a-look-back-apple-newton]. The first iteration of the Newton system came as the MessagePad. The MessagePad sold out its 5,000 copies within a few hours of release, despite its price of $800 US [http://www.pencomputing.com/frames/newton_obituary.html]. Apple released several different PDAs with Newton OS between 1993 and 1997, which despite its popularity were plagued by flaws in the applications of the device [http://news.cnet.com/Apple-scraps-Newton/2100-1001_3-208551.html].&lt;br /&gt;
&lt;br /&gt;
The main reason why Newton PDAs became so well-known was because the Newton OS was the most advanced operating system of any personal computing device of its time. The OS kept the user from accessing the inner workings of the device, keeping users away from creating problems by tampering with the wrong settings, and used a database-based file management that simplified the system to a higher degree than any previous OS [http://www.pencomputing.com/frames/newton_obituary.html].&lt;br /&gt;
&lt;br /&gt;
===Flaws of Newton OS===&lt;br /&gt;
&lt;br /&gt;
Even with the innovation that came from Newton OS and its computing devices, it had several deep-running flaws that caused critics to pan the Newton devices. First and foremost, the Newton devices were known for their failure at implementing their handwriting system, which was supposed to recognize entire words. The Simpsons television show even had a joke about this flaw in one of their episodes [http://www.youtube.com/watch?v=xc3JzS0K3ys]. The main problem behind the handwriting system was that it had a hard time recognizing cursive writing, even though Apple insisted that its engineers ensured it worked correctly [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Another main problem with the Newton devices was that their overall size was too large for most pockets. Since Newton devices were expected to be carried similarly like a wallet or a cellphone, most people found their size too great for daily use [http://news.cnet.com/8301-13512_3-9754359-23.html][http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. Earlier Newton devices were also found to be very slow due to the virtualization of the NewtonScript and the lack of necessary RAM [http://www.roughlydrafted.com/RD/Q4.06/600D65E6-A31E-45CA-AFC5-42BC253F5337.html]. In the end, the Newton devices were fated to fail.&lt;br /&gt;
&lt;br /&gt;
===Fate===&lt;br /&gt;
&lt;br /&gt;
Although the Newton OS was revolutionary when it was released, it was doomed to fail due mostly to impracticality. In early 1997, Newton Inc. was created as a subsidiary company of Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2169_v43/ai_19494161/], but after a relatively short run, Newton Inc. was reabsorbed into Apple [http://findarticles.com/p/articles/mi_m0EKF/is_n2189_v43/ai_19892982/]. In December of 1997, Apple effectively ceased development efforts on the Newton OS [http://news.cnet.com/2100-1001-206664.html], and in February 1998, Apple announced the discontinuation of the Newton OS development [http://www.apple.com/ca/press/1998/02/NewtonDisco.html].&lt;br /&gt;
&lt;br /&gt;
===Why===&lt;br /&gt;
&lt;br /&gt;
After his return as CEO of Apple, Steve Jobs canceled or restructured many of Apple&#039;s failing products to refocus Apple&#039;s energy towards more successful endeavors, like the iPod and Macintosh computers. Not surprisingly, Newton OS was one of these products [http://www.roughlydrafted.com/2010/01/26/steve-jobs-apple-tablet-%E2%80%9Cthe-most-important-thing-ive-ever-done%E2%80%9D/]. Although Newton was canceled, the development of the OS and its devices have had impacts on other Apple products. Mac OS X 10.2 has a handwriting recognition software called Inkwell that uses an external tablet to recognize words, but like the Newton handwriting software, it requires you to right each letter individually [http://lowendmac.com/osx/jaguar-10.2/index.html][http://everything2.com/title/Inkwell]. Pixo, the company that created the operating system for the iPod, was founded by two of the developers that worked on the Newton OS [http://www.starmenusa.com/blog/category/Culture][http://articles.sfgate.com/2004-08-16/business/17438885_1_pixo-user-interface-ipod]. Pixo was subsequently acquired by Apple after the shipping of the first iPods [http://www.servinghistory.com/topics/Pixo].&lt;br /&gt;
&lt;br /&gt;
==BeOS==&lt;br /&gt;
&lt;br /&gt;
===Brief History===&lt;br /&gt;
	&lt;br /&gt;
	BeOS is released by Be, Inc which is founded in 1990 by Jean-louis Gasee and Steve Sakoman.  Be OS is a brand new operating system running on it’s own hardware called BeBox. The system is giving a better performance on digital media works because of better use on system resources. This system is initially made for AT&amp;amp;T Hobbit hardware, but since AT&amp;amp;T decide to stop producing Hobbit processor, the system is modified to Apple’s PowerPC hardware.&lt;br /&gt;
&lt;br /&gt;
===Operating System===&lt;br /&gt;
&lt;br /&gt;
===File System===&lt;br /&gt;
&lt;br /&gt;
==ReiserFS==&lt;br /&gt;
&lt;br /&gt;
===History===&lt;br /&gt;
ReiserFS is the product of Namesys, a Californian company stared by Hans Reiser [http://web.archive.org/web/20071024001500/http://www.namesys.com/v4/v4.html]. ReiserFS was first introduced in version 2.4.1 of the Linux kernel, and was the default file system on several Linux distributions, most notably SUSE. ReiserFS&#039;s successor is Reiser4, which released in 2004[http://en.wikipedia.org/wiki/Reiser4]. However, in 2008, Namesys dissolved and commercial production of ResierFS and Reiser4 halted [http://news.cnet.com/8301-13580_3-9851703-39.html]. Since the removal of commercial support, ReiserFS has become less popular, probably due to the many bugs that have no hope of being resolved.&lt;br /&gt;
&lt;br /&gt;
===Concept===&lt;br /&gt;
ReiserFS is driven by a few major concepts. The first and probably main idea is the ability to handle many files that are smaller than a block of storage on the storage media. This is accomplished through the use of B+ Trees. [http://delivery.acm.org.proxy.library.carleton.ca/10.1145/610000/603630/6267.html?key1=603630&amp;amp;key2=4060996821&amp;amp;coll=ACM&amp;amp;dl=ACM&amp;amp;CFID=105645345&amp;amp;CFTOKEN=72691832]. Instead of balancing in order to keep the height of the tree fairly stable (as an AVL tree balances), ReiserFS balances so that the height of the storage tree is constant. This type of balanced tree reduces overhead by reducing the number of internal nodes, or i-nodes needed. Each node in the B+ tree maps to a block on the storage device, and each node can hold multiple objects, each of which has a unique key[http://homes.cerias.purdue.edu/~florian/reiser/reiserfs.php]&amp;lt;p&amp;gt;&lt;br /&gt;
Another concept in ReiserFS is the use of unified name spaces[http://www4.informatik.uni-erlangen.de/Lehre/WS01/PS_KVBK/docs/reiserfs/MosheBarReiserFS.pdf]. Unified name spaces are simply a more refined definition of an object store, in which all stored data is made up of objects that are both &#039;files&#039; and &#039;directories&#039;. Objects are stored in such a way so that you can use directories to quickly access different types of objects, then further traverse the directories in order to access specific objects, and go even further to access an object&#039;s attributes. This maps extremely well to different programming styles, especially object oriented programming. Lookup of data can also done using attributes of the data, much like in WinFS[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_12#WinFS]. This type of access would be more often used by the end user.&lt;br /&gt;
&lt;br /&gt;
===Flaws and Fate===&lt;br /&gt;
While ResierFS preforms very well in terms of speed [http://www.sun.com/software/whitepapers/solaris10/fs_performance.pdf], ReiserFS has many bugs that can lead to instability of files. One problem is  that link() and unlink() are not synchronous in ReiserFS, which can lead to data corruption[http://archives.neohapsis.com/archives/postfix/2001-05/1749.html]. Another is that, if ReiserFS&#039;s tree structure becomes unusable for any reason, a rebuild risks further corrupting the file system [http://lkml.indiana.edu/hypermail/linux/kernel/0506.3/0219.html]. There are also issues with the journaling which can lead to corruption [http://users.cis.fiu.edu/~yangz/teaching/reading_list/Analysis%20and%20Evolution%20of%20Journaling%20File%20Systems.pdf]. Issues like these are a bad idea in any file system, as the risk of unstable data is a serious drawback. Considering that the root of these issues are often synchronization problems, ReiserFS is a very poor choice for many modern, multi-core systems, as the increased need for synchronization would increase the level of instability.&lt;br /&gt;
&lt;br /&gt;
In addition to the stability issues, ReiserFS has some design issues mainly contribute to why it is no longer used today. Since ReiserFS was designed to handle numerators small files, when trying to scale a ReiserFS system, behavior is inconsistent, again spawning from issues in synchronization. In addition, moving from the bug-ridden ReiserFS v3 to v4 required a reformat, as Reiser4 was re-written from scratch. This prompted SUSE to drop ReiserFS as it&#039;s default file system, as they preferred to use a tried and tested sytem update (ext3) instead of a new, yet-untested file system in their distribution [http://lwn.net/Articles/202780/]. &lt;br /&gt;
&lt;br /&gt;
Interestingly enough, the SUSE drop coincided eerily well with Hans Reiser being sent to jail. Left without an owner, Namesys lost most corporate sponsors, eventually only receiving funding from the DARPA initiative. With Namesys (mostly) gone, ReiserFS no longer has commercial support, and so the stability and scalability bugs are taking a fair amount of time to be resolved. This combined with low visibility that stems from no longer being used in any major Linux distributions largely explains why ReiserFS can be considered a dead project.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Looking at these object based file systems, it is easy to see that, despite object stores being an interesting and potentially useful idea, they are just not ready yet for the desktop. For certain applications, such as systems designed to handle large amounts of data for programming projects, such as ones used for models in physics; or in small, modular systems such as PalmOS and NewtonOS, object stores are a great alternative to the traditional file system. However, there has not yet been developed a highly flexible design that would be useful on the average PC, as we can see from the failure of WinFS and ReiserFS.&lt;br /&gt;
&lt;br /&gt;
The increasing importance of digital information in today&#039;s world also means that people are extremely reluctant to switch a tried and true system for newer and possibly unstable technology. In the case of object stores, what few implementations are available to the public for the desktop are unstable, and therefore an unattractive choice. &lt;br /&gt;
&lt;br /&gt;
It is important to note that object stores are not the only alternative file system competing to improve upon traditional block storage[http://homeostasis.scs.carleton.ca/wiki/index.php/COMP_3000_Essay_1_2010_Question_9], so there is no guarantee that object stores will ever become a widely used technology, as they may not mature quickly enough to beat out other technologies.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
[1] Palm OS programming: the Developer’s guide by Neil Rhodes, Julie McKeehan &lt;br /&gt;
&lt;br /&gt;
http://membres.multimania.fr/microfirst/palm/pdb.html&lt;br /&gt;
&lt;br /&gt;
http://mobile.eric-poncet.com/palm/tutorial/db.html&lt;/div&gt;</summary>
		<author><name>Jbaubin</name></author>
	</entry>
</feed>