สถานะกระบวนการเก็บไว้ใน PCB และสถานะเธรดเก็บไว้ใน TCB

สมมติว่ากระบวนการ p0 ถูกสร้างขึ้น P0 มีสองเธรด (เธรดหลัก) t0 และ t1 ดังนั้นบางแห่งจึงมี PCB0 สำหรับ p0, TCB0 สำหรับ t0 และ TCB1 สำหรับ t1 (5 สถานะการดำเนินการเพื่อความง่าย: สร้างแล้ว พร้อม รัน บล็อค สิ้นสุด)

  1. p0 อยู่ในสถานะกำลังทำงานเมื่อมีเธรดอย่างน้อยหนึ่งเธรดอยู่ในสถานะกำลังทำงานอยู่

  2. แน่นอนว่าใน TCB จะต้องมีฟิลด์สำหรับสถานะเธรด หากสถานะ p0 สามารถคำนวณได้โดยตรงจากสถานะของเธรด: มีฟิลด์สถานะการดำเนินการใน PCB หรือไม่ และเพราะเหตุใด

  3. หากคำตอบในข้อ 2 คือใช่: ทุกครั้งที่สถานะของเธรดมีการเปลี่ยนแปลง เราจะต้องตรวจสอบสถานะของเธรดของกระบวนการทั้งหมดเพื่อให้ PCB.state เป็นปัจจุบันอยู่เสมอหรือไม่ นี่ไม่ซ้ำซ้อนเหรอ?


person marmotas    schedule 06.12.2015    source แหล่งที่มา
comment
เหตุใดกระบวนการจึงต้องมีสถานะการดำเนินการเมื่อไม่ใช่หน่วยของการดำเนินการ?   -  person Martin James    schedule 07.12.2015
comment
ฉันสามารถถามคำถามของคุณได้ มันเรียงลำดับและครอบคลุมกว่ามาก   -  person marmotas    schedule 07.12.2015


คำตอบ (1)


p0 อยู่ในสถานะกำลังทำงานเมื่อมีเธรดอย่างน้อยหนึ่งเธรดอยู่ในสถานะกำลังทำงานอยู่

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

กระบวนการอยู่ในสถานะพร้อม หนึ่งในเธรดของกระบวนการอยู่ในสถานะกำลังทำงาน

กระบวนการถูกบล็อกในสถานะถูกบล็อก หนึ่งในเธรดของกระบวนการอยู่ในสถานะกำลังทำงาน

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

แน่นอนว่าใน TCB จะต้องมีฟิลด์สำหรับสถานะเธรด

ใช่ มีฟิลด์สำหรับสถานะ (เช่น running , ยุติ , ready , block ฯลฯ ) ใน tcb

มีสถานะการดำเนินการใน PCB หรือไม่และเพราะเหตุใด

ใช่ มีสาขาของรัฐใน PCB ด้วย แต่ไม่ได้คำนวณจากสถานะ tcb เพราะอย่างที่บอกไปแล้วว่าสถานะทั้งสองอาจแตกต่างกันได้ โดยทั่วไปเธรดจะเรียกขั้นตอนที่แตกต่างกันและทำให้ประวัติการดำเนินการแตกต่างกัน

หวังว่าคุณจะพอใจกับคำตอบของฉัน ขอให้โชคดี :-)

---› ตรวจสอบลิงก์นี้เพื่อใช้อ้างอิง

---› ตรวจสอบลิงก์สำหรับเนื้อหาของ TCB และ PCB

person Punit Vara    schedule 06.12.2015
comment
ฉันขอความคิดเห็นสำหรับการโหวตเพื่อที่ฉันจะได้ปรับปรุงคำตอบได้ไหม - person Punit Vara; 06.12.2015
comment
ฉันกำลังอัปเดตคำตอบ โปรดอ่านข้อมูลอ้างอิงหากคุณคิดว่าคำตอบนี้ผิด - person Punit Vara; 06.12.2015
comment
ฉันตอบเฉพาะคำถามแรกเท่านั้น ไม่ใช่คำถามแต่ละข้อ ฉันหวังว่าคุณจะคิดใหม่เกี่ยวกับการตัดสินใจลงคะแนนเสียงของคุณ - person Punit Vara; 06.12.2015
comment
ขอขอบคุณที่พิจารณาโหวตคำตอบนี้ ฉันขอบคุณคุณจริงๆ :-) - person Punit Vara; 06.12.2015