# Process State

เมื่อมีผู้ใช้งานสั่งให้โปรเซสเริ่มทำงาน ระบบปฏิบัติการจะทำการสร้างโปรเซสแล้วส่งเข้าไปสู่ Ready Queue เพื่อรอเข้าประมวลผลภายใน CPU และเมื่อหมดเวลาในการประมวลผล (สำหรับ Preemptive Scheduling) หรือเมื่อโปรเซสต้องรอการทำงานของ I/O ระบบจะเลือกโปรเซสจากสถานะ Ready Queue ตัวถัดไปเข้ามาประมวลผลใน CPU ทั้งนี้การเลือกจะดูที่เลข Priority และลำดับความสำคัญอื่นๆประกอบกัน จะวนเวียนเช่นนี้ไปเรื่อยๆจนกระทั่งโปรเซสทำงานเสร็จและออกจากระบบไป

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FsJNpmnBovZgotbuUl6pE%2Fprocess%20states.png?alt=media&#x26;token=3e2849b2-c1ff-4cc1-8b10-0befba5ed008" alt=""><figcaption><p><em>สถานะการทำงานของโปรเซส</em></p></figcaption></figure>

ซึ่งเมื่อโปรเซสหนึ่งต้องหยุดการทำงานและออกมาจากการครอบครอง CPU ก็จะต้องทำการเก็บสถานะล่าสุดทั้งหมดเข้าไปใน PCB ของตัวเอง เพื่อรอคิวครั้งใหม่ ที่จะถูกเรียกจากตัวจัดลำดับของระบบปฏิบัติการ (scheduler) ต่อไป ซึ่งการสลับโปรเซสจะเรียกว่า Context Switch ดังรูปแสดงการสลับการทำงานระหว่างโปรเซสข้างล่าง

<figure><img src="https://1856353139-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MClo3nC-1US0rbK8Qau%2Fuploads%2FW1jGGKhUYANhM6t6RdXX%2FProcess_P0_P1.png?alt=media&#x26;token=5c1d73a5-3ece-48e8-9b5b-6ae29ae5fda3" alt=""><figcaption><p><em>การสลับการทำงานระหว่างโปรเซส</em></p></figcaption></figure>
