ใบงานที่ 3 การจัดการ process
โดยนายพลวัต เทพศร รหัสนักศึกษา 6031280058
โปรเซส 

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

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

1. หมายเลขโปรเซส (Process id)
เป็นหมายเลขประจำโปรเซสเพื่อกำหนดลำดับการเอ็กซีคิ้วต์

2. โค้ดโปรแกรม (Program code)
เป็นโค้ดคำสั่งที่เป็นภาษาเครื่องที่สามารถเอ็กซิคิวต์ได้ทันที

3. ข้อมูล (Data) 

ข่าวสาร เอกสาร ข้อเท็จจริงเกี่ยวกับบุคคล สิ่งของหรือเหตุการณ์ที่มีอยู่ในรูปของตัวเลข ภาษา ภาพ สัญลักษณ์ต่างๆ ที่มีความหมายเฉพาะตัว ซึ่งยังไม่มีการประมวลไม่เกี่ยวกับการนำไปใช้ได้อย่างมีประสิทธิภาพ
4. บล็อกควบคุมโปรเซส (PCB : Process control block)

เป็นเนื้อที่ของหน่วยความจำที่ระบบปฏิบัติการกำหนดไว้เพื่อเก็บข้อมูที่สำคัญของโปรเซสไว้OS จะกำหนดเนื้อที่บางส่วนในหน่วยความจำเพื่อทำเป็น PCB 

4.1 พอยเตอร์ (Pointer)

สำหรับชี้ตำแหน่งของโปรเซสที่อยู่ในหน่วยความจำ และตำแหน่งของทรัพยากรที่โปรเซสครอบครองอยู่ 
4.2 สถานะของโปรเซส (Process state) 

แสดงสถานะของโปรเซสที่เป็นอยู่ในปัจจุบัน
4.3 หมายเลขโปรเซส (Program id)
4.4 ตัวนับจำนวน (Program counter)
4.5 รีจิสเตอร์ (Register)คือ หน่วยเก็บข้อมูลขนาดจิ๋ว ซึ่งเป็นส่วนหนึ่งของไมโครโปรเซสเซอร์ และใช้เป็นที่เก็บข้อมูลชั่วคราวสำหรับการส่งผ่านผลลัพธ์ของอินสตรักชั่นหนึ่งไปยังอินสรักชั่นถัดไป หรือโปรแกรมอีกโปรแกรมหนึ่งซึ่งอยู่ภายใต้การควบคุมของระบบปฏิบัติการรีจีสเตอร์จำเป็นตัองมีขนาดใหญ่เพียงพอที่จะเก็บอินสตรักชั่นได้ เช่น อิสตรักชั่นขนาด 32 บิต รีจีสเตอร์ก็ต้องมีขนาด 32 บิตด้วยในบางกรณีรีจีสเตอร์อาจมีขนาดเล็กกว่าขนาดของอินสตรักชั่นได้ เช่น มีขนาดเป็นครึ่งหนึ่งของอินสตรักชั่น ขึ้นอยู่กับการออกแบบโปรเซสเซอร์นั้นๆ
4.6 ข้อมูลการจัดเวลาของซีพียู (CPU scheduling information)
4.7 ข้อมูลการจัดการหน่วยความจำ (Memory management information)
4.8 ข้อมูลแอ็กเคาต์ (Account information)
4.9 ข้อมูลสถานะอินพุต/เอาต์พุต (I/O status information) 

5. เวิร์ดสถานะโปรแกรม (PSW : Program Status Word)เป็น ตัวควบคุมลำดับการรันคำสั่งของโปรเซส ซึ่งจะเก็บข้อมูลสถานะของโปรเซสแอดเดรสของคำสั่งต่อไปที่จะถูกรัน ซึ่งเปรียบเสมือนโปรแกรม Counter

เป็นตัวควบคุมลำดับการเอ็กซีคิ้วคำสั่งของโปรเซส และยังเก็บข้อมูลเกี่ยวกับสถานะของโปรเซส แอดเดรสของคำสั่งต่อไปที่จะถูกเอ็กซีคิ้วจะถูกเก็บไว้ใน PSW PSW นี้จึงมีหน้าที่คล้ายๆ กับโปรแกรมเคาน์เตอร์บนเครื่องไมโครคอมพิวเตอร์
6. คุณสมบัติของโปรเซส (Properties of process)
6.1 ลำดับความสำคัญของโปรเซส (Priority)ของโปรเซส โปรเซสแต่ละตัวจะถูกกำหนดความสำคัญขึ้นขณะที่โปรเซสถูกสร้างขึ้น ความสำคัญนี้อาจเปลี่ยนแปลงได้หรือไม่ได้สุดแล้วแต่ OS โปรเซสที่มีความสำคัญมาก OS ก็จะให้สิทธิพิเศษมากกว่าโปรเซสที่มีความสำคัญน้อย เช่น ให้เวลาของซีพียูนานกว่า (ให้ครอบครองซีพียูได้นานกว่า)
6.2 อำนาจหน้าที่ของโปรเซส (Authority) เป็นสิ่งที่บ่งบอกว่าโปรเซสนั้นๆ สามารถทำอะไรได้บ้าง ใช้อุปกรณ์ชิ้นไหนได้บ้างเป็นต้น ตัวอย่างเช่นโปรเซส A ห้ามใช้ดิสก์ใดๆ ทั้งสิ้นแต่สามารถรับข้อมูลจากทุกๆ โปรเซสในระบบได้
6.3 คุณสมบัติอื่นที่ระบบปฏิบัติการกำหนดให้มี

คุณสมบัติของโปรเซส
            เป็นตัวกำหนดคุณสมบัติของแต่ละโปรเซส ซึ่งประกอบด้วย

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

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

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

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


  สถานะต่างๆ ในการทำงานของโปรเซสจะมีสถานะใดสถานะหนึ่งเท่านั้น ซึ่งจะมีหลายสถานะด้วยกัน ดังนี้ 
1. New

        คือโปรเวสที่เพิ่งสร้างขึ้น

    2.Ready

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

    3. Running

        คือสถานะที่โปรเซสครอบครองซีพียู หรือซีพียูมีการเอ็กซ์คิวต์คำสั่งของโปรเซสนั้น

    4. Waiting

        คือสถานะโปรเซสนั้นกำลังรอเหตุการณ์อะไรบ้างอย่าง

    5. Block

        คือสถานะที่เกิดการขัดจังหวะการอุปกรณ์อินพุต/เอาต์พุต ซึ่งก็คืออินเตอร์รัพต์

    6.Terminated

        คือสถานะของโปรเซสที่ประมวลผลเสร็จสิ้น 

การเปลี่ยนสถานะของโปรเซส

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

 
รูปที่ 2.5 การเปลี่ยนสถานะ (State) ของโปรเซส

               ในสถานะ Running คือสถานะที่โปรเซสกำลังรันงานอยู่ เมื่อรันงานจนเสร็จสิ้นโปรเซสนั้นก็จะ Terminated หมายถึงการจบลงของโปรเซส ซึ่ง
การจบลงของโปรเซสนั้นอาจเกิดจากการรันงานจนเสร็จสิ้น หรือเกดิจากการยกเลิกการทำงานจากผู้ใช้ก็เป็นได้
              จากรูปที่ 2.5 เป็นรูปแบบการโปรเซสแบบง่ายๆ แต่ในกรณีที่มีหลายๆ โปรเซสต้องการใช้งานซีพียูเพื่อรันงานของตน เมื่อโปรเซสเปลี่ยนสถานะ
จาก Ready เป็น Running ซีพียูจะว่างก็ต่อเมื่อโปรเซสรันจบเท่านั้น ซึ่งหากโปรเซสนั้นมีช่วงระยะเวลาทำงานยาว ทำให้มีการครอบครองซีพียูยาวนาน ก็
จะส่งผลให้โปรเซสอื่นๆ ที่อยู่ในสถานะ Ready รอคิวการใช้งานนาน ดังนั้นโอเอสจึงมีการกำหนดระยะเวลาควอนตัม (Quantum Time) ของแต่ละโปรเซส
กล่าวคือหากมีครอบครองซีพียูจนครบระยะเวลาควอนตัม ก็จะทำการย้ายโปรเซสนั้นกลับไปอยู่สถานะ Ready เข้าไปต่อคิวใหม่ และนำโปรเซส Ready ที่
อยู่ต้นคิวเข้ามารันในซีพียูแทน การทำงานจะทำงานในลักษณะเป็นรอบๆ วนไปเรื่อยๆ จนกระทั่งโปรเซสจบลงดังรูปที่ 2.

 

รูปที่ 2.6 การเปลี่ยนสถานะของโปรเซสระหว่าง Running และ Ready

           ในระยะเวลาควอนตัม หากโปรเซสจบลงด้วยเหตุใดๆ ก็ตามโปรเซสนั้นๆ ก็จะเสร็จสิ้นหรือ Terminated ไป ทรัพยากร Resource ต่างๆ ที่โปรเซสนั้น

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

สนั้นก็จะเปลี่ยนจากสถานะ Running ไปเป็น Waiting ซึ่งช่วงระหว่างการรอเหตุการณ์ ระบบปฏิบัติการก็อาจนำโปรเซสในคิวที่อยู่ในสถานะ Ready มา

ทำการเอ็กซ์คิวต์แทน

              


รูปที่ 2.7 การเปลี่ยนสถานะของโปรเซสระหว่าง Running Ready และ Waiting
 นอกจากนี้ ยังมีเหตุการณ์หนึ่งซึ่งเป็นขัดจังหวะจากอุปกรณ์ กล่าวคือ ซีพียูอาจถูกขัดจังหวะด้วยอุปกรณ์อินพุต เอาต์พุต ซึ่งเรียกว่าการอินเตอร์รัพต์ โดยพิจารณาจากรูปที่ 2.8 ดังนี้

 รูปที่ 2.8 โปรเซสถูกอินเตอร์รัพต์

จากรูปที่2.8 สามารถอธิบายได้ว่า

1. โปรเซสถูกบล็อกด้วยอุปกรณ์อินพุต เช่น คีย์บอร์ด

2. ตัวจัดลำดับงาน (Seheduler) นำโปรเซสอื่นเข้ามา

3. ตัวจัดลำดับงานทำงานนั้นไปโปรซส

4. รับอินพุตทางคีย์บอร์ด

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

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

            

รูปที่ 2.9 การจัดลำดับคิว (Scheduling Queues)


 

โครงสร้างของพอร์ท

พอร์ทในปัจจุบันมี 3 แบบ

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

พอร์ทแบบไปป์ มีลักษณะการทำงานเหมือนพอร์ทแบบคิว แต่ไปป์มีความยาวของพอร์ทไม่จำกัด ในขณะที่พอร์ทแบบคิวมีความยาวของพอร์ทคงที่

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

 โปรเซสสื่อประสาน (Cooperating Process) 

มีดังนี้

- การแชร์ข้อมูลข่าวสาร เนื่องจากผู้ใช้จะมีความต้องการข้อมูลเดียวกันในเวลานั้นๆ เช่น ( ต้องการใช้ไฟล์ที่ระบบแชร์ไว้ )

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

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

การติดต่อระหว่างโปรเซส ( InterProcess Communication : IPC ) มีดังนี้

 

 

1. โครงสร้างพื้นฐาน
IPC สนับสนุนกลไดเพื่อให้โปรเซสสามารถติดต่อซึ่งกันและกันได้อย่างมีประสิทธิภาพ IPC สนับสนุนอบ่างน้อย 2 ประการคือ กาส่งแมสเสจ และรับแมสเสจ ซึ่งการสนับสนุนจะต้องคำนึงถึงสิ่งเหล่านี้คือ
- จะสร้างลิงค์อย่างไร
- ลิงค์ที่สร้างนั้นสัมพันธ์กับโปรเซสมากกว่า 2 โปรเซสหรือไม่
- ระหว่างโปรเซสทั้งสองจะมีกี่ลิงค์
- ความจุของลิงค์เป็นเท่าไร
- ลิงค์นั้นมีบัฟเฟอร์หรือไม่
- ลิงค์เป็นแบบทางเดียวหรือสองทิศทาง โดยที่ลิงค์แบบทางเดียวจะให้มีการรับส่งแมสเสจให้ทางเดียว คือโปรเซสสามารถรับได้ หรือโปรเซสใดรับก็รับอย่างเดียวจะส่งไม่ได้ ส่วนการลิงค์แบบหลายโปรเซสจะต้องมีอย่างน้อย 1 โปรเซสที่ทำหน้าที่รับแมสเสจ
 

- การติดต่อทางตรง (direct communication)

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

- การติดต่อทางอ้อม (indirect communication )

การติดต่อแบบนี้โปรเซสทั้งสองที่ต้องการจะติดต่อกันจะติดต่อกันผ่านทางเมลล์บ็อกซ์ (Mailbox) หรืออาจเรียกว่าเป็นการติดต่อทางพอร์ต (port) และเมลล์บ็อกซ์ที่ใช้ในการติดต่อกันนี้จะต้องมีการแชร์เมลล์บ็อกซ์ไว้ก่อนด้วย รูปแบบคำสั่งการรับ - ส่งข้อมูลผ่านเมลล์บ็อกซ์เป็นเช่นนี้
Send(B, message) เป็นการส่งแมสเสจไปยังเมลล์บ็อกซ์ B
Receive(A, message) เป็นการรับแมสเซสจากเมลล์บ็อกซ์ A
ลิงค์แบบนี้จะมีคุณสมบัติดังนี้
w จะมีการสร้างลิงค์ระหว่างโปรเซสที่มีการแชร์เมลล์บ็อกซ์เท่านั้น
w ลิงค์หนึ่ง ๆ อาจจะมีความสำพันธ์มากกว่าสองโปรเซสก็ได้
w ระหว่างโปรเซสแต่ละคู่นั้นอาจมีหลายลิงค์ที่แตกต่างกันได้ แต่ละลิงค์จะมีเพียงเมลล์บ็อกซ์เดียว
w การลิงค์อาจเป็นทิศทางเดียว หรือสองทิศทางก็ได้
ตอนนี้เพื่อความเข้าใจมากยิ่งขึ้น สมมุติว่าทั้งโปรเซส p1, p2 และ p3 มีการแชร์เมลล์บ็อกซ์ A ไว้โปรเซส p1 จะส่งแมสเสจไปยัง A ในขณะที่โปรเซส P2 และ P3 ต้องการรัยแมสเสจจาก A คำถามก็คือว่าโปรเซสใดจะรับแมสเสจที่ส่งจาก A คำถามอาจแก้ได้หลายวิธีดังนี้
w ยอมให้มีการลิงค์ทั้งสองโปรเซส
w ยอมให้มีการรับแมสเสจได้เพียงครั้งละ 1 โปรเซส
w ยอมให้ระบบเลือกว่าโปรเซสใดที่จะเข้ารับแมสเสจ

 


การเข้าจังหวะของโปรเซส

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

การป้องกันโปรเซสอื่น ๆ เข้ามาใช้ทรัพยากรซึ่งมีโปรเซสหนึ่งครอบครองอยู่แล้วเรียกว่า การไม่เกิดร่วม (Mutual exclusion)
ในช่วงเวลาที่โปรเซสเข้าไปครอบครองทรัพยากรแบบการไม่เกิดร่วมนี้เรียกว่า โปรเซสนั้นอยู่ในย่านวิกฤต (Critical region หรือ Critical Section)

ปัญหาการทำงานของโปรเซส
ปัญหาที่เกิดขึ้นกับระบบปฏิบัติการเป็นปัญหาที่หน้าสนใจและถกเถียงกันอย่างกว้างขวางตลอดจนมีการวิเคราะห์โดยการใช้วิธีการด้านซินโครไนต์จะกล่าวถึง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 ที่สามกำลังตรวจสอบคำสะกดและ ไวยากรณ์ในลักษณะแบ็คกราว เป็นต้น 

 

ขอขอบคุณข้อมูลจาก

http://www.thaiall.com/os/os03.htm

https://sites.google.com/site/bthreiynbththi99/1/kar-pramwl-phl-hrux-por-ses



แบบฝึกหัด

  1.    1. สถานะของโปรเซสมีอะไรบ้าง  จงอธิบาย
    ตอบ  1) Hold  คือ  สถานะเริ่มต้นของโปรเซสทุกโปรเซส       
           2) Ready  คือ  โปรเซสจะเปลี่ยนสถานะจาก Hold  มาเป็น Ready เมื่อโปรเซสได้รับการจัดสรรทรัพยากรต่าง ๆ
           3) Running คือ สถานะที่โปรเซสได้รับการประมวลผล
           4) Waiting คือ สถานะการรอคอยทรัพยากรบางอย่าง
           5) Finished  คือ สถานะที่โปรเซสได้รับการประมวลผลโดยสมบูรณ์

    2. เวลา Quantum Time  คืออะไร
    ตอบ  เวลาที่ขอใช้งาน CPU

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

    4. สถานะ Block  เกิดขึ้นได้อย่างไร
    ตอบ  โปรเซสต้องการใช้อุปกรณ์ อินพุต/เอาต์พุต  หรือเกิดอินเทอร์รัพต์ระหว่างที่รันโปรเซส  ซึ่งจะต้องรอให้มีการจัดการอุปกรณ์อินพุต/เอาต์พุต  หรือจัดการอินเทอร์รับต์ให้เรียบร้อยก่อนจะกลับไปสถานะรันได้ต่อไป

    5. การติดต่อกันระหว่าง Process  เป็นหน้าที่ของใคร
    ตอบ โปรเซสสื่อประสาน (Cooperating Process)  << ข้อนี้เราไม่แน่ใจนะ

    6. พอร์ท  มีกี่แบบ  อะไรบ้าง
    ตอบ  3 แบบ   1) พอร์ทแบบคิว
                       2) พอร์ทแบบไปป์
                       3) พอร์ทแบบสแต็ก

    7. จงยกตัวอย่างพอร์ท  แบบสแต็ก
    ตอบ ข้อมูลชุดใดที่ถูกส่งเข้ามาก่อนจะถูกดึงออกทีหลัง  ข้อมูลที่จะถูกดึงออกจากพอร์ทคือข้อมูลชุดหลังสุดที่ถูกส่งเข้ามาในพอร์ท

    8. Mutual exclusion  เกิดขึ้นได้อย่างไร
    ตอบ  การกีดกั้นไม่ยอมให้โปรเซสใด ๆ  เข้าใช้พื้นที่ที่เป็น Critical region

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

    10. องค์ประกอบของโปรเซส  มีอะไรบ้าง
    ตอบ  1) หมายเลขโปรเซส                 5) PSW
           2) โค๊ดโปรแกรม                      6) คุณสมบัติของโปรเซส
           3) ข้อมูล
           4) บล็อคควบคุมโปรเซส                 





                   


ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้