COMP 3000 Essay 1 2010 Question 8

From Soma-notes
Revision as of 13:55, 12 October 2010 by Tmalone (talk | contribs) (→‎Answer)
Jump to navigation Jump to search

Question

What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?

Essay

(Final Copy goes here)

-Npatel1; here is the first paragraph. you can edit/add more to the paragraph if needed!

-Afranco2; I put in the history section/strung in tmalone's stuff as well. Again, feel free to edit/add content

-Tmalone; Edited and corrected the information thus far. I will post a conclusion sometime tomorrow.

-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't know where you gathered your information from. upon you completion please post on wiki; need to make some modification to the body paragraph.

-http://delivery.acm.org/10.1145/220000/210315/p11-walli.pdf?key1=210315&key2=6626986821&coll=GUIDE&dl=GUIDE&CFID=108396689&CFTOKEN=35895091 That is one of the sources which I used for my information. I don'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


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.

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 'pipes'. 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.

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.


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.

Answer

Hey guys, i'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!

http://en.wikipedia.org/wiki/POSIX_Threads https://computing.llnl.gov/tutorials/pthreads/ http://sourceware.org/pthreads-win32/

-tmalone

I found this, might not help, but it might:--Rannath 02:09, 6 October 2010 (UTC)

I'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

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.

-tmalone

http://www.faqs.org/faqs/os-research/part1/section-10.html

Might be of some use as well --Lmundt 14:48, 7 October 2010 (UTC) https://computing.llnl.gov/tutorials/pthreads/


Edited version from what -tmalone has written.

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.

-Npatel1

A bit different of a explanation of the history of threads in Unix:

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.

-Rift 23:42, 10 October 2010 (UTC)

Here is a possible simple conclusion I've typed up. I used the first chunk of Rifts paragraph then just threw in some extra info. Go easy on me lol

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.

Okay guys this is a conclusion I'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'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'll do it asap.

(I constantly make changes myself :p)

- Tmalone