First published Hatena2011-05-12.
- Since when is a process flow called a âthreadâ?
- At the latest, in 1965, we were calling in the Berkeley Timesharing System.
- Prior to that, however, it was called âprocessâ. (even in Dijkstraâs â65 paper).
- This âprocessâ (unlike what we now imagine as a Unix-like process) had shared memory and used semaphores for exclusivity.
- In 1970 Max Smith prototyped threads on Multics, which was an attempt to have multiple stacks in a single weight process.
- The originator of âthreadsâ in programming languages is probably PL/I by IBM (1965-)
- It had the syntax `CALL XXX (A, B) TASK;â.
- This forks a thread for XXX.
- I do not know if any compilers have implemented this feature.
- It was made after careful study of how Multics was designed. For example, TASK calls are not mapped to processes, and memory is fully visible between threads.
- However, Multics changed direction and IBM removed TASK functionality from PL/I.
- Then Unix emerges.
- Unix used the word âprocessâ to mean âthread + virtual address spaceâ.
- (Incidentally, this notation in Unix is directly inherited from Multics.)
- That is why âprocessâ in the Unix sense has become a heavy thing that involves switching virtual address spaces.
- The processes could not share memory because they each have their own individual address space, but they could interact with each other using pipes and signals.
- The shared memory feature will be added much later.
- After a while, Unix users began to miss the old âmemory sharing process.
- This triggered the invention of the so-called âthreadâ.
- A thread is an âold-style processâ that shares the virtual address space that a single Unix process has.
- The term âlightweight processâ was also used in contrast to the heaviness of the Unix process.
- This distinction between âlightweightâ and âheavyweightâ processes can be traced back to the late 70s and early 80s, to the first âmicrokernels.
log
-
I suddenly wondered when threads were invented and looked it up, but Iâm not sure.
- Linux has supported kernel threads since 2.6, so 2003, or is that surprisingly new? Of course user-level threads are probably even older, but I wonder when.
- hideaki_t: NeXTSTEP (Mach 2.0?) had cthread.
- atsuoishimoto: I first heard the term âthreadâ in OS/2 in the early â90s, I think.
- This is 2004 > NetBSD 2.x+, and DragonFly BSD implement LWPs as kernel threads (1:1 model)
- shidocchi: I learned about it when I was doing Mach source reading in my grad school lab.
- October 2, 2001 Mac OS X v10.1âŚreal-time threads, thread management, and
- Single task â cooperative multitasking â preemptive multitasking (but one thread per process) â so Unix connected processes with pipes â but itâs hard if the data to be shared is large â letâs make a more detailed execution unit in the process (which can share data) â user thread â kernel thread Kernel thread, and so on.
- koyama41: pthread is 1995 and Solaris libthread is 1993, I thought UNIX origin was around that time http://download.oracle.com/docs/cd/E19253-01/819-0390/mtintro-75924/ index.html
- So Simula was 67 and the Actor model was 73 with Smalltalk in between.
- I understand that the concept of monitor, introduced by Hoare in concurrent Pascal, became widely popular when it was adopted by Java, but as a result, it was used in inappropriate ways, and the actor model was brought back into the spotlight by Aran and Scalar. Also, Iâm trying to figure out whatâs going on with closure.
-
(I canât find the origin of the thread here, so the story is spreading into parallelism.)
- I didnât Tweet this, but the time-sharing system was proposed in 1957, MITâs demonstration of the feasibility of a time-sharing system in 1961, and IBMâs release of a commercial time-sharing system OS in 1967.
- Dijkstraâs semaphore in 1965, the actor model in 1973, Hoareâs monitor in 1974, Javaâs release in 1995, and pthread in 1995. That seems to be about the time flow. I thought, âThreads are surprisingly young.
-
ksmakoto: the days when we called it âlightweight processâ.
-
kosaki55tea: I think the thread is older than the process. I canât find any references, though. I mean, if you have an OS that doesnât have virtual space management or something like that, you automatically only have threads.
-
AkioHoshi @kosaki55tea @nishio Excuse me for sidestepping, but the basic concept of Mach operating system is âtask and threadâ, which was introduced by Masami Hagiya at DECUS in Japan around 1987. native threading in UNIX was later From.
-
uebayasi: I googled faqs.org right away, but Usenet is too old for you to know. uebayasi: I googled it and found faqs.org right away.
-
[2.2.3]
The history of threads http://www.faqs.org/faqs/os-research/part1/section-10.html -
terazzo I googled and found that the idea of âthe importance of being able to create a lightweight process with easeâ came from http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.3458&rep=rep1&type=pdf It seems to have come from THOTH (http://cseweb.ucsd.edu/classes/wi08/cse221-a/papers/cheriton79.pdf)) or something like that.
-
A rough translation of The history of threads http://www.faqs.org/faqs/os-research/part1/section-10.html:.
-
When did we start calling a process flow a âthreadâ? We called it in the Berkeley Timesharing System in 1965 at the latest. But the concept of concurrency did not exist before then; it was called âprocessâ then. (Even in Dijkstraâs â65 paper.) This âprocessâ (unlike what we now imagine as a process in the Unix sense) had shared memory and used semaphores for exclusions.
-
In 1970 Max Smith prototyped threads on Multics, which was an attempt to have multiple stacks in a single weight process.
-
The originator of âthreadsâ in programming languages was probably PL/I (1965-) by IBM, which had the syntax `CALL XXX (A, B) TASK;â. This forks a thread for XXX. I donât know if any compilers implemented this feature; it was made after careful study of how Multics was designed. For example, TASK calls are not mapped to processes, and thread-to-thread memory is completely transparent. However, Multics changed direction and IBM removed the TASK feature from PL/I.
-
Then came Unix, which used the word âprocessâ to mean âthread + virtual address space. (Incidentally, this notation in Unix was inherited directly from Multics.) So âprocessâ in the Unix sense became a heavy thing that involved switching virtual address spaces. Processes couldnât share memory because they each had their own individual address space, but they could interact with each other using pipes and signals. The shared memory feature was added much later.
-
After a while, Unix users began to miss the old âmemory-sharing processesâ. This triggered the invention of so-called âthreads. Threads are âold-style processesâ that share the virtual address space of a single Unix process. This distinction between âlightweightâ and âheavyweightâ processes can be traced back to the late 70s and early 80s, to the first âmicrokernelâ.
-
Harmless old man: the so-called threads predate Mach, V (1981-).
- If itâs a hardware thread, it seems to have been around since the 1950s.
- The first hardware interrupts seem to be UNIVAC I, which has only overflow interrupts, and NBS DYSEAC, which can do I/O interrupts.
-
soda
- Solaris libthreads and pthreads are very similar in specification to Machâs cthreads. I think it is safe to say that these are all straightforward bindings of Hoareâs Monitor to C. (To put a finer point on it, there are some minor variants of Monitorâs semanticsâŚ)
This page is auto-translated from /nishio/ăšăŹăăăŽ(ă¨ăăă丌čĄĺŚçăŽ)ć´ĺ˛ using DeepL. If you looks something interesting but the auto-translated English is not good enough to understand it, feel free to let me know at @nishio_en. Iâm very happy to spread my thought to non-Japanese readers.