การค้นพบประวัติศาสตร์ Threading เผยนวัตกรรมในทศวรรษ 1960 ที่มีมาก่อนระบบสมัยใหม่

ทีมชุมชน BigGo
การค้นพบประวัติศาสตร์ Threading เผยนวัตกรรมในทศวรรษ 1960 ที่มีมาก่อนระบบสมัยใหม่

บทความล่าสุดเกี่ยวกับวิวัฒนาการของ threading ใน Apple ได้จุดประกายการอย่างไม่คาดคิดในชุมชนเกี่ยวกับต้นกำเนิดที่แท้จริงของ computer threading ในขณะที่บทความดังกล่าวมุ่งเน้นไปที่ระบบ Mac ตั้งแต่ปี 1984 เป็นต้นมา แต่ผู้ที่สนใจเทคโนโลยีได้ชี้แจงอย่างรวดเร็วว่าแนวคิดของ threading นั้นเกิดขึ้นเร็วกว่าที่คนส่วนใหญ่คิดหลายทศวรรษ

ผู้บุกเบิก Threading ตัวจริง

การอภิปรายดังกล่าวเผยให้เห็นว่า UNIVAC 1108 EXEC 8 ที่เปิดตัวในปี 1966 น่าจะเป็นระบบปฏิบัติการแรกที่นำสิ่งที่เราเรียกว่า threads มาใช้ การนำไปใช้ในยุคแรกเหล่านี้เรียกว่า activities ซึ่งรวมถึงฟีเจอร์ที่ซับซ้อนซึ่งไม่ปรากฏในระบบหลักเป็นเวลาหลายปี ระบบนี้รองรับ multiple threads ภายใน address space เดียวกัน มี hardware-backed atomic operations และแม้กระทั่งรวมถึง async I/O พร้อม callbacks ซึ่งล้วนเป็นแนวคิดที่ปฏิวัติวงการในทศวรรษ 1960

สิ่งที่ทำให้เรื่องนี้น่าสนใจเป็นพิเศษคือนวัตกรรมในยุคแรกเหล่านี้ถูกลืมไปเป็นส่วนใหญ่เมื่อถึงเวลาที่นักพัฒนา Unix และ Linux เริ่มนำ threading มาใช้ในทศวรรษ 1980 และ 1990 ช่องว่างของความรู้นี้นำไปสู่การทำผิดพลาดในการออกแบบซ้ำๆ หลายอย่างที่เคยได้รับการแก้ไขไปแล้วหลายทศวรรษก่อน

จุดสำคัญของการพัฒนา Threading:

  • 1966: UNIVAC 1108 EXEC 8 เปิดตัว "activities" (threads แรก)
  • 1985: Apple Switcher ให้สามารถสลับแอปพลิเคชันได้ (แบบ cooperative)
  • 1985: Commodore Amiga ใช้งาน preemptive multitasking
  • 1987: Apple MultiFinder นำ cooperative multitasking มาใช้
  • 2009: Apple เปิดตัว Grand Central Dispatch (GCD)

ความเข้าใจผิดเกี่ยวกับ Threading สมัยใหม่

การอภิปรายในชุมชนยังเน้นย้ำถึงความสับสนทั่วไปเกี่ยวกับคำศัพท์ของ threading หลายคนสับสนระหว่าง processes และ threads หรือไม่เข้าใจความแตกต่างระหว่าง cooperative และ preemptive multitasking การสนทนาเผยให้เห็นว่าแม้แต่ผู้เชี่ยวชาญด้านเทคนิคบางครั้งก็ยังต่อสู้กับความแตกต่างเหล่านี้ โดยเฉพาะเมื่อระบบปฏิบัติการที่แตกต่างกันใช้แนวทางที่หลากหลาย

เมื่อถึงเวลาที่ UNIX/Linux ได้ threads ไม่มีใครรู้ว่ามันเคยทำมาแล้วเมื่อยี่สิบปีก่อน และเราต้องผ่านข้อผิดพลาดในการออกแบบจำนวนมาก ส่วนใหญ่เกี่ยวข้องกับ signals

ความแตกต่างระหว่าง Threading กับ Process:

  • Threads: ใช้พื้นที่หน่วยความจำร่วมกัน จัดการโดย OS หรือแอปพลิเคชัน
  • Processes: มีพื้นที่หน่วยความจำแยกต่างหาก จัดการโดย OS เสมอ
  • Activities: คำศัพท์ที่ UNIVAC ใช้ในปี 1966 สำหรับ threads รวมถึงการดำเนินการแบบ atomic ที่รองรับโดยฮาร์ดแวร์

การเข้าสู่ Threading ที่ช้าของ Apple

แม้ว่าการเดินทางของ Apple จาก single-tasking ไปสู่ Grand Central Dispatch สมัยใหม่จะน่าประทับใจ แต่ชุมชนสังเกตว่า Apple จริงๆ แล้วเข้าสู่เกม threading ค่อนข้างช้า Commodore Amiga มี preemptive multitasking บน single processor ตั้งแต่ปี 1985 ซึ่งเป็นปีเดียวกับที่ Apple เปิดตัว Switcher utility พื้นฐานที่สามารถรันได้เพียงหนึ่งแอปในแต่ละครั้ง

การอภิปรายชี้ให้เห็นว่าการมองประวัติศาสตร์ threading ของ Apple เพียงอย่างเดียวให้มุมมองที่จำกัดเกี่ยวกับวิธีที่เทคโนโลยีเหล่านี้พัฒนาขึ้นจริงๆ ระบบอย่าง NT , VMS หรือ Solaris จะเป็นตัวอย่างที่ดีกว่าของวิวัฒนาการ threading เนื่องจากไม่ถูกจำกัดด้วยตัวเลือกการออกแบบในยุคแรกของ Apple

การสนทนาในชุมชนนี้แสดงให้เห็นว่าแม้แต่บทความที่มีการวิจัยอย่างดีก็สามารถพลาดบริบททางประวัติศาสตร์ที่สำคัญได้ เรื่องราวที่แท้จริงของ threading นั้นเก่าแก่และซับซ้อนกว่าที่นักพัฒนาสมัยใหม่ส่วนใหญ่คิด พร้อมด้วยนวัตกรรมจากทศวรรษ 1960 ที่ยังคงมีอิทธิพลต่อระบบในปัจจุบัน

อ้างอิง: A brief history of threads and threading