เรามาเข้าใจ Process กันดีกว่า : Part 2

ครูเอฟ
0


เรามาเข้าใจ Process กันดีกว่า : Part 2

Fork Process

Fork เป็นฟังก์ชัน ฟังก์ชั่นหนึ่งที่จะเรียกใช้ system call ในระบบ OSซึ่งหลักการของมันง่ายๆนั้น ก็คือ การสร้าง process ใหม่ โดยมีคุณสมบัติเหมือนกับ process เดิม หรือก็คือการคัดลอก process นั่นเอง โดยการลงลึกไปถึงการทำงานของกระบวนการนี้ ผมจะข้อแนะนำเข้าไปอ่าน บทความเรื่อง fork นี้ครับ

รูปภาพจาก http://www.it.uu.se/education/course/homepage/os/vt18/module-2/process-management/

Process Termination

เรียกง่ายๆว่า กระบวนการ การสิ้นสุด จะเกิดได้เมื่อ process สิ้นสุดการทำงาน หรือ ถูกยกเลิก process ซึ่ง process termination สามารถแบ่งได้เป็น 2 คำสั่ง ได้แก่
1.) Exit : ออกจาก process เมื่อจบการทำงาน และจะคืนทรัพยากรณ์ทั้งหมด
ให้กับ os
2.) Abort : ยกเลิก process ที่ทำอยู่ โดยสาเหตุการเกิด ได้แก่
- process ลูก ใช้ทรัพยากรมากเกินไป
- process แม่ ต้องการหยุดการทำงาน process ลูก
- process แม่ ทำงานเสร็จสิ้นก่อน ทำให้ต้องหยุดการทำงาน process ลูก

Thread

Thread คือ หน่วยการทำงานย่อย ที่ทำงานอยู่ในตัว process ซึ่ง สามารถแบ่ง thread ได้เป็น 2 แบบ ก็คือ Single thread และ Multithread โดยตัว Single thread ก็คือ มี 1 thread ใน 1 process ส่วน Multithread ก็คือ มี thread หลายตัว ทำงานอยู่ใน process โดยข้อดีของ thread ก็คือ สามารถดึงประสิทธิภาพการทำงานของ multi CPU หรือ multi core ได้ เนื่องจากเราสามารถเรียกใช้ thread ในการทำงานหลายๆตัวพร้อมกันได้นั่นเอง

องค์ประกอบภายในเธรดประกอบด้วย
1.) Threads ID หมายเลขเธรดที่อยู่ในโพรเซส
2.) Counter ตัวนับเพื่อติดตามคำสั่งที่จะถูกดำเนินการเป็นลำดับถัดไป
3.) Register หน่วยความจำเก็บค่าตัวแปรที่ทำงานอยู่ปัจจุบัน
4.) Stack เก็บประวัติการทำงาน

สถานะของเธรด

ถ้าเทียบกันระหว่าง Single thread และ Multithread จะกล่าวได้ว่า Multithread มีความสามารถที่ดีกว่า เพราะโครงสร้างของมัน เอื้อให้งานย่อยภายใน process ให้สามารถทำงานร่วมกัน ประสานจังหวะการทำงานและใช้ทรัพยากรของ process ร่วมกัน

thread มี 2 ส่วนที่สัมพันธ์กัน ซึ่งได้แก่ Kernel thread และ User thread โดย Kernel thread จะรองรับการทำงานของ user thread

ถูกจัดการโดยตรงจาก OS โดย Kernel จะจัดสรรและจัดการ เธรดภายในพื้นที่ของ Kernel เอง เนื่องจากระบบปฏิบัติการเป็นผู้จัดการเกี่ยวกับการสร้างและจัดการ thread เอง

ถูกจัดการโดยตรงจาก user โดย ตรงผ่าน library ซึ่ง thread ทั้งหมดจะถูกจัดการให้เสร็จสิ้นภายในพื้นที่ของ user โดยไม่จำเป็นต้องใช้ Kernel

ใน Kernel Level ตัว kenel จะเห็นการทำงาน ของทั้งตัว process และ thread ทั้งหมด ในขณะที่ User Level จะเห็นเพียงตัว process อีกทั้ง Kernel thread จะทำงานได้ช้ากว่า เนื่องจาก ต้องถูกจัดการตามลำดับ ตามที่ OS กำหนดไว้

Multithreading Models

Many-to-One
การจัดการเธรดจะอยู่ในพื้นที่ของ user แต่ถ้าเกิดการ Block System call จะส่งผลให้ process ทั้งหมดจะถูก block ไปด้วย เนื่องจากจะมีเพียง thread เดียวเท่านั้นที่เข้าถึง Kernel

One-to-One
สามารถทำงานพร้อมกัน ในขณะที่ Many-to-One ทำไม่ได้ แต่มีข้อจำกัดที่ว่า kernel thread ต้องมีจำนวนการรองรับ user thread ได้หมด

Many-to-Many
เป็นรูปแบบที่ผู้ใช้สามารถสร้าง thread ได้ตามที่เขาต้องการ แต่จะไม่สามารถทำงานพร้อมกันได้ ในขณะที่รูปแบบอื่น ตัว OS จะเป็นตัวกำหนด

Two-level Model
เป็นรูปแบบที่ได้รับความนิยม ซึ่งมีความคล้ายกับ Many-to-Many แต่สามารถลำดับความสำคัญของ thread เพื่อนำมาใช้กับรูปแบบ One-to-One ได้

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

0 ความคิดเห็น

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