อ่าน 4 นาที
การแทรกแซง (ด้านคอมพิวเตอร์)
ในด้านการ คำนวณ การแย่งชิง (preemption) คือการกระทำที่ดำเนินการโดยตัว จัดตารางเวลา ภายนอก — โดยไม่ได้รับความช่วยเหลือหรือความร่วมมือจากงาน — เพื่อ ขัดจังหวะ งาน ที่ กำลังทำงาน...
การแทรกแซง (ด้านคอมพิวเตอร์)
ในด้านการคำนวณการแย่งชิง (preemption)คือการกระทำที่ดำเนินการโดยตัวจัดตารางเวลา ภายนอก — โดยไม่ได้รับความช่วยเหลือหรือความร่วมมือจากงาน — เพื่อขัดจังหวะงานที่กำลังทำงาน อยู่ชั่วคราว โดยมีเจตนาที่จะดำเนินการต่อในภายหลัง[ 1 ] : 153 ตัวจัดตารางเวลาแบบแย่งชิงนี้มักจะทำงานในวงแหวนป้องกัน ที่มีสิทธิ์สูงสุด ซึ่งหมายความว่าการขัดจังหวะแล้วดำเนินการต่อถือเป็นการกระทำที่มีความปลอดภัยสูง การเปลี่ยนแปลงดังกล่าวต่องานที่กำลังทำงานอยู่ในปัจจุบันของโปรเซสเซอร์เรียกว่าการสลับบริบท (context switching )
โหมดผู้ใช้และโหมดเคอร์เนล
ในการออกแบบระบบใดๆ การทำงานบางอย่างของระบบอาจไม่สามารถถูกขัดจังหวะได้ โดยปกติแล้วจะเป็นฟังก์ชันของเคอร์เนล และ การขัดจังหวะ บริการ ซึ่งหากไม่ได้รับอนุญาตให้ทำงานจนเสร็จสมบูรณ์จะทำให้เกิดสภาวะการแข่งขัน (race condition)และนำไปสู่ ภาวะ ติดตาย (deadlock ) การห้ามไม่ให้ตัวจัดตารางเวลา (scheduler) ขัดจังหวะงานในขณะที่กำลังประมวลผลฟังก์ชันของเคอร์เนลจะทำให้การออกแบบเคอร์เนลง่ายขึ้น แต่ก็แลกมาด้วยการตอบสนองของระบบ ที่ลดลง ความแตกต่างระหว่างโหมดผู้ใช้และโหมดเคอร์เนลซึ่งกำหนดระดับสิทธิ์ภายในระบบ อาจใช้เพื่อแยกแยะว่างานนั้นสามารถถูกขัดจังหวะได้หรือไม่ในขณะนี้
ระบบปฏิบัติการสมัยใหม่ส่วนใหญ่มีเคอร์เนลแบบพรีเอ็มทีฟซึ่งได้รับการออกแบบมาเพื่ออนุญาตให้งานต่างๆ ถูกพรีเอ็มทีฟได้แม้ในขณะที่อยู่ในโหมดเคอร์เนล ตัวอย่างของระบบปฏิบัติการดังกล่าว ได้แก่Solaris 2.0/SunOS 5.0 [ 2 ] Windows NT เคอร์เนล Linux ( 2.5.4 และใหม่กว่า) [ 3 ] AIXและ ระบบ BSD บาง ระบบ ( NetBSDตั้งแต่เวอร์ชัน 5)
การทำงานหลายอย่างพร้อมกันแบบชิงจังหวะ
คำว่า การทำงาน แบบมัลติทาสกิ้งแบบแทรกแซง (preemptive multitasking)ใช้เพื่อแยกแยะระบบปฏิบัติการมัลติทาสกิ้งที่อนุญาตให้แทรกแซงงานได้ ออกจาก ระบบ มัลติทาสกิ้งแบบร่วมมือ (cooperative multitasking ) ซึ่งกระบวนการหรือภารกิจจะต้องถูกตั้งโปรแกรมไว้อย่างชัดเจนให้หยุดเมื่อไม่ต้องการทรัพยากรของระบบ
กล่าวโดยง่ายคือ การทำงานแบบมัลติทาสกิ้งแบบแย่งชิง (Preemptive multitasking) นั้นเกี่ยวข้องกับการใช้กลไกการขัดจังหวะซึ่งจะระงับกระบวนการที่กำลังทำงานอยู่ และเรียกใช้ตัวจัดตารางเวลา (scheduler)เพื่อพิจารณาว่ากระบวนการใดควรทำงานต่อไป ดังนั้น ทุกกระบวนการจะได้รับเวลาการใช้งาน CPU ในปริมาณที่เหมาะสมในแต่ละช่วงเวลา
ในการทำงานแบบมัลติทาสกิ้งแบบแย่งชิง (preemptive multitasking) เคอร์เนลของระบบปฏิบัติการสามารถเริ่มต้นการสลับบริบทเพื่อตอบสนอง ข้อจำกัดด้านลำดับความสำคัญของ นโยบายการจัดตารางเวลาได้ซึ่งจะทำให้สามารถแย่งชิงงานที่กำลังทำงานอยู่ได้ โดยทั่วไปแล้ว การแย่งชิงหมายถึง "การเข้ายึดครองก่อน" เมื่อภารกิจที่มีลำดับความสำคัญสูงกว่าในขณะนั้นเข้ายึดครองภารกิจที่กำลังทำงานอยู่ จะเรียกว่าการจัดตารางเวลาแบบแย่งชิง
บางครั้งมีการใช้คำว่า "การทำงานหลายอย่างพร้อมกันแบบแทรกแซง" (preemptive multitasking) อย่างผิดพลาด ในขณะที่ความหมายที่แท้จริงนั้นเฉพาะเจาะจงกว่า โดยหมายถึงนโยบายการจัดตารางเวลาประเภทหนึ่งที่เรียกว่า การจัดตารางเวลาแบบ แบ่งเวลา (time-shared scheduling ) หรือการแบ่งเวลา (time-sharing )
การทำงานแบบมัลติทาสกิ้งเชิงแย่งชิงช่วยให้ระบบคอมพิวเตอร์สามารถรับประกันได้อย่างน่าเชื่อถือมากขึ้นว่าแต่ละกระบวนการจะได้รับ "ช่วงเวลา" ในการทำงานที่สม่ำเสมอ นอกจากนี้ยังช่วยให้ระบบสามารถจัดการกับเหตุการณ์ภายนอกที่สำคัญ เช่น ข้อมูลขาเข้า ซึ่งอาจต้องการความสนใจจากกระบวนการใดกระบวนการหนึ่งโดยทันทีได้อย่างรวดเร็ว
ในเวลาใดเวลาหนึ่ง กระบวนการต่างๆ สามารถแบ่งออกเป็นสองประเภท ได้แก่ กระบวนการที่กำลังรอรับข้อมูลเข้าหรือข้อมูลออก (เรียกว่า " I/O bound ") และกระบวนการที่กำลังใช้งาน CPU อย่างเต็มที่ (" CPU bound ") ในระบบยุคแรกๆ กระบวนการต่างๆ มักจะ " สำรวจ " หรือ " รอแบบไม่หยุด " ในขณะที่รอรับข้อมูลที่ร้องขอ (เช่น ข้อมูลจากดิสก์ คีย์บอร์ด หรือเครือข่าย) ในช่วงเวลานี้ กระบวนการนั้นไม่ได้ทำงานที่เป็นประโยชน์ แต่ยังคงควบคุม CPU ได้อย่างสมบูรณ์ ด้วยการมาถึงของอินเตอร์รัปต์และมัลติทาสกิ้งแบบแย่งชิง กระบวนการ I/O bound เหล่านี้สามารถ "ถูกบล็อก" หรือระงับไว้ชั่วคราว เพื่อรอข้อมูลที่จำเป็น ทำให้กระบวนการอื่นๆ สามารถใช้ CPU ได้ เนื่องจากการมาถึงของข้อมูลที่ร้องขอจะทำให้เกิดอินเตอร์รัปต์ กระบวนการที่ถูกบล็อกจึงสามารถกลับมาทำงานต่อได้ทันท่วงที
แม้ว่าเทคนิคการทำงานหลายอย่างพร้อมกันจะถูกพัฒนาขึ้นมาเพื่อให้ผู้ใช้หลายคนสามารถใช้เครื่องคอมพิวเตอร์เครื่องเดียวร่วมกันได้ แต่ก็เห็นได้ชัดว่าการทำงานหลายอย่างพร้อมกันนั้นมีประโยชน์ไม่ว่าจะจำนวนผู้ใช้กี่คนก็ตาม ระบบปฏิบัติการหลายระบบ ตั้งแต่เมนเฟรมไปจนถึงคอมพิวเตอร์ส่วนบุคคลแบบผู้ใช้คนเดียวและระบบที่ไม่มีการควบคุม จากผู้ใช้ (เช่น ระบบในยานอวกาศหุ่นยนต์ ) ต่างก็ตระหนักถึงประโยชน์ของการสนับสนุนการทำงานหลายอย่างพร้อมกันด้วยเหตุผลหลายประการ การทำงานหลายอย่างพร้อมกันทำให้ผู้ใช้คนเดียวสามารถเรียกใช้แอปพลิเคชันหลายตัวพร้อมกัน หรือเรียกใช้กระบวนการ "เบื้องหลัง" ในขณะที่ยังคงควบคุมคอมพิวเตอร์ได้
ช่วงเวลา
ระยะเวลาที่อนุญาตให้กระบวนการทำงานในระบบมัลติทาสกิ้งแบบแย่งชิงโดยทั่วไปเรียกว่าช่วงเวลาหรือควอนตัม [ 1 ] : 158 ตัวกำหนดตารางเวลาจะทำงานหนึ่งครั้งในแต่ละช่วงเวลาเพื่อเลือกกระบวนการถัดไปที่จะทำงาน ความยาวของแต่ละช่วงเวลามีความสำคัญต่อการปรับสมดุลประสิทธิภาพของระบบเทียบกับการตอบสนองของกระบวนการ - หากช่วงเวลาสั้นเกินไป ตัวกำหนดตารางเวลาเองจะใช้เวลาในการประมวลผลมากเกินไป แต่หากช่วงเวลายาวเกินไป กระบวนการจะใช้เวลานานขึ้นในการตอบสนองต่ออินพุต
การขัดจังหวะจะถูกกำหนดเวลาไว้เพื่อให้เคอร์เนล ของ ระบบปฏิบัติการ สามารถสลับไปมาระหว่างกระบวนการต่างๆ เมื่อช่วงเวลาการทำงานของแต่ละกระบวนการหมดลง ซึ่งเป็นการช่วยให้เวลาการทำงานของโปรเซสเซอร์ถูกแบ่งไปให้กับงานหลายๆ งานได้อย่างมีประสิทธิภาพ ทำให้ดูเหมือนว่าโปรเซสเซอร์กำลังจัดการกับงานเหล่านั้นแบบขนาน (พร้อมกัน) ระบบปฏิบัติการที่ควบคุมการออกแบบเช่นนี้เรียกว่าระบบมัลติทาสก์
การสนับสนุนระบบ
ปัจจุบัน ระบบปฏิบัติการเกือบทั้งหมดรองรับการทำงานแบบมัลติทาสกิ้งแบบแย่งงานได้ รวมถึงWindows เวอร์ชันปัจจุบัน , Linux (รวมถึงAndroid ) และDarwin (รวมถึงmacOSและiOS )
ระบบปฏิบัติการไมโครคอมพิวเตอร์รุ่นแรกๆ ที่รองรับการทำงานแบบมัลติทาสกิ้งแบบแย่งชิงคือOS-9ของMicrowareซึ่งมีให้ใช้งานสำหรับคอมพิวเตอร์ที่ใช้Motorola 6809รวมถึงคอมพิวเตอร์บ้าน เช่นTRS-80 Color Computer 2เมื่อติดตั้งไดรฟ์ดิสก์[ 4 ]โดยระบบปฏิบัติการนี้จัดหาโดย Tandy เพื่ออัปเกรด[ 5 ] Sinclair QDOS [ 6 ] : 18และAmigaOSบนAmigaก็เป็นระบบปฏิบัติการไมโครคอมพิวเตอร์ที่รองรับการทำงานแบบมัลติทาสกิ้งแบบแย่งชิงเป็นคุณสมบัติหลักเช่นกัน ทั้งสองระบบนี้ทำงานบนไมโครโปรเซสเซอร์ตระกูลMotorola 68000ที่ไม่มีการจัดการหน่วยความจำ Amiga OS ใช้การโหลดแบบไดนามิกของบล็อกโค้ดที่สามารถย้ายตำแหน่งได้ (" hunks " ในศัพท์เฉพาะของ Amiga) เพื่อมัลติทาสกิ้งแบบแย่งชิงกระบวนการทั้งหมดในพื้นที่แอดเดรสแบบแบนเดียวกัน
ระบบปฏิบัติการรุ่นแรกๆ สำหรับเครื่องคอมพิวเตอร์ที่ใช้งานร่วมกับ IBM PCเช่นMS-DOSและPC DOSไม่รองรับการทำงานแบบมัลติทาสกิ้งเลย แต่ระบบปฏิบัติการทางเลือกอื่นๆ เช่นMP/M-86 (ปี 1981) และConcurrent CP/M-86รองรับการทำงานแบบมัลติทาสกิ้งแบบแย่งชิงการทำงานได้ ส่วนระบบที่คล้าย Unix อื่นๆ เช่น MINIXและCoherentก็รองรับการทำงานแบบมัลติทาสกิ้งแบบแย่งชิงการทำงานได้ในคอมพิวเตอร์ส่วนบุคคลยุคปี 1980
ระบบที่เข้ากันได้กับ MS-DOSรุ่นหลังๆที่รองรับการทำงานแบบมัลติทาสกิ้ง/มัลติเธรดดิ้งแบบแทรกแซงได้โดยตรง ได้แก่Concurrent DOS , Multiuser DOS , Novell DOS (ต่อมาเรียกว่าCaldera OpenDOS ) และDR-DOS 7.02 ขึ้นไป นอกจากนี้ ตั้งแต่Concurrent DOS 386 เป็นต้นมา ระบบเหล่านี้ยังสามารถเรียกใช้โปรแกรม DOS หลายโปรแกรมพร้อมกันในเครื่องเสมือน DOS ได้ อีก ด้วย
Windows เวอร์ชันแรกสุดที่รองรับการทำงานแบบมัลติทาสกิ้งแบบจำกัดคือWindows/386 2.0ซึ่งใช้โหมด Virtual 8086ของIntel 80386เพื่อเรียกใช้แอปพลิเคชัน DOS ในเครื่องเสมือน 8086ซึ่งโดยทั่วไปเรียกว่า "DOS boxes" ซึ่งสามารถถูกแย่งการทำงานได้ ในWindows 95, 98 และ Meแอปพลิเคชัน 32 บิตจะทำงานแบบแย่งการทำงานได้โดยการเรียกใช้แต่ละแอปพลิเคชันในพื้นที่แอดเดรสแยกต่างหาก แต่แอปพลิเคชัน 16 บิตยังคงทำงานร่วมกันเพื่อความเข้ากันได้กับเวอร์ชันก่อนหน้า[ 7 ]ใน Windows 3.1x (โหมดป้องกัน) เคอร์เนลและไดรเวอร์อุปกรณ์เสมือนจะทำงานแบบแย่งการทำงานได้ แต่แอปพลิเคชัน 16 บิตทั้งหมดจะไม่ทำงานแบบแย่งการทำงานและใช้พื้นที่แอดเดรสเดียวกัน
การทำงานแบบมัลติทาสกิ้งแบบแย่งงานได้รับการสนับสนุนมาโดยตลอดในWindows NT (ทุกเวอร์ชัน), OS/2 (แอปพลิเคชันดั้งเดิม), ระบบ Unixและ ระบบ ที่คล้าย Unix (เช่นLinux , BSDและmacOS ), VMS , OS/360และระบบปฏิบัติการอื่น ๆ อีกมากมายที่ออกแบบมาเพื่อใช้ในตลาดการศึกษาและธุรกิจขนาดกลางถึงขนาดใหญ่
ระบบปฏิบัติการ Mac OSรุ่นคลาสสิกในยุคแรกๆไม่รองรับการทำงานแบบมัลติทาสกิ้งเลย โดยการทำงานแบบมัลติทาสกิ้งแบบร่วมมือกันเพิ่งมีให้ใช้งานผ่านMultiFinderในSystem Software 5และกลายเป็นมาตรฐานในSystem 7แม้ว่าจะมีแผนที่จะอัปเกรดการทำงานแบบมัลติทาสกิ้งแบบร่วมมือกันที่พบใน Mac OS รุ่นคลาสสิกให้เป็นแบบพรีเอ็มทีฟ (และมี API แบบพรีเอ็มทีฟอยู่ในMac OS 9แม้ว่าจะอยู่ในขอบเขตจำกัดก็ตาม[ 8 ] ) แต่แผนเหล่านี้ก็ถูกยกเลิกไปเพื่อสนับสนุนMac OS X (ปัจจุบันเรียกว่า macOS)ซึ่งเป็นระบบลูกผสมระหว่างสไตล์ Mac System แบบเก่าและNeXTSTEPเป็นระบบปฏิบัติการที่ใช้ เคอร์เนล Mach และพัฒนามาจาก BSDบางส่วนซึ่งได้ให้การทำงานแบบมัลติทาสกิ้งแบบพรีเอ็มทีฟที่คล้ายกับ Unix มาโดยตลอด
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การแทรกแซง (ด้านคอมพิวเตอร์)
ในด้านการ คำนวณ การแย่งชิง (preemption) คือการกระทำที่ดำเนินการโดยตัว จัดตารางเวลา ภายนอก — โดยไม่ได้รับความช่วยเหลือหรือความร่วมมือจากงาน — เพื่อ ขัดจังหวะ งาน ที่ กำลังทำงาน...
โหมดผู้ใช้และโหมดเคอร์เนล
ในการออกแบบระบบใดๆ การทำงานบางอย่างของระบบอาจไม่สามารถถูกขัดจังหวะได้ โดยปกติแล้วจะเป็นฟังก์ชัน ของเคอร์เนล และ การขัดจังหวะ บริการ ซึ่งหากไม่ได้รับอนุญาตให้ ทำงานจนเสร็จสมบูรณ์ จะทำให้เกิด สภาวะการแข่งขัน (race condition) และนำไปสู่ ภาวะ ติดตาย (deadlock )...
การทำงานหลายอย่างพร้อมกันแบบชิงจังหวะ
คำว่า การทำงาน แบบมัลติทาสกิ้งแบบแทรกแซง (preemptive multitasking) ใช้เพื่อแยกแยะ ระบบปฏิบัติการมัลติทาสกิ้ง ที่อนุญาตให้แทรกแซงงานได้ ออกจาก ระบบ มัลติทาสกิ้งแบบร่วมมือ (cooperative multitasking ) ซึ่งกระบวนการหรือภารกิจจะต้องถูกตั้งโปรแกรมไว้อย่างชัดเจนให้...
ช่วงเวลา
ระยะเวลาที่อนุญาตให้กระบวนการทำงานในระบบมัลติทาสกิ้งแบบแย่งชิงโดยทั่วไปเรียกว่า ช่วงเวลา หรือ ควอนตัม [ 1 ] : 158 ตัวกำหนดตารางเวลาจะทำงานหนึ่งครั้งในแต่ละช่วงเวลาเพื่อเลือกกระบวนการถัดไปที่จะทำงาน...