คอมพิวเตอร์มัลติทาสกิ้ง

จากวิกิพีเดีย สารานุกรมเสรี
ข้ามไปที่การนำทาง ข้ามไปที่การค้นหา
ระบบปฏิบัติการเดสก์ท็อปสมัยใหม่สามารถจัดการกระบวนการต่างๆ จำนวนมากได้ในเวลาเดียวกัน ภาพหน้าจอนี้แสดงให้เห็นว่าลินุกซ์มิ้นท์ทำงานพร้อมกันXfceสภาพแวดล้อมเดสก์ทอป, Firefox , โปรแกรมเครื่องคิดเลขในตัวปฏิทินที่เป็นกลุ่ม , GIMPและVLC เครื่องเล่นสื่อ
ความสามารถในการทำงานหลายอย่างพร้อมกันของMicrosoft Windows 1.0 1 ที่เปิดตัวในปี 1985 แสดงให้เห็นการรันโปรแกรม MS-DOS Executive and Calculator

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

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

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

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

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

คำว่า "มัลติทาสก์" ได้กลายเป็นคำศัพท์สากล เนื่องจากคำเดียวกันนี้ถูกใช้ในภาษาอื่นๆ มากมาย เช่น เยอรมัน อิตาลี ดัตช์ เดนมาร์ก และนอร์เวย์

มัลติโปรแกรมมิ่ง

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

คอมพิวเตอร์เครื่องแรกที่ใช้ระบบมัลติโปรแกรมมิ่งคือ British Leo IIIซึ่งเป็นเจ้าของโดยJ. Lyons and Co.ในระหว่างการประมวลผลแบบแบตช์มีการโหลดโปรแกรมต่างๆ หลายโปรแกรมในหน่วยความจำคอมพิวเตอร์ และโปรแกรมแรกเริ่มทำงาน เมื่อโปรแกรมแรกไปถึงคำสั่งที่รออุปกรณ์ต่อพ่วง บริบทของโปรแกรมนี้ก็ถูกเก็บไว้ และโปรแกรมที่สองในหน่วยความจำก็มีโอกาสที่จะทำงาน กระบวนการนี้ดำเนินต่อไปจนกระทั่งโปรแกรมทั้งหมดทำงานเสร็จ[ ต้องการการอ้างอิง ]

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

Multiprogramming ไม่รับประกันว่าโปรแกรมจะทำงานได้ทันท่วงที อันที่จริง โปรแกรมแรกอาจทำงานได้เป็นเวลาหลายชั่วโมงโดยไม่จำเป็นต้องเข้าถึงอุปกรณ์ต่อพ่วง เนื่องจากไม่มีผู้ใช้รอที่เทอร์มินอลแบบโต้ตอบ จึงไม่เป็นปัญหา: ผู้ใช้ส่งสำรับไพ่เจาะรูให้กับเจ้าหน้าที่ปฏิบัติงาน และกลับมาพิมพ์ผลงานในอีกสองสามชั่วโมงต่อมา การเขียนโปรแกรมหลายโปรแกรมช่วยลดเวลารอได้อย่างมากเมื่อมีการประมวลผลหลายชุด [3] [4]

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

ระบบมัลติทาสกิ้งในยุคแรกใช้แอปพลิเคชันที่สละเวลาซึ่งกันและกันโดยสมัครใจ แนวทางนี้ซึ่งในที่สุดได้รับการสนับสนุนจากระบบปฏิบัติการคอมพิวเตอร์หลายระบบเป็นที่รู้จักกันในปัจจุบันว่าเป็นการทำมัลติทาสกิ้งแบบร่วมมือ แม้ว่าตอนนี้จะไม่ค่อยได้ใช้ในระบบขนาดใหญ่ ยกเว้นสำหรับแอปพลิเคชันเฉพาะ เช่นCICSหรือระบบย่อยJES2 การทำงานมัลติทาสกิ้งแบบร่วมมือครั้งหนึ่งเคยเป็นเพียงรูปแบบการจัดกำหนดการเดียวที่ใช้โดยMicrosoft WindowsและClassic Mac OSเพื่อให้แอปพลิเคชันหลายตัวทำงานพร้อมกันได้ การทำงานแบบ multitasking สหกรณ์ยังคงใช้ในวันนี้RISC OSระบบ[5]

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

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

การทำงานหลายอย่างแบบยึดเอาเสียก่อนช่วยให้ระบบคอมพิวเตอร์สามารถรับประกันได้ว่าแต่ละกระบวนการจะมี "ส่วน" ของเวลาปฏิบัติการอย่างสม่ำเสมอ นอกจากนี้ยังช่วยให้ระบบสามารถจัดการกับเหตุการณ์ภายนอกที่สำคัญได้อย่างรวดเร็ว เช่น ข้อมูลขาเข้า ซึ่งอาจต้องให้ความสนใจทันทีจากกระบวนการใดกระบวนการหนึ่ง ระบบปฏิบัติการได้รับการพัฒนาเพื่อใช้ประโยชน์จากความสามารถของฮาร์ดแวร์เหล่านี้และเรียกใช้หลายกระบวนการล่วงหน้า Preemptive multitasking ถูกนำมาใช้ในPDP-6 MonitorและMULTICSในปี 1964, ในOS/360 MFTในปี 1967 และในUnixในปี 1969 และมีให้ใช้งานในระบบปฏิบัติการบางระบบสำหรับคอมพิวเตอร์ที่มีขนาดเล็กเท่ากับ PDP-8 ของ DEC; มันเป็นคุณสมบัติหลักของUnix-like . ทั้งหมดระบบปฏิบัติการ เช่นLinux , SolarisและBSD ที่มีอนุพันธ์ , [6]เช่นเดียวกับ Windows เวอร์ชันใหม่

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

ระบบปฏิบัติการมัลติทาสกิ้งแบบยึดเอาเสียก่อนที่มีให้สำหรับผู้ใช้ตามบ้านคือSinclair QDOSบนSinclair QLซึ่งเปิดตัวในปี 1984 แต่มีเพียงไม่กี่คนที่ซื้อเครื่องนี้ Amigaของ Commodore ซึ่งเปิดตัวในปีถัดมา เป็นคอมพิวเตอร์ที่บ้านเครื่องแรกที่ประสบความสำเร็จในเชิงพาณิชย์ที่ใช้เทคโนโลยีนี้ และความสามารถด้านมัลติมีเดียของมันทำให้เป็นบรรพบุรุษที่ชัดเจนของคอมพิวเตอร์ส่วนบุคคลแบบมัลติทาสกิ้งร่วมสมัย ไมโครซอฟท์ทำมาตรการการทำงานแบบ multitasking คุณลักษณะหลักของระบบปฏิบัติการของเรือธงในช่วงปี 1990 เมื่อมีการพัฒนาWindows NT 3.1และจากนั้นWindows 95 ต่อมาถูกนำไปใช้ใน Apple Macintosh โดยMac OS Xซึ่งเป็นUnix-like ระบบปฏิบัติการ ใช้มัลติทาสกิ้งแบบยึดเอาเสียก่อนสำหรับแอปพลิเคชันดั้งเดิมทั้งหมด

รุ่นที่คล้ายกันนี้ถูกใช้ในWindows 9xและตระกูลWindows NTโดยที่แอปพลิเคชัน 32 บิตแบบเนทีฟจะทำงานหลายอย่างไว้ก่อน [7]รุ่น 64 บิตของ Windows ทั้งสำหรับสถาปัตยกรรมx86-64และItaniumไม่รองรับแอปพลิเคชัน 16 บิตแบบเดิมอีกต่อไป และด้วยเหตุนี้จึงมีการทำงานหลายอย่างแบบยึดเอาเสียก่อนสำหรับแอปพลิเคชันที่รองรับทั้งหมด

เรียลไทม์

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

มัลติเธรด

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

เธรดเกิดจากแนวคิดที่ว่าวิธีที่มีประสิทธิภาพที่สุดสำหรับกระบวนการร่วมมือในการแลกเปลี่ยนข้อมูลคือการแบ่งปันพื้นที่หน่วยความจำทั้งหมด ดังนั้น เธรดจึงเป็นกระบวนการที่มีประสิทธิภาพซึ่งทำงานในบริบทหน่วยความจำเดียวกัน และใช้ทรัพยากรอื่นร่วมกับกระบวนการหลักเช่น ไฟล์ที่เปิดอยู่ เธรดถูกอธิบายว่าเป็นกระบวนการที่มีน้ำหนักเบาเนื่องจากการสลับระหว่างเธรดไม่เกี่ยวข้องกับการเปลี่ยนบริบทหน่วยความจำ[8] [9] [10]

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

บางระบบรองรับการทำงานแบบมัลติเธรดในฮาร์ดแวร์โดยตรง

การป้องกันหน่วยความจำ

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

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

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

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

การสลับหน่วยความจำ

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

การเขียนโปรแกรม

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

มีการใช้เทคนิคการคำนวณพร้อมกันหลายอย่างเพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้นจากงานหลายอย่างที่พยายามเข้าถึงทรัพยากรเดียวกัน [ ต้องการการอ้างอิง ]

ระบบที่ใหญ่กว่าบางครั้งถูกสร้างขึ้นด้วยหน่วยประมวลผลกลาง (s) และจำนวนของโปรเซสเซอร์ I / Oแบบไม่สมมาตรmultiprocessing [ ต้องการการอ้างอิง ]

หลายปีที่ผ่านมา ระบบมัลติทาสกิ้งได้รับการปรับปรุงให้ดีขึ้น ระบบปฏิบัติการสมัยใหม่มักมีกลไกแบบละเอียดสำหรับการจัดลำดับความสำคัญของกระบวนการ ในขณะที่การประมวลผลหลายตัวแบบสมมาตรได้นำเสนอความซับซ้อนและความสามารถใหม่ๆ [13]

ดูเพิ่มเติม

อ้างอิง

  1. ^ "Concurrency VS ขนาน, การเขียนโปรแกรมพร้อมกันเทียบกับการเขียนโปรแกรมแบบขนาน" ออราเคิล. เก็บถาวรจากต้นฉบับเมื่อ 7 เมษายน 2016 . สืบค้นเมื่อ23 มีนาคม 2559 .
  2. Anthony Ralston, Edwin D. Reilly (ed), Encyclopedia of Computer Science Third Edition , Van Nostrand Reinhold, 1993, ISBN 0-442-27679-6 , บทความ "Multitasking" และ "Multiprogramming" 
  3. ^ ลิธมี (2019-05-20). "อะไรคือความแตกต่างระหว่างการประมวลผลแบบแบตช์และมัลติโปรแกรมมิ่ง" . พีเดีย.คอม สืบค้นเมื่อ2020-04-14 .
  4. ^ "วิวัฒนาการของระบบปฏิบัติการ" . 2017-09-29 . สืบค้นเมื่อ2020-04-14 .
  5. ^ "ทำงานหลายอย่างพร้อมกัน" . riscos.info 2552-11-03 . สืบค้นเมื่อ2014-07-27 .
  6. ^ "UNIX ตอนที่หนึ่ง" . โครงการริเริ่มการวิจัยดิจิทัล . ibiblio.org. 2002-01-30 . สืบค้นเมื่อ2014-01-09 .
  7. ^ โจเซฟ โมแรน (มิถุนายน 2549) "Windows โปรแกรม 2000 และ 16 บิต" สมาร์ทคอมพิวเตอร์ . ฉบับที่ หมายเลข 16 6. น. 32–33. เก็บถาวรจากต้นฉบับเมื่อ 25 มกราคม 2552
  8. ^ Eduardo Ciliendo; ทาเคชิกะ คูนิมาสะ (25 เมษายน 2551) "ลินุกซ์ประสิทธิภาพและการปรับแต่งแนวทาง" (PDF) redbooks.ibm.comครับ ไอบีเอ็ม . NS. 4. เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 26 กุมภาพันธ์ 2558 . สืบค้นเมื่อ1 มีนาคม 2558 .
  9. ^ "นิยามการเปลี่ยนบริบท" . linfo.org 28 พ.ค. 2549 เก็บถาวรจากต้นฉบับเมื่อ 18 กุมภาพันธ์ 2553 . สืบค้นเมื่อ26 กุมภาพันธ์ 2558 .
  10. ^ "กระทู้ (ผู้ใช้/เคอร์เนล) คืออะไร" . tldp.org 8 กันยายน 1997 . สืบค้นเมื่อ26 กุมภาพันธ์ 2558 .
  11. ^ มัลติทาสกิ้งวิธีต่างๆ เข้าถึงเมื่อ 19 กุมภาพันธ์ 2019
  12. ^ "ไฟล์สลับคืออะไร" . kb.iu.edu . สืบค้นเมื่อ2018-03-26 .
  13. ^ "สถาปัตยกรรมระบบปฏิบัติการ" . cis2.oc.ctc.edu สืบค้นเมื่อ2018-03-17 .