วันอังคารที่ 20 ธันวาคม พ.ศ. 2559

บทที่ 2 โครงสร้างของระบบคอมพิวเตอร์และโครงสร้างของระบบปฏิบัติการ


บทที่ 2 โครงสร้างของระบบคอมพิวเตอร์และโครงสร้างของระบบปฏิบัติการ

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


  เมื่อเปิดเครื่องหรือรีบูต (reboot) จะมีโปรแกรมเล็กๆ ถูกโหลดเข้าหน่วยความจำหลักเพื่อ
ใช้ในการเริ่มระบบ เรียกว่า โปรแกรมปลุกเครื่อง หรือโปรแกรมบูต (bootstrap program)
เมื่อ os ถูกบรรจุ (load) เข้ามาไว้ในหน่วยความจำแล้วจึงเริ่มกระบวนการเริ่มต้น (init process)
 หรือ UPP (Universal Progenitor Process) และพร้อมที่ทำงานโดยการรอคอยเหตุการณ์บางอย่าง
เหตุการณ์จะเกิดขึ้นโดยอาศัยสัญญาณการขัดจังหวะ (interrupt) ซึ่งถูกส่งมาโดยฮาร์ดแวร์หรือซอฟต์แวร์

หน้าที่ของการขัดจังหวะ Common Functions of Interrupts
ฮาร์ดแวร์อินเทอร์รัพท์จะถูกส่งไปยังซีพียูผ่านทางบัสระบบ
ซอฟต์แวร์อินเทอร์รัพท์จะอาศัยคำสั่งปฏิบัติการพิเศษที่เรียกว่า การเรียกระบบ (system call หรือ monitor call)การขัดจังหวะแต่ละชนิดจะได้รับการตอบสนองด้วย service routine ที่เหมาะสมกับการขัดจังหวะนั้นๆเมื่อซีพียูถูกขัดจังหวะมันจะหยุดทำงานชั่วคราวเพื่อให้อุปกรณ์ทำการถ่ายข้อมูลจนแล้วเสร็จ
เพื่อป้องการสูญเสียการขัดจังหวะ (lost interrupt) จากนั้น ซีพียูจึงจะกลับไปทำงานที่ค้างอยู่ต่อไป
OS จะรักษาสถานะของซีพียูปัจจุบันไว้โดยเก็บเรจิสเตอร์และตัวนับโปรแกรมขณะนั้น (program counter)

การขัดจังหวะจะส่งมอบการควบคุมไปยัง รูทีนบริการขัดจังหวะ (interrupt service routine)
 ผ่านทาง อินเทอร์รัพต์เว็กเตอร์ (interrupt vector) ซึ่งบรรจุที่อยู่ของรูทีนบริการทั้งหมดไว้
สถาปัตยกรรมการขัดจังหวะจะต้องจัดเก็บที่อยู่ของคำสั่งที่ถูกขัดจังหวะ
แทร็บ (Trap) คือการขัดจังหวะโดยซอฟต์แวร์ที่อาจเกิดโดยข้อผิดพลาด หรือผู้ใช้ร้องขอ
ในฐานะนี้ OS จึงเป็น interrupt driven.


I/O Structure
หลังจาก i/o เริ่มต้น, การควบคุมจะถูกส่งกลับไปยังโปรแกรมผู้ใช้เมื่อปฏิบัติการของ i/o
สิ้นเสร็จลง (I/O completion) เท่านั้น
รอคำสั่งว่างของซีพียู (CPU idle) จนกว่าจะถึงการขัดจังหวะถัดไป
รอลูป (Wait loop) เพื่อใช้หน่วยความจำ
อย่างน้อยการร้องขอ i/o หนึ่งครั้งเสร็จสิ้นลงและไม่ต้องทำงานต่อไป
หลัง i/o เริ่มต้น, การควบคุมจะถูกส่งกลับไปยังโปรแกรมผู้ใช้โดยปราศจากการรอให้ i/o
ปฏิบัติการเสร็จสิ้น (I/O completion)
การเรียกระบบ (System call) – การร้องขอไปยัง OS
เพื่อขอให้ผู้ใช้รอจนกว่าปฏิบัติการของ i/o จะเสร็จสิ้น
ตารางสถานะอุปกรณ์ (Device-status table) บรรจุรายการเกี่ยวกับการขอใช้อุปกรณ์
 เช่น ชนิด ที่อยู่ และสถานะ เป็นต้น
OS จะสร้างดัชนีชี้ไปยังตารางอุปกรณ์ i/o
เพื่อดูสถานะของอุปกรณ์ และแก้ไขรายการในตาราง รวมทั้งการขัดจังหวะ



วิธีที่ซีพียูต้องรอให้การเสร็จสิ้นไอ/โอ เสียก่อนนี้ เรียกว่า ประสานเวลา หรือซิงโครนัส (synchronous)
ส่วนวิธีที่ตรงกันข้ามเรียกว่า ไม่ประสานเวลา หรืออะซิงโครนัส (asynchronous)
ในกรณีที่เป็นประสานเวลา ซึ่ง ซีพียูต้องรอให้การเสร็จสิ้นไอ/โอ นั้น ในระหว่างที่ซีพียูรอ
จำเป็นต้องมีคำสั่งพิเศษ เรียกว่า คำสั่งรอ (wait instruction)ไปเรื่อยๆ
จนกว่าจะได้รับการขัดจังหวะใหม่




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


โครงสร้าง DMA (DMA Structure)
DMA (Direct Memory Access) จะใช้ในอุปกรณ์ไอ/โอ ที่มีความเร็วสูง เช่น เทป ดิสก์ เครือข่ายสื่อสาร เป็นต้น
ถ้าโปรแกรมผู้ใช้หรือ OS ต้องการรับ-ส่งข้อมูล, OS จะหา บัฟเฟอร์ที่ต้องการ (บัฟเฟอร์ว่าง สำหรับนำเข้า, บัฟเฟอร์เต็มสำหรับส่งออก)
จากอาณาบริเวณของบัฟเฟอร์จากนั้น ตัวขับอุปกรณ์จะเซ็ตค่าเรจิสเตอร์ของตัวควบคุม DMA เพื่อระบุต้นทาง
 ปลายทาง และขนาดที่จะส่งหลังจากนั้น DMA จะควบคุมและดำเนินการส่งข้อมูลระหว่าง i/o กับหน่วยความจำ
ในระหว่างนั้น ซีพียูก็เป็นอิสระที่ทำงานอย่างอื่นได้ จนกระทั่งการส่งข้อมูลเสร็จสิ้น DMA จะส่งสัญญาณขัดจังหวะซีพียู อีกครั้งหนึ่ง



โครงสร้างของหน่วยเก็บ  (Storage Structure)
โดยหลักการแล้ว  เราต้องการฝังโปรแกรมและข้อมูลไว้ภายในหน่วยความจำหลักอย่างถาวรตลอดเวลา  แต่เป็นไปไม่ได้ด้วยสาเหตุสำคัญ 2 ประการ
หน่วยความจำหลักมีขนาดน้อยเกินกว่าที่จะสามารถเก็บโปรแกรมและข้อมูลที่ต้องการไว้ทั้งหมดได้
หน่วยความจำหลักเป็นอุปกรณ์ประเภทหน่วยเก็บลบเลือนได้ (volatile storage)
จึงจำเป็นต้องมีหน่วยเก็บรอง (secondary storage) ที่สามารถเก็บโปรแกรมและข้อมูลปริมาณมากไว้ได้อย่างถาวร
ปัจจัยสำคัญที่ควรพิจารณาได้แก่
     ความเร็ว
     ต้นทุน
     ขนาด
     การลบเลือนได้



จานแม่เหล็ก (Magnetic Disk)
ความเร็วของดิสก์มาจาก 2 ส่วน
transfer rate คืออัตราความเร็วที่ใช้ในการส่งถ่ายข้อมูลจากอุปกรณ์ไปยังคอมพิวเตอร์
ซึ่งมีหน่วยวัดเป็นเมกะบิตต่อวินาที (megabit per second)positioning time
หรือ random access time ซึ่งมีหน่วยวัดเป็นมิลลิวินาที (millisecond) ประกอบด้วย
seek time เป็นเวลาที่ใช้ในการเคลื่อนหัวอ่านไปยังร่อง (track) ที่ต้องการ
-rotational latency เป็นเวลาที่ใช้ในการค้นหาเซกเตอร์ที่ต้องการ


Caching
ใช้เป็นหน่วยความจำความเร็วสูงในการเก็บข้อมูลที่มักถูกเรียกใช้งานบ่อย
จำเป็นต้องมีนโยบายการจัดการแคช/แทนที่แคช (cache management/replacement  policy)
แคชถูกนำไปใช้ในหน่วยเก็บหลายระดับ อาจมีปัญหาการปรับค่าข้อมูลในแคชแต่ละระดับไม่ถูกต้องได้ เรียกว่า การเกาะกลุ่ม
และความต้องกัน (Coherency and Consistency)

การป้องกันระดับฮาร์ดแวร์ Hardware Protection
    -Dual-Mode Operation
    -I/O Protection
    -Memory Protection
    -CPU Protection

การดำเนินการโหมดคู่กัน  (Dual-Mode Operation)
เพื่อประกันความถูกต้องของการปฏิบัติการและทุกโปรแกรม ตลอดทั้งข้อมูลของโปรแกรมเหล่านั้นจากการรุกรานของโปรแกรมผิดปกติ
การปกป้องนี้มีความจำเป็นต้องใช้ โหมด (modes) ในการปฏิบัติการ ได้แก่
    โหมดผู้ใช้ (user mode)
    โหมดมอนิเตอร์ (monitor mode)
ทั้งสองโหมดจะใช้ฮาร์ดแวร์เข้ามาช่วย โดยกำหนด mode bit ให้ monitor (0)
และ user (1) ทำให้ปฏิบัติการกับคำสั่งบางอย่างจะสามารถทำได้ด้วยเฉพาะในฐานะของระบบปฏิบัติการเท่านั้นและบางคำสั่งจะทำได้ในฐานะของผู้ใช้



การออกแบบระบบปฏิบัติการโดยป้องกันคำสั่งระดับเครื่องที่อาจเป็นอันตรายอย่างเช่นคำสั่งจำพวก คำสั่งอภิสิทธิ์
 (privileged instructions)โดยกำหนดให้ฮาร์ดแวร์จะยอมรับคำสั่งประเภทอภิสิทธิ์จากการ
ปฏิบัติการใน monitor mode เท่านั้น  ถ้ามีความพยายามที่จะเรียกใช้คำสั่งเหล่านี้จาก user mode
,  ฮาร์ดแวร์จะถือว่าเป็นการกระทำที่ผิดปกติและจะ trap ไปยังระบบปฏิบัติการทันที

การป้องกัน i/o (I/O Protection)
กำหนดให้ทุกคำสั่งเกี่ยวกับ i/o เป็นคำสั่งอภิสิทธิ์
ต้องประกันว่าโปรแกรมผู้ใช้จะไม่ได้รับอนุญาตให้ควบคุมคอมพิวเตอร์ในฐานะโหมดมอนิเตอร์ได้

การป้องกนหน่วยความจำ  (Memory Protection)
ต้องปกป้อง interrupt vector (ตารางที่เก็บตัวชี้ไปยัง interrupt service) ไม่ให้ถูกแก้ไขค่าได้โดยโปรแกรมผู้ใช้
และปกป้องรูทีนบริการขัดจังหวะ (interrupt service routine) ในระบบปฏิบัติการไม่ให้ถูกแก้ไขได้
จุดมุ่งหมายก็เพื่อป้องกันการรุกล้ำระบบปฏิบัติการจากโปรแกรมผู้ใช้ และป้องกันโปรแกรมผู้ใช้จากการรุกล้ำของผู้ใช้คนอื่นทั้งโดยเจตนาและไม่เจตนา



ทำได้โดยจัดสรรหน่วยความจำออกเป็นส่วนๆ โดยยินยอมให้โปรแกรมผู้ใช้เข้าถึงได้เฉพาะพื้นที่ของตนเองที่ได้รับอนุญาตเท่านั้น ด้วยการใช้ เรจิสเตอร์ 2 ตัว
        base register เก็บค่าเริ่มต้นของหมายเลขตำแหน่งหน่วยความจำที่ยอมให้ใช้งานได้
         limit register เก็บค่าขนาดของพื้นที่หน่วยความที่จะยอมให้ใช้ได้
พื้นที่ของหน่วยความจำอาจแบ่งออกเป็นส่วนหลักๆ ได้แก่ ส่วนของระบบปฏิบัติการ และ ส่วนของผู้ใช้
          โดยที่ ซีพียู จะกำหนดหมายเลขพื้นที่หน่วยความจำทั้งหมดไว้ใน เรจิสเตอร์ ด้วย monitor mode
ถ้ามีความพยายามที่จะใช้ monitor mode เพื่อเข้าถึง monitor memory หรือรุกล้ำพื้นที่ของผู้ใช้คนอื่น ก็จะเกิด trap ไปยังระบบปฏิบัติการ
base และ limit registers ต้องถูกกำหนดค่าได้โดยระบบปฏิบัติการเท่านั้นโดยการใช้คำสั่งพิเศษประเภทอภิสิทธิ์ (special privileged instruction) ซึ่งทำได้เฉพาะใน monitor mode เท่านั้น

การป้องกันซีพียู (CPU Protection)
โดยที่เราจะต้องปกป้องโปรแกรมผู้ใช้ไม่ให้ติดบ่วงอยู่ในวังวนไม่รู้จบ (infinite loop)
และไม่ยอมส่งคืนการควบคุมให้แก่ระบบปฏิบัติการ  วิธีการนี้เราจะใช้ timer ซึ่งเป็นฮาร์ดแวร์ เข้ามาช่วย
timer สามารถตั้งค่าการขัดจังหวะคอมพิวเตอร์ตามเวลาที่กำหนด ซึ่งอาจเป็นเวลาคงที่หรือแปรเปลี่ยนก็ได้โดยจะถูกใช้อัตราที่คงที่ของนาฬิกาและตัวนับ (counter) ซึ่งระบบปฏิบัติการจะเป็นผู้ตั้งค่าตัวนับ



โครงสร้างระบบ  (system structure)
      

        โครงสร้างอย่างง่าย (simple structure)
        โครงสร้างแบบลำดับชั้น (layered approach)

โครงสร้างอย่างง่าย(simple structure)
โปรแกรมผู้ใช้จึงสามารถเข้าถึง เรียกใช้ และครอบครองทรัพยากรระบบได้อย่างอิสระ และโดยสมบูรณ์
 โดยไม่จำเป็นต้องร้องขอผ่าน monitor mode

โครงสร้างแบบลำดับชั้น  (layered approach)
การออกแบบในลักษณะลำดับชั้นเป็นส่วนๆหรือ modularity
ระดับล่างเป็นระดับที่ใกล้ชิดกับระดับของฮาร์ดแวร์ (layer 0) ขึ้นไปจนถึงระดับบนสุด
(lever N) เป็นระดับของส่วนติดต่อผู้ใช้ (user interface)
คุณลักษณะที่ดีของระบบแบบลำดับชั้น (layered approach)
ความเป็นหน่วย (modularity) ที่อิสระต่อกัน
แต่ละหน่วยมีหน้าที่เฉพาะตามลำดับชั้น
ชั้นล่างจะจัดหาบริการที่เหมาะสมให้ชั้นบน
การสร้าง แก้ไข ตรวจหาความผิดพลาดเป็นเรื่องไม่ยาก
สามารถควบคุมและจำกัดความผิดพลาดในแต่ละระดับ
ยุ่งยากมากในการออกแบบหน้าที่ให้สมบูรณ์ได้ในแต่ละระดับ




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




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



     ข้อด้อย
คำสั่งจำลองหลายชนิดอาจใช้เวลานานในการปฏิบัติการกว่าบนเครื่องจริงๆ ได้
ระบบ I/O เสมือนอาจใช้เวลานานขึ้นในการปฏิบัติการเนื่องจากระบบ spooling

ไม่มีความคิดเห็น:

แสดงความคิดเห็น