Make your own free website on Tripod.com

 

 

 

 

 

 

 

 

การจัดการระบบปฏิบัติการ

 

       
การจัดการ Process / Thread ของ Windows XP

Scheduling

ใช้หลักการ Round Robin โดยอาศัย Priority ของ Process / Thread โดยมี Priority ตั้งแต่ 0 – 31 (31 มี Priority สูงสุด) เลือก Process/Thread ที่มี Priority สูงสุดทำงานก่อนโดยเปรียบเทียบกับทั้งหมด แล้วจะให้ Process ที่มี Priority สูงสุดรองลงมาทำต่อไป นอกจากนี้ยังมีการทำ Boost Priority และ Inversion Priority ด้วย

- Boost Priority คือการที่ Process/Thread Priority ตั้งแต่ 0-15 สามารถที่จะเพิ่ม Priority ได้ในกรณีที่ต้องมีการใช้งานอย่างเร่งด่วน

- Inversion Priority นั้นก็คือการที่ Process/Thread หนึ่งที่มี Priority สูงสุดนั้น ต้องทำการรัน แต่ต้องอาศัยการ Share Resources กับ Process/Thread ที่มี Priority น้อยกว่า ระบบจะทำการแก้ไขปัญหาโดย Boost Priority ของ Process/Thread ที่ต้องการนั้นขึ้นมาให้ทำงานเพื่อที่จะให้ Process/Thread ที่มี Priority สูงสุดสามารถรันได้ต่อไป

Communication / Synchronization

ใช้ Pre-Emptive Multitasking โดยทำการเก็บการทำงานต่างๆ ของ Tasks ลงในหน่วยความจำแล้วเลือกว่าควรทำการรัน Task ใดก่อนโดยทำการตรวจสอบหลายครั้งภายในช่วงเวลาหนึ่งขึ้นกับแต่ละ Task และปัจจัยอื่นๆ แล้วจึงทำการรัน Multitasking ให้แต่ละ Task

Interprocess Communication ของ Windows XP

Windows ใช้ Interprocess Communication ในการทำการติดต่อสื่อสารและแบ่งปันข้อมูลระหว่างแต่ละ application ปกติแล้ว IPC จะถูกใช้ในลักษณะของ Client กับ Server โดย Client เป็น Application ที่ร้องขอการบริการจาก Application หรือ Process อื่นๆ ส่วน Server เป็นตัวตอบสนองการร้องขอนั้นๆ บาง Application ทำงานเป็นได้ทั้งสองอย่างขึ้นกับสถานการณ์ เช่น Word Processing ทำงานเป็น client เรียกใช้ข้อมูลของ Spreadsheet Application ที่ทำตัวเป็น server แต่บางครั้งตัว Spreadsheet Application ก็ทำตัวเป็น client ร้องขอข้อมูลของสินค้าจากโปรแกรมควบคุมปริมาณสินค้า เป็นต้น

Interprocess Communication ของ Kaffe OS

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

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

ก่อนที่จะอธิบายการออกแบบและคุณสมบัติของรูปแบบการติดต่อที่ใช้ใน Kaffe มาดูถึงการแบ่งกันใช้ข้อมูลที่แตกต่างกันก่อน

Sharing Models

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

- Copying

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

- Indirect Sharing

ใน Indirect Sharing Model วัตถุจะถูกแบ่งกันใช้งานโดยอ้อม เมื่อมีการติดต่อวัตถุที่ถูกแชร์ ตัวชี้โดยตรงที่ไปยังวัตถุนั้นจะไม่ถูกสร้างขึ้น แต่จะแทนด้วยการที่โปรเซสสร้าง Proxy Object ซึ่งประกอบด้วยค่าอ้างอิงไปยังวัตถุที่แชร์นั้นและผ่านค่าตัวชี้ไปยัง Proxy Object นั้น Proxy นั้นเป็นวัตถุของระบบที่ถูก Protected ไว้ ในการรักษาสภาพ Indirect Sharing และป้องกันการ Direct Sharing ระบบต้องรับประกันว่าไม่มีทางที่ Client จะเข้าไปดึงข้อมูลโดยตรงจาก Proxy ได้

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

ข้อเสียเปรียบของ Indirect Sharing คือการใช้ Proxy นั้นเพิ่มค่าของการใช้วัตถุที่ถูกแชร์เพียงเล็กน้อย นอกจากนั้นยังต้องการความเอาใจใส่ของโปรแกรมเมอร์ในการส่งค่าไปยัง Method ที่ถูกเรียกโดยวัตถุที่ถูกแชร์ด้วย ดังนั้น ค่าที่ส่งต้องทำการ Proxy เพื่อป้องกันการรั่วไหลของการติดต่อโดยตรง

- Direct Sharing

รูปแบบการแชร์ข้อมูลในมาตรฐานจาวาคือ Direct Sharing เข้าถึงโดยใช้ Pointer ไปยังแต่ละวัตถุ ตั้งแต่จาวาออกแบบเพื่อให้รองรับ Direct Sharing กับวัตถุ ตัวเลือกของการออกแบบอื่นๆได้อนุญาตให้ทำการ Direct Sharing ระหว่างโปรเซส Interprocess Sharing ของวัตถุนั้นเหมือนกับ Intraprocess Sharing Direct Sharing ในระบบ Single-Address-Space เป็นอะไรที่ค่อนข้างเหมือนการแบ่งกันใช้หน่วยความจำในระบบ Separate-Address-Space แต่ยูนิตของการแชร์ค่อนข้างจะอยู่ในลักษณะเล็กกว่า เมื่อใช้ Direct Sharing เป็นไปได้ที่วัตถุจะไม่ถูกลบล้างเมื่อโปรเซสถูกหยุดลง ค่าที่ถูกนำออกไปอ้างอิงในการแชร์วัตถุยังคงเหลืออยู่

Direct Sharing in Kaffe OS

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

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

nbsp;