Operating System
Introduce My salf

  ดิฉันนางสาววาลิดา ฝ่ายทะแสง 

    มาแนะนำตัวเจ้าค่ะ  

 

 

 

08:31 - 21 August 2008 - comments (0) - post comment
Chapter 1 Introduction

ความรู้เบื้องต้นเกี่ยวกับระบบปฏิบัติการ

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

ระบบปฏิบัติการ (Operating System : OS) คืออะไร

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

1.    ฮาร์ดแวร์ ประกอบด้วยทรัพยากรต่างๆ ที่มีในระบบ ได้แก่ อุปกรณ์นำข้อมูลเข้า/ออก หน่วยประมวลผลกลาง และหน่วยความจำ นอกจากนี้ยังหมายความรวมถึง โปรแกรมภาษาเครื่อง และไมโครโปรแกรม ซึ่งเป็นส่วนที่บริษัทผู้ผลิตสร้างขึ้นเพื่อใช้เป็นซอฟร์แวร์ในระดับพื้นฐาน (primitive level) โดยสามารถทำงานได้โดยตรงกับทรัพยากรระบบด้วยคำสั่งง่ายๆ เช่น ADD MOVE หรือ JUMP คำสั่งเหล่านี้จะถูกกำหนดเป็นขั้นตอน การทำงานของวงจรภายในเครื่องคอมพิวเตอร์ ชุดคำสั่งที่ไมโครโปรแกรมต้องแปลหรือตีความหมายจะอยู่ใน รูปแบบภาษาเครื่องและมักเป็นคำสั่งในการคำนวณ เปรียบเทียบ และการควบคุมอุปกรณ์นำข้อมูลเข้า/ออก

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

3.    โปรแกรมประยุกต์ คือซอฟต์แวร์หรือโปรแกรมที่ถูกเขียนขึ้นเพื่อการทำงานเฉพาะอย่างที่เราต้องการ เช่น งานส่วนตัว งานทางด้านธุรกิจ งานทางด้านวิทยาศาสตร์ โปรแกรมทางธุรกิจ เกมส์ต่างๆ ระบบฐานข้อมูล ตลอดจนตัวแปลภาษา เราอาจเรียกโปรแกรมประเภทนี้ว่า User's Program โปรแกรมประเภทนี้โดยส่วนใหญ่มักใช้ภาษาระดับสูงในการพัฒนา เช่นภาษา C, C++, COBOL, PASCAL, BASIC ฯลฯ ตัวอย่างของโปรแกรมที่พัฒนาขึ้นใช้ในทางธุรกิจ เช่น โปรแกรมระบบบัญชีจ่ายเงินเดือน (Payroll Program) โปรแกรมระบบเช่าซื้อ (Hire Purchase) โปรแกรมระบบสินค้าคงหลัง (Stock Program) ฯลฯ ซึ่งแต่ละโปรแกรมก็จะมีเงื่อนไขหรือแบบฟอร์มที่แตกต่างกัน ตามความต้องการหรือกฏเกณฑ์ของแต่ละหน่วยงานที่ใช้ ซึ่งโปรแกรมประเภทนี้เราสามารถดัดแปลงแก้ไขเพิ่มเติม (Modifications) ในบางส่วนของโปรแกรมเองได้ เพื่อให้ตรงกับความต้องการของผู้ใช้งานโปรแกรม
โปรแกรมเหล่านี้เป็นตัวกำหนดแนวทางในการใช้ทรัพยากรระบบ เพื่อทำงานต่างๆ ให้แก่ผู้ใช้หลากหลายประเภท ซึ่งอาจเป็นได้ทั้งบุคคล โปรแกรม หรือเครื่องคอมพิวเตอร์ เช่นตัวแปรภาษาต้องใช้ทรัพยากรระบบในการแปลโปรแกรมภาษาระดับสูงให้เป็นภาษาเครื่องแก่โปรแกรมเมอร์ ดังนั้น ระบบปฏิบัติการต้องควบคุมและประสานงานในการใช้ทรัพยากรระบบของผู้ใช้ให้เป็นไปอย่างถูกต้อง

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

วิวัฒนาการและชนิดของระบบปฏิบัติการ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        3.1  การทำงานแบบโต้ตอบ (Interactive system)

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

3.2ระบบโต้ตอบแบบมัลติโปรแกรมมิ่ง (Multiprogramming Interactive system)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

08:25 - 21 August 2008 - comments (0) - post comment
Chapter 2 Computer Operation

โครงสร้างพื้นฐานของคอมพิวเตอร์

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

1.    อุปกรณ์นำข้อมูลเข้า/ออก (Input/output) เป็นส่วนที่ใช้ในการรับ-ส่งข้อมูลระหว่างเครื่องคอมพิวเตอร์กับผู้ใช้ ทำให้ทราบถึงการปฏิบัติงานของเครื่องคอมพิวเตอร์

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

3.    หน่วยประมวลผลกลาง (Central Processing Unit : CPU) เป็นส่วนที่ทำหน้าที่ปฏิบัติตามคำสั่ง ที่รับมาจากส่วนของอุปกรณ์นำเข้ามาประมวลผลเพื่อให้ได้ผลลัพธ์ตามที่ต้องการ การปฏิบัติตามคำสั่งหรือการประมวลผลนี้เรียกว่า การเอ็กซีคิ้ว (execute) หรือการรันโปรแกรม

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

·     ระบบภายนอก หรือที่เรียกว่าอุปกรณ์รอบข้าง (peripheral) ซึ่งประกอบไปด้วย อุปกรณ์นำข้อมูล เข้า/ออกและหน่วยความจำสำรอง

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

แชลแนลและหน่วยควบคุมอุปกรณ์ (Channel and Device Control Unit)

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

ในระบบเล็กๆ อุปกรณ์นำข้อมูลเข้า/ออกจะต่อกันโดยตรงกับซีพียูผ่านทาง "พอร์ท" (port) แต่ในระบบใหญ่ๆ แชนแนลจะต่อเข้าระหว่างซีพียูกับอุปกรณ์นำข้อมูลเข้า/ออกหลายๆชนิด ซึ่งรวมกันเป็นระบบคอมพิวเตอร์ขึ้นมา แชนแนลนี้จะไปต่อกับหน่วยควบคุมอุปกรณ์ (device control unit) หรือที่เรียกสั้นๆ ว่า CU หรือตัวควบคุมอุปกรณ์รอบข้าง (peripheral controller) หน่วยควบคุมอุปกรณ์จะต่อเข้ากับอุปกรณ์นำข้อมูลเข้า/ออกจริงๆ อีกทอดหนึ่ง

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

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

แชนแนลสามารถรันโปรแกรมทางด้านอุปกรณ์นำข้อมูลเข้า/ออกและรับส่งข้อมูลระหว่างหน่วยความจำกับอุปกรณ์นำข้อมูลเข้า/ออก ตัวอย่างเช่น ซีพียูต้องการข้อมูลจากอุปกรณ์ภายนอก ซีพียูจะส่งสัญญาณ I/O request ไปยังแชนแนล ถ้าแชนแนลว่างอยู่มันจะรันโปรแกรมเกี่ยวกับงานทางด้านนำข้อมูลเข้า/ออกซึ่งเรียกว่า แชนแนลโปรแกรม (channel program) เพื่อรับข้อมูลมาจากอุปกรณ์นำข้อมูลเข้า/ออก เมื่อแชนแนลรับข้อมูลมามันจะนำไปไว้ในหน่วยความจำ (RAM) และจะส่งสัญญาณไปบอกให้ซีพียูรับทราบ เพื่อที่ซีพียูจะได้รับไปทำงานต่อไป

 

 

08:22 - 21 August 2008 - comments (0) - post comment
Chapter 3 OS Structure

วิวัฒนาการและชนิดของระบบปฏิบัติการ

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

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

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

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

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

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

·      การจัดสรรข้อมูล (Data management) ข้อมูล (data หรือ information) อาจแบ่งได้เป็นสองประเภทคือ โปรแกรมสำเร็จรูปที่ใช้ร่วมกัน (ไม่นับระบบปฏิบัติการ) และส่วนที่เป็นแฟ้มข้อมูล (data file) ของผู้ใช้

สำหรับส่วนที่เป็นซอฟร์แวร์หรือโปรแกรมสำเร็จรูป (package หรือ library program) ซึ่งมีผนวกอยู่ในระบบปฏิบัติการเพื่อเอื้ออำนวยผู้ใช้ โดยปกติจัดอยู่ในรูป reentrant code คือมีส่วนของโปรแกรมเพียงสำเนาเดียว แต่สามารถให้ผู้ใช้เรียกใช้ได้พร้อมๆ กันหลายคน โดยแยกส่วนที่เป็นข้อมูลของแต่ละผู้ใช้ไป เช่น โปรแกรมแปลภาษา (translator หรือ compiler) โปรแกรมจัดคำ (editor) เป็นต้น ลักษณะนี้ลดความซ้ำซ้อน ได้มาก เพราะถ้าโปรแกรมร่วมนี้ไม่เป็น reentrant code แล้วผู้ใช้โปรแกรมนี้แต่ละคน จะต้องมีสำเนาของโปรแกรมร่วมนี้คนละชุดเกิดเป็นสำเนาของโปรแกรมร่วมหลายๆ ชุดอยู่ในหน่วยความจำทำให้สิ้นเปลืองโดยใช่เหตุ

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

 

หน้าที่ของระบบปฏิบัติการ

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

1.  ติดต่อกับผู้ใช้ (user interface) ผู้ใช้สามารถติดต่อหรือควบคุมการทำงานของเครื่องคอมพิวเตอร์ผ่านทางระบบปฏิบัติการได้ โดยระบบปฏิบัติการจะเครื่องหมายพร้อมต์ (prompt) ออกทางจอภาพเพื่อรอรับคำสั่งจากผู้ใช้โดยตรง ตัวระบบปฏิบัติการจึงเป็นตัวกลางที่ทำหน้าที่เชื่อมโยงระหว่างผู้ใช้กับฮาร์ดแวร์ของเครื่อง นอกจากนี้ผู้ใช้อาจเขียนโปรแกรมเพื่อใช้งานกรณีนี้ผู้ใช้ก็สามารถติดต่อกับระบบปฏิบัติการได้โดยผ่านทาง System Call

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

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

·   ทรัพยากรของระบบมีขีดจำกัด เช่นซีพียูในระบบมีอยู่เพียงตัวเดียว แต่ทำงานในระบบมัลติโปรแกรมมิ่งมีการทำงานหลายโปรแกรม จึงจะต้องมีการจัดสรรซีพียูให้ทุกโปรแกรมอย่างเหมาะสม

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

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

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

Hardware OS เป็น OS ที่อยู่ในรูปของอุปกรณ์ ถูกสร้างขึ้นเพื่อควบคุมการทำงานของเครื่องคอมพิวเตอร์และเป็นส่วนหนึ่งของฮาร์ดแวร์ มีความเร็วในการทำงานสูง แต่ราคาแพงและแก้ไขยาก ไม่นิยมในการแก้ไขส่วนมากจะเป็นการเปลี่ยนอุปกรณ์มากกว่าการแก้ไข

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

Firmware OS เป็น OS ที่เป็นส่วนของโปรแกรมที่เก็บไว้เป็นส่วนหนึ่งของเครื่องคอมพิวเตอร์ เขียนขึ้นโดยใช้คำสั่งไมโคร หลายๆ คำสั่งของคำสั่งไมโครรวมกันเรียกว่าไมโครโปรแกรม มีความเร็วสูงกว่า Software OS แต่ช้ากว่า Hardware OS 

08:18 - 21 August 2008 - comments (0) - post comment
Chapter 4 Process

องค์ประกอบของโปรเซส

1.       หมายเลขโปรเซส  ( ID : Process)

2.       โค้ดโปรแกรม  (Program  Code)

3.       ข้อมูล (Data)

4.       บล็อกควบคุมโปรเซส (Process  Control  Block)

5.       PSW (Program Status Word)

6.       คุณสมบัติของโปรเซส

สถานของโปรเซส  ( Process  State)

·      

สิ้นสุด

บล็อก

ในขณะที่โปรเซสกำลังถูกประมวลผลอยู่นั้น  โปรเซสอาจมีการเปลี่ยนสถานะก็ได้   การกำหนดสถานะของโปรเซสจะเป็นไปตามกิจกรรมที่กำลังดำเนินการอยู่ในนขณะนั้น  แต่ละโปรเซสอาจมีสถานะต่อไปนี้

ยอมรับให้ทำงาน

ทำงานเสร็จแล้ว

อินเทอร์รัพต์

อินพุต/เอาต์พุตเสร็จแล้ว

รออินพุต/เอาต์พุต

ทำงานเสร็จแล้ว

รอ


รัน

เริ่มต้น

พร้อม


 

ผังของสถานะโปรเซส

 


 

 

 

 

 

 


การจัดเวลาโปรเซส

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

โอเปอเรชั่นบนโปรเซส

 

·       โปรเซสต่างๆ   ในระบบที่สามารถประมวลผลได้พร้อม ๆ  กัน  จะต้องมีการสร้างและลบโปรแกรมตลอดเวลา  โดยระยยปฏิบัติการจะเป็นตัวสร้างโปรเซส  รวมทั้งส่งให้สิ้นสุดโปรเซสด้วยกลไก ดังนี้

·       การสร้างโปรเซส

·       การสิ้นสุดของโปรเซส

·       การติดต่อระหว่างโปรเซส

 

โครงสร้างพื้นฐาน

        ในการส่งข้อความ   หรือ  แมสเสจ  ( Message)  นั้นจะต้องมีการโปรเซสอย่างน้อย  2   โปรเซสที่จะติดต่อกัน   โดยโปรเซสที่ต้องการแมสเสจะต้องส่งคำร้องไปยังโปรเซสนั้น  เมื่อโปรเซสได้รับคำร้องแล้วจึงส่งแมสเสจไปให้โปรเซสที่ร้องขอซึ่งขนาดของแมสเสจอาจจะไม่เท่ากัน  ในการติดต่อกันจะมีการ สร้างลิงค์ขึ้นมาระหว่างโปรเซส   มีทั้งลิงค์ทางกายภาพ  (เช่น การแชร์หน่วยความจำ,บัน, หรือเน็ตเวิร์ด)   และลิงค์ทางลอจิก 

ปัญหาการทำงานของโปรเซส

¨       The   Dining  Philosophers  Problemเป็นปัญหาในการเกิด  Deadlock   อันเนื่องมาจากการใช้ทรัพยากรที่มีจำกัดร่วมกัน

 ¨      The  Readers – Writers  Problemในการอ่านและเขียนข้อมูลลงในอุปกรณ์บันทึกข้อมูล   ปัญหาจะเกิดขึ้นเมื่อมีความต้องการอ่านและเขียนข้อมูลพร้อม   กัน   เพราะหากมีการเขียนแสดงว่ามีการเปลี่ยนแปลงข้อมูล

 ¨      The  Sleeping  Barber  Problem เป็นการจำลองการประมวลผล

 อัลกอริทึมจัดตารางเวลา

( Scheduling   Algorithms)

 

·       การจัดตารางการทำงานตามลำดับความสำคัญ  ( Priority  Scheduling)

·         การจัดตารางการทำงานแบบมาก่อนได้ก่อน

(First – Come, First – Served  Scheduling / FCFS)

·       การจัดตารางการทำงานแบบงานที่สั้นที่สุดได้ก่อน

(Shortest-Job-First Scheduling / SJF)

·       การจัดตารางการทำงานแบบเวียนเทียน

(Round – Robin Scheduling  /RR)

·        การจัดตารางการทำงานแบบคอยหลายระดับ

(Multilevel  Queue  Scheduling)

·       การจัดตารางการทำงานแบบจัดลำดับหลายระดับแบบเลื่อนชั้นได้

(Multilevel  Feedback  Queue  Scheduling) 

วัตถุประสงค์ของการจัดตารางการทำงานของหน่วยประมวลผลกลาง

1.    มีความยุติธรรมในแต่ละโปรเซส   ในการใช้ทรัพยากรร่วมกัน

2.       ต้องใช้ประมวลผลกลางให้เต็มที่ไม่มีเวลาว่าง

3.       พยายามส่งผ่านให้ได้จำนวนโปรเซสมากที่สุดต่อหน่วยเวลา

4.       มีจำนวนการตอบรับของผู้ใช้ต่อหน่วยเวลามีจำนวนมากที่สุด

5.       การจัดงานที่เหมือนกันจะได้รันในเวลาที่เร็วขึ้น

6.       มีการใช้ทรัพยากรที่สมดุลย์  โดยเครื่องจะสงวนทรัพยากรได้  ในกรณีที่ระบบกำลังทำงาน

เกณฑ์การวิเคราะห์ประสิทธิภาพ 

·         ในการจัดการกระบวนการโปรเซส   จะต้องมีวิธีการสับหลีกโปรเซสสลับไปมา  

   ซึ่งจะมีผลต่อประสิทธิภาพ    โดยรวมของระบบ   ดังนั้น   จึงมีเกณฑ์ในการพิจารณา