วันพฤหัสบดีที่ 6 ธันวาคม พ.ศ. 2550

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

ปัญหาการทำงานของโปรเซส
ปัญหาที่เกิดขึ้นกับระบบปฏิบัติการเป็นปัญหาที่หน้าสนใจและถกเถียงกันอย่างกว้างขวางตลอดจนมีการวิเคราะห์โดยการใช้วิธีการด้านซินโครไนต์จะกล่าวถึง3ปัญหาดังนี้
1.TheDiningPhilosophersProblemปัญหาแรกนี้ไดจก์สตราได้เสนอไว้โดยสมมุติว่ามีนักปราชญ์5ท่านนั่งรอบโต๊ะกลมเพื่อทานอาหารที่วางตรงหน้าในการทานอาหารนักปราชญ์แต่ละท่านต้องใช้ตะเกียบทั้ง2ข้าง ที่วางอยู่ซ้ายมือและขวามือ เมื่อทานเสร็จในรอบนั้นจะต้องวางตะเกียบลงเพื่อเปิดโอกาสให้ทานอื่นได้ทานอาหารบ้างจะเกิดDeadlock เมื่อทั้ง5ท่านหยิบตะเกียบท่านละ1ข้างพร้อมกันสมมุติว่าทุกท่านหยิบตะเกียบข้างซ้ายมือพร้อมกันทุกท่านจะต้อรอตะเกียบข้างขวาว่างจึงจะทานอาหารได้
2. The Readers-Writers Problem
ปัญหาการทานอาหารของนักปราชญ์มีประโยชน์มากสำหรับการเป็นโมเดลของโปรเซสที่ช่วยแก้ปัญหาการใช้รีซอร์สที่แชร์กันอยู่อย่างจำกัดยังมีปัญหาอีกอย่างคือ Readers-Writers Problem เป็นปัญหาเกี่ยวข้องกับระบบคอมพิวเตอร์ที่มีกลุ่มข้อมูลใช้งานร่วมกันซึ่งมีโปรเซสอยู่ 2 ประเภทคือ อ่านข้อมูลร่วมและที่บัญทึกหรือเขียนข้อมูล
-The Sleeping Barber Problem ปัญหาที่ 3 เป็นปัญหาที่เกิดในร้านตัดผมที่มีช่างตัดผม 1 คน เก้าอี้ตัดผม 1 ตัวและมีเก้าอี้ที่นั่งรอคิวอีกจำนวน 1 ถ้าไม่มีลูกค้าช่างตัดผมจะนอนพักผ่อนบนเก้าอี้ตัดผมเทื่อลูกค้าเข้ามาในร้านจะปลุกช่างตัดผมเข้ามาตัดผมถ้ามีลุกค้าเดินมาเข้าร้านเพิ่มอีกก็จะนี่งรอหรือไม่ก็ออกจากร้านไป
การแก้ปัญหาจะใช้ 3 Semaphore ดังนี้
- Customers ที่นับจำนวนลูกค้า
- Barbers ที่นับจำนวนช่างตัดผม 0 หรือ 1
-Mutex ที่ใช้สำหรับ Mutual Exclusion

Threads
Threads
1. โปรเซสที่กล่าวผ่านมาเป็นการเอ็กซิคิวต์โปรแกรมในลักษณะมีการควบคุมเพียง 1 Threads ( แต่ละโปรเซสจะประกอบด้วย Threads เพียง Threads เดียวเท่านั้น ) แต่ในระบบปฏิบัติการสมัยใหม่ในแต่ละ โปรเซสสามารถมีได้หลาย Threads อาจจะกล่าวได้ว่า Threads ก็คือส่วนประกอบย่อยโปรเซสนั่นเอง จนบางครั้งอาจเรียก Threads ว่า “ Lightweigh Process “ ( LWP ) ในรูป 2.19 ( ก ) คุณจะเห็น โปรเซส 3 โปรเซส แต่ละโปรเซสจะมีแอ็ดเดรสเป็นของตนเอง และควบคุมเพียง 3 Threads โดยใช้แอ็ดเรสเดียวกันอยู่
2.รูป 2.19 ( ก ) 3 โปรเซสแต่ละโปรเซสมี 1 Threads ( ข ) 1 โปรเซสที่มี 3 Thread ( Mos : P82 )
Threads เป็นหน่วยพื้นฐานของการจัดสรรการใช้ประโยชน์ของซีพียู ที่ประกอบด้วย
- หมายเลข Threads ( Threads ID ) เป็นหมายเลข ฮ ในโปรเซส
- ตัวนับ เพื่อติดตามให้ทราบคำสั่งต่อไปที่จะเอ็กซิคิวต์
- ชุดของรีจิสเตอร์ เพื่อเก็บค่าตัวแปรที่ทำงานอยู่
- ชุดของรีจิสเตอร์ เพื่อเก็บค่าตัวแปรที่ทำงานอยู่
- สแต็ก ( Stack ) เพื่อเก็บประวัติการเอ็กซิคิวต์
ภายในโปรเซสที่ประกอบด้วย thread จะมีการโค้ด , ข้อมูล และรีซอร์ส เช่น ไฟส์ , อุปกรณ์ต่าง ๆ เป็นต้น โปรเซสดั้งเดิม ( ที่เรียกว่า heavyweight ) จะทำงานได้ลายงานในเวลาเดียวกันซอฟต์แวร์ปัจจุบันที่รันกับเครื่องพีซีสมัยใหม่มีการออกแบบให้เป็น multithreded โดยแยกออกเป็นโปรเซสที่ควบคุมหลาย ๆ thread เช่น โปรแกรมเว็บบราวเซอร์ที่มี thread หนึ่งในการแสดงรูปภาพหรือข้อความในขณะที่อีก thread หนึ่งกำลังดึงข้อมูลจากเน๊ตเวิรค หรืออย่างในโปรแกรมเวิรด์โปรเซสเซอร์ที่มีหลาย thread โดยที่ thread หนึ่งกำลังแสดงภาพกราฟฟิก ในขณะที่ therad ที่สองกำลังรอรับคำสั่งจากคีย์บอร์ดจากผู้ใช้ ในขณะที่ Thread ที่สามกำลังตรวจสอบคำสะกดและ ไวยากรณ์ในลักษณะแบ็คกราว เป็นต้น

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