Process Basic
Last updated
Last updated
Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University
โปรเซสหมายถึงโปรแกรมที่เรียกให้ทำงานซึ่งจะถูกนำขึ้นอยู่บนหน่วยความจำและพร้อมที่จะถูกประมวลผล ซึ่งหากโปรแกรมยังถูกอยู่ในฮาร์ดดิสก์หรือยังไม่สามารถประมวลผลโดย CPU ได้ โปรแกรมนั้นๆจะยังไม่เป็นโปรเซสแต่จะเป็นเพียงโปรแกรมเท่านั้น การอ้างอิงถึงโปรเซสบนระบบปฏิบัติการต่างๆจะนิยมอ้างอิงโดยใช้เลขประจำตัวโปรเซสเป็นหลัก หรือ Process ID (PID) ซึ่งเลขดังกล่าวนี้ระบบปฏิบัติการจะเป็นผู้กำหนดให้เมื่อมีการรันโปรแกรมขึ้นมา
ระบบปฏิบัติการสามารถที่จะเรียกใช้งานโปรเซสได้หลายรูปแบบอย่างเช่น การให้โปรเซสต่างๆทำงานเป็นแบบลำดับ (Batch) ซึ่งต้องรอให้แต่ละโปรเซสทำงานจนเสร็จสมบูรณ์ก่อนจะไปตัวถัดไปหรือการทำงานแบบพร้อมกัน (multitasking) โดยระบบปฏิบัติการจะสลับให้แต่ละโปรเซสได้มีโอกาสทำงานกันไปจนทยอยกันเสร็จมบูรณ์ แต่อย่างไรก็ตามจะมีเพียงโปรเซสเดียวเท่านั้นที่จะมีสิทธิ์เข้าใช้งาน CPU ณ ช่วงเวลานั้นๆ ดังนั้นระบบปฏิบัติการจะต้องทำการจัดสรรเวลาให้กับโปรเซสต่างๆให้สามารถมีโอกาสเข้าใช้งาน CPU ได้อย่างเท่าเทียมกัน (Time-shared system) หรือตามระดับสิทธิ์ของแต่ละโปรเซส (Priority based)
ระบบโปรเซสในระบบปฏิบัติการ Unix จะมีการจัดลำดับการทำงานของโปรเซส (Scheduling) เพื่อเปลี่ยนงานระหว่างโปรเซสต่างๆในลักษณะ Multilevel Queue Scheduling กล่าวคือแต่ละโปรเซสจะมีเลขลำดับความสำคัญ (priority) ของตัวเอง โดยเลข priority ที่น้อยแปลว่าโปรเซสนั้นมีความสำคัญสูงกว่า และโปรเซสที่มีความสำคัญสูงดังกล่าว ก็จะมีสิทธิได้ใช้เวลาของ CPU (CPU time) มากกว่า
บล็อกควบคุมโปรเซส (Process Control Block : PCB) ระบบปฏิบัติการเอง จะกำหนดเนื้อที่บางส่วนในหน่วยความจำเพื่อทำเป็น PCB ซึ่งเป็นโครงสร้างข้อมูลชนิดหนึ่งซึ่งเก็บข้อมูลที่สำคัญของโปรเซสนั้นๆเอาไว้ข้อมูลเหล่านี้ ได้แก่
พอยเตอร์ (Pointer) ใช้ชี้ตำแหน่งของโปรเซสที่อยู่ในหน่วยความจำและตำแหน่งของทรัพยากรที่โปรเซสครอบครองอยู่
สถานะของโปรเซส (Process state) แสดงสถานะของโปรเซสที่เป็นอยู่ในปัจจุบัน
หมายเลขโปรเซส (Program id) เป็นหมายเลขประจำตัวของโปรเซส
ตัวนับจำนวน (Program counter)
รีจิสเตอร์ (Register) ทำหน้าที่เก็บข้อมูลสถานะระบบเมื่อมีอินเทอร์รัพเกิดขึ้นเพื่อทำให้โปรแกรมสามารถทำงานต่อไปได้เมื่อกลับมาทำงานอีกครั้ง รีจิสเตอร์จะมีค่าและประเภทที่เปลี่ยนแปลงได้ขึ้นอยู่กับสถาปัตยกรรมของคอมพิวเตอร์ ประเภทของรีจิสเตอร์คือ Accumulator, Index, Stack Pointer และรีจิสเตอร์ทั่วไป
ข้อมูลการจัดเวลาของซีพียู (CPU scheduling information) เป็นข้อมูลที่ประกอบด้วยลำดับความสำคัญของโปรเซส ที่ถูกกำหนดโดยระบบปฏิบัติการ เมื่อโปรเซสถูกสร้างขึ้นมา สามารถเปลี่ยนค่าไปได้ ซึ่งโปรเซสใดที่มีความสำคัญมากระบบปฏิบัติการจะให้สิทธิมากกว่าโปรเซสอื่น
ข้อมูลการจัดการหน่วยความจำ (Memory management information) เป็นข้อมูลเกี่ยวกับหน่วยความจำ ที่ระบบปฏิบัติการกำหนดไว้ เช่นขนาดหน่วยความจำ, ค่าของรีจิสเตอร์, Page table และ Segment table เป็นต้น
ข้อมูลแอ็กเคาต์ (Account information) เป็นข้อมูลที่อาจประกอบด้วยจำนวน CPU, เวลาที่กำหนด, หมายเลขแอ็กเคาต์, หมายเลขโปรเซส และอื่นๆ
ข้อมูลสถานะอินพุต/เอาต์พุต (I/O status information) เป็นข้อมูลแสดงรายการของอุปกรณ์อินพุต/เอาต์พุตที่โปรเซสนี้ใช้