การจอง (คอมพิวเตอร์)

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา

ใน การ คำนวณการสงวนคือการกระทำที่ขัดจังหวะงานที่ดำเนินการ อยู่ชั่วคราว โดยมีจุดประสงค์เพื่อให้งานนั้นทำงานต่อในภายหลัง การขัดจังหวะนี้กระทำโดยผู้จัดกำหนดการ ภายนอก โดยไม่ได้รับความช่วยเหลือหรือความร่วมมือจากงาน [1] : 153 ตัวกำหนดตารางเวลาแบบยึดเอาเสียก่อนนี้มักจะทำงานในวงแหวนป้องกัน ที่มีสิทธิพิเศษมากที่สุด ซึ่งหมายความว่าการหยุดชะงักและการกลับมาทำงานต่อถือเป็นการดำเนินการที่มีความปลอดภัยสูง การเปลี่ยนแปลงดังกล่าวในงานที่ดำเนินการอยู่ในปัจจุบันของโปรเซสเซอร์เรียกว่าการสลับ บริบท

โหมดผู้ใช้และโหมดเคอร์เนล

ในการออกแบบระบบใดๆ ก็ตาม การดำเนินการบางอย่างที่ดำเนินการโดยระบบอาจไม่สามารถสงวนไว้ล่วงหน้าได้ ซึ่งมักจะใช้กับฟังก์ชันเคอร์เนล และ การขัดจังหวะ ของบริการ ซึ่งหากไม่ได้รับอนุญาตให้เรียกใช้จนเสร็จสิ้นมักจะก่อให้ เกิด สภาวะการแข่งขันที่ส่งผลให้เกิด การ ชะงักงัน การกีดกันตัวจัดกำหนดการจากงานจองในขณะที่กำลังประมวลผลฟังก์ชันเคอร์เนลทำให้การออกแบบเคอร์เนลง่ายขึ้นโดยเสียค่าใช้จ่ายในการ ตอบสนองของ ระบบ ความแตกต่างระหว่างโหมดผู้ใช้และ โหมด เคอร์เนลซึ่งกำหนดระดับสิทธิ์ใช้งานภายในระบบ อาจใช้เพื่อแยกแยะว่างานนั้นสามารถจองไว้ก่อนได้หรือไม่

ระบบปฏิบัติการที่ทันสมัยส่วนใหญ่มีเคอร์เนล ที่สงวน ไว้ ซึ่งออกแบบมาเพื่ออนุญาตให้งานถูกจองไว้ก่อนแม้ในโหมดเคอร์เนล ตัวอย่างของระบบปฏิบัติการดังกล่าว ได้แก่Solaris 2.0/SunOS 5.0, [2] Windows NT , Linux kernel (2.5.4 และใหม่กว่า), [3] AIXและ ระบบ BSD บาง ระบบ ( NetBSDตั้งแต่เวอร์ชัน 5)

ทำงานหลายอย่างพร้อมกัน

คำว่าpreemptive multitaskingใช้เพื่อแยกความแตกต่างของระบบปฏิบัติการ multitaskingซึ่งอนุญาตให้ preemptive ของงานจาก ระบบ multitasking ที่ร่วมมือกันซึ่งกระบวนการหรืองานต้องได้รับการตั้งโปรแกรมไว้อย่างชัดเจนเพื่อให้เกิดผลเมื่อไม่ต้องการทรัพยากรระบบ

พูดง่ายๆ ก็คือ: การทำงานหลายอย่างแบบยึดเอาเสียก่อนเกี่ยวข้องกับการใช้กลไกการขัดจังหวะซึ่งจะหยุดกระบวนการที่ดำเนินการอยู่ชั่วคราวและเรียกใช้ตัวจัดกำหนดการเพื่อกำหนดว่ากระบวนการใดควรดำเนินการต่อไป ดังนั้น กระบวนการทั้งหมดจะได้รับเวลา CPU ในช่วงเวลาหนึ่งๆ

ในการทำงานหลายแบบยึดเอาเสียก่อน เคอร์เนลของระบบปฏิบัติการยังสามารถเริ่มต้นการสลับบริบทเพื่อให้เป็นไปตาม ข้อจำกัดลำดับความสำคัญของ นโยบายการจัดกำหนดการดังนั้นจึงเป็นการสงวนงานที่ใช้งานอยู่ไว้ โดยทั่วไป การยึดถือหมายถึง "การยึดก่อน" เมื่องานที่มีลำดับความสำคัญสูงที่อินสแตนซ์นั้นยึดงานที่กำลังทำงานอยู่ในปัจจุบัน จะเรียกว่าการจัดกำหนดการชั่วคราว

คำว่า "preemptive multitasking" บางครั้งใช้ผิดพลาดเมื่อความหมายที่ตั้งใจไว้มีความเฉพาะเจาะจงมากกว่า โดยอ้างอิงถึงนโยบายการจัดกำหนดการที่เรียกว่าtime-shared schedulingหรือtime-sharingแทน

การทำงานหลายอย่างแบบยึดเอาเสียก่อนช่วยให้ระบบคอมพิวเตอร์สามารถรับประกันได้ว่าแต่ละกระบวนการจะมีเวลาการทำงาน "แบ่ง" อย่างสม่ำเสมอ นอกจากนี้ยังช่วยให้ระบบสามารถจัดการกับเหตุการณ์ภายนอกที่สำคัญได้อย่างรวดเร็ว เช่น ข้อมูลขาเข้า ซึ่งอาจต้องการการดำเนินการอย่างใดอย่างหนึ่งในทันที

กระบวนการสามารถแบ่งออกได้เป็นสองประเภทในช่วงเวลาหนึ่งๆ: กระบวนการที่กำลังรออินพุตหรือเอาต์พุต (เรียกว่า " I/O bound ") และกระบวนการที่ใช้ CPU อย่างเต็มที่ (" CPU bound ") ในระบบแรกเริ่ม กระบวนการมักจะ " โพ ล " หรือ " busy-wait" ขณะรออินพุตที่ร้องขอ (เช่น ดิสก์ คีย์บอร์ด หรืออินพุตเครือข่าย) ในระหว่างนี้ กระบวนการไม่ได้ทำงานที่มีประโยชน์ แต่ยังคงควบคุม CPU ได้อย่างสมบูรณ์ ด้วยการเข้ามาของอินเตอร์รัปต์และมัลติทาสกิ้งแบบเอารัดเอาเปรียบ I/ กระบวนการที่ถูกผูกไว้กับ O อาจ "ถูกบล็อก" หรือถูกระงับโดยรอการมาถึงของข้อมูลที่จำเป็น ทำให้กระบวนการอื่น ๆ สามารถใช้ CPU ได้ เนื่องจากการมาถึงของข้อมูลที่ร้องขอจะสร้างการขัดจังหวะ กระบวนการที่ถูกบล็อกสามารถรับประกันได้ว่าจะกลับมาทันเวลา เพื่อดำเนินการ

แม้ว่าแต่เดิมเทคนิคการทำงานหลายอย่างพร้อมกันนั้นได้รับการพัฒนาขึ้นเพื่อให้ผู้ใช้หลายคนสามารถแบ่งปันเครื่องเดียวได้ แต่ในไม่ช้าก็เห็นได้ชัดว่าการทำงานหลายอย่างพร้อมกันนั้นมีประโยชน์โดยไม่คำนึงถึงจำนวนผู้ใช้ ระบบปฏิบัติการจำนวนมาก ตั้งแต่เมนเฟรมไปจนถึงคอมพิวเตอร์ส่วนบุคคลแบบผู้ใช้คนเดียวและระบบควบคุม ที่ไม่มีผู้ใช้ (เช่นเดียวกับในยานอวกาศที่ใช้หุ่นยนต์ ) ตระหนักถึงประโยชน์ของการสนับสนุนมัลติทาสกิ้งด้วยเหตุผลหลายประการ การทำงานหลายอย่างพร้อมกันทำให้ผู้ใช้รายเดียวสามารถเรียกใช้หลายแอปพลิเคชันพร้อมกัน หรือเรียกใช้กระบวนการ "พื้นหลัง" โดยที่ยังคงควบคุมคอมพิวเตอร์ได้

ไทม์สไลซ์

ระยะเวลาที่กระบวนการได้รับอนุญาตให้ทำงานในระบบมัลติทาสกิ้งแบบยึดเอาเสียก่อน โดยทั่วไปเรียกว่าการแบ่งเวลาหรือควอนตั[1] : 158 ตัวกำหนดตารางเวลาจะทำงานหนึ่งครั้งในแต่ละครั้ง เพื่อเลือกกระบวนการถัดไปที่จะเรียกใช้ ระยะเวลาของการแบ่งเวลาแต่ละครั้งมีความสำคัญอย่างยิ่งต่อการปรับสมดุลประสิทธิภาพของระบบและการตอบสนองของกระบวนการ - หากการแบ่งเวลาสั้นเกินไป ตัวจัดกำหนดการจะใช้เวลาในการประมวลผลมากเกินไป แต่ถ้าการแบ่งเวลายาวเกินไป กระบวนการจะใช้เวลาตอบสนองนานกว่า ป้อนข้อมูล.

มีการกำหนดเวลาการขัดจังหวะเพื่อให้เคอร์เนลของระบบปฏิบัติการ สลับไปมาระหว่างกระบวนการต่างๆ เมื่อไทม์สไลซ์หมดลง ทำให้สามารถแบ่งเวลาของโปรเซสเซอร์ระหว่างงานต่างๆ ได้อย่างมีประสิทธิภาพ ทำให้เกิดภาพลวงตาว่ากำลังจัดการกับงานเหล่านี้แบบคู่ขนาน (พร้อมกัน) ระบบปฏิบัติการที่ควบคุมการออกแบบดังกล่าวเรียกว่าระบบมัลติทาสกิ้ง

รองรับระบบ

ทุกวันนี้ ระบบปฏิบัติการเกือบทั้งหมดรองรับการทำงานหลายอย่างพร้อมกัน ซึ่งรวมถึงWindows , macOS , Linux (รวมถึงAndroid ) และiOS เวอร์ชันปัจจุบัน

ระบบปฏิบัติการแรกสุดบางระบบที่มีให้สำหรับผู้ใช้ตามบ้านที่มีการทำงานหลายอย่างพร้อมกันคือSinclair QDOS (1984 [4] ) และAmiga OS (1985) ทั้งคู่ทำงานบนไมโครโปรเซสเซอร์ตระกูลMotorola 68000โดยไม่มีการจัดการหน่วยความจำ Amiga OS ใช้การโหลดไดนามิกของบล็อกโค้ดที่ย้ายได้ (" hunks " ในศัพท์แสงของ Amiga) เพื่อทำงานหลายอย่างพร้อมกันในการประมวลผลทั้งหมดในพื้นที่ที่อยู่แฟลตเดียวกัน

ระบบปฏิบัติการ พีซีรุ่นแรกๆ เช่นMS-DOSและPC DOSไม่รองรับการทำงานหลายอย่างพร้อมกัน อย่างไรก็ตาม ระบบปฏิบัติการทางเลือก เช่นMP/M-86 (1981) และConcurrent CP/M-86รองรับการทำงานหลายอย่างพร้อมกัน ระบบที่คล้าย Unixอื่น ๆรวมถึงMINIXและCoherentให้การทำงานหลายอย่างพร้อมกันบนคอมพิวเตอร์ส่วนบุคคลในยุค 1980

เวอร์ชัน DOS ที่ใหม่กว่าซึ่ง สนับสนุนการทำงานหลายอย่างพร้อมกัน/มัลติเธรดแบบยึดเอาเสียก่อน ได้แก่Concurrent DOS , Multiuser DOS , Novell DOS (ภายหลังเรียกว่าCaldera OpenDOSและDR-DOS 7.02 ขึ้นไป) ตั้งแต่DOS 386 พร้อมกันพวกเขายังสามารถเรียกใช้โปรแกรม DOS หลายโปรแกรมพร้อมกันในเครื่อง DOS เสมือนได้

Windows เวอร์ชันแรกสุดที่รองรับการทำงานมัลติทาสกิ้งแบบจำกัดรูปแบบคือWindows/386 2.0ซึ่งใช้โหมด Virtual 8086ของIntel 80386เพื่อเรียกใช้แอปพลิเคชัน DOS ในเครื่องเสมือน 8086หรือที่เรียกกันทั่วไปว่า "กล่อง DOS" ซึ่งสามารถสงวนไว้ได้ . ในWindows 95, 98 และ Meแอปพลิเคชัน 32 บิตได้รับการยกเว้นโดยเรียกใช้แต่ละแอปพลิเคชันในพื้นที่ที่อยู่ที่แยกจากกัน แต่แอปพลิเคชัน 16 บิตยังคงทำงานร่วมกันเพื่อความเข้ากันได้แบบย้อนหลัง [5]ใน Windows 3.1x (โหมดที่ได้รับการป้องกัน) เคอร์เนลและไดรเวอร์อุปกรณ์เสมือนทำงานชั่วคราว แต่แอปพลิเคชัน 16 บิตทั้งหมดเป็นแบบ non-preemptive และใช้พื้นที่ที่อยู่เดียวกันร่วมกัน

มัลติทาสกิ้งแบบยึดเอาเสียก่อนได้รับการสนับสนุนเสมอโดยWindows NT (ทุกเวอร์ชัน), OS/2 (แอปพลิเคชันดั้งเดิม), ระบบ UnixและUnix (เช่นLinux , BSDและmacOS ), VMS , OS/360และระบบปฏิบัติการอื่น ๆ อีกมากมายที่ออกแบบ เพื่อใช้ในตลาดวิชาการและธุรกิจขนาดกลางถึงใหญ่

แม้ว่าจะมีแผนที่จะอัพเกรดการทำงานร่วมกันแบบมัลติทาสกิ้งที่พบในMac OS แบบคลาสสิกเป็นโมเดลเชิงยึด (และ API แบบยึดเอาเสียก่อนมีอยู่ในMac OS 9แม้ว่าจะอยู่ในความหมายที่จำกัด[6] ) สิ่งเหล่านี้ก็ถูกละทิ้งเพื่อสนับสนุนMac OS X (ปัจจุบันเรียกว่า macOS)ซึ่งเป็นลูกผสมของรูปแบบ Mac System แบบเก่าและNeXTSTEPเป็นระบบปฏิบัติการที่ใช้เคอร์เนลMach และได้ส่วนหนึ่งมาจาก BSDซึ่งให้การทำงานมัลติทาสกิ้งแบบ Unix เสมอกัน

ดูเพิ่มเติม

อ้างอิง

  1. ^ a b Tanenbaum, แอนดรูว์ (2015). ระบบปฏิบัติการที่ทันสมัย บอสตัน: เพียร์สัน. ISBN 0-13-359162-X. OCLC  870646449 .
  2. ^ คันนา ส.; Sebree, ม.; Zolnovsky, J. "การตั้งเวลาเรียลไทม์ใน SunOS 5.0" การดำเนินการของการประชุม USENIX Winter Conference, 1992 : 375–390
  3. ^ "บันทึกประจำรุ่นสำหรับ v2.5.4" . คลังเก็บเคอร์เนลลินุกซ์ องค์กรเคอร์เนลลินุกซ์, Inc. ดึงข้อมูลเมื่อ2021-07-03
  4. ^ "คำถามที่พบบ่อยเกี่ยวกับประวัติ QL: เฟิร์มแวร์ "
  5. ^ "วิธีมัลติทาสก์ของโปรแกรม 16 บิตและ 32 บิตใน Windows 95 (Q117567) " เก็บ ถาวรจากต้นฉบับเมื่อ 2008-01-17 ดึงข้อมูล2008-01-17 .
  6. ^ "Re: คำถามสำหรับมือใหม่: Blue Task คืออะไร" . เก็บถาวรจากต้นฉบับเมื่อ 2007-10-13 . ดึงข้อมูลเมื่อ2007-03-29