โปรเซส โปรเซส หมายถึง โปรแกรมที่กำลังถูกเอ็กซิคิวซ์ เราอาจเปรียบเทียบโปรแกรมเหมือนกับรถยนต์ที่จอดนิ่งอยู่ ที่พร้อมที่จะวิ่งไปในระบบหลายโปรแกรม (Multiprogramming) โปรเซสอาจเปรียบกับรถยนต์ที่วิ่งออกจากจุดเริ่มต้น ถ้ามีหลายโปรเซสอยู่ในระบบก็เหมือนกับการที่เรามีรถหลายคันที่จะต้องออกวิ่งไปพร้อม ๆ กัน ตัวซีพียูเปรียบได้กับคนขับรถยนต์ ถ้าซีพียูมีตัวเดียวก็เหมือนกับคนขับรถมีเพียงคนเดียว ดังนั้นเมื่อรถหลายคันออกวิ่งการที่คนขับรถคนเดียวจะพารถหลาย ๆ คันวิ่งไปต้องขับทีละคันให้วิ่งเดินหน้าไปทีละนิด เวียนเปลี่ยนไปจนครบทุกคัน จนถึงจุดหมายปลายทาง (โปรแกรมสิ้นสุดลง) นั้นคือ เรามีโปรเซสหลาย ๆ โปรเซสทำงานพร้อม ๆ กัน ได้โดยมีซีพียูเพียงตัวเดียว ส่วนประกอบของโปรเซส 1. ชื่อและหมายเลขประจำตัว เป็นชื่อหรือหมายเลขโปรเซส ซึ่งจะไม่มีการซ้ำกัน 2. คำสั่งโปรแกรม 3. ข้อมูล คือ ข้อมูลที่โปรแกรมต้องการหรือนำไปใช้ประกอบการทำงาน ซึ่งข้อมูลนี้อาจจะเป็นข้อมูลของโปรเซสอื่นๆ ที่อาจใช้งานร่วมกันได้ 4. บล็อกควบคุมโปรเซส (Process Control Bolck : PCB) PCB เป็นโตรงสร้างข้อมูลชนิดหนึ่งที่โอเอสสร้างขึ้นในหน่วยความจำเพื่อไว้เก็บข้อมูลสำคัญๆ ของโปรเซสต่างๆ ไว้ เช่น - หมายเลขประจำตัวโปรเซส (Process Identification Number : Process ID - สถานะโปรเซส Process State - ลำดับความสำคัญของโปรเซส (Process Piority) - พอยน์เตอร์ชี้ไปยังตำแหน่งที่อยู่ของโปรเซสในหน่วยความจำ (Location of Process) - พอยน์เตอร์ชี้ไปยังทรัพยากรต่างๆ ที่โปรเซสครอบครอง (Current Resource and Limits) - พื้นที่ที่เก็บค่าของรีจิสเตอร์ (Resgister save area) - ช่วงเวลาสูงสุด เวลาสะสมในการทำงานของโปรเซส (Maximum run time and accumulated run time) 5. PSW (Program Status Words) เป็น ตัวควบคุมลำดับการรันคำสั่งของโปรเซส ซึ่งจะเก็บข้อมูลสถานะของโปรเซสแอดเดรสของคำสั่งต่อไปที่จะถูกรัน ซึ่งเปรียบ เสมือนโปรแกรม Counter 6. คุณสมบัติของโปรเซส เป็นตัวกำหนดคุณสมบัติของแต่ละโปรเซส ซึ่งประกอบด้วย - ลำดับความสำคัญ (Piority)โปรเซสแต่ละโปรเซสจะถูกกำหนดความสำคัญในขณะที่โปรเซสถูกสร้างขึ้น ความสำคัญโปรเซสนี้อาจเปลี่ยนแปลงได้หรือไม่ขึ้นอยู่กับตัวโอเอส แต่โอเอสจะให้สิทธิพิเศษกับโปรเซสที่มีความสำคัญสูง เช่น อาจให้ระยะเวลาในการครอบครองซีพียูที่ยาวนานกว่าโปรเซสอื่นๆ ทั่วไปหรือจะโปรเซสงานที่มีลำดับความสำคัญสูงเป็นอันดับแรกก่อน เป็นต้น - อำนาจหน้าที่ (Authority) เป็นรายละเอียดที่บอกถึงโปรเซสนั้นๆ ว่าสามารถทำอะไรบ้าง ใช้อุปกรณ์ชิ้นไหนได้บ้าง ตัวอย่างเช่น โปรเซส เอ สามารถรับข้อมูลจากทุกๆโปรเซสในระบบได้ แต่ไม่สามารถใช้งานดิสก์ได้ เป็นต้น - คุณสมบัติอื่นๆ ที่ตัวโอเอสเป็นตัวกำหนดให้มี รูปที่ 2.3 Process Control Block (PCB) อาจกล่าวได้ว่า PCB นี้เป็นศูนย์กลางในเก็บข้อมูลสำคัญทั้งหลายของทุกๆ โปรเซส เช่น ในระยะเวลาควอนตัม (Quantum time) ที่กำลังโปรเซสงานหนึ่งอยู่ เมื่อครบเวลาแล้วแต่งานนั้นยังไม่เสร็จสิ้น ก็จำเป็นต้องพักงานชั่วคราวเพื่อไปทำงานโปรเซสในลำดับต่อไปช่วงเวลานี้เป็นช่วงเวลาที่สำคัญมาก เนื่องจากจะต้องเก็บข้อมูลสถานะต่างๆ ของโปรเซสนั้นไว้ใน PCB ก่อน ที่จะไปทำงานในโปรเซสอื่น ดังนั้นจะต้องพักงาน ในโปรเซสนี้ชั่วคราวเพื่อไปทำงานในโปรเซสอื่น แต่หลังจากกลับมาทำงานต่อจากโปรเซสเดิมที่พักชั่วคราวไว้ โอเอสหรือระบบปฏิบัติการจะต้องสามารถจัดการสานงานต่อจากงานเดิมได้ ดังนั้นหน้าที่ของโอเอสจะต้องเก็บสถานะและรายละเอียดสำคัญๆ ของแต่ละโปรเซสไว้ใน PCB Process Control Block : PCB 4.1 พอยเตอร์ (Pointers) Pointer คือตัวแปรดัชนีที่ เก็บค่าตำแหน่งแอดเดรสของหน่วยความจำ ซึ่งตัวแปรพอยเตอร์นั้น จะมีเครื่องหมายดอกจันทร์ (*) นำหน้าเสมอ ดังตัวอย่างต่อไปนี้ ตัวแปรพอยเตอร์มีประโยชน์ในการลดปริมาณหน่วยความจำที่ต้องใช้ในการเขียนโปรแกรม โดยการส่งข้อมูลในรูปพอยเตอร์ เข้าไปในฟังก์ชันที่โปรแกรมเรียกพร้อมกันหลายฟังก์ชัน แทนการส่งข้อมูลในรูปตัวแปรธรรมดา ซึ่งต้องใช้ตัวแปรหลายตัว ตัวแปรพอยเตอร์มีลักษณะคล้ายตัวแปรตารางอาเรย์ แต่ที่แตกต่างกันคือ ตัวแปรตารางอาเรย์จะเก็บเฉพาะค่าต่างๆ ที่เป็นชนิดกันเดียวกับตัวแปรอาเรย์แต่ ตัวแปรพอยเตอร์จะเก็บเฉพาะค่าตำแหน่ง Address ตัวแปรเท่านั้น โดยไม่ได้มีการจัดเตรียมหน่วยความจำแบบไดนามิกส์ (Dynamic Memory Allocation) ไว้ การเข้าถึงตำแหน่งแอดเดรสทำได้โดย ใช้เครื่องหมายแอมเปอร์แซนด์ (&) ซึ่งจะแสดงให้เห็นดังตัวอย่างต่อไปนี้ ในที่นี้กำหนดให้ตัวแปร Andy อยู่ในตำแหน่ง Address ที่ 1776 ดังตังอย่างในภาพที่ 6.1 Andy = 25; // Assigning Value 25 to Andy Fred = Andy; // Assigning Value 25 (Value of Andy) to Fred Ted = &Andy // Assigning Value 1776 (Address of Andy) to Ted via & อย่างไรก็ดี ถ้าต้องการให้ตัวแปร Ted สามารถ ดึงค่า จากตัวแปร Andy ได้ ให้ ใช้สัญลักษณ์ ตัวอ้างอิงโดยอ้อม (Indirect operand) ซึ่งเป็นนำเครื่องหมายดอกจันทร์ (*) นำหน้าตัวแปรที่เก็บค่าแอดเดรสตัวแปร ดังตัวอย่างในภาพที่ 6.2 Beth = *Ted // Beth มีค่าเท่ากับ ค่าที่ตัวแปร Ted ชี้ซึ่งเท่ากับ 25 ตัวพอยเตอร์จะใช้กับตัวแปรชนิดใดก็ได้โดยที่ ตัวแปรพอยเตอร์ดังกล่าวจะได้รับการกำหนดหน่วยความจำตามลักษณะชนิดตัวแปรด้วย เช่น ตัวแปรพอยเตอร์ประเภท int จะได้รับการกำหนดหน่วยความจำไว้ที่ 4 ไบต์ ตัวอย่างการกำหนด ค่า Pointer จะแสดงให้เห็นดังนี้ โดยผลการกำหนดค่าจะแสดงให้เห็นในภาพที่ 6.3 สังเกตให้ดีจะพบว่า ตำแหน่งแอดเดรสหน่วยความจำเลื่อนไป 4ไบท์ ระหว่างตัวแปร j กับ k และ ตัวแปร k กับ ptr 4.2 สถานะของโปรเซส (Process Status) สามารถแบ่งสถานะของโปรเซสได้เป็น 5 สถานะ ดังนี้
- Hold คือ สถานะเริ่มต้นของโปรเซสทุกโปรเซส - Running คือ สถานะที่โปรเซสได้รับการประมวล (การเปลี่ยนแปลงสถานะจาก Ready มาเป็น Running เป็นหน้าที่ของ Process scheduler) - คือ สถานะที่เกิดจากการรอคอยทรัพยากรบางอย่าง เช่น เมื่อโปรเซสได้รับการประมวลผลและโปรเซสจำเป็นต้องใช้ทรัพยากรบางอย่าง เพื่อรอรับการประมวลผลต่อไป
- Finished คือ สถานะที่โปรเซสได้รับการประมวลผลโดยสมบูรณ์หรือสถานะที่เกิดข้อผิดพลาดขึ้นกับการประมวลผลโปรเซส Process Control Block (PCB) Process Control Block หรือ PCB (บางครั้งเรียกว่า Process descriptor) คือ โครงสร้างข้อมูลของโปรเซสซึ่งประกอบด้วยข้อมูลสำคัญต่างๆ ที่บ่งบอกลักษณะเฉพาะของโปรเซสนั้น โดยตัวอย่างข้อมูลที่ถูกเก็บอยู่ใน PCB มีดังนี้ Process identification (PID) โปรเซสแต่ละโปรเซสจะมีหมายเลข PID เฉพาะของตัวเองซึ่งจะไม่ซ้ำกับโปรเซสอื่น ดังนั้น หมายเลข PID สามารถใช้ระบุตัวตนของแต่ละโปรเซสได้ Process status ใช้แสดงสถานะปัจจุบันของโปรเซสว่าขณะนี้อยู่ในสถานะใด (Hold, Ready, Running หรือ Waiting) Process priority เป็นลำดับความสำคัญของโปรเซสที่ระบุว่าโปรเซสนั้นมีลำดับความสำคัญมากน้อยเพียงใด Pointer เป็นตัวชี้ที่ชี้ไปยังส่วนต่างๆ ที่เกี่ยวข้อง ได้แก่ ตัวชี้ที่ชี้ไปยังโปรเซสพ่อแม่ของโปรเซสนั้น, ตัวชี้ที่ชี้ไปยังโปรเซสลูกของโปรเซสนั้น, ตัวชี้ที่ชี้ไปยังข้อมูลและคำสั่งในหน่วยความจำหลัก เป็นต้น Execution context (เรียกอีกอย่างว่า Register contents) เมื่อโปรเซสเปลี่ยนสถานะออกจากสถานะ Running แล้ว PCB จะเก็บค่ารายละเอียดต่างๆ ของรีจิสเตอร์ที่โปรเซสนั้นใช้งานอยู่ก่อนเปลี่ยนสถานะออกจาก Running เอาไว้ด้วย โดยเก็บลงใน Execution context เพื่อที่ว่าเมื่อโปรเซสนั้นเปลี่ยนสถานะกลับสู่ Running อีกครั้ง 4.3 หมายเลขโปรเซส (Process ID) เป็นหมายเลขประจำตัวของโปรเซส 4.4 ตัวนับจำนวน (Program Counter) เป็นตัวนับที่แสดงจำนวนที่แสดงที่อยู่ของคำสั่งต่อไปที่จะถูกประมวลผล 4.5 รีจิสเตอร์ (Register) 1. เป็นส่วนประกอบหนึ่งใน Microprocessor ทำหน้าที่ในการเก็บข้อมูลชั่วคราว Register แบ่งได้ 4 กลุ่ม
1. รีจิสเตอร์ทั่วไป (General Register) รีจิสเตอร์ที่ควรรู้จักตัวแรก ๆ มีอะไรบ้าง 4.7 ข้อมูลการจัดการหน่วยความจำ หน่วยความจำในระบบคอมพิวเตอร์ ถือเป็นทรัพยากร (Resource) หนึ่งที่สำคัญซึ่งเมื่อกล่าวถึงหน่วยความจำในระบบคอมพิวเตอร์มักจะหมายถึงหน่วยความจำหลัก (MainMeory) หรือ หน่วยความจำแรมในไมโครคอมพิวเตอร์นั่นเอง ข้อบัญญัติข้อหนึ่งของ ดร.จอห์ ฟอน นอยมานน์ กล่าวว่าข้อมูลและชุดคำสั่ง (Data and Instruction) ต้องอยู่ในหน่วยความจำหลัก นั้นหมายถึงว่าโปรแกรมและข้อมูลต้องอยู่ในหน่วยความจำ ซึ่งหน่วยความจำนี้ซีพียูสารถเข้าถึง (Access) ได้โดยตรง และมีความเร็วสูงพอที่จะทำงานเคียงคู่กับความเร็วของซีพียูได้ ถึงแม้จะเทียบกับความเร็วของซีพียูไม่ได้ แต่ก็จะไม่เกิดความเหลื่อมล้ำกันมากนัก แต่อย่างไรก็ตามในปัจจุบันนี้ก็มีหน่วยความจำชนิดหนึ่งที่เรียกว่า หน่วยความจำแคช (Cache Memory) ซึ่งเป็นหน่วยความจำขนาดเล็กแต่มีความรวดเร็ว โดยนำมาใช้งานร่วมกับหน่วยความจำหลัก จึงมีผลให้การประมวลผลรวดเร็วยิ่งขึ้น ลำดับชั้นของหน่วยความจำ (Memory Hierarchy) ลำดับชั้นหน่วยความจำ (Memory Hierarchy) จะเห็นได้ว่าหน่วยความจำยิ่งมีขนาดความจุสูงเท่าไร จะมีการแอคเซสข้อมูมที่ชา และมีราคาถูก เทป ฮาร์ดดิสก์ ในขณะที่หน่วยความจำที่ยิ่งมีขนาดเล็กเท่าไรยอมมีความเร็วสูง เช่น รีสเตอร์ หน่วยความแคช หน่วยความจำหลัก แต่นั้นไมถึงราคาหรือต้นทุนที่ต้องเพิ่มสูงขึ้นด้วย การจัดการหน่วยความจำ การจัดสรรหน่วยความจำ
ดังที่กล่าวไว้แล้วโปรแกรมต่างๆ ที่ใช้งานจะต้องโหลดเข้าไปในหน่วยความจำ และหน่วยความจำนี้ ซีพียูสามารถเข้าถึงได้โดยตรงการที่โปรมแกรมได้เข้าไปใช้หน่วยความจำของระบบได้เพราะการจัดสรรหน่วยความจำ (Memory allocation) ของระบบปฎิบัติการนั่นเอง การจัดสรรหน่วยความจำ สามารถแบ่งออกได้เป็น 2 ประเภทคือ 1. การจัดสรรหน่วยความจำแบบต่อเนื่อง (continuous Memory allocation)
คอมพิวเตอร์ในยุคก่อนๆ นั้นจะมีการครอบครองหน่วยความจำให้โปรแกรมต่างๆ ในลักษณะต่อเนื่องทั้งสิ้น กล่าวคือโปรแกรมหนึ่งๆ จะถูกโหลดลงในหน่วยความจำได้ต่อเมื่อมีหน่วยความจำขนาดใหญ่พอที่จะวางโปรแกรมนั้นลงไปทั้งหมดได้ การจัดการในลักษณะนี้หากมีหน่วยความจำที่ต่อเนื่องกันมีขนาดไม่เพียงพอสำหรับโปรแกรมทั้งโปรแกรมที่จะลงไปได้โปรแกรมนั้นก็จะทำงานไม่ได้ต้องรอจนกว่าจะมีหน่วยความจำเหลือพอที่จะวางโปรแกรมทั้งโปรแกรมนั้นลงไปได้ 2. การจัดสรรหน่วยความจำแบบไมต่อเนื่อง (Non-Continuous Allocation) การจัดสรรหน่วยความจำลักษณะนี้มักใช้ในระบบปฏิบัติการในปัจจุบัน กล่าวคือในการครอบครองหน่วยความจำนี้ โปรแกรมจะถูกแบ่งออกเป็นส่วนๆ หลายๆ ส่วนด้วยกันเมื่อจะทำการรันโปรแกรม ก็จะโหลดโปรแกรมลงในหน่วยความจำส่วนไหนก็ได้ที่มีที่ว่างพอและที่ความสำคัญในแต่ละส่วนที่โหลดลงไปในหน่วยความจำนั้น ไม่จำเป็นต้องเรียงต่อกันอย่างแบบแรก ดังนั้นการจักสรรหน่วยความจำในลักษณะนี้จะสามารถใช้งานความจำได้เต็มที่กว่าแบบแรก โดยไม่ต้องรอว่าจะต้องมีหน่วยความจำที่ติดต่อกันทั้งหมดมีขนาดใหญ่เพียงพอกับโปรแกรมทั้งหมดหรือไม่ แต่การจัดสรรหน่วยงานความจำแบบนี้ ตัวระบบปฏิบัติการก็จะต้องมีกระบวนการจัดการที่ยุ่งยากซับซ้อนเพิ่มขึ้น 4.8 ข้อมูลแอ็กเคาต์(Account Information) เป็นข้อมูลที่อาจประกอบด้วยจำนวน CPU, เวลาที่กำหนด, หมายเลขแอ็กเคาต์, หมายเลขโปรเซส และอื่นๆ 4.9 ข้อมูลสถานะอินพุต/เอาต์พุต (I/O Status Information) หัวข้อนี้ให้คำแนะนำเบื้องต้นสำหรับข้อควรพิจารณาการโปรแกรมมิง สำหรับรูทีนย่อยการจัดการอินพุตและเอาต์พุต และการจัดการอินพุตและเอาต์พุต (I/O) รูทีนย่อยไลบรารี I/O สามารถส่งข้อมูลไปยัง หรือจาก อุปกรณ์ หรือไฟล์ ระบบปฏิบัติต่ออุปกรณ์เสมือนเป็นไฟล์ I/O ตัวอย่าง คุณต้องเปิดและปิดอุปกรณ์เช่นกันเหมือนกับที่กระทำกับไฟล์ บางรูทีนย่อยใช้อินพุตและเอาต์พุตมาตรฐาน เป็นช่องสัญญาณ I/O อย่างไรก็ตาม สำหรับรูทีนย่อยส่วนใหญ่ คุณสามารถ ระบุไฟล์ที่แตกต่างออกไปสำหรับต้นทางหรือปลายทางของการถ่ายโอนข้อมูล สำหรับบางรูทีนย่อย คุณสามารถใช้ตัวชี้ไฟล์ไปยังโครงสร้างที่มี ชื่อของไฟล์ สำหรับรูทีนย่อยอื่นๆ คุณสามารถใช้ file descriptor (คือ เลขจำนวนเต็มบวกที่กำหนดให้แก่ไฟล์เมื่อถูกเปิด) องค์ประกอบของโปรเซส โปรเซสที่สมบูรณ์มีองค์ประกอบดังนี้ 5. PSW (Program Status Word) เป็นตัวควบคุมลำดับการ เอ็กซิคิวต์คำสั่งของโปรเซส และเก็บข้อมูลเกี่ยวกับสถานะของโปรเซส ที่อยู่ของคำสั่งที่จะเอ็กซิคิวต์ต่อไป 6.คุณสมบัติของโปรเซส - ลำดับความสำคัญ (Piority)โปรเซสแต่ละโปรเซสจะถูกกำหนดความสำคัญในขณะที่โปรเซสถูกสร้างขึ้น ความสำคัญโปรเซสนี้อาจเปลี่ยนแปลงได้หรือไม่ขึ้นอยู่กับตัวโอเอส แต่โอเอสจะให้สิทธิพิเศษกับโปรเซสที่มีความสำคัญสูง เช่น อาจให้ระยะเวลาในการครอบครองซีพียูที่ยาวนานกว่าโปรเซสอื่นๆ ทั่วไปหรือจะโปรเซสงานที่มีลำดับความสำคัญสูงเป็นอันดับแรกก่อน เป็นต้น - อำนาจหน้าที่ (Authority) เป็นรายละเอียดที่บอกถึงโปรเซสนั้นๆ ว่าสามารถทำอะไรบ้าง ใช้อุปกรณ์ชิ้นไหนได้บ้าง ตัวอย่างเช่น โปรเซส เอ สามารถรับข้อมูลจากทุกๆโปรเซสในระบบได้ แต่ไม่สามารถใช้งานดิสก์ได้ เป็นต้น คุณสมบัติของโปรเซส ลำดับความสำคัญของโปรเซส (Priority) โดยเมื่อโปรเซสถูกสร้างขึ้นมา ลำดับความสำคัญของโปรเซสจะถูกกำหนดโดยระบบปฏิบัติทันที สามารถเปลี่ยนค่าไปได้ ซึ่งโปรเซสใดที่มีความสำคัญมากระบบปฏิบัติการจะให้สิทธิมากกว่าโปรเซสอื่น อำนาจหน้าที่ของโปรเซส (Authority) เป็นการบอกอำนาจหน้าที่ของโปรเซสนั้นว่าสามารถทำอะไรได้บ้าง ใช้อุปกรณ์อะไรได้บ้าง เป็นต้น สถานะของโปรเซส ในขณะที่เอ็กซิคิวต์โปรเซสอยู่นั้น โปรเซสจะมีการเปลี่ยนแปลงสถานะอยู่ตลอดเวลาสามารถแบ่งสถานะดังนี้ สถานะรอ (Wait) เป็นสถานะที่โปรเซสกำลังรอเหตุการณ์บางอย่าง เช่น การรอสัญญาณ การจัดการอินพุต/เอาต์พุตดีไวซ์ ขั้นตอนการเปลี่ยนสถานะของโปรเซส เมื่อผู้ใช้ต้องการส่งงานให้เครื่องคอมพิวเตอร์ทำงาน OS จะเป็นผู้ที่รับทราบความต้องการนี้
และจะเตรียมสร้างโปรเซสให้กับงานใหม่ที่ถูกส่งเข้ามา สาเหตุที่โปรเซสไม่สามารถเข้าใช้งาน CPU ได้ทันที - เนื่องจากระบบคอมพิวเตอร์ในปัจจุบันเป็นระบบที่มีผู้ใช้หลายคนในเวลาเดียวกัน กรณีที่โปรเซสใดใช้เวลารันเป็นเวลานานก็จะครอบครองซีพียูเป็นเวลานาน
ภายในระยะเวลาควันตัม ถ้าโปรเซสจบลง โปรเซสก็จะออกจากระบบ ทรัพยากรต่าง ๆ ที่โปรเซสครอบครองก็จะถูกส่งคืนให้กับระบบ กรณีที่โปรเซสกำลังอยู่ในสถานะรัน มีความต้องการใช้อุปกรณ์อินพุต/เอาท์พุต หรืออาจจะเกิดอินเทอร์รัพต์ (Interrupt) ขึ้น
กรณีที่ระบบมีงานมากเกินไป OS ไม่สามารถตอบสนองการทำงานของโปรเซสทั้งหมดได้
ลำดับชั้นของโปรเซส (Process Hierarchy) เมื่อผู้ใช้ส่งงานให้กับระบบรัน OS จะทำการสร้างโปรเซสสำหรับงานนั้นขึ้นมา
โดยทั่วไป เมื่อโปรเซสแม่จบลง โปรเซสต่าง ๆ ที่อยู่ภายใต้ตัวมันก็จะจบลงตามไปด้วย
จากตัวอย่างในรูป โปรเซส A จะมีโปรเซสลูก 3 โปรเซสคือ B,C และ D
โปรเซสสื่อประสาน (Cooperating Processes)
โปรเซสที่เอ็กซิคิวต์ในระบบนั้นมี 2 แบบ
การติดต่อระหว่างโปรเซส (Interprocess communication) เมื่อโปรเซส A ต้องการติดต่อกับโปรเซส B เมื่อโปรเซสต้องการใช้ข้อมูลของโปรเซสอื่น โปรเซสที่ถูกร้องขอจะส่งข้อมูลไปให้ การที่โปรเซสต่าง ๆ มีการติดต่อกันเช่นนี้ เราเรียกว่า การติดต่อระหว่างโปรเซส
เมื่อโปรเซส A ต้องการติดต่อกับโปรเซส B นอกจากการใช้หน่วยความจำร่วมแล้วยังมีวิธีอื่นที่มีความสะดวกมากกว่าและเป็นมาตรฐาน คือการใช้พอร์ท (Port)
โดย OS จะทำหน้าที่เป็นผู้ให้จังหวะในการรับส่งข้อมูลให้กับแต่ละโปรเซส เช่น โครงสร้างของพอร์ท พอร์ทในปัจจุบันมี 3 แบบ การเข้าจังหวะของโปรเซส (Process Synchronization) ในการใช้ทรัพยากรโดยเฉพาะอย่างยิ่งข้อมูลอาจก่อให้เกิดปัญหาที่ทำให้การทำงานไม่ถูกต้อง ตัวอย่าง จากรูปจะเห็นว่าถ้าโปรเซสที่ 1 และ 2 มีการทำงานที่เป็นอิสระอาจทำให้ผลลัพธ์เกิดความผิดพลาดขึ้น
การป้องกันโปรเซสอื่น ๆ เข้ามาใช้ทรัพยากรซึ่งมีโปรเซสหนึ่งครอบครองอยู่แล้วเรียกว่า การไม่เกิดร่วม (Mutual exclusion)
ปัญหาการทำงานของโปรเซส ปัญหาที่ 1 : การอดตาย (Starvation) หรือ การเลื่อนไหลไปอย่างไม่มีวันสิ้นสุด (Infinite postponement) - ในขณะที่โปรเซส A กำลังรอ ปรากฏว่ามีโปรเซสอื่น ๆ ที่มีลำดับความสำคัญสูงกว่าโปรเซส A ต้องการใช้เครื่องพิมพ์ ปัญหาที่ 2 : วงจรอับ หรือ การติดตาย (Deadlock) 1. สถานะของโปรเซสมีอะไรบ้าง จงอธิบาย 2. เวลา Quantum Time คืออะไร 3. ปัญหา DeadLock เกิดขึ้นได้อย่างไร เมื่อโปรเซสต้องการใช้ทรัพยากร และร้องขอทรัพยากรจากระบบ แต่ทรัพยากรที่โปรเซสต้องการใช้ไม่ว่าง เนื่องจากโปรเซสอื่นกำลังใช้งานอยู่ ทำให้โปรเซสนั้นๆ ต้องรอคอย และเป็นการรอคอยที่ไม่มีที่สิ้นสุด (โปรเซสไม่มีโอกาสได้รับการจัดสรรทรัพยากร) 4. สถานะ Block เกิดขึ้นได้อย่างไร - เก็บค่ารีจิสเตอร์ (Register) และสถานะของเครื่องไว้ใน PCB (Process Control Block) ของโปรเซสที่กำลังจะถูกปลดปล่อยจากซีพียู - คัดเลือกโปรเซสที่อยู่ในสถานะ Ready เข้ามาโปรเซสในซีพียู หรือครอบครองซีพียู 5. การติดต่อกันระหว่าง Process เป็นหน้าที่ของโคร 6. พอร์ท มีกี่แบบอะไรบ้าง 7. จงยกตัวอย่าง พอร์ทแบบสเต็ก ข้อมูลชุดใดที่ถูกส่งเข้ามาก่อนจะถูกดึงออกทีหลัง ข้อมูลที่จะถูกดึงออกจากพอร์ทคือข้อมูลชุดหลังสุดที่ถูกส่งเข้ามาในพอร์ท 8. Mutual exclusion
เกิดขึ้นได้อย่างไร 9. ปัญหาการอดตาย เกิดขึ้นได้อย่างไร เมื่อโปรเซสใดโปรเซสหนึ่ง ต้องการใช้อุปกรณ์พร้อมกัน โปรเซสที่จะได้ใช้ก่อนก็คือโปรเซสที่มีลำดับความสำคัญสูงกว่า 10. องค์ประกอบของโปรเซส มีอะไรบ้าง |