Make your own free website on Tripod.com

 

 

 

 

 

 

 

 

 

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

      1.การป้อนงานแบบกลุ่มด้วยมือ (Manual batch system) พ.ศ. 2483 – 2492

ในสมัยแรกเริ่มราวปี พ.ศ.2483-2492 เครื่องคอมพิวเตอร์มีแต่เครื่องเปล่าๆ ยังไม่มีระบบปฏิบัติการใดๆ เลย ผู้ใช้เครื่องต้องเขียนโปรแกรมเป็นภาษาเครื่องทั้งหมด รวมถึงควบคุมเครื่อง ตระเตรียมงาน ตรวจสอบ และทำโปรแกรม และลักษณะการใช้เช่นนี้ ทำให้ประโยชน์ใช้สอย (utilization) ของเครื่องต่ำมาก โดยเฉพาะเมื่อเครื่องในสมัยก่อนมีราคาแพงมากเมื่อเทียบกับเครื่องในสมัยนี้ ซึ่งมีความสามารถทัดเทียมกัน ดังนั้น จึงมีการจ้างพนักงานคุมเครื่อง (operator) เพื่อลดเวลาที่เสียไปในการตระเตรียมงาน (set-up time) และเวลาที่ต้องเก็บกวาด (tear-down time) ซึ่งนอกจากพนักงานคุมเครื่องอาชีพจะชำนาญกว่าผู้ใช้แล้ว ยังสามารถจัดงานที่มีลักษณะคล้ายคลึงกันไว้พวกเดียวกัน เช่น งานที่ต้องใช้ตัวแปลภาษา (translator หรือ compiler) ตัวเดียวกัน ลักษณะนี้เรียกว่า เป็นการป้อนงานแบบกลุ่มด้วยมือ (manual batch system) ระบบการทำงานแบบนี้ทำให้เกิดปัญหาคือการสั่งงานแต่ละครั้งซึ่งใช้เวลานาน เพราะในขณะที่มีการนำตัวแปลภาษาเข้าหรือออกจากหน่วยความจำหลักนั้นใช้เวลาในการติดตั้งนานแล้ว
ยังทำให้สูญเสียเวลาของหน่วย
ประมวลผลโดยเปล่าประโยชน์ และต้องทำขั้นตอนเดิมๆ กับงานทุกงานที่เข้ามาในระบบ นอกจากนี้ยังเกิดข้อผิดพลาดในโปรแกรมและจะต้องเริ่มต้นใหม่เสมอ

      2.การป้อนงานแบบกลุ่มโดยอัตโนมัติ (Automatic batch processing) พ.ศ. 2493 - 2497

แม้ว่าจะมีการใช้พนักงานคุมเครื่องมืออาชีพ แต่เวลาของเครื่องก็ยังทิ้งเสียเปล่าในขณะที่พนักงาน ตรวจสอบความต้องการของงาน หางาน (ซึ่งโดยปกติอยู่ในรูปของบัตรเจาะรู และเทปแม่เหล็ก) และป้อนงานเข้า สู่เครื่อง (เช่นใส่บัตรในเครื่องอ่านบัตร หรือใสเทปในตู้เทป) รวมถึงการนำงานนั้นๆ ออกจากเครื่อง (เช่น เก็บเทป เก็บบัตร หรือฉีกกระดาษผลลัพธ์เป็นต้น) ดังนั้นในช่วงต้นทศวรรษที่ 5 General Motors Research Laboratories ได้พัฒนาระบบปฏิบัติการรุ่นแรก ออกมาโดยใช้กับเครื่อง IBM 701 ที่ใช้กันอยู่ในห้องทดลองนั้นเรียกว่าเป็นการประมวลผลแบบกลุ่มอัตโนมัติ (automatic batch processing) ระบบปฏิบัติการรุ่นแรกนี้ เป็นเพียงโปรแกรมเล็กๆ ซึ่งอยู่ในเครื่องตลอดเวลา (resident monitor) ประกอบด้วย 3 ส่วน คือ โหลดเดอร์ (loader) ตัวจัดลำดับงานโดยอัตโนมัติ (automatic job sequencing) และตัวแปรบัตรควบคุม (control card interpreter) ซึ่งตัวมอนิเตอร์นี้ ทำหน้าที่ส่งงานเข้าไปในระบบอย่างต่อเนื่องโดยอัตโนมัติ และอยู่ในหน่วยความจำหลักตลอดเวลาที่เครื่องคอมพิวเตอร์ทำงาน โดยมีการแบ่งหน่วยความจำหลักเป็น 2 ส่วน ส่วนหนึ่งสำหรับโปรแกรมของผู้ใช้ และอีกส่วนหนึ่งเป็นของระบบปฏิบัติการเมื่อเริ่มต้นระบบ ตัวระบบปฏิบัติการ(มอนิเตอร)์จะถูกเรียกใช้ โดยโหลดเดอร์จะนำโปรแกรมระบบและโปรแกรมผู้ใช้เข้าสู่หน่วยความจำหลักแล้วส่งการควบคุมไปยัง
โปรแกรมเพื่อทำงานต่อไป หลังจากสิ้นสุดการทำงานของโปรแกรมหนึ่งๆ จะส่งการควบคุมกลับไปยังตัวระบบปฏิบัติการ เพื่อนำงานชิ้นต่อไปเข้ามา และจะส่งมอบการควบคุมเครื่องให้กับโปรแกรมของผู้ใช้ทีละโปรแกรมเรียงลำดับตามกันไป ซึ่งในกรณีนี้ จะต้องมีข้อมูลปะหน้าและท้ายโปรแกรม เพื่อยกงานออกจากกัน รวมทั้งบอกระบบปฏิบัติการถึงลักษณะงาน เช่น ตัวแปลภาษาที่ต้องใช้ ตู้เทป และเลขหมายของม้วนเทป เป็นต้น ซึ่งเกิดเป็นภาษาใหม่ขึ้น คือ ภาษาคุมงาน (job control language หรือ JCL)ปัญหาที่สำคัญอีกประการหนึ่ง คือ ความแตกต่างของความเร็วระหว่างหน่วยประมวลผลกลาง กับอุปกรณ์นำข้อมูลเข้า/ออก แม้ว่าจะได้มีการพัฒนาอุปกรณ์นำข้อมูลเข้า/ออกแล้วก็ตาม แต่ขีดจำกัดของเครื่องกลไกก็ยังทำให้อุปกรณ์เหล่านี้ช้ากว่าหน่วยประมวลผลกลางซึ่งทำงานด้วย
ความเร็วของวงจรอิเล็กทรอนิกส์เป็นหลายพันเท่าความแตกต่างนี้ทำให้การใช้ประโยชน์ของหน่วย
ประมวลผลกลางต่ำมาก ตัวอย่างเช่น การแปลภาษาเครื่องของงานหนึ่ง ใช้เวลาของหน่วยประมวลผลกลางเพียง 4.8 วินาที ขณะที่การอ่านโปรแกรมนั้น (1,579 บัตร ความเร็ว 1,200 บัตรต่อนาที) ใช้เวลา 78.9 วินาที ดังนั้นหน่วยประมวลผลกลางจะต้องรอเครื่องอ่านบัตร 74.1 วินาที หรือร้อยละ 93.9 ของเวลาที่ใช้ในการทำงานชิ้นนี้ เรียกได้ว่าการใช้ประโยชน์ (utilization) ของหน่วยประมวลผลกลางเป็นเพียงร้อยละ 6.1 เท่านั้น ซึ่งหากรวมความล่าช้าในการแสดงผลเข้าไปด้วยแล้ว การใช้ประโยชน์ของหน่วยประมวลผลกลางก็ยิ่งต่ำลงไปอีก วิธีแก้ปัญหานี้ นับจากสมัยแรกเริ่ม ได้แก่การใช้ระบบ buffering ระบบ off-line และระบบ spooling

          การทำงานแบบ Buffering

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

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

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

         การทำงานแบบ Off-line

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

การทำงานโดยอาศัยเทปแม่เหล็กนี้ จะต้องได้รับความช่วยเหลือจากระบบปฏิบัติการในอันที่จะให้คำสั่งรับข้อมูลหรือแสดงผล (input/output operation) ในโปรแกรมของผู้ใช้สามารถเปลี่ยนไปใช้กับอุปกรณ์ ใดๆก็ได้ ขึ้นอยู่กับความเหมาะสมในการบริหารระบบ ลักษณะการทำงานเช่นนี้เรียกว่า อิสระภาพจากอุปกรณ์ (device independence)

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

         การทำงานแบบ Spooling

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

เนื่องจากการเข้าถึง (access) ของจานแม่เหล็กเป็นแบบตรง (direct) ไม่ใช่แบบเรียงลำดับ (sequential) อย่างเทปแม่เหล็ก จึงทำให้สามารถแยกงานออกจากกันได้ โดยสร้างตารางบ่งบอกว่าข้อมูล (หรือผลลัพธ์) ของงานใดอยู่ในส่วนใดของจานบันทึก

เมื่อการใช้จานแม่เหล็กเป็นแบบตามสาย หรือต่อตรง (on-line) หน่วยประมวลผลที่ใช้ในการถ่ายเทข้อมูลระหว่างจานและอุปกรณ์นำข้อมูลเข้า/ออก จึงต้องเป็นตัวเดียวกับที่ใช้ในการประมวลงานของผู้ใช้ หรือกล่าวอีกนัยหนึ่งคือต้องมีโปรแกรมพิเศษตัวหนึ่ง ทำงานคู่ขนานไปกับโปรแกรมของผู้ใช้ เพื่อทำการถ่ายเท ข้อมูลกับจานแม่เหล็ก จึงเกิดเป็นการทำมัลติโปรแกรมมิ่งแบบพื้นฐานขึ้น หลักการใช้จานแม่เหล็กแทนอุปกรณ์นำข้อมูลเข้า/ออกนี้ เรียกว่า spooling ซึ่งย่อมาจาก Simultaneous Peripheral Operation On-Line

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

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

      3. ระบบมัลติโปรแกรมมิ่ง (Multiprogramming system) ระบบปฏิบัติการรุ่นที่ 2 พ.ศ. 2498-2508

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

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

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

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

        3.1 ระบบแบ่งเวลา (Time Sharing)

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

         การทำงานแบบโต้ตอบ (Interactive system)
ลักษณะการทำงานแบบป้อนงานเป็นกลุ่ม (batch processing) นั้น ผู้ใช้และเครื่องติดต่อกันโดยผ่านภาษาควบคุมงาน และผ่านผลลัพธ์ที่ได้ออกมาจากเครื่อง เรียกได้ว่าเป็นการสื่อสารแบบไร้สาย (off-line) คือไม่ได้ทำงานโดยตรงกับเครื่อง แต่เป็นลักษณะการทำงานโต้ตอบ (interactive system) ผู้ใช้ติดต่อกับเครื่องในลักษณะตามสาย (on-line) โดยผู้ใช้ได้รับผลสนองตอบจากเครื่อง หรือจากระบบปฏิบัติการหรือจากโปรแกรมของผู้ใช้เอง โดยทันทีหรือเกือบจะทันที หลังจากผู้ใช้ป้อนคำสั่งใดๆ เข้าไป ลักษณะการสื่อสารเช่นนี้ มักกระทำผ่านเทอร์มินัล (terminal) ซึ่งประกอบด้วยอุปกรณ์รับข้อมูล คือแป้นพิมพ์ดีด (keyboard) และอุปกรณ์แสดงผล คือจอภาพหรือเครื่องพิมพ์ (display / printer) ผนวกรวมอยู่เป็นอุปกรณ์เดียวกัน ในลักษณะนี้ผู้ใช้สามารถแก้ไขโปรแกรมสักเล็กน้อย แล้วสั่งให้ระบบปฏิบัติการแปลโปรแกรม และลองประมวลผลดู ซึ่งจะได้ผลลัพธ์ของการแปลและการประมวลผลออกมาบนจอภาพทันทีทันใด (ในระบบจริง จะล่าช้าบ้าง ขึ้นกับองค์ประกอบหลายประการ เช่น ขนาดของงาน ขีดความสามารถของเครื่อง ปริมาณงานในระบบ และลำดับความสำคัญของงานที่ป้อนเข้าไป เป็นต้น)

ระบบโต้ตอบแบบมัลติโปรแกรมมิ่ง (Multiprogramming Interactive system)
ลักษณะการทำงานแบบโต้ตอบ จะเห็นได้ชัดในระบบปฏิบัติการของเครื่องขนาดเล็ก (microcomputer) ซึ่งปกติไม่มีการทำงานแบบมัลติโปรแกรมมิ่งอยู่แล้ว เนื่องจากผู้ใช้เป็นเจ้าของระบบทั้งหมด (ในขณะที่ทำงานอยู่) ความเร็วในการตอบสนอง (response time) ที่ผู้ใช้รู้สึกได้จะขึ้นกับชนิดและขนาดของงานที่ทำกับความเร็วของอุปกรณ์ต่างๆ ของเครื่องไมโครคอมพิวเตอร์เอง แต่ในการใช้ระบบตอบโต้กับเครื่องใหญ่ที่เป็นแบบมัลติโปรแกรมมิ่ง เครื่องมิได้เป็นของผู้ใดโดยเฉพาะ แต่ต้องเฉลี่ยการใช้งานออกไปและยังอาจมีการทำงานแบบกลุ่ม รวมถึงระบบ spooling อยู่ด้วย ดังนั้นหากจะให้ผู้ใดผู้หนึ่งได้รับการตอบสนองสูงสุดก็เป็นการปิดกั้นผู้ใช้และงานอื่นๆ ไป ดังนั้นในระบบมัลติโปรแกรมมิ่งจะต้องมีการประนีประนอมระหว่างอัตราการตอบสนองและความยุติธรรม ทั้งระหว่างผู้ใช้ระบบโต้ตอบด้วยกันเอง และระหว่างระบบโต้ตอบกับระบบทำงานแบบอื่นๆ

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

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

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

        3.2 ระบบตอบสนองฉับพลัน

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

      4. ระบบเอนกประสงค์ (General purpose system) ระบบปฏิบัติการรุ่นที่ 3 พ.ศ. 2509- 2512

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

      5. ระบบเครือข่าย (Computer network) ระบบปฏิบัติการรุ่นที่ 4 พ.ศ. 2513 - ปัจจุบัน

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

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

       6. ระบบฐานข้อมูล (Database System)

        โดยทั่วไประบบปฏิบัติการทำงานต่างๆ เพื่อบริการแก้ผู้ใช้ทุกกลุ่มในทุกๆ ด้าน ซึ่งรวมถึงโปรแกรมหลากหลายชนิด แต่สำหรับระบบฐานข้อมูลที่ต้องการให้มีการทำงานที่เฉพาะเจาะจงโดยเน้นที่ฐานข้อมูลขนาดใหญ่ ดังนั้นระบบปฏิบัติการทั่วไปอาจจะไม่เหมาะสมกับงานด้านนี้ จึงต้องมีการพัฒนาขึ้น โดยสร้างในรูปแบบของส่วนการทำงานเพิ่มเติมที่เชื่อมโยงกับระบบปฏิบัติการเดิม หรือสร้างเป็นระบบปฏิบัติการฐานข้อมูล (Database operating system) โดยให้มีการประมวลผลฐานข้อมูลแบบรวม หรือสร้างเป็นระบบปฏิบัติการฐานข้อมูลที่มีการสนับสนุนให้มีการประมวลผลแบบกระจาย แต่ทั้งนี้จะต้องสนับสนุนแนวความคิดเรื่องการปฏิบัติการที่เกิดขึ้นกับข้อมูลเป็นสำคัญ ซึ่งได้แก่ การจัดเก็บและการค้นคืนข้อมูลได้ถูกต้องและรวดเร็ว การจัดการกับข้อมูลที่มีปริมาณมหาศาลได้อย่างมีประสิทธิภาพ การควบคุมการเข้าใช้ข้อมูลพร้อมกัน และการกู้คืนได้เมื่อเกิดปัญหากับระบบ นอกจากนี้ยังมีส่วนเชื่อมโยงกับผู้ใช้ทีทำให้เรียนรู้และทำงานได้ง่าย

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