<?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=Afranco2</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=Afranco2"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Afranco2"/>
	<updated>2026-05-01T19:32:26Z</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_5&amp;diff=5635</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5635"/>
		<updated>2010-11-27T19:04:09Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
* Dustin Martin&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Edited and filled out the critique section. Edited a little bit here and there. --[[User:Afranco2|Afranco2]] 17:41, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Moved stuff to the front page and cleaned up references. Still waiting for people to expand if possible. Also, spellcheck ;) --[[User:Myagi|Myagi]] 10:37, 24 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Expanded --[[User:Afranco2|Afranco2]] 19:04, 27 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-------------&lt;br /&gt;
A race condition is a system flaw that “occurs when two threads access a shared variable at the same time.&amp;quot; Race conditions can be very complex, time consuming and expensive to fix. Unfortunately, the most challenging part of race condition is not fixing it, but rather find it. Race conditions are notorious for being extremely difficult to find, isolate and recreate. To help ease this process, the authors of this paper, Jingyue Wu, Heming Cui, Junfeng Yang, propose the adoption of LOOM.&lt;br /&gt;
&lt;br /&gt;
LOOM is a system which dynamically locates and corrects areas which may be susceptible to race condition errors. The power of LOOM rests in its ability to operate on live applications in real time. This is possible thanks to its evacuation algorithm which injects execution filters to fix race conditions at runtime. Execution filters, otherwise known as request filtering, allow you to inspect the request before and after the main logic is executed. By leveraging execution filters as the means for correcting race conditions, LOOM is able to operate with very little performance overhead and is a highly scalable as the number of application threads increases.  &lt;br /&gt;
&lt;br /&gt;
The authors tested LOOM on existing real world race conditions found in common applications. The tests found that all tested race conditions were solved, with little performance overhead, in a scalable and easy to implement manor.&lt;br /&gt;
-------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
* Race Condition: &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [http://support.microsoft.com/kb/317723 Race Condition]&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 Mutex Locks]&lt;br /&gt;
* Mutex: Unable to be both true at the same time.&lt;br /&gt;
* Semaphore: &amp;quot;A semaphore is a protected variable or abstract data type that provides a simple but useful abstraction for controlling access by multiple processes to a common resource in a parallel programming environment.&amp;quot; [http://en.wikipedia.org/wiki/Semaphore_%28programming%29 Semaphore]&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;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?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
-------------&lt;br /&gt;
====Why is it any better than what came before?====&lt;br /&gt;
Previously, the two standard ways of fixing deployed race conditions were system updates and hot patches. LOOM is a superior choice to both these options for a number of reasons.&lt;br /&gt;
&lt;br /&gt;
Unlike LOOM, the system update approach requires that the system be rebooted before the fix can be implemented. With desktop applications, this can sometimes be considered acceptable. However, server applications often do not have the luxury of being able to reboot because requests are coming from external sources and are expected to be processed.&lt;br /&gt;
&lt;br /&gt;
While hot patches do not require a system reboot, they do have their own specific vulnerabilities. Namely, it is very difficult to apply a patch that corrects the error, or errors, but leaves the rest of the system unaffected. Often when correcting a race condition via a hot patch, others can appear. The main concern with hot patches however, is that their development is a time consuming process. A process which until developed and deployed, leaves the race condition vulnerable and exposed. The paper chronicles a real world Mozilla race condition whose hot patch took nearly 8 years of development to correct, all the while the vulnerability was exposed to all Mozilla users. &lt;br /&gt;
&lt;br /&gt;
Flaws common to both the system update and hot patch approach are they very difficult to properly development, slow to implement, and result in potential unsafe ad hoc solutions that are not scalable. Conversely, LOOM is easy to use, fast to implement, highly flexible, scalable, and safe to use.&lt;br /&gt;
-------------&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5634</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5634"/>
		<updated>2010-11-27T19:03:20Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Related work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
A race condition is a system flaw that “occurs when two threads access a shared variable at the same time.&amp;quot; Race conditions can be very complex, time consuming and expensive to fix. Unfortunately, the most challenging part of race condition is not fixing it, but rather find it. Race conditions are notorious for being extremely difficult to find, isolate and recreate. To help ease this process, the authors of this paper, Jingyue Wu, Heming Cui, Junfeng Yang, propose the adoption of LOOM.&lt;br /&gt;
&lt;br /&gt;
LOOM is a system which dynamically locates and corrects areas which may be susceptible to race condition errors. The power of LOOM rests in its ability to operate on live applications in real time. This is possible thanks to its evacuation algorithm which injects execution filters to fix race conditions at runtime. Execution filters, otherwise known as request filtering, allow you to inspect the request before and after the main logic is executed. By leveraging execution filters as the means for correcting race conditions, LOOM is able to operate with very little performance overhead and is a highly scalable as the number of application threads increases.&lt;br /&gt;
&lt;br /&gt;
The authors tested LOOM on existing real world race conditions found in common applications. The tests found that all tested race conditions were solved, with little performance overhead, in a scalable and easy to implement manor. &lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Evacuation&#039;&#039;&#039; The process of proactively pausing and changing states of code sections so that those sections can be filtered for proper processing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Function Quiescence&#039;&#039;&#039; The process of pausing and altering states, in order to avoid race conditions and overlapping between code segments.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure.&lt;br /&gt;
&lt;br /&gt;
Using a QUIESCE function to &amp;quot;temporarily suspend...incoming messages on an IUCV path&amp;quot;[[#References | [6]]] These paths can later be reactivated and run as normal. This is not an efficient for of fixing a race condition because it only delays the problem in an attempt to avoid conflict. Although this does allow for a certain extent of safety it does not come near the reliability and flexibility of LOOM. Speed, reliability, flexibility and ease of use are all areas in which LOOM is demonstrated as being better than a QUIESCE function.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
Through multiple tests LOOM proves its worth. Overhead is tested in a comparison of LOOM during normal runtime. The effects of LOOM on Apache and MySQL are minimal, (~1.83% and ~4% respectively) making it an obvious choice as a runtime fix for race errors. To test scalability the team discovered that on 32 server threads, the over head was still under 3% and 12% respectively. Reliability is one of the strongest facets of the LOOM system. It fixed all of the race condition errors that it was tested against, proving that it has immense power as a reliable form of fix. To assure reliability LOOM was paired against a conventional restart-based software update. In this test the software update was clearly slower, requiring time to reset itself, where LOOM running a live update had almost no effect on the throughput. Lastly the timeliness of LOOM was demonstrated using a simple example, showing a LOOM based fix in 368ms whereas the function quiescence fix took the max test time (1 hour) and still did not finish.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up their topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnecessary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delivered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explanation) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expedite the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunately, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;br /&gt;
&lt;br /&gt;
[6] QUIESCE Function. IBM [http://publib.boulder.ibm.com/infocenter/zvm/v5r3/index.jsp?topic=/com.ibm.zvm.v53.hcpb4/hcse5b21270.htm]&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5633</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5633"/>
		<updated>2010-11-27T19:02:19Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
A race condition is a system flaw that “occurs when two threads access a shared variable at the same time.&amp;quot; Race conditions can be very complex, time consuming and expensive to fix. Unfortunately, the most challenging part of race condition is not fixing it, but rather find it. Race conditions are notorious for being extremely difficult to find, isolate and recreate. To help ease this process, the authors of this paper, Jingyue Wu, Heming Cui, Junfeng Yang, propose the adoption of LOOM.&lt;br /&gt;
&lt;br /&gt;
LOOM is a system which dynamically locates and corrects areas which may be susceptible to race condition errors. The power of LOOM rests in its ability to operate on live applications in real time. This is possible thanks to its evacuation algorithm which injects execution filters to fix race conditions at runtime. Execution filters, otherwise known as request filtering, allow you to inspect the request before and after the main logic is executed. By leveraging execution filters as the means for correcting race conditions, LOOM is able to operate with very little performance overhead and is a highly scalable as the number of application threads increases.&lt;br /&gt;
&lt;br /&gt;
The authors tested LOOM on existing real world race conditions found in common applications. The tests found that all tested race conditions were solved, with little performance overhead, in a scalable and easy to implement manor. &lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Evacuation&#039;&#039;&#039; The process of proactively pausing and changing states of code sections so that those sections can be filtered for proper processing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Function Quiescence&#039;&#039;&#039; The process of pausing and altering states, in order to avoid race conditions and overlapping between code segments.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure.&lt;br /&gt;
&lt;br /&gt;
Using a QUIESCE function to &amp;quot;temporarily suspend...incoming messages on an IUCV path&amp;quot; These paths can later be reactivated and run as normal. This is not an efficient for of fixing a race condition because it only delays the problem in an attempt to avoid conflict. Although this does allow for a certain extent of safety it does not come near the reliability and flexibility of LOOM. Speed, reliability, flexibility and ease of use are all areas in which LOOM is demonstrated as being better than a QUIESCE function.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
Through multiple tests LOOM proves its worth. Overhead is tested in a comparison of LOOM during normal runtime. The effects of LOOM on Apache and MySQL are minimal, (~1.83% and ~4% respectively) making it an obvious choice as a runtime fix for race errors. To test scalability the team discovered that on 32 server threads, the over head was still under 3% and 12% respectively. Reliability is one of the strongest facets of the LOOM system. It fixed all of the race condition errors that it was tested against, proving that it has immense power as a reliable form of fix. To assure reliability LOOM was paired against a conventional restart-based software update. In this test the software update was clearly slower, requiring time to reset itself, where LOOM running a live update had almost no effect on the throughput. Lastly the timeliness of LOOM was demonstrated using a simple example, showing a LOOM based fix in 368ms whereas the function quiescence fix took the max test time (1 hour) and still did not finish.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up their topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnecessary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delivered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explanation) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expedite the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunately, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;br /&gt;
&lt;br /&gt;
[6] QUIESCE Function. IBM [http://publib.boulder.ibm.com/infocenter/zvm/v5r3/index.jsp?topic=/com.ibm.zvm.v53.hcpb4/hcse5b21270.htm]&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5632</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5632"/>
		<updated>2010-11-27T19:01:01Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Current solution expressed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
A race condition is a system flaw that “occurs when two threads access a shared variable at the same time.&amp;quot; Race conditions can be very complex, time consuming and expensive to fix. Unfortunately, the most challenging part of race condition is not fixing it, but rather find it. Race conditions are notorious for being extremely difficult to find, isolate and recreate. To help ease this process, the authors of this paper, Jingyue Wu, Heming Cui, Junfeng Yang, propose the adoption of LOOM.&lt;br /&gt;
&lt;br /&gt;
LOOM is a system which dynamically locates and corrects areas which may be susceptible to race condition errors. The power of LOOM rests in its ability to operate on live applications in real time. This is possible thanks to its evacuation algorithm which injects execution filters to fix race conditions at runtime. Execution filters, otherwise known as request filtering, allow you to inspect the request before and after the main logic is executed. By leveraging execution filters as the means for correcting race conditions, LOOM is able to operate with very little performance overhead and is a highly scalable as the number of application threads increases.&lt;br /&gt;
&lt;br /&gt;
The authors tested LOOM on existing real world race conditions found in common applications. The tests found that all tested race conditions were solved, with little performance overhead, in a scalable and easy to implement manor. &lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Evacuation&#039;&#039;&#039; The process of proactively pausing and changing states of code sections so that those sections can be filtered for proper processing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Function Quiescence&#039;&#039;&#039; The process of pausing and altering states, in order to avoid race conditions and overlapping between code segments.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure.&lt;br /&gt;
&lt;br /&gt;
Using a QUIESCE function to &amp;quot;temporarily suspend...incoming messages on an IUCV path&amp;quot; These paths can later be reactivated and run as normal. This is not an efficient for of fixing a race condition because it only delays the problem in an attempt to avoid conflict. Although this does allow for a certain extent of safety it does not come near the reliability and flexibility of LOOM. Speed, reliability, flexibility and ease of use are all areas in which LOOM is demonstrated as being better than a QUIESCE function.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
Through multiple tests LOOM proves its worth. Overhead is tested in a comparison of LOOM during normal runtime. The effects of LOOM on Apache and MySQL are minimal, (~1.83% and ~4% respectively) making it an obvious choice as a runtime fix for race errors. To test scalability the team discovered that on 32 server threads, the over head was still under 3% and 12% respectively. Reliability is one of the strongest facets of the LOOM system. It fixed all of the race condition errors that it was tested against, proving that it has immense power as a reliable form of fix. To assure reliability LOOM was paired against a conventional restart-based software update. In this test the software update was clearly slower, requiring time to reset itself, where LOOM running a live update had almost no effect on the throughput. Lastly the timeliness of LOOM was demonstrated using a simple example, showing a LOOM based fix in 368ms whereas the function quiescence fix took the max test time (1 hour) and still did not finish.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up their topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnecessary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delivered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explanation) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expedite the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunately, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5631</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5631"/>
		<updated>2010-11-27T18:33:26Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Background Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
A race condition is a system flaw that “occurs when two threads access a shared variable at the same time.&amp;quot; Race conditions can be very complex, time consuming and expensive to fix. Unfortunately, the most challenging part of race condition is not fixing it, but rather find it. Race conditions are notorious for being extremely difficult to find, isolate and recreate. To help ease this process, the authors of this paper, Jingyue Wu, Heming Cui, Junfeng Yang, propose the adoption of LOOM.&lt;br /&gt;
&lt;br /&gt;
LOOM is a system which dynamically locates and corrects areas which may be susceptible to race condition errors. The power of LOOM rests in its ability to operate on live applications in real time. This is possible thanks to its evacuation algorithm which injects execution filters to fix race conditions at runtime. Execution filters, otherwise known as request filtering, allow you to inspect the request before and after the main logic is executed. By leveraging execution filters as the means for correcting race conditions, LOOM is able to operate with very little performance overhead and is a highly scalable as the number of application threads increases.&lt;br /&gt;
&lt;br /&gt;
The authors tested LOOM on existing real world race conditions found in common applications. The tests found that all tested race conditions were solved, with little performance overhead, in a scalable and easy to implement manor. &lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Evacuation&#039;&#039;&#039; The process of proactively pausing and changing states of code sections so that those sections can be filtered for proper processing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Function Quiescence&#039;&#039;&#039; The process of pausing and altering states, in order to avoid race conditions and overlapping between code segments.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure.&lt;br /&gt;
&lt;br /&gt;
Using a QUIESCE function to &amp;quot;temporarily suspend...incoming messages on an IUCV path&amp;quot; These paths can later be reactivated and run as normal. This is not an efficient for of fixing a race condition because it only delays the problem in an attempt to avoid conflict. Although this does allow for a certain extent of safety it does not come near the reliability and flexibility of LOOM. Speed, reliability, flexibility and ease of use are all areas in which LOOM is demonstrated as being better than a QUIESCE function.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up their topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnecessary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delivered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explanation) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expedite the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunately, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5630</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5630"/>
		<updated>2010-11-27T18:31:29Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Related work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
A race condition is a system flaw that “occurs when two threads access a shared variable at the same time.&amp;quot; Race conditions can be very complex, time consuming and expensive to fix. Unfortunately, the most challenging part of race condition is not fixing it, but rather find it. Race conditions are notorious for being extremely difficult to find, isolate and recreate. To help ease this process, the authors of this paper, Jingyue Wu, Heming Cui, Junfeng Yang, propose the adoption of LOOM.&lt;br /&gt;
&lt;br /&gt;
LOOM is a system which dynamically locates and corrects areas which may be susceptible to race condition errors. The power of LOOM rests in its ability to operate on live applications in real time. This is possible thanks to its evacuation algorithm which injects execution filters to fix race conditions at runtime. Execution filters, otherwise known as request filtering, allow you to inspect the request before and after the main logic is executed. By leveraging execution filters as the means for correcting race conditions, LOOM is able to operate with very little performance overhead and is a highly scalable as the number of application threads increases.&lt;br /&gt;
&lt;br /&gt;
The authors tested LOOM on existing real world race conditions found in common applications. The tests found that all tested race conditions were solved, with little performance overhead, in a scalable and easy to implement manor. &lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Evacuation&#039;&#039;&#039; The process of proactively pausing and changing states of code sections so that those sections can be filtered for proper processing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure.&lt;br /&gt;
&lt;br /&gt;
Using a QUIESCE function to &amp;quot;temporarily suspend...incoming messages on an IUCV path&amp;quot; These paths can later be reactivated and run as normal. This is not an efficient for of fixing a race condition because it only delays the problem in an attempt to avoid conflict. Although this does allow for a certain extent of safety it does not come near the reliability and flexibility of LOOM. Speed, reliability, flexibility and ease of use are all areas in which LOOM is demonstrated as being better than a QUIESCE function.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up their topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnecessary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delivered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explanation) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expedite the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunately, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5629</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5629"/>
		<updated>2010-11-27T18:23:03Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Background Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
A race condition is a system flaw that “occurs when two threads access a shared variable at the same time.&amp;quot; Race conditions can be very complex, time consuming and expensive to fix. Unfortunately, the most challenging part of race condition is not fixing it, but rather find it. Race conditions are notorious for being extremely difficult to find, isolate and recreate. To help ease this process, the authors of this paper, Jingyue Wu, Heming Cui, Junfeng Yang, propose the adoption of LOOM.&lt;br /&gt;
&lt;br /&gt;
LOOM is a system which dynamically locates and corrects areas which may be susceptible to race condition errors. The power of LOOM rests in its ability to operate on live applications in real time. This is possible thanks to its evacuation algorithm which injects execution filters to fix race conditions at runtime. Execution filters, otherwise known as request filtering, allow you to inspect the request before and after the main logic is executed. By leveraging execution filters as the means for correcting race conditions, LOOM is able to operate with very little performance overhead and is a highly scalable as the number of application threads increases.&lt;br /&gt;
&lt;br /&gt;
The authors tested LOOM on existing real world race conditions found in common applications. The tests found that all tested race conditions were solved, with little performance overhead, in a scalable and easy to implement manor. &lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Evacuation&#039;&#039;&#039; The process of proactively pausing and changing states of code sections so that those sections can be filtered for proper processing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up their topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnecessary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delivered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explanation) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expedite the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunately, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5628</id>
		<title>COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_5&amp;diff=5628"/>
		<updated>2010-11-27T18:22:37Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Background Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Paper==&lt;br /&gt;
&#039;&#039;&#039;Title:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliations:&#039;&#039;&#039; Computer Science Department, Columbia University&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supplementary Information:&#039;&#039;&#039; Video available [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 here] as well as [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf slides]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
A race condition is a system flaw that “occurs when two threads access a shared variable at the same time.&amp;quot; Race conditions can be very complex, time consuming and expensive to fix. Unfortunately, the most challenging part of race condition is not fixing it, but rather find it. Race conditions are notorious for being extremely difficult to find, isolate and recreate. To help ease this process, the authors of this paper, Jingyue Wu, Heming Cui, Junfeng Yang, propose the adoption of LOOM.&lt;br /&gt;
&lt;br /&gt;
LOOM is a system which dynamically locates and corrects areas which may be susceptible to race condition errors. The power of LOOM rests in its ability to operate on live applications in real time. This is possible thanks to its evacuation algorithm which injects execution filters to fix race conditions at runtime. Execution filters, otherwise known as request filtering, allow you to inspect the request before and after the main logic is executed. By leveraging execution filters as the means for correcting race conditions, LOOM is able to operate with very little performance overhead and is a highly scalable as the number of application threads increases.&lt;br /&gt;
&lt;br /&gt;
The authors tested LOOM on existing real world race conditions found in common applications. The tests found that all tested race conditions were solved, with little performance overhead, in a scalable and easy to implement manor. &lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deadlock:&#039;&#039;&#039; Deadlocks usually occur within the context of two threads. One thread tries to lock a variable that the other thread has already locked and vice versa. The result of this is that each thread is waiting for each others thread to release the variable. Thus a deadlock occurs and nothing can happen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Execution Filters:&#039;&#039;&#039; Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Evacuation&#039;&#039;&#039; The process of proactively pausing and changing states of code sections so that those sections can be filtered for proper processing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hot Patches:&#039;&#039;&#039; &amp;quot;Hot patching provides a mechanism to update system files without rebooting or stopping services and processes.&amp;quot;[[#References | [1]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hybrid Instrumentation Engine:&#039;&#039;&#039; &amp;quot;Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information.&amp;quot; [[#References | [2]]]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lock:&#039;&#039;&#039; A lock is a way of limiting access to a common resource when using multiple threads. Lock and unlock methods are usually called at the beginning and end of a target method, respectively. &amp;quot;Mutual exclusion locks (mutexes) are a common method of serializing thread execution. Mutual exclusion locks synchronize threads, usually by ensuring that only one thread at a time executes a critical section of code. Mutex locks can also preserve single-threaded code.&amp;quot; [[#References | [3]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mutex:&#039;&#039;&#039; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Race Condition:&#039;&#039;&#039; &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [[#References | [4]]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Semaphore:&#039;&#039;&#039; Semaphores are basically a special type of flag and generalize a down and up state(sleep or wakeup). The down operation checks to see if the value is greater than 0 and if so, decrements the value and uses up one stored wakeup. If the value is 0, the process is put to sleep. These steps are all done in a single indivisible atomic action. It is guaranteed that once a semaphore operation has started, no other process can access the semaphore until the operation has been completed or blocked. Semaphores are an essential part of solving synchronization problems.  [[#References | [5]]]&lt;br /&gt;
&lt;br /&gt;
==Research problem==&lt;br /&gt;
===Problem being addressed=== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
===Related work===&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure.&lt;br /&gt;
&lt;br /&gt;
==Contribution==&lt;br /&gt;
===Current solution expressed===&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
==Critique==&lt;br /&gt;
===Good===&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up their topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnecessary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delivered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explanation) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
===Not-So-Good===&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expedite the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunately, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1] Introduction to Hotpatching. [http://technet.microsoft.com/en-us/library/cc781109%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc781109(WS.10).aspx].&lt;br /&gt;
&lt;br /&gt;
[2] Introduction to Instrumentation and Tracing. [http://msdn.microsoft.com/en-us/library/aa983649%28VS.71%29.aspx http://msdn.microsoft.com/en-us/library/aa983649(VS.71).aspx] &lt;br /&gt;
&lt;br /&gt;
[3] A. D. Marshall. Further Threads Programming:Synchronization. Cardiff University, 1999 [http://www.cs.cf.ac.uk/Dave/C/node31.html#SECTION003110000000000000000 HTML]&lt;br /&gt;
&lt;br /&gt;
[4] Description of race conditions and deadlocks. [http://support.microsoft.com/kb/317723 http://support.microsoft.com/kb/317723]&lt;br /&gt;
&lt;br /&gt;
[5] A. S. Tanenbaum. Modern Operating Systems (3rd Edition), page 128, 2008&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5421</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5421"/>
		<updated>2010-11-23T00:49:20Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Background Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
* Dustin Martin&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Edited and filled out the critique section. Edited a little bit here and there. --[[User:Afranco2|Afranco2]] 17:41, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
* Race Condition: &amp;quot;A race condition occurs when two threads access a shared variable at the same time.&amp;quot; [http://support.microsoft.com/kb/317723 Race Condition]&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;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?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5346</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5346"/>
		<updated>2010-11-22T17:41:14Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Edited and filled out the critique section. Edited a little bit here and there. --[[User:Afranco2|Afranco2]] 17:41, 22 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;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?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5345</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5345"/>
		<updated>2010-11-22T17:39:08Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Background Concepts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This paper consists of multiple terms which must be familiar to the reader in order to assist in reading the Bypassing Races in Live Applications with Execution Filters paper. These terms are listed and explained below:&lt;br /&gt;
&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;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?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5343</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5343"/>
		<updated>2010-11-22T17:29:05Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Not-So-Good */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;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?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
One of the problems with this paper is that although many of the examples are simplified in order to expediate the understanding of the user, some are a little oversimplified. For example, Figure 9 is a graphic that attempts to represent the evacuation process in a visual manner. Unfortunatly, this ends up making the problem seem almost trivial and does little more than water down the information.&lt;br /&gt;
&lt;br /&gt;
The writers are also a little bit one sided (with understandable reason) on the topic. Although they do admit the limitations of LOOM, they do not spend much time discussing any problems later. There is a large amount of play-up for LOOM without much discussion of the possible problems with it, such as the clients running LOOM may decide not to fix the race conditions and rather just let the program continue to run with LOOM as a permanent fix. This may cause further errors in the long term life of the program.&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5338</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 5</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_5&amp;diff=5338"/>
		<updated>2010-11-22T17:10:26Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Good */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maybe we can all add our names below so we know who&#039;s still in this course? --[[User:Myagi|Myagi]] 12:38, 14 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Group members:&lt;br /&gt;
&lt;br /&gt;
* Michael Yagi&lt;br /&gt;
* Nicolas Lessard&lt;br /&gt;
* Julie Powers&lt;br /&gt;
* Derek Langlois&lt;br /&gt;
&lt;br /&gt;
Jeffrey Francom contacted me earlier so I know he is also still in the course. &amp;lt;strike&amp;gt;Now we are only waiting on Dustin Martin.&amp;lt;/strike&amp;gt; Everyone has been accounted for. [[User:J powers|J powers]] 18:07, 15 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just kicking things off. Feel free to make suggestions or change anything. --[[User:Myagi|Myagi]] 11:36, 17 November 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay==&lt;br /&gt;
===Paper===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The paper&#039;s title, authors, and their affiliations. Include a link to the paper and any particularly helpful supplementary information.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Title: [http://www.usenix.org/events/osdi10/tech/full_papers/Wu.pdf Bypassing Races in Live Applications with Execution Filters]&lt;br /&gt;
* Authors: Jingyue Wu, Heming Cui, Junfeng Yang&lt;br /&gt;
* Affiliations: Computer Science Department, Columbia University&lt;br /&gt;
* Supplementary Information: [http://homeostasis.scs.carleton.ca/osdi/video/wu.mp4 Video], [http://homeostasis.scs.carleton.ca/osdi/slides/wu.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Background Concepts===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Explain briefly the background concepts and ideas that your fellow classmates will need to know first in order to understand your assigned paper.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
* Execution Filters: Otherwise known as request filtering. Request filters allow you to inspect the request before and after the main logic is executed. These are mutual exclusion filters in the context of this paper.&lt;br /&gt;
* Hot Patches: &amp;quot;Hot patching is the application of patches without shutting down and restarting the system or the program concerned. This addresses problems related to unavailability of service provided by the system or the program. A patch that can be applied in this way is called a hot patch. [http://en.wikipedia.org/wiki/Patch_%28computing%29#Hot_patching Hot Patching]&lt;br /&gt;
* Hybrid Instrumentation Engine: Instrumentation refers to an ability to monitor or measure the level of a product&#039;s performance, to diagnose errors and writing trace information. [http://en.wikipedia.org/wiki/Instrumentation_%28computer_programming%29 Instrumentation]  Instrument programs can have low runtime overhead, but instrumentation has to be done at compile time. Dynamic instrumentation can update programs at runtime but incur high overhead. A hybrid instrumentation is an implementation of combined static and dynamic instrumentation.&lt;br /&gt;
* Lock: &amp;quot;In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads of execution. Locks are one way of enforcing concurrency control policies.&amp;quot; [http://en.wikipedia.org/wiki/Lock_%28computer_science%29 Lock]&lt;br /&gt;
* Mutex: Mutually Exclusive; Unable to be both true at the same time.&lt;br /&gt;
&lt;br /&gt;
===Research problem===&lt;br /&gt;
&amp;lt;blockquote&amp;gt;What is the research problem being addressed by the paper? How does this problem relate to past related work?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Problem being addressed==== &lt;br /&gt;
With the rise of multiple core systems, multithreaded programs are often prone to race conditions. Races are hard to detect, test and debug. Due to the immaturity of current race detectors, this paper explains a new approach to race detection and work arounds through the use of LOOM.&lt;br /&gt;
====Past related work====&lt;br /&gt;
Two common solutions to fixing deployed races are software updates and hot patches. Software updates require restarts whereas hot patches applies patches to live systems. However, relying on conventional patches can lead to new errors and could be unsafe, due to a multithreaded applications complexity. Releasing a reliable patch takes time, but developers often resort to more efficient fixes rather than placing proper locks in the application due to performance or work pressure. &lt;br /&gt;
===Contribution===&lt;br /&gt;
&amp;lt;blockquote&amp;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?)&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Current solution expressed====&lt;br /&gt;
Compared to traditional solutions, LOOM differs in its approach to race fixes. It is designed to quickly develop safe, optimized, temporary workarounds while a concrete solution is developed. LOOM is also very easy to use. LOOM is compiled with a developers application as a plugin and kept separate from the source code. The plugin will inject the LOOM update into the application binary. &lt;br /&gt;
&lt;br /&gt;
Mutual exclusion filters are written by the developer and synced with the source code to filter out any racy threads. The code declaration used is easy to understand and can be inserted in a code region that need to be mutually exclusive. The developer does not need to deal with low level operations such as lock, unlock and semaphore operations. Users can then download the filter and apply it to the application while it is still live. &lt;br /&gt;
&lt;br /&gt;
LOOM is flexible in that developers can make trade-offs in performance and reliability in their application in conjunction with LOOM. These can include making two code regions mutually exclusive even when accessing different objects or with extreme measures, making them run in single threaded mode. &lt;br /&gt;
&lt;br /&gt;
An evacuation algorithm is used for safety as to not introduce new errors. A critical region is marked using static analysis. All threads in the critical region are then evacuated. After the evacuation is executed, the execution filter is installed and then the threads are resumed after a live update pause is done at a safe location. &lt;br /&gt;
&lt;br /&gt;
LOOM&#039;s hybrid instrumentation engine is used to reduce its overhead. The engine statically changes an applications binary to anticipate dynamic updates.&lt;br /&gt;
&lt;br /&gt;
Evaluation of LOOM was based on overhead, scalability, reliability, availability and timeliness. These were demonstrated using Apache and MySQL in conjunction with the multithreaded ApacheBench and SysBench, respectively.&lt;br /&gt;
&lt;br /&gt;
===Critique===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
====Good====&lt;br /&gt;
The authors of this essay are efficient at delivering the information surrounding their thesis both in staying focused on the main thesis as well as backing up thier topics with relevant examples and data. This helps to keep the thesis paramount throughout the paper. Examples throughout the paper, particularly the MySQL example ensure that the use of execution filters is clear to the reader. All of the examples are well documented and some (ex. Figure 2) are simplified as to not confuse the reader with too much unnessicary information. References throughout the writing backup the reliability of the paper and let the user keep track of the sources to properly check information and sources.&lt;br /&gt;
&lt;br /&gt;
The whole essay flows well and the information is delievered in a well put together order, allowing the reader to learn enough about LOOM (or any of the sub-topics involved in the explination) before being informed about the next relative subject. The paper ends with a conclusion that does a good job of wrapping up the whole paper in a clear and concise manner.&lt;br /&gt;
&lt;br /&gt;
====Not-So-Good====&lt;br /&gt;
===References===&lt;br /&gt;
&amp;lt;blockquote&amp;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.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3768</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3768"/>
		<updated>2010-10-14T14:51:22Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
-Started throwing in some citation links. Some are duplicates because I&#039;m not sure how to really do them correctly (kind of a wiki noob) -Afranco2&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads[https://computing.llnl.gov/tutorials/pthreads/]. These developments varied from one another, creating difficulties for programmers to implement portable thread applications[https://computing.llnl.gov/tutorials/pthreads/]. Traditionally, UNIX had a system, running only a single thread under a process[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf]. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990[http://www.opengroup.org/austin/papers/posix_faq.html][http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091]. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups[http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application[http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091]. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities[https://computing.llnl.gov/tutorials/pthreads/]. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.[http://www.unix.org/whitepapers/shdiffs.html]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3765</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3765"/>
		<updated>2010-10-14T14:48:07Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads[https://computing.llnl.gov/tutorials/pthreads/]. These developments varied from one another, creating difficulties for programmers to implement portable thread applications[https://computing.llnl.gov/tutorials/pthreads/]. Traditionally, UNIX had a system, running only a single thread under a process[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf]. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990[http://www.opengroup.org/austin/papers/posix_faq.html][http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091]. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups[http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application[http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091]. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities[https://computing.llnl.gov/tutorials/pthreads/]. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.[http://www.unix.org/whitepapers/shdiffs.html]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3764</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3764"/>
		<updated>2010-10-14T14:45:17Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads[https://computing.llnl.gov/tutorials/pthreads/]. These developments varied from one another, creating difficulties for programmers to implement portable thread applications[https://computing.llnl.gov/tutorials/pthreads/]. Traditionally, UNIX had a system, running only a single thread under a process[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf]. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990[http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf][http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091]. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups[http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.[http://www.unix.org/whitepapers/shdiffs.html]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3763</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3763"/>
		<updated>2010-10-14T14:45:06Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads[https://computing.llnl.gov/tutorials/pthreads/. These developments varied from one another, creating difficulties for programmers to implement portable thread applications[https://computing.llnl.gov/tutorials/pthreads/]. Traditionally, UNIX had a system, running only a single thread under a process[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf]. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990[http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf][http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091]. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups[http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.[http://www.unix.org/whitepapers/shdiffs.html]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3761</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3761"/>
		<updated>2010-10-14T14:43:56Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads. These developments varied from one another, creating difficulties for programmers to implement portable thread applications. Traditionally, UNIX had a system, running only a single thread under a process[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf]. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990[http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf][http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091]. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups[http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=0607607821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.[http://www.unix.org/whitepapers/shdiffs.html]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3752</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3752"/>
		<updated>2010-10-14T14:36:44Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads. These developments varied from one another, creating difficulties for programmers to implement portable thread applications. Traditionally, UNIX had a system, running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.[http://www.unix.org/whitepapers/shdiffs.html]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3751</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3751"/>
		<updated>2010-10-14T14:36:15Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads. These developments varied from one another, creating difficulties for programmers to implement portable thread applications. Traditionally, UNIX had a system, running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.&amp;lt;ref name=&amp;quot;ShellCommandLanguage&amp;quot;/&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;ShellCommandLanguage&amp;quot;&amp;gt; Shell Command Language, http://www.unix.org/whitepapers/shdiffs.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3747</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3747"/>
		<updated>2010-10-14T14:33:12Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads. These developments varied from one another, creating difficulties for programmers to implement portable thread applications. Traditionally, UNIX had a system, running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.&amp;lt;ref name=&amp;quot;ShellCommandLanguage&amp;quot; group=&amp;quot;Ref&amp;quot;/&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references group=&amp;quot;Ref&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;ShellCommandLanguage&amp;quot;&amp;gt; Shell Command Language, http://www.unix.org/whitepapers/shdiffs.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3746</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3746"/>
		<updated>2010-10-14T14:32:03Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads. These developments varied from one another, creating difficulties for programmers to implement portable thread applications. Traditionally, UNIX had a system, running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.&amp;lt;ref name=&amp;quot;ShellCommandLanguage&amp;quot; group=&amp;quot;Ref&amp;quot;/&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;references group=&amp;quot;Ref&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;ShellCommandLanguage:&amp;gt; Shell Command Language, http://www.unix.org/whitepapers/shdiffs.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3742</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3742"/>
		<updated>2010-10-14T14:27:40Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads. These developments varied from one another, creating difficulties for programmers to implement portable thread applications. Traditionally, UNIX had a system, running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.[http://www.unix.org/whitepapers/shdiffs.html]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[1] - Shell Command Language, www.unix.org&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3741</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3741"/>
		<updated>2010-10-14T14:27:23Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads. These developments varied from one another, creating difficulties for programmers to implement portable thread applications. Traditionally, UNIX had a system, running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.[http://www.unix.org/whitepapers/shdiffs.html]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[http://www.unix.org/whitepapers/shdiffs.html] - Shell Command Language, www.unix.org&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3740</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3740"/>
		<updated>2010-10-14T14:26:27Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads. These developments varied from one another, creating difficulties for programmers to implement portable thread applications. Traditionally, UNIX had a system, running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables.[http://www.unix.org/whitepapers/shdiffs.html]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=3737</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=3737"/>
		<updated>2010-10-14T14:24:42Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Sources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Group 8 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GROUP NAMES:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Niravkumar Patel (Npatel1)&lt;br /&gt;
&lt;br /&gt;
Trevor Malone (Tmalone)&lt;br /&gt;
&lt;br /&gt;
Mark Walts (Rift)&lt;br /&gt;
&lt;br /&gt;
John Vanden Heuvel (jvheuvel)&lt;br /&gt;
&lt;br /&gt;
Jeff Francom (Afranco2)&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf POSIX Threads and the Linux Kernel] --[[User:Gautam|Gautam]] 23:52, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not from your group. However I found a webpage which you might find useful. &lt;br /&gt;
[http://www.drdobbs.com/open-source/184406204;jsessionid=3MRSO5YMO1QVRQE1GHRSKHWATMY32JVN The New Implementation of Threads for Linux]&lt;br /&gt;
--[[User:Gautam|Gautam]] 22:56, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not extremely helpful but: [http://www.unix.com/unix-dummies-questions-answers/7-short-history-unix-l-madden-ic-ac-uk.html A short history of unix] [[User:Rift|Rift]] 18:30, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf IEEE POSIX Testing Policy General Information&lt;br /&gt;
The POSIX family of standards, Stephen R. Walli&lt;br /&gt;
-afranco2&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure how we are planning on structuring this essay, but I will just write a bit on the history of Posix part for now. Does somebody want to handle writing an intro? - afranco2&lt;br /&gt;
&lt;br /&gt;
Hey guys, sorry for the late reply...&lt;br /&gt;
i just wanted everyone to finish their assignment portion. we would have our own set of explanation for question 8. &lt;br /&gt;
&lt;br /&gt;
AFRANCO2; Here is a suggestion.&lt;br /&gt;
&lt;br /&gt;
1st paragraph;&lt;br /&gt;
should consist defining UNIX and POSIX/Threads &lt;br /&gt;
&lt;br /&gt;
2nd paragrah;&lt;br /&gt;
consisting the history behind POSIX and why UNIX was so late to implement the support of multithreaded processes. &lt;br /&gt;
&lt;br /&gt;
3rd paragraph;&lt;br /&gt;
should conclude it all.&lt;br /&gt;
&lt;br /&gt;
I agree, but I don&#039;t think that we should limit it to specifically &#039;paragraphs&#039; but rather sections. -afranco2&lt;br /&gt;
&lt;br /&gt;
Here is a site that would take care of paragraph 1:&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
GAUTHAM provided us with very useful pdf. that talks about the history of POSIX.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This may be a stupid question, buy does anybody know what we have to do for citation? Are we using footnotes like a regular wiki? Or is there another conformation we need to follow? -afranco2&lt;br /&gt;
&lt;br /&gt;
                 --footnotes are probably easiest, John v.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll  take care of the first paragraph if you guys are comfortable with the structure of the essay (post it by the end of today). since we already have AFRANCO2 who did the history portion of the essay.&lt;br /&gt;
&lt;br /&gt;
I made a new tab for &amp;quot;ESSAY&amp;quot; final copy*&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the citations; just keep the links you used to gather the information, we&#039;ll ask him on Tuesday.&lt;br /&gt;
(i was just wondering, is this is the kind of structure you were looking for? or should we change the structure?)&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
So what all do we need left? Sorry I am out of town trying to keep up as much as possible. Ive posted my research content on the primary page. And I&#039;ve noticed we are getting pretty organized with our essay format. Just as an update process what has been completed and what is left to do? Because i don&#039;t wanna type up a bunch of information we may not need anymore. So Whatever else we need I can type up with all our info and then we can out the together the essay in the next couple days.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
And I think the structure is a good idea. We have enough information to turn it all into a good essay. If you have another suggestion on the structure though by all means tell us what you think.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
sounds good! I&#039;m sorry i was unable to post the Intro today...&lt;br /&gt;
I&#039;ll make sure to have it by tomorrow!&lt;br /&gt;
&lt;br /&gt;
Tmalone, i think we have good portion for History; i will get us started with a good intro then link in the history as our second paragraph which afranco2 has provided. then we&#039;ll talk about why UNIX was soo late; finally conclude it all with a last paragraph.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Alright, I&#039;ll get started on a possible conclusion format. Then we can post it all and edit and add/delete whatever we want. So then hopefully by Tuesdays class we will have a good make-up of the essay we want.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
I read the current essay format posted. It was really well done good job guys. I read over it and corrected some minor grammar errors. So by sometime tomorrow I&#039;ll have a possible conclusion paragraph posted. If anyone else wants to type anything up for a conclusion they can feel free to as well! The more the better.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
It&#039;s looking good. Sorry if i&#039;m a bit late to the party. I threw a paragraph down in the answer part. I know it doesn&#039;t really fit well.. but it really nees to get worked in.. -Rift&lt;br /&gt;
&lt;br /&gt;
little late here too, got sidetracked with 3004 and 3008.  I do have a concern in that 3 paragraphs really isn&#039;t an essay, he seemed to want more than that JOhn v.&lt;br /&gt;
&lt;br /&gt;
anyone remember what was cited where in the essay?  we&#039;re still missing references -- John&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
yeah, Tmalone decided that he was going to do the citation suitable to the essay. Feel free to help; upon finishing, we&#039;ll post it on the &amp;quot;page&amp;quot;. Nothing fancy, Prof. Anil mentioned that he just wanted the basic format. John, the information that was cited is in discussion and also in collaboration.  -[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&lt;br /&gt;
Everyone please post any extra links here;&lt;br /&gt;
we&#039;ll organize it after everyone posts their links.&lt;br /&gt;
&lt;br /&gt;
posted the ones that are provided on our discussion.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
http://www.unix.org/whitepapers/shdiffs.html&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://sourceware.org/pthreads-win32/ &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.drdobbs.com/open-source/184406204;jsessionid=GKSVKT3EOMUBDQE1GHRSKHWATMY32JVN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091&lt;br /&gt;
&lt;br /&gt;
Journal article &amp;quot;Achieving Efficiency and Portability in Systems Software: A Case Study on POSIX-Compliant Multithreaded Programs&amp;quot; http://dx.doi.org.proxy.library.carleton.ca/10.1109/TSE.2005.98&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3735</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3735"/>
		<updated>2010-10-14T14:24:10Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the final copy guys, feel free to edit the essay under &amp;quot;Unsorted&amp;quot;. if it requires major changes please post a note in discussion board, cheers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The beginning of POSIX Threads starts off with hardware sellers executing their own versions of threads. These developments varied from one another, creating difficulties for programmers to implement portable thread applications. Traditionally, UNIX had a system, running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Soon after, developers created high demand for the ability to run multiple threads under one process and consequently, IEEE began to form together the POSIX standards. In 1988, POSIX.1 - created to support application portability – was ratified and accepted as the international standard in 1990. After the approval, the POSIX standard grew to more than 20 individual standards, encapsulating a large area of different groups. &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. However, it does not define how the interface should be implemented on the OS, allowing many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much of the same reason as POSIX.1; portable shell programming and portable program development, but describes a programmable shell and its common utilities. Although POSIX.2 improved on the original, POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX. These differences include: naming conventions (identifiers, operators, etc...), parameters and variables..&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In the last twenty years, several advancements took place; there was a huge leap from the basic performance and function of a standard thread to a multi-threading, high performance POSIX thread. However, before it was given recognition as being efficient with high performance, a POSIX thread had numerous setbacks and high-priority challenges. Although the basic principle of a POSIX thread within UNIX was already executed by hardware sellers, it was under different names with minor structural variations, prohibiting developers to create portable thread applications. Fortunately, these issues were resolved and POSIX threads were enhanced, with continuous improvements on the way. Developers made an extraordinary breakthrough in concurrent programming by enabling efficiency and high performance, especially during immense modifications to data structure. Even with a rough past, POSIX threads have improved to become one of the most widely-known and commonly used method of adding concurrency to an application.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=Unsorted=&lt;br /&gt;
(unsorted essay)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]] ; oh i just wanted to make sure since the prof. emphasized on it a lot last class! thanks Afranco2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX (Portable Operating System Interface) threads, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OSes. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads (from POSIX threads) are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthreads have become a commonly used way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; their syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in their own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
^^^ this statement sounds a bit off.  why does UNIX care what Linux can handle? - John v.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;ll look into that tomorrow; working on 3005 Assignment. John, if you have a suggestion or an add-on that you wish to provide, please do so under collaboration. &lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
Hey guys, before end of tomorrow if there is anything missing or if anyone wishes to contribute more towards the essay please do so asap.&lt;br /&gt;
&lt;br /&gt;
-[[User:Npatel1|Npatel1]]&lt;br /&gt;
&lt;br /&gt;
UNIX cares about what Linux can handle because POSIX threads are mainly used in Linux systems. It is a very big deal if a  certain type of thread is generating countless errors on the main system type the thread is created for. And regardless of just the fact that its widely used on Linux, UNIX would care because compatibility is one of the most important things to have. For a POSIX thread to not be compatible with Linux just because UNIX didn&#039;t care, then the progress of multi-threading and POSIX threads would not be able to be used in Linux. Then Linux would not be as widely used as it would not be enhanced like other systems. It is important for systems to have that compatibility, so that they don&#039;t end up left in the dust of technology.&lt;br /&gt;
&lt;br /&gt;
-[[User:Tmalone|Tmalone]]&lt;br /&gt;
&lt;br /&gt;
=Collaboration=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Here is a possible simple conclusion I&#039;ve typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol&lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. What are now considered POSIX threads have just been aliased for many years. The late implementation of these threads was because of the fact that so many developers had the basic principle of a POSIX thread in use, it was simply under a different name with minor structural differences. It is quite evident how POSIX threads came to be over the years especially within the UNIX system. From the basic performance and function of a standard thread to the multi-threading abilities of the POSIX thread, the development became more and more concrete. Though problems arose, such as creating portable thread applications between developers, solutions were found. POSIX.1 and POSIX.2 were created to display interfaces with specific syntax and to describe programming shells for many operating systems. Given the last 20 years when the leap was taken between a standard thread and a POSIX thread, and the speed in which the POSIX thread has been implemented, it can be said that given another 20 years the POSIX thread will have turned into something even more worth the wait.&lt;br /&gt;
&lt;br /&gt;
Okay guys this is a conclusion I&#039;ve typed up. I have absolutely no idea if this is good enough, I find it pretty tough to write conclusions. Nonetheless, feel free to make changes and add/delete whatever you want. I&#039;m not sure how formal he wants it to be, but I hope this is at least decent. If you want me to make some changes let me know what to change and I&#039;ll do it asap.&lt;br /&gt;
&lt;br /&gt;
(I constantly make changes myself :p)&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Midterm_review_2010&amp;diff=3733</id>
		<title>COMP 3000 Midterm review 2010</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Midterm_review_2010&amp;diff=3733"/>
		<updated>2010-10-14T14:17:50Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay 8 Questions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Lab 1 Questions==&lt;br /&gt;
&lt;br /&gt;
# What are the key advantages of installing VM-specific device drivers in a guest OS?&lt;br /&gt;
# Typically, what does a guest OS&#039;s hard disk look like to the host OS?&lt;br /&gt;
# If a virtual machine is allocated 512 MB of RAM, how much physical RAM (as seen by the host OS) will be consumed?&lt;br /&gt;
&lt;br /&gt;
==Lab 2 Questions==&lt;br /&gt;
&lt;br /&gt;
# The execve system call gets three arguments: a full pathname to an executable, arguments, and environment variables.  What are each of these for when &amp;quot;ls -a&amp;quot; is run?  &lt;br /&gt;
# Why doesn&#039;t ldd report all the libraries that are listed in /proc/&amp;lt;PID&amp;gt;/maps?&lt;br /&gt;
# When a process becomes undead (a zombie), who can send it to its grave permanently?  What must it do?&lt;br /&gt;
# UNIX files each have permissions for three classes of users.  What are those classes?  Extra credit: Does Windows have similar classes?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lab 3 Questions==&lt;br /&gt;
&lt;br /&gt;
# A solution to the producer/consumer problem must take into account many conditions.  What are three of them?&lt;br /&gt;
# Can the fork system call do everything the clone system call can do?  Explain.&lt;br /&gt;
# What are three events that cause signals to be sent in UNIX?&lt;br /&gt;
# What system call do you use to send data over an already existing pipe?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay 1 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 2 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 3 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 4 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 5 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 6 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 7 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 8 Questions==&lt;br /&gt;
&lt;br /&gt;
# What new style of processing caused the development of the POSIX standards?&lt;br /&gt;
&lt;br /&gt;
==Essay 9 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 10 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 11 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 12 Questions==&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Midterm_review_2010&amp;diff=3732</id>
		<title>COMP 3000 Midterm review 2010</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Midterm_review_2010&amp;diff=3732"/>
		<updated>2010-10-14T14:17:32Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Essay 8 Questions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Lab 1 Questions==&lt;br /&gt;
&lt;br /&gt;
# What are the key advantages of installing VM-specific device drivers in a guest OS?&lt;br /&gt;
# Typically, what does a guest OS&#039;s hard disk look like to the host OS?&lt;br /&gt;
# If a virtual machine is allocated 512 MB of RAM, how much physical RAM (as seen by the host OS) will be consumed?&lt;br /&gt;
&lt;br /&gt;
==Lab 2 Questions==&lt;br /&gt;
&lt;br /&gt;
# The execve system call gets three arguments: a full pathname to an executable, arguments, and environment variables.  What are each of these for when &amp;quot;ls -a&amp;quot; is run?  &lt;br /&gt;
# Why doesn&#039;t ldd report all the libraries that are listed in /proc/&amp;lt;PID&amp;gt;/maps?&lt;br /&gt;
# When a process becomes undead (a zombie), who can send it to its grave permanently?  What must it do?&lt;br /&gt;
# UNIX files each have permissions for three classes of users.  What are those classes?  Extra credit: Does Windows have similar classes?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lab 3 Questions==&lt;br /&gt;
&lt;br /&gt;
# A solution to the producer/consumer problem must take into account many conditions.  What are three of them?&lt;br /&gt;
# Can the fork system call do everything the clone system call can do?  Explain.&lt;br /&gt;
# What are three events that cause signals to be sent in UNIX?&lt;br /&gt;
# What system call do you use to send data over an already existing pipe?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Essay 1 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 2 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 3 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 4 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 5 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 6 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 7 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 8 Questions==&lt;br /&gt;
&lt;br /&gt;
# What new processing idea caused the development of the POSIX standards?&lt;br /&gt;
&lt;br /&gt;
==Essay 9 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 10 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 11 Questions==&lt;br /&gt;
&lt;br /&gt;
==Essay 12 Questions==&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=3570</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=3570"/>
		<updated>2010-10-14T03:02:12Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Group 8 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GROUP NAMES:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Niravkumar Patel (Npatel1)&lt;br /&gt;
&lt;br /&gt;
Trevor Malone (Tmalone)&lt;br /&gt;
&lt;br /&gt;
Mark Walts (Rift)&lt;br /&gt;
&lt;br /&gt;
John Vanden Heuvel (jvheuvel)&lt;br /&gt;
&lt;br /&gt;
Jeff Francom (Afranco2)&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf POSIX Threads and the Linux Kernel] --[[User:Gautam|Gautam]] 23:52, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not from your group. However I found a webpage which you might find useful. &lt;br /&gt;
[http://www.drdobbs.com/open-source/184406204;jsessionid=3MRSO5YMO1QVRQE1GHRSKHWATMY32JVN The New Implementation of Threads for Linux]&lt;br /&gt;
--[[User:Gautam|Gautam]] 22:56, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not extremely helpful but: [http://www.unix.com/unix-dummies-questions-answers/7-short-history-unix-l-madden-ic-ac-uk.html A short history of unix] [[User:Rift|Rift]] 18:30, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf IEEE POSIX Testing Policy General Information&lt;br /&gt;
The POSIX family of standards, Stephen R. Walli&lt;br /&gt;
-afranco2&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure how we are planning on structuring this essay, but I will just write a bit on the history of Posix part for now. Does somebody want to handle writing an intro? - afranco2&lt;br /&gt;
&lt;br /&gt;
Hey guys, sorry for the late reply...&lt;br /&gt;
i just wanted everyone to finish their assignment portion. we would have our own set of explanation for question 8. &lt;br /&gt;
&lt;br /&gt;
AFRANCO2; Here is a suggestion.&lt;br /&gt;
&lt;br /&gt;
1st paragraph;&lt;br /&gt;
should consist defining UNIX and POSIX/Threads &lt;br /&gt;
&lt;br /&gt;
2nd paragrah;&lt;br /&gt;
consisting the history behind POSIX and why UNIX was so late to implement the support of multithreaded processes. &lt;br /&gt;
&lt;br /&gt;
3rd paragraph;&lt;br /&gt;
should conclude it all.&lt;br /&gt;
&lt;br /&gt;
I agree, but I don&#039;t think that we should limit it to specifically &#039;paragraphs&#039; but rather sections. -afranco2&lt;br /&gt;
&lt;br /&gt;
Here is a site that would take care of paragraph 1:&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
GAUTHAM provided us with very useful pdf. that talks about the history of POSIX.&lt;br /&gt;
- Npatel1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This may be a stupid question, buy does anybody know what we have to do for citation? Are we using footnotes like a regular wiki? Or is there another conformation we need to follow? -afranco2&lt;br /&gt;
&lt;br /&gt;
                 --footnotes are probably easiest, John v.&lt;br /&gt;
&lt;br /&gt;
I&#039;ll  take care of the first paragraph if you guys are comfortable with the structure of the essay (post it by the end of today). since we already have AFRANCO2 who did the history portion of the essay.&lt;br /&gt;
&lt;br /&gt;
I made a new tab for &amp;quot;ESSAY&amp;quot; final copy*&lt;br /&gt;
&lt;br /&gt;
- Npatel1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the citations; just keep the links you used to gather the information, we&#039;ll ask him on Tuesday.&lt;br /&gt;
(i was just wondering, is this is the kind of structure you were looking for? or should we change the structure?)&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
So what all do we need left? Sorry I am out of town trying to keep up as much as possible. Ive posted my research content on the primary page. And I&#039;ve noticed we are getting pretty organized with our essay format. Just as an update process what has been completed and what is left to do? Because i don&#039;t wanna type up a bunch of information we may not need anymore. So Whatever else we need I can type up with all our info and then we can out the together the essay in the next couple days.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
And I think the structure is a good idea. We have enough information to turn it all into a good essay. If you have another suggestion on the structure though by all means tell us what you think.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
sounds good! I&#039;m sorry i was unable to post the Intro today...&lt;br /&gt;
I&#039;ll make sure to have it by tomorrow!&lt;br /&gt;
&lt;br /&gt;
Tmalone, i think we have good portion for History; i will get us started with a good intro then link in the history as our second paragraph which afranco2 has provided. then we&#039;ll talk about why UNIX was soo late; finally conclude it all with a last paragraph.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
Alright, I&#039;ll get started on a possible conclusion format. Then we can post it all and edit and add/delete whatever we want. So then hopefully by Tuesdays class we will have a good make-up of the essay we want.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
I read the current essay format posted. It was really well done good job guys. I read over it and corrected some minor grammar errors. So by sometime tomorrow I&#039;ll have a possible conclusion paragraph posted. If anyone else wants to type anything up for a conclusion they can feel free to as well! The more the better.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
It&#039;s looking good. Sorry if i&#039;m a bit late to the party. I threw a paragraph down in the answer part. I know it doesn&#039;t really fit well.. but it really nees to get worked in.. -Rift&lt;br /&gt;
&lt;br /&gt;
little late here too, got sidetracked with 3004 and 3008.  I do have a concern in that 3 paragraphs really isn&#039;t an essay, he seemed to want more than that JOhn v.&lt;br /&gt;
&lt;br /&gt;
anyone remember what was cited where in the essay?  we&#039;re still missing references -- John&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&lt;br /&gt;
Everyone please post any extra links here;&lt;br /&gt;
we&#039;ll organize it after everyone posts their links.&lt;br /&gt;
&lt;br /&gt;
posted the ones that are provided on our discussion.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.drdobbs.com/open-source/184406204;jsessionid=GKSVKT3EOMUBDQE1GHRSKHWATMY32JVN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091&lt;br /&gt;
&lt;br /&gt;
Journal article &amp;quot;Achieving Efficiency and Portability in Systems Software: A Case Study on POSIX-Compliant Multithreaded Programs&amp;quot; http://dx.doi.org.proxy.library.carleton.ca/10.1109/TSE.2005.98&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3055</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=3055"/>
		<updated>2010-10-12T15:16:48Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
(Final Copy goes here)&lt;br /&gt;
&lt;br /&gt;
-Npatel1; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.&lt;br /&gt;
&lt;br /&gt;
-Npatel1; Trevor, last lines should get us started on the conclusion. Afranco2; i went to class today and prof. was talking about plagiarism, can you please check your paragraph and see if there is any signs of plagiarism. since i don&#039;t know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph. &lt;br /&gt;
&lt;br /&gt;
-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091 That is one of the sources which I used for my information. I don&#039;t believe that I am plagiarizing, but I know that it is easy to do accidentally. If somebody wants to check it over for me to make sure, that would be great. My information comes from the first and second page. I also used POSIX Threads and the Linux Kernel and a little bit from IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; thier syntax, and how they should act. It however does not define how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in thier own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto Linux; this is due to the significant differences in relationship between POSIX and UNIX.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
A bit different of a explanation of the history of threads in Unix: &lt;br /&gt;
&lt;br /&gt;
Originally in UNIX things similar to threads existed, they were however, called processes. The “processes” shared memory and used semaphores and thus “threads” have been around from the start. However, they disappeared when UNIX took the multics definition of process to mean they should not share memory, and all of sudden the ability to have threads disappeared. As people clamored to have the good old processes back, they created a new thing called “threads” that was actually what they had previously. So while it seemed they were late to support multithreaded processes, in reality they merely had a brief period where they didn’t have multi-threadedness.&lt;br /&gt;
&lt;br /&gt;
-[[User:Rift|Rift]] 23:42, 10 October 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=3054</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=3054"/>
		<updated>2010-10-12T15:12:07Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Sources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Group 8 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GROUP NAMES:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Niravkumar Patel (Npatel1)&lt;br /&gt;
&lt;br /&gt;
Trevor Malone (Tmalone)&lt;br /&gt;
&lt;br /&gt;
Mark Walts (Rift)&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf POSIX Threads and the Linux Kernel] --[[User:Gautam|Gautam]] 23:52, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not from your group. However I found a webpage which you might find useful. &lt;br /&gt;
[http://www.drdobbs.com/open-source/184406204;jsessionid=3MRSO5YMO1QVRQE1GHRSKHWATMY32JVN The New Implementation of Threads for Linux]&lt;br /&gt;
--[[User:Gautam|Gautam]] 22:56, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not extremely helpful but: [http://www.unix.com/unix-dummies-questions-answers/7-short-history-unix-l-madden-ic-ac-uk.html A short history of unix] [[User:Rift|Rift]] 18:30, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf IEEE POSIX Testing Policy General Information&lt;br /&gt;
The POSIX family of standards, Stephen R. Walli&lt;br /&gt;
-afranco2&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure how we are planning on structuring this essay, but I will just write a bit on the history of Posix part for now. Does somebody want to handle writing an intro? - afranco2&lt;br /&gt;
&lt;br /&gt;
Hey guys, sorry for the late reply...&lt;br /&gt;
i just wanted everyone to finish their assignment portion. we would have our own set of explanation for question 8. &lt;br /&gt;
&lt;br /&gt;
AFRANCO2; Here is a suggestion.&lt;br /&gt;
&lt;br /&gt;
1st paragraph;&lt;br /&gt;
should consist defining UNIX and POSIX/Threads &lt;br /&gt;
&lt;br /&gt;
2nd paragrah;&lt;br /&gt;
consisting the history behind POSIX and why UNIX was so late to implement the support of multithreaded processes. &lt;br /&gt;
&lt;br /&gt;
3rd paragraph;&lt;br /&gt;
should conclude it all.&lt;br /&gt;
&lt;br /&gt;
I agree, but I don&#039;t think that we should limit it to specifically &#039;paragraphs&#039; but rather sections. -afranco2&lt;br /&gt;
&lt;br /&gt;
Here is a site that would take care of paragraph 1:&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
GAUTHAM provided us with very useful pdf. that talks about the history of POSIX.&lt;br /&gt;
- Npatel1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This may be a stupid question, buy does anybody know what we have to do for citation? Are we using footnotes like a regular wiki? Or is there another conformation we need to follow? -afranco2&lt;br /&gt;
&lt;br /&gt;
I&#039;ll  take care of the first paragraph if you guys are comfortable with the structure of the essay (post it by the end of today). since we already have AFRANCO2 who did the history portion of the essay.&lt;br /&gt;
&lt;br /&gt;
I made a new tab for &amp;quot;ESSAY&amp;quot; final copy*&lt;br /&gt;
&lt;br /&gt;
- Npatel1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the citations; just keep the links you used to gather the information, we&#039;ll ask him on Tuesday.&lt;br /&gt;
(i was just wondering, is this is the kind of structure you were looking for? or should we change the structure?)&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
So what all do we need left? Sorry I am out of town trying to keep up as much as possible. Ive posted my research content on the primary page. And I&#039;ve noticed we are getting pretty organized with our essay format. Just as an update process what has been completed and what is left to do? Because i don&#039;t wanna type up a bunch of information we may not need anymore. So Whatever else we need I can type up with all our info and then we can out the together the essay in the next couple days.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
And I think the structure is a good idea. We have enough information to turn it all into a good essay. If you have another suggestion on the structure though by all means tell us what you think.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
sounds good! I&#039;m sorry i was unable to post the Intro today...&lt;br /&gt;
I&#039;ll make sure to have it by tomorrow!&lt;br /&gt;
&lt;br /&gt;
Tmalone, i think we have good portion for History; i will get us started with a good intro then link in the history as our second paragraph which afranco2 has provided. then we&#039;ll talk about why UNIX was soo late; finally conclude it all with a last paragraph.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
Alright, I&#039;ll get started on a possible conclusion format. Then we can post it all and edit and add/delete whatever we want. So then hopefully by Tuesdays class we will have a good make-up of the essay we want.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
I read the current essay format posted. It was really well done good job guys. I read over it and corrected some minor grammar errors. So by sometime tomorrow I&#039;ll have a possible conclusion paragraph posted. If anyone else wants to type anything up for a conclusion they can feel free to as well! The more the better.&lt;br /&gt;
&lt;br /&gt;
- Tmalone&lt;br /&gt;
&lt;br /&gt;
It&#039;s looking good. Sorry if i&#039;m a bit late to the party. I threw a paragraph down in the answer part. I know it doesn&#039;t really fit well.. but it really nees to get worked in.. -Rift&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&lt;br /&gt;
Everyone please post any extra links here;&lt;br /&gt;
we&#039;ll organize it after everyone posts their links.&lt;br /&gt;
&lt;br /&gt;
posted the ones that are provided on our discussion.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.drdobbs.com/open-source/184406204;jsessionid=GKSVKT3EOMUBDQE1GHRSKHWATMY32JVN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&amp;amp;key2=6626986821&amp;amp;coll=GUIDE&amp;amp;dl=GUIDE&amp;amp;CFID=108396689&amp;amp;CFTOKEN=35895091&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2835</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2835"/>
		<updated>2010-10-10T18:41:57Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
(Final Copy goes here)&lt;br /&gt;
&lt;br /&gt;
-Npatel1; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX.1 lays out the interfaces for OS services; thier syntax, and how they should act. It however does not define the how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in thier own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2834</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2834"/>
		<updated>2010-10-10T18:41:15Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
(Final Copy goes here)&lt;br /&gt;
&lt;br /&gt;
-Npatel1; here is the first paragraph. you can edit/add more to the paragraph if needed!&lt;br /&gt;
-Afranco2; I put in the history section/strung in tmalone&#039;s stuff as well. Again, feel free to edit/add content&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;POSIX threads, also known as Portable Operating System Interface, are high performance threads mainly distributed in UNIX but also to some Microsoft Windows OS. Threads are used in parallel programming; when a system call executes, the thread runs on an independent stream to finish its task with minimal interruptions or slowdowns. Pthreads are ideal for massive modifications to programs because the threads share one single memory space to alter a data structure, allowing constant high performance and efficiency. Pthread has become commonly used a way of adding concurrency to an application. They are widely used in UNIX; a powerful operating system written in the C language, which is continuously enhanced. Developers came across various obstacles with POSIX threads; during the beginnings of Pthreads, many technical issues had surfaced which were resolved throughout the history of POSIX threads.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; thier syntax, and how they should act. It however does not define the how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in thier own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. Portable Operating System interface; mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resides inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2684</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2684"/>
		<updated>2010-10-09T19:05:31Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sources ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf POSIX Threads and the Linux Kernel] --[[User:Gautam|Gautam]] 23:52, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not from your group. However I found a webpage which you might find useful. &lt;br /&gt;
[http://www.drdobbs.com/open-source/184406204;jsessionid=3MRSO5YMO1QVRQE1GHRSKHWATMY32JVN The New Implementation of Threads for Linux]&lt;br /&gt;
--[[User:Gautam|Gautam]] 22:56, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not extremely helpful but: [http://www.unix.com/unix-dummies-questions-answers/7-short-history-unix-l-madden-ic-ac-uk.html A short history of unix] [[User:Rift|Rift]] 18:30, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf IEEE POSIX Testing Policy General Information&lt;br /&gt;
The POSIX family of standards, Stephen R. Walli&lt;br /&gt;
-afranco2&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure how we are planning on structuring this essay, but I will just write a bit on the history of Posix part for now. Does somebody want to handle writing an intro? - afranco2&lt;br /&gt;
&lt;br /&gt;
Hey guys, sorry for the late reply...&lt;br /&gt;
i just wanted everyone to finish their assignment portion. we would have our own set of explanation for question 8. &lt;br /&gt;
&lt;br /&gt;
AFRANCO2; you mentioned that how are we taking care of the structure of the essay? &lt;br /&gt;
&lt;br /&gt;
here is a suggestion:&lt;br /&gt;
&lt;br /&gt;
1st paragraph;&lt;br /&gt;
should consist defining UNIX and POSIX/Threads &lt;br /&gt;
&lt;br /&gt;
2nd paragrah;&lt;br /&gt;
consisting the history behind POSIX and why UNIX was so late to implement the support of multithreaded processes. &lt;br /&gt;
&lt;br /&gt;
3rd paragraph;&lt;br /&gt;
should conclude it all.&lt;br /&gt;
&lt;br /&gt;
I agree, but I don&#039;t think that we should limit it to specifically &#039;paragraphs&#039; but rather sections. -afranco2&lt;br /&gt;
&lt;br /&gt;
Here is a site that would take care of paragraph 1:&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
GAUTHAM provided us with very useful pdf. that talks about the history of POSIX.&lt;br /&gt;
- Npatel1&lt;br /&gt;
&lt;br /&gt;
This may be a stupid question, buy does anybody know what we have to do for citation? Are we using footnotes like a regular wiki? Or is there another conformation we need to follow? -afranco2&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2683</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2683"/>
		<updated>2010-10-09T19:02:29Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Essay=&lt;br /&gt;
(Final Copy goes here)&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. It’s a Portable Operating System interface is mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resigns inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
Just a reorganized version of the above, with more history edited into the middle. See the discussion page for organization notes:&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. It’s a Portable Operating System interface is mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resigns inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. &lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 (created to support application portability) was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX.1 lays out the interfaces for OS services; thier syntax, and how they should act. It however does not define the how the interface should be implemented on the OS. This is made to allow many different operating systems to conform to standards in thier own specific design and application. POSIX.2 was created for much the same reason as POSIX.1 (portable shell programming, portable program development) but describes a programmable shell and its common utilities.&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
-afranco2&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2681</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2681"/>
		<updated>2010-10-09T18:51:35Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. It’s a Portable Operating System interface is mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resigns inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
Just a reorganized version of the above, with more history edited into the middle. See the discussion page for organization notes:&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. It’s a Portable Operating System interface is mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resigns inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. &lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
-afranco2&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2680</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2680"/>
		<updated>2010-10-09T18:51:02Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sources ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf POSIX Threads and the Linux Kernel] --[[User:Gautam|Gautam]] 23:52, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not from your group. However I found a webpage which you might find useful. &lt;br /&gt;
[http://www.drdobbs.com/open-source/184406204;jsessionid=3MRSO5YMO1QVRQE1GHRSKHWATMY32JVN The New Implementation of Threads for Linux]&lt;br /&gt;
--[[User:Gautam|Gautam]] 22:56, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not extremely helpful but: [http://www.unix.com/unix-dummies-questions-answers/7-short-history-unix-l-madden-ic-ac-uk.html A short history of unix] [[User:Rift|Rift]] 18:30, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf IEEE POSIX Testing Policy General Information&lt;br /&gt;
The POSIX family of standards, Stephen R. Walli&lt;br /&gt;
-afranco2&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure how we are planning on structuring this essay, but I will just write a bit on the history of Posix part for now. Does somebody want to handle writing an intro? - afranco2&lt;br /&gt;
&lt;br /&gt;
Hey guys, sorry for the late reply...&lt;br /&gt;
i just wanted everyone to finish their assignment portion. we would have our own set of explanation for question 8. &lt;br /&gt;
&lt;br /&gt;
AFRANCO2; you mentioned that how are we taking care of the structure of the essay? &lt;br /&gt;
&lt;br /&gt;
here is a suggestion:&lt;br /&gt;
&lt;br /&gt;
1st paragraph;&lt;br /&gt;
should consist defining UNIX and POSIX/Threads &lt;br /&gt;
&lt;br /&gt;
2nd paragrah;&lt;br /&gt;
consisting the history behind POSIX and why UNIX was so late to implement the support of multithreaded processes. &lt;br /&gt;
&lt;br /&gt;
3rd paragraph;&lt;br /&gt;
should conclude it all.&lt;br /&gt;
&lt;br /&gt;
I agree, but I don&#039;t think that we should limit it to specifically &#039;paragraphs&#039; but rather sections. -afranco2&lt;br /&gt;
&lt;br /&gt;
Here is a site that would take care of paragraph 1:&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
GAUTHAM provided us with very useful pdf. that talks about the history of POSIX.&lt;br /&gt;
- Npatel1&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2679</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2679"/>
		<updated>2010-10-09T18:50:44Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sources ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf POSIX Threads and the Linux Kernel] --[[User:Gautam|Gautam]] 23:52, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not from your group. However I found a webpage which you might find useful. &lt;br /&gt;
[http://www.drdobbs.com/open-source/184406204;jsessionid=3MRSO5YMO1QVRQE1GHRSKHWATMY32JVN The New Implementation of Threads for Linux]&lt;br /&gt;
--[[User:Gautam|Gautam]] 22:56, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not extremely helpful but: [http://www.unix.com/unix-dummies-questions-answers/7-short-history-unix-l-madden-ic-ac-uk.html A short history of unix] [[User:Rift|Rift]] 18:30, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf IEEE POSIX Testing Policy General Information&lt;br /&gt;
The POSIX family of standards, Stephen R. Walli&lt;br /&gt;
-afranco2&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure how we are planning on structuring this essay, but I will just write a bit on the history of Posix part for now. Does somebody want to handle writing an intro? - afranco2&lt;br /&gt;
&lt;br /&gt;
Hey guys, sorry for the late reply...&lt;br /&gt;
i just wanted everyone to finish their assignment portion. we would have our own set of explanation for question 8. &lt;br /&gt;
&lt;br /&gt;
AFRANCO2; you mentioned that how are we taking care of the structure of the essay? &lt;br /&gt;
&lt;br /&gt;
here is a suggestion:&lt;br /&gt;
&lt;br /&gt;
1st paragraph;&lt;br /&gt;
should consist defining UNIX and POSIX/Threads &lt;br /&gt;
&lt;br /&gt;
2nd paragrah;&lt;br /&gt;
consisting the history behind POSIX and why UNIX was so late to implement the support of multithreaded processes. &lt;br /&gt;
&lt;br /&gt;
3rd paragraph;&lt;br /&gt;
should conclude it all.&lt;br /&gt;
&lt;br /&gt;
I agree, but I don&#039;t think that we should limit it to specifically &#039;paragraphs&#039; but rather sections.&lt;br /&gt;
&lt;br /&gt;
Here is a site that would take care of paragraph 1:&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
GAUTHAM provided us with very useful pdf. that talks about the history of POSIX.&lt;br /&gt;
- Npatel1&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2678</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2678"/>
		<updated>2010-10-09T18:49:51Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
	Posix threads began in an era when multithreading started becoming a popular idea. UNIX traditionally had a  system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.-afranco2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
POSIX Threads, or pthreads, is a thread that is commonly used in UNIX systems but it also seen in some Microsoft Windows systems. A thread is a unit of process that executes segments of code within applications. When a process gets called from the system, the thread will execute the code for the process. POSIX stands for Portable Operating System Interface (for UNIX) and has been used by many independent sellers of hardware. There has always been issues such that developers could not create a reliable protable pthread application. For the use of multi-threading, its implementation arrived fairly late because the systems could not support it. Data mapping onto Linux gave birth to several problems due to the fact that POSIX and UNIX were implemented so differently.&lt;br /&gt;
&lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edited version from what -tmalone has written.&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. It’s a Portable Operating System interface is mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resigns inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
&lt;br /&gt;
-Npatel1&lt;br /&gt;
&lt;br /&gt;
Just a reorganized version of the above, with more history edited into the middle. See the discussion page for organization notes:&lt;br /&gt;
&lt;br /&gt;
POSIX Threads is also called pthreads. It’s a Portable Operating System interface is mainly for Unix but it’s also distributed to some Microsoft Windows OS. A Thread is a unit of process that resigns inside a process and executes when a system call has been executed. Threads have same global and all the threads share memory, threads also contain their personal private data. Pthread has become commonly used a way of adding concurrency to an application. &lt;br /&gt;
&lt;br /&gt;
The history of POSIX Threads is that many hardware sellers executed their own versions of threads. These developments differed from one another, creating difficulties for programmers to implement portable thread applications. UNIX traditionally had a system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.&lt;br /&gt;
&lt;br /&gt;
POSIX threading has always been an issue on Linux. UNIX was so late to implement support for multithreaded process because it does not map that well onto linux; this is due to the significant differences in relationship between POSIX and UNIX.&lt;br /&gt;
-afranco2&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2608</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2608"/>
		<updated>2010-10-08T20:51:16Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Sources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sources ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf POSIX Threads and the Linux Kernel] --[[User:Gautam|Gautam]] 23:52, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not from your group. However I found a webpage which you might find useful. &lt;br /&gt;
[http://www.drdobbs.com/open-source/184406204;jsessionid=3MRSO5YMO1QVRQE1GHRSKHWATMY32JVN The New Implementation of Threads for Linux]&lt;br /&gt;
--[[User:Gautam|Gautam]] 22:56, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not extremely helpful but: [http://www.unix.com/unix-dummies-questions-answers/7-short-history-unix-l-madden-ic-ac-uk.html A short history of unix] [[User:Rift|Rift]] 18:30, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf IEEE POSIX Testing Policy General Information&lt;br /&gt;
The POSIX family of standards, Stephen R. Walli&lt;br /&gt;
-afranco2&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure how we are planning on structuring this essay, but I will just write a bit on the history of Posix part for now. Does somebody want to handle writing an intro? - afranco2&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2606</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2606"/>
		<updated>2010-10-08T20:49:10Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
	Posix threads began in an era when multithreading started becoming a popular idea. UNIX traditionally had a  system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.-afranco2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure about the rest of you, but most of what I am able to find has to do with information on things that fall under POSIX, not actually about POSIX-afranco2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2605</id>
		<title>COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_8&amp;diff=2605"/>
		<updated>2010-10-08T20:47:49Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
	Posix threads began in an era when multithreading started becoming a popular idea. UNIX traditionally had a  system running only a single thread under a process. These processes could not share memory and interacted using &#039;pipes&#039;. Once developers started wanting to be able to run multiple threads under one process, IEEE began to form together the POSIX standards. In 1988 POSIX.1 was ratified and was accepted as the international standard in 1990. From there the POSIX standards grew to more than 20 individual standards, encapsulating a large area of different groups.-afranco2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey guys, i&#039;m just gunna get this started by posting a few links for everyone to get going.  This will help explain a general idea of what they are and the history of them. Please add some more links or anything else you think would be helpful!&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/POSIX_Threads&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;br /&gt;
http://sourceware.org/pthreads-win32/&lt;br /&gt;
 &lt;br /&gt;
-[[User:tmalone|tmalone]]&lt;br /&gt;
&lt;br /&gt;
I found this, might not help, but it might:--[[User:Rannath|Rannath]] 02:09, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://www.faqs.org/faqs/os-research/part1/section-10.html&lt;br /&gt;
&lt;br /&gt;
Might be of some use as well --[[User:Lmundt|Lmundt]] 14:48, 7 October 2010 (UTC)&lt;br /&gt;
https://computing.llnl.gov/tutorials/pthreads/&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2601</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2601"/>
		<updated>2010-10-08T20:31:10Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sources ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf POSIX Threads and the Linux Kernel] --[[User:Gautam|Gautam]] 23:52, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not from your group. However I found a webpage which you might find useful. &lt;br /&gt;
[http://www.drdobbs.com/open-source/184406204;jsessionid=3MRSO5YMO1QVRQE1GHRSKHWATMY32JVN The New Implementation of Threads for Linux]&lt;br /&gt;
--[[User:Gautam|Gautam]] 22:56, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not extremely helpful but: [http://www.unix.com/unix-dummies-questions-answers/7-short-history-unix-l-madden-ic-ac-uk.html A short history of unix] [[User:Rift|Rift]] 18:30, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://standards.ieee.org/regauth/posix/POSIX-A.FM5.pdf IEEE POSIX Testing Policy General Information&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure how we are planning on structuring this essay, but I will just write a bit on the history of Posix part for now. Does somebody want to handle writing an intro? - afranco2&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2599</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2599"/>
		<updated>2010-10-08T20:20:00Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Sources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sources ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf POSIX Threads and the Linux Kernel] --[[User:Gautam|Gautam]] 23:52, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not from your group. However I found a webpage which you might find useful. &lt;br /&gt;
[http://www.drdobbs.com/open-source/184406204;jsessionid=3MRSO5YMO1QVRQE1GHRSKHWATMY32JVN The New Implementation of Threads for Linux]&lt;br /&gt;
--[[User:Gautam|Gautam]] 22:56, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not extremely helpful but: [http://www.unix.com/unix-dummies-questions-answers/7-short-history-unix-l-madden-ic-ac-uk.html A short history of unix] [[User:Rift|Rift]] 18:30, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure how we are planning on structuring this essay, but I will just write a bit on the history of Posix part for now. Does somebody want to handle writing an intro? - afranco2&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2598</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 8</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_8&amp;diff=2598"/>
		<updated>2010-10-08T20:19:47Z</updated>

		<summary type="html">&lt;p&gt;Afranco2: /* Sources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sources ==&lt;br /&gt;
&lt;br /&gt;
[http://www.kernel.org/doc/ols/2002/ols2002-pages-330-337.pdf POSIX Threads and the Linux Kernel] --[[User:Gautam|Gautam]] 23:52, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not from your group. However I found a webpage which you might find useful. &lt;br /&gt;
[http://www.drdobbs.com/open-source/184406204;jsessionid=3MRSO5YMO1QVRQE1GHRSKHWATMY32JVN The New Implementation of Threads for Linux]&lt;br /&gt;
--[[User:Gautam|Gautam]] 22:56, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Not extremely helpful but: [http://www.unix.com/unix-dummies-questions-answers/7-short-history-unix-l-madden-ic-ac-uk.html A short history of unix] [[User:Rift|Rift]] 18:30, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m not sure how we are planning on structuring this essay, but I will just write a bit on the history of Posix part for now. Does somebody want to handle writing an intro?&lt;/div&gt;</summary>
		<author><name>Afranco2</name></author>
	</entry>
</feed>