Friday, April 17, 2015

Multiprogramming, Multiprocessing, Multitasking and Multithreading


Multiprogramming

    ระบบมัลติโปรแกรมมิ่ง(Multiprogramming System) จะมีหนึ่งโปรแกรมหรือมากกว่า ในหน่วยความจำหลัก(main memory) ที่พร้อมจะดำเนินการ(execute) แต่จะมีเพียงหนึ่งโปรแกรมที่จะได้รับ CPU สำหรับการทำคำสั่ง ในขณะที่โปรแกรมอื่นๆ ต้องรอให้ถึงลำดับของตัวเอง โดยแนวคิดหลักของมัลติโปรแกรมมิ่ง คือลดการใช้ของ CPU time เช่น ถ้าหากในขณะนี้มีกระบวนการที่กำลังทำงานเกี่ยวกับ I/O (ไม่ต้องใช้ CPU ในการทำให้เสร็จ) แล้วระบบปฏิบัติการ (OS) มีการขัดจังหวะ(interrupt) การทำงานในกระบวนการดังกล่าว และกำหนดให้โปรแกรมที่เป็นหนึ่งในหน่วยความจำหลักเตรียมพร้อมที่จะดำเนินการ ซึ่งวิธีนี้จะไม่มีการสูญเสีย CPU time ที่ระบบะบบปฏิบัติการรอการทำงาน I/O ให้เสร็จ อีกทั้งกระบวนการที่กำลังทำงานอยู่จะยังคงดำเนินการไปจนกว่าจะมีกระบวนการหนึ่งเลิกใช้ CPU หรือยุติการใช้ I/O
    อย่างไรก็ตามเป้าหมายสูงสุดของมัลติโปรแกรมมิ่ง คือการทำให้ CPU ยุ่งมากที่สุดจนกว่าจะมีกระบวนการหนึ่งพร้อมสำหรับการดำเนินการ
    ข้อควรจำ หากในคำสั่งอย่างเช่น ระบบที่มีการทำงานอย่างถูกต้อง ระบบปฏิบัติการควรจะโหลดโปรแกรมต่างๆ ไปยังหน่วยความจำหลักที่มีการแบ่งพิื้นที่ไว้ และให้มีการป้องกันการร้องขอ เพื่อหลีกเลี่ยงการเกิดโอกาสที่กระบวนการหนึ่ง อาจเปลี่ยนแปลงกระบวนการอื่นๆได้ ส่วนปัญหาอื่นคือระบบควรมีการระบุ address ถ้ามีโปรแกรมเกิด fragmentation ในขณะที่เข้าหรือออกจากหน่วยความจำหลัก และอีกหนึ่งปัญหาที่ต้องมีการจัดการคือโปรแกรมขนาดใหญ่มักจะไม่พอดีกับหน่วยความจำ ซึ่งจะต้องแก้ปัญหาโดยการใช้ pagination และ virtual memory
     สุดท้ายนี้ ถ้ามี N กระบวนการที่พร้อมสำหรับ CPU ในกรณีที่เกิดข้อผิดพลาดอาจจะมีหนึ่งโปรแกรมที่จะรอ N-1 โปรแกรมในการทำให้สำเร็จก่อนจะเริ่มดำเนินการ



Multiprocessing

   มัลติโปรเซสซิ่ง(Multiprocessing) คือการใช้งานตั้งแต่ 2 CPU ขึ้นไปภายในระบบคอมพิวเตอร์เพียงระบบเดียว ซึ่งอาจรวมไปถึงความสามารถของระบบที่สนับสนุนมากกว่าหนึ่งโปรเซสเซอร์ (processor) และความสามารถในการจัดการงาน(task)ระหว่างโปรเซสเซอร์
   ในบางครั้งหรือบางพจนานุกรม มัลติโปรเซสซิ่ง หมายถึงกระบวนการ(process)หลายๆกระบวนการ ที่ดำเนินการอยู่ในเวลาเดียวกัน แต่ถ้าอธิบายในเชิงฮาร์ดแวร์(hardware) มัลติโปรเซสซิ่งจะสื่อถึง ระบบคอมพิวเตอร์ที่มีหน่วยประมวลผลหลายๆหน่วย โดยใช้หน่วยความจำหลักและอุปกรณ์ต่อพ่วงร่วมกัน เพื่อการดำเนินการไปพร้อมกับโปรแกรม ส่วนในระดับของระบบปฏิบัติการนั้นมัลติโปรเซสซิ่ง หมายถึง กระบวนการที่มีการดำเนินการไปพร้อมๆกัน หรือ กระบวนการแบบขนาน(parallel processing)



Multitasking

    ในระบบคอมพิวเตอร์ มัลติทาร์กกิ้ง(multitasking) คือ กระบวนการที่งาน(task)หลายๆงาน หรือเรียกกันว่าโปรเซส(process) ดำเนินการไปในระยะเวลาเดียวกัน ซึ่งงานแต่ละงานจะทำงานไปพร้อมกันแทนการทำงานแบบเรียงตามลำดับ โดยงานจะแชร์ CPU และหน่วยความจำหลัก แต่ก็ไม่ได้หมายถึงกระบวนการทำงานแบบขนาน
    กรณีที่คอมพิวเตอร์มีหน่วยประมวลผลเดียว มีเพียงหนึ่งงานที่ได้ทำงาน ณ เวลาใดๆ ซึ่งหมายความว่า CPU ถูกกระตุ้นให้ทำคำสั่งสำหรับงานดังกล่าว แต่มัลติทาร์กกิ้งสามารถแก้ปัญหาได้โดย กำหนดให้งานหนึ่งงาน ดำเนินการที่เวลาใดๆ และเมื่อมีงานที่รออยู่ จะกำหนด CPU ให้ดำเนินการจากงานหนึ่งไปยังอีกงานหนึ่ง เรียกว่า context switch ถ้าเกิด context switch บ่อยๆ พอ จะทำให้กระบวนการทำงานแบบขนานเสมือนเกิดขึ้นสำเร็จ
    ส่วนในกรณีที่มีมัลติโปรเซสเซอร์(multiprocessor) หรือ มัลติคอร์(multicore) จะช่วยให้งานมากกว่าหนึ่งงานดำเนินการไปได้ในครั้งเดียว(หนึ่งงาน ต่อหนึ่ง CPU หรือ core)


Multithreading

   มัลติเธรดดิง คือ รูปแบบการดำเนินการที่ยอมให้หนึ่งกระบวนการหรือโปรแกรมมี code segment (threads) มากกว่าหนึ่งดำเนินการไปพร้อมกัน โดยการสลับ(context) กันของงานภายในโปรแกรมดังกล่าว ซึ่งจะทำงานได้ดีในกรณีที่ใช้ CPU ที่มีมากกว่า 2 core ขึ้นไป ด้วยการแบ่งงานให้กับแต่ละ core ของ CPU ไปดำเนินการ แต่สำหรับกรณีที่ CPU มีเพียง 1 core การทำงานของโปรแกรมจะทำงานแบบเรียงตามลำดับก่อน-หลัง ทำให้ประสิทธิภาพการทำงานยังคงเท่าเดิม

ที่มา:

Multiprogramming, Multiprocessing, Multitasking, and Multithreading 

Multiprocessing 

Computer multitasking    

มัลติเธรดดิง (Multithreading) 


No comments:

Post a Comment