Chapter 1
บททึ่1 การให้รู้จักกับละบบกับประฎิบัติการ Introduction Operating System What is an Operating System? Simple Batch System Multiprocessor Systems Time Sharing System Personal-Computer System Parallel System Distributed Systems Real -Time Systems ระบบปฏิบัติการคืออะไร (What is an Operating System) โปรแกรมที่ทำงานอยู่ระหว่างผู้ใช้คอมพิวเตอร์(User)กับฮาร์ดแวร์คอมพิวเตอร์(Hardware) จุดประสงค์ของระบบปฏิบัติการ - ดำเนินการโปรแกรมของผู้ใช้และแก้ปัญหาที่ยากๆ - ทำให้ระบบคอมพิวเตอร์ใช้งานได้ง่ายขึ้น จัดการฮาร์ดแวร์ของคอมพิวเตอร์ให้สามารถใช้ได้อย่างมีประสิทธิภาพ องค?ประกอบของระบบคอมพิวเตอร? (Computer System Components) ฮาร์ดแวร์ (Hardware) ประกอบด้วยทรัพยากรต่างๆ ที่มีในระบบ ได้แก่ อุปกรณ์นำข้อมูลเข้า/ออก หน่วยประมวลผลกลาง และหน่วยความจำ นอกจากนี้ยังหมายความรวมถึง โปรแกรมภาษาเครื่อง ระบบปฏิบัติการ (Operating system) เป็นโปรแกรมที่ทำงานเป็นตัวกลางระหว่างผู้ใช้เครื่องและฮาร์ดแวร์ โดยมีวัตถุประสงค์เพื่อจัดสภาพแวดล้อมให้ผู้ใช้ระบบสามารถปฏิบัติงานบนเครื่องคอมพิวเตอร์ได้ โปรแกรมประยุกต์ (Application program) คือซอฟต์แวร์หรือโปรแกรมที่ถูกเขียนขึ้นเพื่อการทำงานเฉพาะอย่างที่เราต้องการ เช่น งานส่วนตัว งานทางด้านธุรกิจ งานทางด้านวิทยาศาสตร์ โปรแกรมทางธุรกิจ เกมส์ต่างๆ ระบบฐานข้อมูล ตลอดจนตัวแปลภาษา ผู้ใช้ (User) บุคลากรที่จะเป็นผู้จัดการและควบคุมระบบคอมพิวเตอร์ให้สามารถปฏิบัติงานได้อย่างราบรื่น คอยแก้ไขปัญหาต่าง ๆ ที่เกิดขึ้นกับระบบคอมพิวเตอร์
หน?าที่ของระบบปฏิบัติการ (Operating System Definitions) o จัดสรรทรัพยากร(Resources management) เพราะทรัพยากรของระบบมีจำกัด และมีหลายประเภท ระบบปฏิบัติการต้องบริการให้ผู้ใช้ ได้ใช้ทรัพยากรต่าง ๆ ให้เป็นไปอย่างต่อเนื่อง ตัวอย่างทรัพยากร ที่ระบบปฏิบัติการต้องจัดการ เช่น ซีพียู หน่วยความจำ ซีดีรอม เครื่องพิมพ์ เป็นต้น o ควบุคมดูแลอุปกรณ์ (Control devices) ระบบปฏิบัติการมีหน้าที่ควบคุมอุปกรณ์ต่าง ๆ ให้ทำงานสอดคล้องกับความต้องการ โดยไม่เกิดข้อผิดพลาด เช่นการควบคุมดิสก์ จอภาพ หรือซีดีรอม เป็นต้น ระบบปฏิบัติการจะรับคำสั่งจากผู้ใช้ และเรียกใช้ System call ขึ้นมาทำงาน ให้ได้ผลตามต้องการ o การติดต่อกับผู้ใช้ (User interface) ผู้ใช้สามารถสั่งให้คอมพิวเตอร์ทำงาน จึงเป็นหน้าที่ของระบบปฏิบัติการในเป็นตัวกลาง และเตรียมสภาพแวดล้อมต่าง ๆ ให้กับผู้ใช้ในการสั่งงานคอมพิวเตอร์ หลังจากนั้นจะใช้คำสั่งผ่านทาง System call เพื่อปฏิบัติสิ่งที่ผู้ใช้ต้องการ
ระบบงานแบ็ตซ์ (Batch system) - Operator เป็นผู้จัดเตรียมข้อมูลให้แก่ผู้ใช้และโปรแกรมเมอร์ - ผู้ใช้และผู้เขียนโปรแกรมติดต่อกับระบบคอมพิวเตอร์ผ่านทาง Operator - เราสามารถนำข้อมูลเข้าโดยใช้ เช่น เทป บัตรเจาะรู เป็นต้น - การเรียงลำดับงานอัตโนมัต ระบบงานแบ็ตนี้ Operator เรียงลำดับงานเข้าเป็นกลุ่มที่ให้อุปกรณ์หรือทรัพยากรที่คล้ายคลิงกัน - เริ่มแรกระบบแบ็ตควบคุมระบบด้วยจอคอมพิวเตอร์ - ควบคุมการขนถ่ายข้อมูล - เมื่อทำงานเสร็จ Control Tranfer จะกลับสู่หน้าจอ ในอดีต คอมพิวเตอร์จะทำงานได้ครั้งละ 1 งาน การสั่งงานคอมพิวเตอร์ให้มีมีประสิทธิภาพยิ่งขึ้น ทำได้โดยการรวมงานที่คล้ายกัน เป็นกลุ่ม แล้วส่งให้เครื่องประมวลผล โดยผู้ทำหน้าที่รวมงาน จะรับงานจากนักพัฒนาโปรแกรม มาจัดเรียงตามความสำคัญ และตามลักษณะของโปรแกรม จัดเป็นกลุ่มงาน แล้วส่งให้คอมพิวเตอร์ประมวลผล Memory Layout for a Simple Batch System Control Cards(การ์ดควบคุม) ปัญหาจาก Control Cards 1. โปรแกรมเมอร์ไม่สามารถทราบได้ว่า งานที่ได้รับคือภาษาอะไรและโปรแกรมที่ต้องประมวลผลอะไร 2. โปรแกรมเมอร์ไม่สามารถแบ่งแยกงานได้ 2.1 แยกงานเป็นลำดับหรือประเภท 2.2 ไม่ทราบว่าจะใช้โปรแกรมอะไร แก้ปํญหา โดยใช้บัตรเจาะรู(Punch Cards)
ตัวอย่างภาษาที่ใช้กับ Control Cards การทำงานในลักษณะ Batch System ผุ้ใช้ไม่ได้ติดต่อโดยตรงกับระบบ เป็นเพียงแค่ผู้เตรียมข้อมูล เขียนโปรแกรมและข้อมูลสำหรับการควบคุมระบบ จึงมีภาษาที่เรียกว่า ภาษาควบคุมงาน(Job Control Language : JCL) ตัวอย่างภาษา JCL $JOB (แสดงจุดเริ่มต้นของโปรแกรม) $FTN (คำสั่งที่บอกให้ Program Monitor เตรียม Program ตัวแปรภาษา FTN เพื่อแปรเป็นภาษาเครื่องและเก็บใน Memory) $LOAD (คำสั่งที่ให้ Program monitor อ่าน Program ที่เก็บอยุ่ใน Memory) $RUN (คำสั่งให้โปรแกรมเริ่มทำงานประมวลผล) $DATA (คำสั่งให้เก็บข้อมูลเข้าสุ่ Memory) $END (คำสั่งสิ้นสุดการทำงาน)
Control Cards Parts of resident monitor - อ่านและประมวลผลคำสั่งบน Control Cards - โหลดโปรแกรมระบบและโปรแกรมประยุกต์เข้าหน่วยความจำ - อุปกรณ์ สามารถรู้ลักษณะต่างของคุณสมบัติของระบบได้ ปัญหา ประสิทธิภาพช้า อุปกรณ์รับ-ส่งข้อมูลและCPU ทำงานไม่สัมพันธ์กัน แก้ปัญหา ประมวลผลแบบ Off-Line โดยใช้สื่อเก็บข้อมูลชนิด เทปแม่เหล็ก แทนที่บัตรเจาะรู
ระบบสพูลลิ่ง (Spooling) Simultaneous Peripheral Operating On-Line เป็น multiprogramming พื้นฐาน ทำให้ซีพียูทำงานเต็มประสิทธิภาพซึ่งแก้ปัญหาในระบบที่ CPU และ I/O ทำงานไม่สัมพันธ์กันเพราะทำให้สามารถทำงานได้ 2 งานพร้อมกัน งานแรกคือประมวลผลในส่วนของซีพียู งานที่สองคือการรับ-แสดงผลข้อมูล ซึ่งต่างกับ buffer ที่ซีพียู และหน่วยรับ-แสดงผลทำงานร่วมกัน job pool ทำให้สามารถเลือกการประมวลผลตามลำดับก่อนหลังได้ โดยคำนึงถึง priority เป็นสำคัญ
ความสามารถระบบปฏิบัติการที่จำเป็นสำหรับ ระบบ Multi Programming(OS Feature Needs for Multoprogramming) ระบบที่สนับสนุนงานของ I/O การจัดการหน่วยความจำ(Memory Managerment) การจัดตารางเข้าไว้ใช้ CPU (CPU Scheduling) การจัดสรรการใช้งานอุปกรณ์
ระบบแบ่งเวลา (Time-sharing หรือ Multitasking) ระบบแบ่งเวลา(Time Sharing) หรือ มัลติทาสกิ้ง(multitasking) เป็นศาสตร์ที่ขยายระบบมัลติโปรแกรมมิ่ง ที่ทำให้สามารถรันโปรแกรมได้หลายงาน โดยซีพียูจะทำหน้าที่สับเปลียนการรันงานไปมา แต่การสับเปลี่ยนทำด้วยความเร็วสูงทำให้ผู้ใช้มีความรู้สึกเหมือนอินเตอร์แอ็กทีฟโดยตรง(Interactive) กับโปรแกรมตัวของตนเอง การติดต่อกับระบบดังกล่าวทำได้โดยผ่านเครื่องเทอร์มินอล(Terminal)ที่ประกอบด้วยอุปกรณ์รับข้อมูล เช่น เมาส์ คีย์บอร์ด และอุปกรณ์แสดงผล เช่น จอภาพ เครื่องพิมพ์ ผู้ใช้สามารถสั่งให้ระบบ หรือโปรแกรมทำงานได้ทันที
เป็นการขยายระบบ multiprogramming ทำให้สามารถสับเปลี่ยนงานของคนหลาย ๆ คนเข้าสู่ซีพียู ซึ่งการสับเปลี่ยนที่ทำด้วยความเร็วสูงจะทำให้ผู้ใช้รู้สึกเหมือนครอบครองซีพียูอยู่เพียงผู้เดียว ระบบคอมพิวเตอร์ส่วนบุคคล (Personal Computer System) เป็นระบบที่ใกล้ชิดกับเรามากที่สุดปัจจุบันคอมพิวเตอร์ส่วนบุคคลเป็นที่นิยมมากยิ่งขั้นโดยอุปกรณ์ที่รองรับก็มีราคาถูกลง และมีการพัฒนาอุปกรณ์ต่าง ๆ อย่างต่อเนื่อง ทั้งแป้นพิมพ์ เมาส์ จอภาพ หน่วยความจำ หน่วยประมวลผล เป็นต้น คอมพิวเตอร์ส่วนบุคคลนั้นให้ความสะดวกให้ด้านต่าง ๆ ทั้งด้านการใช้งานและการดูแล Symmetric-multiprocessing การประมวลผลแบบสมมาตร หมายถึงการประมวลผลหลายโปรเซสเซอร์ที่ไม่มีโปรเซสเซอร์ตัวใดรับโหลดมากกว่าตัวอื่น Asymmetric-multiprocessing การประมวลผลแบบไม่สมมาตร หมายถึงการมีโปรเซสเซอร์ตัวหนึ่งเป็นตัวควบคุม และแบ่งงานแต่ละแบบให้โปรเซสเซอร์แต่ละตัวตามความเหมาะสม ระบบเรียลไทม์ (Real-time system) จุดประสงค์อีกอย่างหนึ่งของ ระบบปฏิบัติการ คือ ระบบเวลาจริง(Real-time system) หมายถึงการตอบสนองทันที เช่นระบบ Sensor ที่ส่งข้อมูลให้คอมพิวเตอร์ เครื่องมือทดลองทางวิทยาศาสตร์ ระบบภาพทางการแพทย์ ระบบควบคุมในโรงงานอุตสาหกรรม ระบบหัวฉีดในรถยนต์ ระบบควบคุมการยิง ระบบแขนกล และเครื่องใช้ในครัวเรือนทั้งหมด Real-time แบ่งได้ 2 ระบบ 1. Hard real-time system เป็นระบบที่ถูกรับรองว่าจะได้รับการตอบสนองตรงเวลา และหยุดรอไม่ได้ 2. Soft real-time system เป็นระบบ less restrictive type ที่สามารถรอให้งานอื่นทำให้เสร็จก่อนได้
Chapter 2
บทที่2 ระบบของคอมพิวเตอร์ 1. Computer System Operation 2. I/O Structure 3. Storage Structure 4. Storage Hierarchy 5. Hardware Protection 6. General System Architecture Computer-System Operating - อุปกรณ์ I/O กับ CPU สามารถทำงานร่วมกันได้ - อุปกรณ์ I/O แต่ละตัวจะมีตัวควบคุมการทำงาน - Device Controller แต่ละตัวจะมี Local Buffers เป็นตัวของตนเอง - CPU จะย้ายข้อมูลจาก Memory ไปยัง Local Buffers - อุปกรณ์ I/O จะส่งข้อมูลและรับข้อมูลผ่านทาง Local Buffers of Controller - CPU จะทำการขัดจังหวะ เพื่อนำสัญญาไปใช้กับอุปกรณ์ต่อพ่วงที่ทำงานติดต่อกับ CPU โดยเมื่อ CPU ประมวลผลอยู่อาจจะมีสัญญาไฟฟ้าขัดจังหวะการทำงานของอุปกรณ์ต่างๆและอุปกรณ์ดังกล่าวต้องรายงานมื่อทำงานเสร็จ
Common Function of Interrupts เมื่อเกิด interrupt ต่างๆ interrupt function จะทำงานคือ - เก็บ content ของ CPU registers - ตรวจสอบว่ามี error ที่เกิดจากการทำงาน (execute)ของ input operation ล่าสุดหรือไม่ - รับ character จาก device ที่เกี่ยวข้อง - เก็บ character นั้นใน buffer - ปรับค่าตัวแปร pointer และตัวแปร counter ของ buffer เพื่อเก็บค่า character ถัดไป - set flag ใน memory เพื่อแจ้งให้ O.S รู้ว่าได้มีการ input ใหม่เข้ามา - O.S ส่วนที่เหลือจะรับผิดชอบเกี่ยวกับการประมวลผลข้อมูล(input)นั้น เช่น ส่งข้อมูลไปยังโปรแกรมที่ร้องขอ - Load content ของ register ที่เก็บไว้ - ส่ง content กลับไปยัง instruction ที่ถูก interrupt
I/O Structure เมื่อการรับ-ส่งข้อมูล เริ่มทำงาน ซีพียูจะโหลด Register ที่จำเป็นไว้ใน Device Controller ซึ่ง Device Controller จะทำการตรวจสอบ Register เหล่านั้น เพื่อกำหนดว่าจะทำงานอะไร เช่น ถ้าพบการร้องขอให้อ่านข้อมูล Controller จะเริ่มทำการถ่ายโอนข้อมูลจาก Device ไปยัง Local Buffers เมื่อโอนข้อมูลเสร็จ Device Controller จะบอกำ CPU ว่าทำงานเสร็จแล้วการติดต่อสื่อสารนี้จะทำเสร็จได้โดยสัญญาขัดจังหวะ
การรับ-ส่งข้อมูล มี 2 วิธี ดังนี้
1. การรับ-ส่งข้อมูล แบบสัมพันธ์(Synchronous I/O) เมื่อการรับ-ส่งข้อมูลเริ่มขึ้น การที่จะโยกย้ายการควบคุมให้กับโปรแกรมของผู้ใช้จะทำได้หลังจากที่เสร็จสิ้นการรับ-ส่งข้อมูลเท่านั้น การรับ-ส่งข้อมูลแล้วเสร็จ มี 2 วิธี ดังนี้ 1. คอมพิวเตอร์บางเครื่องมีชุดคำสั่ง Wait พิเศษ ซึ่งปล่อยให้ซีพียูว่างจนกระทั่งเกิดสัญญาณขัดจังหวะถัดไป 2. เครื่องจักรที่ไม่มีชุดคำสั่งดังกล่าว อาจจะมี Wait Loop ลูป นี้จะวนรอบไปเรื่อย ๆ จนกระทั่งเกิดสัญญาณขัดจังหวะก็จะโอนย้ายการควบคุมไปส่วนอื่นๆ ของระบบปฏิบัติการ การรับ-ส่งข้อมูลแบบไม่สัมพันธ์ (Asynchronous I/O) - เมื่อการรับ ส่ง ข้อมูลเริ่มขึ้น การโยกย้ายการควบคุมให้กับโปรแกรมของผู้ใช้ทำได้โดยไม่ต้องรอให้การรับ-ส่งข้อมูลเสร็จ - คำสั่งขอระบบปฏิบัติการ (System Call) อนุญาตให้โปรแกรมของผู้ใช้รอคอยให้รับ-ส่งข้อมูลแล้วเสร็จ - ตารางที่ระบบปฏิบัติการใช้เก็บบันทึกของอุปกรณ์รับ-ส่งข้อมูลแต่ละตัวคือ Device Status Table ซึ่งใช้แสดงชนิดอุปกรณ์ ที่อยู่ และสถานะ (ว่าง กำลังทำงาน หรือเสีย)
Direct Memory Access (DMA) - ใช้สำหรับอุปกรณ์ I/O ความเร็วสูงที่สามารถส่งข้อมูลที่ความเร็วใกล้เคียงกันกับหน่วยความจำ - หน่วยควบคุมอุปกรณ์ส่งข้อมูลเป็น Block จาก Buffer Storage โดยตรงไปยัง หน่วยความจำหลักโดยปราศจากการแทรกแซงจาก CPU - การ Interrupt จะเกิดเพียง 1 ครั้ง ต่อ 1 Block เท่านั้น ซึ่งจะส่งให้มากกว่าการ Interrupt ทุก ๆ Byte Storage Structure ประกอบไปด้วย 2 ประเภทใหญ่ ๆ ดังนี้ 1. Main Memory ประกอบด้วย - Ram มีทั้งที่เป็น Static Ram , Dynamic Ram - ROM(Read Only Memory) 2. Secondary Storage แบ่งเป็น 3 เทคนิค - Magnetic ใช้สนานแม่เหล็กเก็บข้อมูล เช่น Harddisk ,Floppy Disk , Zip Drive - Optical ใช้ระบบแสง เช่น CD-ROM - Electronic ใช้ระบบไฟฟ้าในการรับ-ส่งข้อมูล เช่น Flash Memory , Flash Drive Storage Hierarchy หน่วยเก็บข้อมูลมีหลายชนิด แต่ละชนิดมีอัตราความเร็ว รวมทั้งขนาดความจุและราคาที่แตกต่างกัน เพื่อให้เราเลือกหน่วยเก็บข้อมูลใช้งานได้อย่างเหมาะสมนั้นเอง Caching เป็นหลักการสำคัญสำหรับการทำงานของระบบคอมพิวเตอร์โดยทั่วไป ข้อมูล(data)จะถูกเก็บใน storage อย่างใดอย่างหนึ่งที่กล่าวแล้ว เมื่อจะใช้งานจะถูก copy ไปเก็บใน storage ที่เร็วขึ้น เป็นการชั่วคราวซึ่งเรียกว่า cache
Hardware Protection ? Dual-Mode Operation ? I/O Protection ? Memory Protection ? CPU Protection
Memory Protection วิธีป้องกันหน่วยความจำ คือ การแบ่งแยกหน่วยความจำสำหรับงานแต่ละงาน และป้องกันไม่ให้งานหนึ่งเข้าไปอ่านหรือแก้ไขข้อมูลในส่วนของงานอื่นได้ การป้องกันนี้ทำได้โดย Register 2 ตัว เรียกว่า รีจิสเตอร์ฐาน(Base Regidster) และรีจิสเตอร์ขอบเขต(Limit Register) รีจิสเตอร์ฐาน(Base register) ใช้สำหรับเก็บตำแหน่งสุดท้ายที่ยอมให้ใช้ได้ในตาราง Memory รีจิสเตอร์ขอบเขต(Limit Register) จะเก็บขนาดของเนื้อที่ทั้งหมดของงาน จากนั้นถ้ายังมีการเก็บ Address Bus เพื่อตรวจสอบเทียบกับ Base และ Limit ว่าถูกต้องตามค่าที่กำหนดหรือไม่ ถ้าผ่านจะสามารถส่งข้อมูลไปยังหน่วยความจำ
Protection Hardware - เมื่อมีการทำงานหลาย ๆ โปรแกรมก็ต้องมีการแบ่งหน่วยความจำ ซึ่งแต่ละงานก็จะไม่ก้าวก่ายกัน - ระบบปฏิบัติการจะมีการจัดการแต่ละงาน คือ การหยุดทำงานของงานที่เกิดความผิดพลาดหรือไปทำงานอื่น ๆ
General-System Architecture System Call หรือ คำสั่งเรียกผู้ควบคุม คือ เมื่อมีการใช้คำสั่งเรียกระบบ Hardware จะทำเสมือนว่าเกิดการขัดจังหวะโดยโปรแกรม และส่งการควบคุมไปยังระบบตามตำแหน่งสัญญาณ พร้อมด้วยการเปลี่ยนแปลงบิตกำหนดช่วง หรือมอนิเตอร์โหมด โปรแกรมดำเนินงานตามคำสั่งเรียกระบบ จะตรวจดูการขัดจังหวะนั้นว่าเป็นคำสั่งเรียกระบบให้ทำอะไร โดยดูจากพารามิเตอร์ ที่มาร้องขอพารามิเตอร์เหล่านี้อาจส่งผ่านมาทางรีจิสเตอร์หรือหน่วยความจำ ระบบก็จะทำงานตามคำร้องขอนั้น ๆ และส่งการควบคุมกลับไปที่คำสั่งเรียกระบบ I/O Protection โปรแกรมของผู้ใช้แต่ละคน อาจจะทำให้ระบบเสียหายได้ โดยใช้คำสั่งร้องขอการใช้อุปกรณ์อย่างผิด ๆ หรือ้างอิงตำแหน่งในหน่วยความจำที่อยู่ในส่วนของระบบปฏิบัติการหรือไม่ยอมคืนการควบคุมซีพียูกลับเข้าระบบ เพื่อป้องกันอุปกรณ์รับ-ส่งข้อมูล(I/O) ต่างๆ โดยกำหนดให้คำสั่งสำหรับร้องขออุปกรณ์ทุกชนิดเป็นคำสั่งสงวน เป็นการป้องกันไม่ให้ผู้ใช้สั่งไปยังอุปกรณ์ที่ต้องการได้โดยตรง แต่ต้องร้องขอผ่านระบบปฏิบัติการก่อนเสมอ จึงจะติดต่อไปยังอุปกรณ์ที่ต้องการได้
Chapter 3
บทที่3 โครงสร้างของระบบปฎิบัติการ - System Components - Operating System Services - System Calls - System Programs - System Structure - Virtual Machines - System Design and Implementation - System Generation
Common System Component ระบบสมัยใหม่ที่สนับสนุนส่วนประกอบพื้นฐานของระบบปฏิบัติการ มีดังนี้ 1. การจัดการโปรเซส(Process Management) 2. การจัดการหน่วยความจำ(Memory Management) 3. การจัดการไฟล์(File Management) 4. การจัดการอินพุตและเอาร์พุต(I/O System Management) 5. การจัดการสื่อเก็บข้อมูล(Storage Management) 6. เน็ตเวิร์ค(Network) 7. ระบบป้องกัน(Protection System) 8. ตัวแปรคำสั่ง(Command-Interpreter System)
1. การจัดการโปรเซส(Process Management) - โปรเซส = โปรแกรมที่ถูก Execute / ชุดคำสั่งที่ถูกประมวลผล - โปรเซสต้องการทรัพยากรสำหรับการทำงาน เช่น CPU, Memory, File, Input-Output Device - ระบบปฏิบัติการมีหน้าที่รับผิดชอบในกิจกรรมที่เกี่ยวกับการจัดการโปรเซส ดังนี้ - จัดเตรียมกลไกในการประสานงานสำหรับซิงโครไนซ์โปรเซส(Process Synchronization) - จัดเตรียมกลไกในการประสานงานระหว่างการสื่อสารโปรเซส(Process communication) - การสร้างและการลบทั้งโปรเซสของระบบและของผู้ใช้ - การหยุดและทำโปรเซสต่อไป - การจัดเตรียมกลไกการแก้ไข Deadlock
การจัดการหน่วยความจำ(Memory Management) - Memory คือ หน่วยย่อยของงานในระบบ หรือ หน่วยย่อยของคำหรือไบต์ ซึ่งแต่ละหน่วยย่อยมีตำแหน่งหรือที่อยู่เฉพาะ ซึ่งสามารถเรียกใช้ได้อย่างรวดเร็วระหว่างหน่วยประมวลผลกลางและอุปกรณ์รับ-ส่งข้อมูล
ระบบปฏิบัติการมีหน้าที่ในการจัดการหน่วยความจำ ดังนี้ - บันทึกข้อมูลว่าโปรแกรมใดอยู่ในหน่วยความจำตำแหน่งใด - เลือกกระบวนการที่จะนำลงหน่วยความจำต่อไป เมื่อมีหน่วยความจำว่าง - จัดสรรและคืนหน่วยความจำตามที่ระบบขอร้อง
การจัดการไฟล์(File Management) แฟ้มข้อมูล (File) คือที่เก็บรวบรวมข้อมูลที่เกี่ยวข้องกันโดยผู้สร้างเป็นผู้กำหนดขึ้น ตัวอย่างเช่น แฟ้มข้อมูลสำหรับโปรแกรม ข้อมูลดิบ ข้อมูลดิบอาจป็นตัวเลข ตัวอักษรหรืออักขระ
ระบบปฏิบัติการมีหน้าที่บริหารแฟ้มข้อมูล ดังนี้ 1. สร้างและทำลายแฟ้มข้อมูล 2. สร้างและทำลายไดเรกทอรี (Directory) 3. ให้บริการการใช้งานแฟ้มข้อมูลและไดเรกทอรีขั้นพื้นฐาน 4. อ้างอิงข้อมูลจากแฟ้มข้อมูลจริงในหน่วยความจำสำรอง 5. ทำสำเนาแฟ้มข้อมูลลงในหน่วยความจำถาวร (ไม่ลบเมื่อดับไฟ)
การจัดการอินพุตและเอาร์พุต(I/O System Management) หน้าที่สำคัญอันหนึ่งของระบบปฏิบัติการ คือ การซ่อนรายละเอียดของอุปกรณ์เฉพาะอย่างจากผู้ใช้ เช่น ในระบบปฏิบัติการ UNIX รายละเอียดต่างๆ ของอุปกรณ์รับส่งข้อมูลจะถูกเก็บไว้ในระบบรับส่งข้อมูลเอง
ระบบปฏิบัติการหลักระบบรับส่งข้อมูลประกอบไปด้วย ดังนี้ 1. องค์ประกอบการจัดการหน่วยความจำประกอบด้วย Buffering , Caching และ Spooling 2. วิธีการเรียกใช้ตัวควบคุมอุปกรณ์ (A general device driver interface) 3. องค์ประกอบการจัดการหน่วยความจำประกอบด้วย Buffering , Caching และ Spooling 4. วิธีการเรียกใช้ตัวควบคุมอุปกรณ์ (A general device driver interface)
การจัดการสื่อเก็บข้อมูล(Storage Management) - จุดประสงค์หลักของระบบคอมพิวเตอร์ คือ การทำงานตามโปรแกรมผู้ใช้ ซึ่งโปรแกรมเหล่านี้รวมทั้งข้อมูลที่ใช้ จะต้องอยู่ในหน่วยความจำหลักในขณะทำงาน แต่เนื่องจาหน่วยความจำหลักมีขนาดจำกัด จึงจำเป็นต้องมีที่เก็บข้อมูล - ปัจจุบันคอมพิวเตอร์สมัยใหม่ จะใช้ดิสก์เป็นสื่อในการจัดเก็บข้อมูลทั้งโปรแกรมและข้อมูล
ระบบปฏิบัติการมีหน้าที่บริหารจานบันทึก ดังนี้ 1. การบริหารพื้นที่ว่าง 2. การจัดหาเนื้อที่เก็บข้อมูล 3. การจัดตารางการใช้จานบันทึก
เน็ตเวิร์ค(Network) - ระบบกระจายอำนาจ (Distributed system) หน่วยประมวลผลแต่ละตัวจะมีหน่วยความจำและนาฬิกาของตนเอง - การติดต่อระหว่างหน่วยประมวลผลจะทำได้โดยผ่านทางเครือข่ายการสื่อสาร - ระบบกระจายอำนาจทำให้ผู้ใช้สามารถใช้ทรัพยากรต่างๆได้มากมายมากมาย ซึ่งเป็นผลให้สามารถทำงานได้เร็วขึ้น เข้าถึงข้อมูลได้มากขึ้น และระบบมีความน่าเชื่อถือมากขึ้น
ข้อดีของระบบกระจายอำนาจ - มีประสิทธิภาพในด้านความเร็ว - มีความถูกต้องของข้อมูล - มีความน่าเชื่อถือ
ระบบป้องกัน(Protection System) การป้องกัน คือ กลไกการควบคุมโปรแกรม กระบวนการ หรือผู้ใช้ระบบ ช่วยให้ระบบมีความเชื่อมั่นสูงขึ้น
ระบบป้องกันจะต้องทำดังต่อไปนี้ - สามารถแบ่งแยกความมีสิทธิของผู้ใช้ในระบบได้ - กำหนดวิธีการใช้ทรัพยากรต่างๆและวิธีการบังคับให้ผู้ใช้ปฏิบัติตาม
การป้องกัน ตัวแปรคำสั่ง(Command-Interpreter System) ระบบปฏิบัติการควบคุมประโยคคำสั่งซึ่งจัดการกับ - การจัดการโปรเซส - การควบคุม I/O - การจัดการหน่วยเก็บข้อมูลสำรอง - การจัดการหน่วยความจำหลัก - การจัดการแฟ้มข้อมูล - การป้องกัน - การจัดการเครือข่าย โปรแกรมทีอ่านและแปลคำสั่งคอนโทลเลอร์สเตทเมนต์อย่างอัตโนมัติ โปรแกรมนี้บางครั้งก็เรียกว่า Control-cards interpreter หรือ Control-line interpreter ซึ่งคนทั่วไปรู้จักในชื่อว่า Shell นั้นเอง จะมีฟังก์ชันธรรมดา ๆ คือ นำคำสั่งต่อไปเข้ามา Execute
2. การจัดการหน่วยความจำ(Memory Management) ระบบปฏิบัติการเป็นผู้จัดสภาพแวดล้อมให้โปรแกรมทำงาน โดยให้บริการต่าง ได้แก่ 1. การให้โปรแกรมทำงาน (Prograam execution) ระบบต้องสามารถนำโปรแกรมแสดงสู่หน่วยความจำหลัก และให้โปรแกรมทำงาน โดยที่การทำงานต้องมีวันสิ้นสุด ไม่ว่าจะเป็นปกติหรือไม่ปกติก็ตาม 2. การรับส่งข้อมูล (I/O operation) โปรแกรมของผู้ใช้อาจต้องการรับส่งข้อมูล โดยผ่านแฟ้มข้อมูลหรืออุปกรณ์รับส่งข้อมูล อุปกรณ์รับส่งข้อมูลบางชนิดต้องการคำสั่งช่วยพิเศษ เช่น เครื่องขับเทป ต้องการการถอยหลังกลับเมื่อเต็ม หรือจอภาพต้องการคำสั่งล้างจอเมื่อเริ่มต้นทำงาน เนื่องจากผู้ใช้ไม่สามารถใช้อุปกรณ์รับส่งข้อมูลได้โดยตรง ดังนั้นระบบจึงต้องจัดหาวิธีการเพื่อเป็นตัวกลางใช้แทน 3. การใช้ระบบแฟ้มข้อมูล (File system manipulation) ระบบแฟ้มข้อมูลเป็นสิ่งจำเป็นอย่างยิ่ง โปรแกรมต้องการอ่านหรือเขียนข้อมูลลงในแฟ้มข้อมูล นอกจากนี้ยังต้องการสร้าง หรือลบแฟ้มข้อมูลด้วยการใช้ชื่อแฟ้ม 4. การติดต่อสื่อสาร (Communication) บางครั้งกระบวนการหนึ่งอาจต้องการส่งข้อมูลให้อีกกระบวนการหนึ่ง โดยที่กระบวนการทั้งสองนั้นอาจอยู่ในคอมพิวเตอร์เครื่องเดียวกัน หรือคนละเครื่องกันแต่ติดต่อผ่านเครือข่ายคอมพิวเตอร์ การติดต่อสื่อสารนี้อาจทำได้โดยใช้หน่วยความจำร่วม (Share memory) หรือการส่งผ่านข้อความ (Message passing) โดยมีระบบปฏิบัติการเป็นตัวกลาง 5. การตรวจจับข้อผิดพลาด (Error detection) ระบบปฏิบัติการจำแนกต้องมีกลไกในการตรวจจับข้อผิดพลาดที่อาจจะเกิดขึ้นได้ เช่น ในหน่วยประมวลผลกลาง (เครื่องเสีย ไฟดับ) ในอุปกรณ์รับส่งข้อมูล (เทปเสีย การติดต่อผ่านเครือข่ายล้มเหลว หรือกระดาษพิมพ์หมด) หรือในโปรแกรมของผู้ใช้ (เช่น คำนวณผิด ระบุตำแหน่งในหน่วยความจำผิด หรือใช้ CPU time มากไป) สำหรับข้อผิดพลาดแต่ละชนิด ระบบปฏิบัติการจะจัดการด้วยวิธีที่เหมาะสมเพื่อแก้ข้อผิดพลาดเหล่านั้น
Additional Operating System เราสามารถเพิ่มประสิทธิภาพได้โดยใช้ทรัพยากรร่วมกัน 1. การจัดสรรทรัพยากร (Resource allocation) เมื่อมีผู้ใช้หลายคนหรืองานหลายงานทำพร้อมกันในช่วงเวลาหนึ่ง ทรัพยากรต่าง ๆ ก็ต้องถูกจัดสรรให้กับคนหรืองานเหล่านั้น ชนิดของทรัพยากรต่าง ๆ จะถูกจัดการด้วยระบบปฏิบัติการ ทรัพยากร 2. การทำบัญชี (Accounting) เราต้องเก็บรวบรวมการทำงานของผู้ใช้ โดยเก็บบันทึกไว้เป็นบัญชีหรือทำเป็นสถิติการใช้ทรัพยากรต่าง ๆ แบบสะสม สถิติการใช้เหล่านี้จะเป็นเครื่องมือที่มีค่าสำหรับนักวิจัยซึ่งหวังจะ Reconfigure ระบบเพื่อปรับปรุงบริการในด้านการคำนวณ 3. การป้องกัน (Protection) การป้องกันเป็นการประกันว่า การเข้าถึงทัพยากรของระบบทั้งหมดต้องถูกควบคุม การรักษาความปอดภัยของระบบจากภายนอกเป็นสิ่งสำคัญ การรักษาความปอดภัยเริ่มด้วย ผู้ใช้แต่ละคนต้องได้รับการรับรองตัวเองต่อระบบ โดยทั่วไปก็จะหมายถึงรหัสผ่าน เพื่ออนุญาตให้ใช้ทรัพยากรต่าง ๆ ซึ่งรวมไปถึงการป้องกันอุปกรณ์รับส่งข้อมูล
3. System Calls System call จัดเตรียมส่วนต่อประสาน (Interface) ระหว่างกระบวนการหนึ่งกับระบบปฏิบัติการ - การเรียกระบบมักเป็นคำสั่งภาษาแอสเซมบลี บางระบบอาจอนุญาตให้เรียกระบบได้โดยตรงจากโปรแกรมระดับสูง ซึ่งกรณีนี้การเรียกระบบจะถูกกำหนดเป็นหน้าที่ หรือ Subroutine Call (การเรียกระบบย่อย) - ภาษาหลาย ๆ ภาษา เช่น C, Bliss, BCPL, PL/360 และ PERL ถูกนำมาใช้แทนแอสเซมบลีสำหรับการเขียนโปรแกรมระบบ
การติดต่อระหว่างโปรแกรมกับทรัพยากรขณะรัน กระทำผ่านระบบปฏิบัติการ ทำได้ 3 วิธี ดังนี้ 1. ส่งผ่านทางรีจีสเตอร์ วิธีนี้ง่ายและเร็วที่สุด 2. ถ้ามีตัวแปรมากกว่าจำนวนรีจีสเตอร์ของคอมพิวเตอร์ อาจส่งผ่านหน่วยความจำหัก โดยส่งข้อมูลเป็นชุดหรือตารางไว้ในหน่วยความจำหลัก และส่งตำแหน่งที่อยู่ไปทางรีจีสเตอร์ 3. ส่งโดยการใช้สแต็ก (Stack) โปรแกรมจะดัน (push) ข้อมูลเข้าในสแต็กของหน่วยความจำ และให้ระบบดึง (Pop) ข้อมูลออกมาเอง
Passing of Parameters As A Table
MS-DOS Execution
UNIX Running Multiple Programs
Communication Models
4. System Programs
โปรแกรมระบบช่วยให้การพัฒนาและการทำงานของโปรแกรมอื่น ๆ ง่ายและสะดวก เราสามารถแบ่งได้หลายประเภท ดังนี้ 1. การใช้งานแฟ้มข้อมูล โปรแกรมเหล่านี้ทำหน้าที่สร้าง ลบ ทำสำเนา เปลี่ยนชื่อ พิมพ์ แสดงรายชื่อ และทำการอื่น ๆ เกี่ยวกับแฟ้มข้อมูลและสารบัญ 2. ข้อมูลสถานะของระบบ โปรแกรมบางตัวเพียงต้องการข้อมูลจากระบบ เช่น วันที่ เวลา เป็นต้น โปรแกรมระบบเหล่านี้จะแสดงข้อมูลที่ต้องการในรูปแบบที่เหมาะสมบนจอภาพ หรือแฟ้มข้อมูลหรืออุปกกรณ์แสดงข้อมูลอื่น 3. การแก้ไขแฟ้มข้อมูล อาจมี ตัวแก้ไขแฟ้มข้อความ หลาย ๆ โปรแกรมในระบบเพื่อให้ผู้ใช้ได้ใช้ 4. ตัวแปลภาษา ตัวแปลภาษาแบบคอมไพเลอร์ ตัวแปลภาษาแอสเซมบลี อาจนับเป็นส่วนหนึ่งของโปรแกรม บางระบบอาจแยกโปรแกรมเหล่านี้ขายต่างหาก 5. ตัวนำโปรแกรมลงหน่วยความจำและทำงาน เมื่อโปรแกรมภาษาต้นฉบับแปลเป็นภาษาเครื่องแล้ว ยังต้องมีตัวเชื่อม ตัวนำโปรแกรมลงหน่วยความจำ และอาจมีตัวช่วยแก้ไขโปรแกรมทั้งในภาษาเครื่องด้วย
5. System Structure
DOS - MS-DOS เป?นโครงสร?างอย?างง?ายที่ถูกออกแบบให?สามารถทํางานได?มากที่สุดในเนื้อที่ ที่น?อยที่สุด จึงไม?มีการแบ?งเป?นโมดูล (Modules) - MS-DOS มีโครงสร?างของระบบแต?ส?วนเชื่อมต?อและหน?าที่ต?างๆ ไม? มีการแบ?งแยกชัดเจน
MS-DOS Layer Structure
Layers Struture of the THE OS
การออกแบบ Layers ในรับระบบปฏิบัติการ มี 6 Leryers ดังนี้ Layers 0 : Use Programs Layers 1 : Buffering for input and output Layers 2 : operator-console device driver Layers 3: memory managerment Layers 4 : CPU scheduling Layers 5 : Hardware
OS/2 Layer Structure
6. เครื่องจักรเสมือน (Virtual Machines) ระบบปฏิบัติการหนึ่งสามารถสร?างสภาพการทํางานแบบหลายกระบวนการ แต?ละกระบวนการทํางานบนหน?วยประมวลผลของตนเอง
จุดมุ?งหมายของการออกแบบระบบ (System Design Goals)
จุดมุ่งหมายผู้ใช้ - ระบบปฏิบัติการควรจะสะดวก ใช้และเรียนรู้ง่าย มีความน่าเชื่อถือ ปลอดภัยและเร็ว จุดมุ่งหมายของระบบ ระบบปฏิบัติการควรจะง่ายในการออกแบบ ยืดหยุ่น มีความน่าเชื่อถือ ไม่มีข้อผิดพลาด และมีประสิทธิภาพ
7. System Implementation ระบบฏิบัติการสมัยแรกใช?ภาษาแอสเซมบลีในการเขียนระบบ ป?จจุบันใช?ภาษาชั้นสูงเขียน ระบบปฏิบัติการแทน
ประโยชน?ของการใช?ภาษาชั้นสูงในการเขียนระบบปฏิบัติการ - สามารถเขียนได?รวดเร็ว - เข?าใจง?าย และง?ายต?อการแก?ไข - มีความกะทัดรัด
ข?อเสีย คือ ทํางานช?ากว?า ต?องใช?หน?วยประมวลผลกลางที่มากกว?าและความต?องการใช?พื้นที่ ใช?งานมากกว?า
8. System Generation ในการติดตั้งระบบ ประกอบด?วยรายละเอียดต?อไปนี้ - ใช?หน?วยประมวลผลอะไร มีส?วนประกอบพิเศษเพิ่มเติมหรือไม?ใช?หน?วยประมวลผล กี่ตัว อะไรบ?าง เป?นต?น - ขนาดของหน?วยความจําหลัก ตัวโปรแกรมระบบจะเป?นตัวบอกขั้นต่ําของหน?วยความจํา ที่ต?องการใช? - อุปกรณ?มีอะไรบ?าง ข?อมูลต?างๆ เกี่ยวกับรายการอุปกรณ? เช?น หมายเลขอุปกรณ?ตําแหน?ง อ?างอิงหมายเลขสัญญาณชนิดและรุ?นตลอดจนคุณสมบัติ พิเศษอื่นๆ ถ?ามี ระบบปฏิบัติการสมัยใหม?จะเป?นตัวจัดการให?เอง เราสามารถติดตั้งระบบปฏิบัติการที่มีลักษณะเป?นระบบขับเคลื่อนด?วยตาราง (Table driven) ทั้งระบบ โปรแกรมทุกแบบจะอยู?ในระบบทั้งหมด การเลื อกแบบเกิดขึ้นในขณะทํางานจริ ง (Execution time) ไม?ได?เกิดขึ้นในขณะแปลโปรแกรม (Compile time) หรือขณะเชื่อมต่อโปรแกรม (Link time) การติดตั้งระบบ การติดตั้งอุปกรณ?ทําโดยการสร?างตารางเก็บข?อมูลต?าง ๆ ของระบบที่ ต?องการ ป?จจุบันบนระบบปฏิบัติการเป?นที่รู้จักกันในชื่อ Plug and Play
Chapter 4
บทที่4 Processes 1. แนวคิดของ Process 2. การจัดเวลาของ Process 3. ระบบของ Process 4. Process สื่อประสาน 5. การติดต่อระหว่าง Process
ระบบปฏิบัติการที่ใช้งานได้หลายโปรแกรม ระบบการทำงานแบบกลุ่มกับการทำงานหลายๆโปรแกรม ระบบการแบ่งเวลาให้แก่ผู้ใช้โปรแกรม หนังสือถูกใช้ในการทำงานและประมวลผล โปรแกรมหนึ่งที่ถูกใช้งาน process ที่ทำงานจะต้องมีการเรียงลำดับกันไป สิ่งที่อยู่ภายใน process - ตัวนับจำนวน - Stack - ประเภทของข้อมูล
สถานะของ Process ในขณะที่ execute process อยู่นั้น process อาจจะมีการเปลี่ยนสถานะก็ได้ การกำหนดสถานะของ process จะเป็นไปตามกิจกรรมที่กำลังดำเนินอยู่ในขณะนั้น แต่ละ process อาจจะมีสถานะดังต่อไปนี้
สถานะเริ่มต้น เป็นสถานะที่เริ่มต้นสร้าง process สถานะพร้อม เป็นสถานะที่พร้อมจะครอบครอง cpu ในทันทีที่ระบบปฏิบัติการมอบหมายงานให้ สถานะนี้จะยังไม่มีการรัน process เพียงหยุดนิ่งเท่านั้น สถานะรัน เป็นสถานะที่ process ที่ครอบครอง cpu อยู่แล้วมีการรัน process นั้นโดยการ execute คำสั่งในโปรแกรมของ process สถานะรอ เป็นสถานะที่ process กำลังรอเหตุการณ์บางอย่างให้เกิดขึ้นก่อน สถานะบล็อก เป็นสถานะที่อาจจะต้องการใช้อุปกรณ์ Input/Output หรือจัดการ interrupt ให้เรียบร้อยก่อนจะกลับไปสถานะรันได้ต่อไป สถานะสิ้นสุด เป็นสถานะที่หยุดนิ่งอันเนื่องมาจากการที่ process ถูก execute หมดทุกคำสั่งในโปรแกรมแล้ว
ไดอะแกรมของสถานะของ process
บล็อกควบคุม Process สถานะของ process แสดงสถานะของ process ที่เป็นอยู่ในปัจจุบัน ตัวนับจำนวน เป็นตัวนับที่แสดงที่อยู่ของคำสั่งต่อไปที่จะถูก execute สำหรับ process นี้ รีจิสเตอร์ ทำหน้าที่เก็บข้อมูลสถานะระบบเมื่อมี interrupt เกิดขี้น เพื่อทำให้ process ดำเนินต่อไปได้ เมื่อกลับมาจาก interrupt รีจิสเตอร์นี้จะมีค่า และประเภทที่เปลี่ยนแปลงได้ ขึ้นอยู่กับสถาปัตยกรรมของคอมพิวเตอร์ ข้อมูลการจัดเวลาของ cpu เป็นข้อมูลที่ประกอบด้วยลำดับความสำคัญของ process ที่ถูกกำหนดโดยระบบปฏิบัติการเมื่อ process ถูกสร้างขี้นมา สามารถเปลี่ยนค่าได้ process ใดที่มีความสำคัญมากระบบปฏิบัติการจะให้สิทธิมากกว่า process อื่น ข้อมูลการจัดการหน่วยความจำ เป็นข้อมูลเกี่ยวกับหน่วยความจำที่ระบบปฏิบัติการกำหนดไว้ ข้อมูล account เป็นข้อมูลที่อาจจะประกอบด้วยจำนวน cpu เวลาที่กำหนด หมายเลข account หมายเลขงานหรือ process และอื่นๆ ข้อมูลสถานะ Input/Output เป็นข้อมูลที่แสดงรายการของ Input/Output device ที่ process นี้ใช้ และอื่นๆ
รูปแสดงบล็อกควบคุม process
การจัดเวลา Process Job queue ทำการตั้งค่า processes ทั้งหมดในระบบ Ready queue ทำการตั้งค่า processes ทั้งหมดใน หน่วยความจำหลัก ที่พร้อมและรอคอยที่จะทำการ execute Device queue ทำการตั้งค่า processes เพื่อรอคอยอุปกรณ์ Input/Output Process จะทำการเคลื่อนไประหว่าง queue ที่ต่างกัน
การจัดการการทำงาน Long-term scheduler จะทำการเลือก processes แล้วนำไปยัง ready queue Short-term scheduler จะทำการเลือก process แล้วจะ execute และจัดสรรให้แก่ cpu ต่อไป Short-term scheduler จะถูกเรียกบ่อยมาก Long-term scheduler จะถูกเรียกไม่บ่อยมากนัก Long-term scheduler จะทำการควบคุม degree ของการทำงานหลายๆโปรแกรมพร้อมกัน
Context Switch เมื่อ cpu รัน process เสร็จเรียบร้อยแล้ว จะต้องมีการ switch ไปยัง process ในคิวต่อไป ในระหว่างที่ switch นี้ไม่ได้มีการทำงานเลย เวลาที่ใช้จะเปลี่ยนไปตามเครื่องซื่งขึ้นอยู่กับความเร็วของหน่วยความจำ จำนวนรีจิสเตอร์ที่ถูก copy และคำสั่งพิเศษที่มีอยู่ในระบบ โดยทั่วไปความเร็วจะอยู่ที่ 1 100 ไมโครวินาที จะเห็นว่า context switch จะขึ้นอยู่กับการสนับสนุนของฮาร์ดแวร์
การสร้าง Process Process แม่ ทำการสร้าง processes ลูก ซึ่งในการสร้าง processes นั้น จะมีการร่างต้นไม้ของ processes การแบ่งทรัพยากร - process แม่ และ processes ลูกจะทำการแบ่งทรัพยากรทั้งหมด - processes ลูกจะทำการแบ่ง process ย่อยให้แก่ ทรัพยากรของ process แม่ - process แม่ และ processes ลูกไม่มีการแบ่งทรัพยากร Execution - process แม่ และ processes ลูก จะทำการ execute พร้อมกัน - process แม่ จะทำการรอ จนกระทั่ง processes ลูกสิ้นสุด พื้นที่ว่างของ address - process ลูกจะทำการลอกแบบจาก process แม่ - process ลูกจะมีหนึ่งโปรแกรมที่โหลดไปยังตัวมันเอง
การสิ้นสุดของ process Process จะสิ้นสุดลงเมื่อสิ้นสุดการ execute คำสั่งสุดท้าย และแจ้งให้ระบบปฏิบัติการลบมันออกไปโดยใช้ system call ชื่อ exit ในตอนนี้ระบบอาจจะคืนข้อมูลหรือผลลัพธ์ไปยัง process แม่ ทรัพยากรทั้งหมดของ process รวมทั้งหน่วยความจำทางกายภาพและหน่วยความจำเสมือน การเปิดไฟล์ บัฟเฟอร์ของอุปกรณ์ Input/Output จะถูกกำหนดใหม่โดยระบบปฏิบัติการ
Processes สื่อประสาน Process ที่ execute ในระบบปฏิบัติการนั้นอาจจะเป็น process อิสระ หรือ process สื่อประสานก็ได้ จะเป็น process อิสระถ้า process นั้นไม่มีผลกระทบหรือได้รับผลกระทบจาก process อื่น อาจกล่าว ได้ว่า process อิสระจะไม่มีการแชร์ข้อมูล กับ process อื่น ในทางตรงกันข้าม process จะเป็น process สื่อประสานถ้า process นั้นมีผลกระทบหรือได้รับผลกระทบจาก process อื่นที่ execute อยู่ในระบบ อาจกล่าวได้เช่นกันว่า process สื่อประสานจะมีการแชร์ข้อมูลกับ process อื่นในระบบ มีเหตุผลที่น่าสนใจที่ทำให้เกิดการประสานระหว่าง process ดังนี้
การแชร์ข้อมูลจ่าวสาร เนื่องจากผู้ใช้อาจจะมีความต้องการข้อมูลเดียวกันในเวลานั้น ระบบปฏิบัติการจะต้องเตรียมการเพื่อตอบสนองและยอมให้ผู้ใช้สามารถใช้ข้อมูลนั้นได้พร้อมกัน การประสาน process จึงเป็นเรื่องจำเป็น การเพิ่มความเร็วในการคำนวณ ด้วยหลักการง่ายๆที่ว่า ถ้าเราต้องการรันโปรแกรมพิเศษให้เร็วขึ้น เราจะต้องแบ่งโปรแกรมนั้นออกเป็นส่วนย่อยๆ แล้ว execute แต่ละส่วนพร้อมกับงานอื่น การที่เราจะเพิ่มความเร็วให้ระบบได้นั้น ระบบจะต้องเป็นแบบ Multiprocessing ความสะดวก สิ่งนี้เกิดจากความต้องการของผู้ใช้แต่ล่ะคนที่ต้องการทำงานหลายอย่างในเวลาเดียวกัน
Chapter 5
บทที่5 การจัดเวลาของ CPU 1. หลักความต้องการพื้นฐาน 2. ข้อพิจารณาในการจัดเวลา 3. Algorithm ของการจัดเวลา 4. การจัดเวลาของ Multiple-Processor 5. การจัดการเวลาแบบ Real-Time 6. การคัดเลือก Algorithm สำหรับการจัดเวลา CPU
หลักความต้องการพื้นฐาน เพื่อให้มีการใช้งาน cpu ได้อย่างเต็มที่ในการรันโปรแกรมหลายๆโปรแกรม การทำงานของ process ประกอบด้วยหนึ่งรอบของการทำงานของ cpu และการรอคอยอุปกรณ์ I/O เวลาในการใช้งานของ cpu
ช่วงเวลา Input/Output และช่วงเวลาใช้ CPU ความสำคัญของการจัดเวลาของ cpu นั้น ขึ้นอยู่กับคุณลักษณะของ process โดยทั่วๆไป การ execute process จะประกอบด้วยเวลาที่ใช้ cpu และเวลาที่ต้องคอยอุปกรณ์ I/O ในขณะที่มีการ execute process จะมีการสลับการทำงานระหว่าง 2 ช่วงเวลานี้เท่านั้น และจะเกิดไม่พร้อมกัน การ execute มักจะเริ่มจากการใช้ cpu แล้วก็จะตามด้วยการคอย Input/Output เมื่อจบการรอคอย ก็จะตามมาด้วยเวลาของ cpu สลับกันไปเรื่อยๆ จนกว่าจะจบการ execute ซึ่งการสิ้นสุดการ execute นี้มักจะเป็นการใช้เวลา cpu เพื่อทำการจบหรือสิ้นสุด process มากกว่าการรอคอย Input/Output
ตัวจัดการเวลา CPU เมื่อใดก็ตามที่ cpu ว่าง ระบบปฏิบัติการจะต้องเข้ามาเลือก process ตัวใดตัวหนึ่งที่คอยอยู่ในคิวเข้ามาใช้งาน cpu การเลือก process เพื่อเข้ามาใช้ cpu นี้ จะถูกจัดการด้วยส่วนที่เรียกว่า ตัวจัดการเวลาช่วงสั้น หรือ ตัวจัดการเวลา cpu ตัวจัดการเวลานี้จะเลือก process ที่อยู่ในหน่วยความจำที่พร้อมในการ execute ที่สุด เพื่อให้ครอบครองเวลา cpu และทรัพยากรที่เกี่ยวข้องกับ process นั้น
การให้สิทธิการจัดเวลา การตัดสินใจของ cpu ในการเลือก execute process ใดๆ ขึ้นอยู่กับสถานการณ์ดังนี้ 1. เมื่อมีการเปลี่ยนสถาะของ process จากสถานะรัน ไปเป็นสถานะคอย 2. เมื่อมีการเปลี่ยนสถานะของ process จากสถานะรัน เป็นสถานะพร้อม 3. เมื่อมีการเปลี่ยนสถานะของ process จากสถานะคอย เป็นสถานะพร้อม 4. เมื่อ process เสร็จสิ้นไปแล้ว
Despatcher คอมโพเนนต์ที่สำคัญอีกตัวหนึ่งที่เกี่ยวข้องกับฟังก์ชันในการจัดเวลา cpu ก็คือสิ่งที่เรียกว่า Dispatcher ซึ่งเป็นโมดูลที่ทำหน้าที่ควบคุมการครอบครองเวลา cpu ของ process ฟังก์ชันนี้ประกอบด้วย การย้าย Context การย้ายไป user mode กระโดดไปยังตำแหน่งที่เหมาะสมของโปรแกรม เพื่อที่จะเริ่มรันโปรแกรมนั้นใหม่อีกครั้ง
Dispatcher นี้ควรมีการทำงานที่เร็วที่สุดเท่าที่จะทำได้ เพราะว่ามันจะต้องทำงานทุกครั้งที่มีการย้าย process ซึ่งเวลาที่ถูกใช้ไปกับการทำเช่นนี้เราเรียกว่า Dispatch Latency
ข้อพิจารณาในการจัดการเวลา CPU Utilization คือคำนึงถึงการใช้ประโยชน์จาก cpu อย่างสูงสุด Throughput ถ้าหากว่า cpu ทำงานตลอดเวลา ก็หมายความว่างานก็กำลังถูกทำงานให้เสร็จ ซึ่งเราสามารถที่จะวัดออกมาได้เป็นจำนวนงานที่เสร็จต่อหน่วยเวลา Turnaround Time คือช่วงเวลาทั้งหมดที่ใช้ในการทำงานใดงานหนึ่งตั้งแต่เริ่มต้นเข้าไปในระบบ จนงานถูกทำจนเสร็จเรียบร้อย Waiting Time คือช่วงเวลาที่งานใดงานหนึ่งต้องรอการทำงานของตัวจัดเวลา โดยไม่รวมเวลาของการใช้ cpu และเวลาของการติดต่อ Input/Output ส่วนใหญ่คือเวลาที่งานต้องคอยอยู่ในคิวนั่นเอง Response Time คือเวลาที่วัดระหว่างเวลาที่มีการร้องขอการกระทำใดๆ ต่อระบบแล้วมีการตอบรับกลับออกมา
Algorithm ของการจัดเวลา หน้าที่ของตัวจัดคิวคือ คัดเลือกโปรเซสซึ่งรออยู่ในสถานะพร้อมที่เหมาะสมที่สุดให้เข้าไปอยู่ในสถานะรัน (ได้ครอบครองซีพียู) โดยแท้จริงแล้วการส่งโปรเซสที่ถูกเลือกแล้วให้เข้าไปอยู่ในสถานะรัน เป็นหน้าที่ของโปรเซสของ OS ที่ชื่อตัวส่ง (dispatcher) ใน แง่การทำงานแล้วตัวจัดคิวจะเป็นผู้คัดเลือกโปรเซสและเรียกให้ตัวส่งส่งโปรเซ สที่ถูกเลือกแล้วเข้าไปในสถานะรันเป็นความรับผิดชอบของตัวจัดคิว
1. การจัดเวลาแบบมาก่อนได้ก่อน (FCFS : First-come First-served Scheduling) การจัดคิวแบบ FCFS (first-come-first-served) วิธีการคัดเลือกแบบ FCFS นี้ เป็นวิธีที่ง่ายที่สุด คือ โปรเซสไหนเข้ามารอในคิวก่อนจะได้ครอบครองซีพียูก่อน ตามลำดับเวลาของการเข้ามาอยู่ในคิว คือ "มาก่อนได้ก่อน" โปรเซสที่ได้ครอบครองซีพียูจะทำงานไปจนเสร็จ ไม่มีระยะเวลาควอนตัมซึ่งจำกัดเวลาการครอบครองซีพียู แต่ถ้าโปรเซสมีการเรียกใช้งานอุปกรณ์อินพุต-เอาต์พุต หรือรอเหตุการณ์บางอย่าง โปรเซสนั้นต้องปลดปล่อยซีพียู และออกจากสถานะรันไปอยู่ในสถานะติดขัด เมื่อใดที่งานเสร็จสิ้นลงหรือเกิดเหตุการณ์ที่กำลังรออยู่ โปรเซสนั้นจึงค่อยกลับเข้าไปอยู่ต่อท้ายคิวของสถานะพร้อมใหม่อีกครั้ง เราอาจแสดงการเปลี่ยนสถานะของโปรเซสโดยใช้การจัดคิวแบบ FCFS ซึ่ง จะเห็นว่าแตกต่างกับรูปแสดงการเปลี่ยนสถานะของโปรเซสที่เคยกล่าวมาคือ ไม่มีการเปลี่ยนสถานะของโปรเซสจากสถานะรันมายังสถานะพร้อมโดยตรง
2. การจัดเวลาแบบงานสั้นทำก่อน (SJF : Short-Job-First Scheduling) การจัดคิวแบบ SJN (shortest job next) การ คัดเลือกโปรเซสด้วยวิธีนี้ จะคัดเลือกเอาโปรเซสที่ต้องการเวลาในการทำงานน้อยที่สุด ทำให้โปรเซสที่ต้องการเวลาในการทำงานน้อยจบออกไปได้เร็วขึ้น จำนวนโปรเซสในระบบที่รออยู่ในคิวมีก็จะมีจำนวนลดลง และทำให้เวลาโดยเฉลี่ยในการทำงาน 1 งานเสร็จหรือเวลาครบงาน (turnaround time) น้อยลงแต่การจัดคิวแบบนี้เป็นผลเสียต่อโปรเซสที่ต้องการเวลาในการทำงานนาน
3. การจัดเวลาตามลำดับความสำคัญ (Priority Scheduling) การจัดคิวแบบลำดับความสำคัญ (priority queue) คิว แบบลำดับความสำคัญมีลักษณะแตกต่างกับคิวธรรมดา ภายในคิวจะมีการจัดเรียงลำดับของโปรเซสต่าง ๆ ตามลำดับความสำคัญของโปรเซสนั้น โปรเซสที่อยู่ต้นคิวจะมีลำดับความสำคัญมากที่สุด และลดลงเรื่อย ๆ โปรเซสที่อยู่ท้ายคิวคือโปรเซสที่มีลำดับความสำคัญต่ำสุด การคัดเลือกโปรเซสจะเอาโปรเซสที่อยู่ต้นคิว (มีลำดับความสำคัญสูงสุด) เข้าไปครอบครองซีพียูก่อน ดังนั้นถึงแม้ว่าโปรเซสที่เข้าคิวทีหลังแต่มีลำดับความสำคัญสูงกว่าก็อาจได้ เข้าไปครอบครองซีพียูก่อน โปรเซส E เข้าคิวเป็นโปรเซสหลังสุด แต่จะได้ครอบครองซีพียูก่อนโปรเซส C และ D
4. การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling) การจัดคิวแบบ RR (round-robin) การจัดคิวแบบ RR อาจเรียกว่าเป็นการจัดคิวแบบมีการวนรอบ ลักษณะการคัดเลือก โปรเซสในคิวจะเป็นแบบ FCFS คือ "มาก่อนได้ก่อน" แต่ต่างกันนิดหน่อยตรงที่การครอบครองซีพียูของโปรเซสในสถานะรันจะถูกจำกัด เวลาไว้ด้วยระยะเวลาควอนตัม ทำให้โปรเซสที่ต้องการเวลาในการทำงานนานจะต้องเปลี่ยนสถานะหมุนระหว่างสถานะ พร้อมและสถานะรัน การจัดคิวแบบ RR สามารถ แก้ปัญหาการคอยนานของโปรเซสที่ต้องการเวลาทำงานน้อย ๆ ได้ลองกลับไปพิจารณาเหตุการณ์สมมติซึ่งกล่าวไว้ในหัวข้อที่แล้ว ถ้าระบบกำหนดเวลาควอนตัมเป็น 1 วินาที โปรเซส A ต้องมีการวนรอบเปลี่ยนสถานะระหว่างสถานะรันและสถานะพร้อม 15 ครั้ง โปรเซส B 1 ครั้ว โปรเซส C 10 ครั้ง เมื่อโปรเซส A เข้าไปอยู่ในสถานะรันครั้งแรกและกลับออกมา โปรเซส B จะได้ครอบครองซีพียูได้และ ทำงานเสร็จโปรเซส B จบและออกจากระบบไปเลยเหลือเพียง 2 โปรเซสที่อยู่ในคิวของสถานะพร้อม โปรเซสถัดไปที่จัดได้ครอบครองซีพียูคือ C โปรเซส C และ A จะสลับกันครอบครองซีพียูกันโปรเซสละ 1 วินาที จนกระทั่งโปรเซส C จบ เหลือโปรเซส A เพียงโปรเซสเดียว เป็นแผนภาพแสดงการสลับกันทำงานของโปรเซสทั้ง 3 และเป็นผลที่เกิดขึ้นจากการจัดคิวแบบ RR
5. การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling) เพื่อ ให้การจัดคิวเป็นไปอย่างมีประสิทธิภาพ จึงมีการนำหลาย ๆ เทคนิคมาประยุกต์เข้าด้วยกัน เป็นการจัดคำแบบวนรอบ ที่คำนึงถึงความสำคัญของงาน ทำให้งานที่มีความสำคัญเหมือนกันอยู่ในคิวเดียวกัน และให้งานสำคัญน้อย ๆ อยู่ในคิวที่สำคัญน้อยเช่นกัน
การจัดเวลาของ Multiple-Processor การทำงานในลักษณะที่มี cpu หลายตัวต่างก็มีระบบการจัดเวลาของตัวเอง จะต้องมีการออกแบบอย่างระมัดระวังในเรื่องของการที่ process แต่ละ process อาจจะต้องการใช้ข้อมูลในฐานข้อมูลในเวลาเดียวกัน รวมทั้งต้องระวังไม่ให้ cpu ว่างงานพร้อมกัน ในระบบคอมพิวเตอร์บางระบบที่มีการพัฒนาเพื่อให้ได้ประสิทธิภาพสูงสุด ได้มีการใช้ cpu แยกต่างหากระหว่างงานภายในของระบบ และกับงานที่เป็นของผู้ใช้ซึ่งการทำงานแยกกันของ cpu แบบนี้ ทำให้การออกแบบระบบปฏิบัติการมีความซับซ้อนน้อยลงมาก เนื่องจากมี cpu เพียงตัวเดียวที่จะเข้าไปใช้ข้อมูลของระบบปฏิบัติการ เพราะว่า cpu ตัวอื่นๆ ไม่ว่าจะกี่ตัวก็ตาม จะเข้าถึงได้เฉพาะข้อมูลของผู้ใช้ภายนอกเท่านั้น
การจัดเวลาแบบ Real-Time Hard real-time คือระบบที่สามารถทำงานใดงานหนึ่งให้เสร็จตามเวลาที่กำหนดได้ ซึ่งงานที่จะรับเข้ามาแต่ละงานนั้นจะมีความต้องการของเวลาที่ต้องการให้เสร็จมาด้วย ดังนั้นตัวจัดเวลาจะต้องเป็นตัวตัดสินใจว่าจะรับงานเข้ามาทำหรือไม่ Soft real-time คือระบบที่แบ่งเวลาธรรมดาที่มีการให้ระดับความสำคัญแก่งานบางประเภท หรืองานที่ถูกเลือกไว้ล่วงหน้าว่าเป็นงานเร่งด่วน ซึ่งอาจทำให้เกิดปัญหาของการทำงานในระดับต่ำๆ อาจไม่ได้รับเวลาของ cpu เลย
การคัดเลือก Algorithm สำหรับการจัดเวลา cpu
Deterministic Modeling วิธีนี้เป็นวิธีการคัดเลือกที่เรียกว่า analytic evaluation ซึ่งจะนำเอา Algorithm ชนิดต่างๆ และลักษณะของงานมาสร้างสูตร เพื่อใช้ในการคำนวณหาตัวเลขของประสิทธิภาพที่สามารถวัดและเปรียบเทียบได้
Queuing Models ลักษณะของงานที่เข้ามาในระบบคอมพิวเตอร์นั้นมักจะมีลักษณะที่ไม่แน่นอน ในแต่ละวันที่มีการใช้ระบบคอมพิวเตอร์นั้น งานต่างๆที่เข้ามาอาจมีลักษณะที่ไม่ซ้ำกันเลย อย่างไรก็ตามมีสิ่งหนึ่งที่เราอาจจะสามารถทำนายหรือกำหนดได้ ก็คือ การกระจายของเวลาในการใช้ cpu และของการใช้ Input/Output ซึ่งเราสามารถที่จะกำหนดแบบคร่าวๆได้ ซึ่งก็เช่นเดียวกันกับเวลาของการมาถึงระบบของงานต่างๆที่เราก็สามารถกำหนดไว้แบบการกระจายเช่นกัน
Simulations วิธีการจำลองระบบ การที่เราจะเลือกวิธีการ หรือเลือก Algorithm ที่ถูกต้องต่อระบบใดๆ อย่างเป็นจริงเป็นจังแล้ว เราสามารถใช้วิธีการของการจำลองระบบ ซึ่งวิธีการนี้จะสามารถคำนวณตัวเลขต่างๆ ออกมาได้อย่างเที่ยงตรงมากขึ้น การทำการจำลองระบบในที่นี้จะเกี่ยวข้องกับการใช้โปรแกรมคอมพิวเตอร์ ซึ่งจะต้องมีการเขียนโปรแกรมเพื่อใช้เป็นตัวแทนหรือหุ่นจำลองของระบบต่างๆ ในคอมพิวเตอร์ นอกจากนี้ยังต้องมีการเขียนโปรแกรมเพื่อเป็นตัวแทนของสิ่งแวดล้อมที่เกี่ยวข้องกับระบบคอมพิวเตอร์นั้นๆอีกด้วย
Implementation วิธีการสร้างขึ้นมาจริงๆ อย่างไรก็ตามการสร้างแบบจำลอง ก็ยังคงเป็นการจำลองแบบที่ไม่มีทางจะเหมือนจริงได้ สิ่งที่ดีกว่าก็คือ การสร้าง Algorithm ชนิดต่างๆ เพื่อทดลองใช้กับโปรแกรมขัดการระบบจริงๆในระบบคอมพิวเตอร์ที่ใช้งานในสิ่งแวดล้อมจริง
Chapter 6
บทที่6 วงจรอับ 1. รูปแบบของระบบ 2. เงื่อนไขของการเกิดวงจรอับ 3. การจัดการปัญหาของวงจรอับ 4. การป้องกันการเกิดวงจรอับ 5. การหลีกเลี่ยงการเกิดวงจรอับ 6. การตรวจจับวงจรอับ 7. การกู้ข้อมูลจากกการเกิดวงจรอับ 8. การแก้ไขปัญหาวงจรอับแบบผสมผสาน
ปัญหาของ Deadlock เมื่อมี process ในกลุ่มต้องการที่จะครอบครองทรัพยากรหนึ่ง และรอคอยที่จะเข้าครอบครองทรัพยากรอีกอันหนึ่งภายในกลุ่ม หรือก็คือ process มีการแย่งชิงทรัพยากรกันนั่นเอง
ตัวอย่างการข้ามสะพานของรถยนต์
- ข้ามได้ทีละ 1 ทางเท่านั้น - สะพานก็คือทรัพยากร - ถ้ามี deadlock เกิดขึ้น สามารถแก้ไขปัญหาได้ ถ้ารถยนต์ 1 คัน ถอยหลัง (เมื่อมีการครอบครอง ทรัพยากร ก็มีการคืนค่าทรัพยากรให้แก่ระบบ) - ถ้ามีรถยนต์หลายคันอาจจะทำให้เกิดรถติด และมีการเกิด deadlock - มีการเกิดภาวะแช่แข็ง
รูปแบบของระบบ 1. ทรัพยากรจะแทนด้วย R1, R2, ..., Rm ทรัพยากร ได้แก่ จำนวนรอบของ cpu , พื้นที่ว่างของ memory, อุปกรณ์ input/output 2. แต่ละทรัพยากรจะแทนด้วย Ri โดยจะมี Wi เป็น instances 3. แต่ละ process สามารถใช้ทรัพยากรหนึ่งทรัพยากรได้ ดังนี้ - ร้องขอ - ใช้ - คืนค่า
เงื่อนไขของการเกิด Deadlock
1. ทรัพยากรหนึ่งทรัพยากร process ไม่สามารถเข้ามาใช้งานร่วมกันได้ 2. มีการถือครอง และรอคอย ถ้า process กำลังถือครองทรัพยากรหนึ่งอยู่ ในขณะเดียวกันก็สามารถทำการร้องขอทรัพยากรเพิ่มเติมได้ 3. การทำงานในระบบไม่มีการแทรกกลางคัน 4. มีการเกิดวงจรรอคอย ถ้าเกิดวงจรลูกโซ่ของ process มากกว่า 2 ตัวขึ้นไป ที่ต่างรอคอยทรัพยากรที่ถือครองโดย process ที่อยู่ในวงจรลูกโซ่นั้น
แผนการจัดสรรทรัพยากร
- V เป็นการแยกกลุ่มของ 2 กลุ่ม ได้แก่ 1. P = {P1, P2, ..., Pn} โดยที่ภายในเซ็ตนั้น เป็น processes ทั้งหมดในระบบ 2. R = {R1, R2, ..., Rm} โดยที่ภายในเซ็นนั้น เป็นทรัพยากรทั้งหมดในระบบ - การร้องขอแทนด้วยสัญลักษณ์ P1 - - -> Rj - การถือครองแทนด้วยสัญลักษณ์ Rj ------> Pi
กฏเกณฑ์พื้นฐาน - ถ้าไม่มีวงจรในกราฟ จะไม่มีการเกิด deadlock - ถ้ามีวงจรในกราฟ - ถ้ามี 1 instance ในทรัพยากร จะเกิด deadlock - ถ้ามีหลาย instances ในทรัพยากร อาจจะเกิด deadlock
การจัดการปัญหาของ deadlock มี 3 วิธี ดังนี้ 1. กำหนดกฏเกณฑ์บางอย่างขณะใช้ทรัพยากร เพื่อให้แน่ใจว่าจะไม่เกิด deadlock 2. ปล่อยให้เกิด deadlock แล้วทำการแก้ไขทีหลัง 3. มองข้ามปัญหาทั้งหมด ว่าไม่เคยมีการเกิด deadlock การป้องกันการเกิด deadlock 1. การให้ใช้ทรัพยากรร่วมกันได้ - ระบบปฏิบัติการจะต้องจัดการให้ process ในระบบสามารถใช้งานทรัพยากรเหล่านั้นร่วมกันได้ 2. การป้องกันการถือครองและรอคอย - ให้ process ร้องขอทรัพยากรทั้งหมดก่อนเริ่มทำงาน - ยินยอมให้ process ร้องขอทรัพยากรได้ก็ต่อเมื่อ process นั้นมิได้ถือครองทรัพยากรใดไว้เลย 3. ยอมให้มีการแทรกกลางคัน - ถ้า process ถือครองทรัพยากรอยู่แล้ว ระบบจะต้องตรวจสอบเพื่อป้องกันไม่ให้ร้องขอทรัพยากรอื่นได้อีก - ถ้าทรัพยากรถูกร้องขอด้วย process อื่น ระบบจะทำการให้แซง เมื่อมีการแซงไปแล้วให้ทำการคืนทรัพยากรให้ process ตัวเดิม เพื่อที่จะได้ทำงานต่อ - ให้ทำการหยุด process ที่กำลังทำงานอยู่ 4. การป้องกันการเกิดวงจรรอคอย - กำหนดลำดับความสำคัญของทรัพยากรทั้งหมด
การหลีกเลี่ยงไม่ให้เกิด deadlock การที่จะหลีกเลี่ยงไม่ให้เกิด deaklock นั้น ระบบจะต้องมีความสามารถตัดสินใจว่าการร้องขอทรัพยากรใดๆนั้นจะทำให้ระบบปลอดภัยหรือไม่ แล้วจะอนุญาตให้ process นั้นได้ก็ต่อเมื่อระบบมีความปลอดภัย
สถานะปลอดภัยจาก deadlock 1. เมื่อ process หนึ่ง มีการร้องขอทรัพยากร ระบบจะต้องทำการตัดสินใจแบ่งสรรอย่างทันทีทันใดออกจากระบบภายในสถานะปลอดภัย 2. ระบบจะอยู่ในสถานะปลอดภัยถ้ามีการจัดลำดับความปลอดภัยของ processes ทั้งหมด 3. การจัดลำดับความปลอดภัยของแต่ละ process สามารถร้องขอทรัพยากร โดยการใช้ทรัพยากรที่มีอยู่ ทีมีการือครองโดย process ทั้งหมด
กฏเกณฑ์พื้นฐาน - ถ้าระบบอยู่ในสถานะปลอดภัย จะมีไม่ deadlock - ถ้าระบบอยู่ในสถานะไม่ปลอดภัย มีความเป็นไปได้ที่จะเกิด deadlock - การหลีกเลี่ยง ก็ไม่ได้หมายความว่าทุกสถานะที่ไม่ปลอดภัย จะเดิก deadlock เสมอไป
วิธีการทำงานแบบนายธนาคาร - มีทรัพยากรมากกว่า1 - แต่ละ process จะมีการอ้างสิทธิความสำคัญในการใช้งานอย่างเต็มที่ - เมื่อ process ร้องขอทรัพยากรหนึ่ง จะต้องมีการรอคอย - เมื่อ processes ทั้งหมด ได้รับ ทรัพยากรทั้งหมดแล้ว จะต้องทำการคืนค่าทั้งหมดภายในขอบเขตเวลาที่กำหนด
การตรวจจับ deadlock - ยินยอมให้ระบบเข้าไปยังพื้นที่ของ deadlock - ขั้นตอนวิธีการตรวจจับ - การวางแผนการกู้กลับคืน
การกู้กลับคืนค่า จากการยกเลิก process ในวงจร deadlock 1. ยกเลิก processes ทั้งหมดในระบบ 2. ยกเลิก process ในวงจร deadlock ทีละ process จนกระทั่งระบบเข้าสู่สภาวะปกติ 3. การยกเลิก processes ต้องพิจารณาปัจจัยดังต่อไปนี้ - ลำดับความสำคัญของ processes - ดูว่า process นั้นใช้เวลามานานเท่าไหร่แล้ว และจะใช้เวลานานเท่าไหร่ถึงจะเสร็จ - process นั้น ถือครองทรัพยากรประเภทใด - process นั้น ถือครองทรัพยากรเป็นจำนวนเท่าไหร่ - มีจะนวนกี่ processes ที่ต้องทำการยกเลิก - process นั้นเป็นแบบโต้ตอนทันที หรือแบบกลุ่ม
การแทรกกลางคัน 1. เลือกจาก process ที่ถูกแทรกกลางคัน และเสียค่าใช้จ่ายน้อยที่สุด 2. ให้ process ถอยกลับไปยัง สภาวะที่ปลอดภัย หรือกลับไม่ยังจุดเริ่มต้น 3. การสภาวะแช่แข็ง จะมีการรับประกันได้อย่างไรว่าจะไม่เกิดการแช่แข็งในระบบ เช่น process หนึ่งถูกแทรกกลางคัน ระหว่าง process นั้นกำลังใช้งานอยู่เสมอๆ
การแก้ไขปัญหา Deadlock แบบผสมผสาน 1. การแก้ไข deadlock ต้องใช้อย่างน้อย 3 วิธี - ป้องกัน - หลีกเลี่ยง - ตรวจจับ และกู้คืน การจะทำอย่างไรให้เกิดประโยชน์สูงสุดของแต่ละทรัพยากรในระบบ 2. การแบ่งทรัพยากรทั้งหมด ให้เป็นลำดับชั้นอย่างเป็นระเบียบ 3. ใช้วิธีการที่ทำให้เกิดประโยชน์สูงสุดในการแก้ไขปัญหา Deadlock ในแต่ละลักษณะ
|