-ประมวลผลตามคำสั่งที่เขียนไว้ในโปรแกรม
-ติดต่อรับส่งข้อมูลกับผู้ใช้โดยผ่านหน่วยนำข้อมูลเข้า/ออก
-รับส่งข้อมูลโดยติดต่อกับหน่วยความจำภายในเครื่อง
-ย้ายข้อมูลและคำสั่งจากหน่วยงานหนึ่งไปยังอีกหน่วยงานหนึ่ง จากส่วนประกอบของซีพียูประกอบไปด้วย 2 ส่วน คือ หน่วยควบคุม
(Control Unit หรือ CU) ดังกล่าวนั้น โดยที่การทำงานของหน่วยควบคุมจะอยู่ภายใต้คำสั่งของโปรแกรมที่เก็บไว้ในหน่วยความจำหลักโดยหน่วยควบคุมจะมีหน้าที่ในการสั่งงานและประสานงานการดำเนินการทั้งหมดของระบบ อันได้แก่
-ติดต่อสื่อสารกับ ALU และหน่วยความจำหลัก
-ตัดสินใจในการนำข่าวสารใดเข้าและออกจากหน่วยความจำหลัก
-กำหนดเส้นทางการส่งสารจากหน่วยความจำไปยัง ALU และ ALU ไปยังหน่วยความจำหลัก
-มีหน่วยที่ทำหน้าที่ในการถอดรหัสว่าจะให้เครื่องคอมพิวเตอร์ทำอะไร
-ควบคุมการถอดรหัสให้เป็นไปตามขั้นตอนการทำงาน เพื่อให้ได้ผลลัพธ์ออกมา
-หน่วยคำนวณทางคณิตศาสตร์และตรรกวิทยา ( Arihimetic and Logic Unit ) ALU หน่วยคำนวณนี้ประกอบด้วยวงจรไฟฟ้า ที่ทำหน้าที่ 2 อย่างคือ
การดำเนินงานเชิงคณิตศาสตร์ ( Arithmetic Operatoin ) ทำหน้าที่ในการเปรียบเทียบระหว่างข้อมูลโดยการทดสอบตามเงื่อนไขมากกว่า น้อยกว่า เท่ากับ ซึ่งการปฏิบัติงานของคอมพิวเตอร์จะขึ้นอยู่กับผลลัพธ์ของการเปรียบเทียบนั้น เช่น ถ้า ALU ตรวจสอบพบว่าจำนานสินค้าในสต็อกมีน้อยกว่า 20 ชิ้นให้คอมพิวเตอร์พิมพ์ข้อความเตือนออกมาให้ทราบ เป็นต้น
การทำงานของซีพียูมีรายละเอียดดังนี้
รีจีสเตอร์ คือ แหล่งที่ใช้เก็บข้อมูลชั่วคราวที่มีลักษณะคล้ายกับหน่วยความจำ แต่ถูกแยกออกจากหน่วยความจำต่างหาก รีจีสเตอร์จะเป็นแหล่งเก็บข้อมูลแบบพิเศษที่ทำให้ซีพียูสามารถดึงข้อมูลไปใช้งานได้เร็วกว่าหน่วยความจำธรรมดา รีจีสเตอร์จะอยู่ภายในหน่วยประมวลผลกลางและถูกจัดการและควบคุมโดยหน่วยควบคุม ซึ่งเป็นแหล่งเก็บข้อมูลและคำสั่งภายในโปรแกรมที่จะถูกนำมาประมวลผล โดยทั่วไปแล้วรีจีสเตอร์จะแบ่งออกเป็นหลายหน้าที่ตามรีจีสเตอร์แต่ละส่วน เช่น
-Accumulator Register เป็นรีจีสเตอร์ที่ทำหน้าที่เก็บผลลัพธ์จากการคำนวณ
-Instruction Register เป็นรีจีสเตอร์ที่ทำหน้าที่เก็บคำสั่งในโปรแกรมที่กำลังถูกประมวลผล
-Address Register เป็นรีจีสเตอร์ที่ทำหน้าเก็บที่อยู่ของคำสั่งหรือชิ้นของข้อมูลที่ถูกเก็บอยู่ในความจำ ซึ่งที่อยู่นั้นจะเป็นการระบุคำสั่งหรือข้อมูลนั้นถูกเก็บอู่ในตำแหน่งใดในความจำ
- General-purpose Register เป็นรีจีสเตอร์ที่ใช้ทำงานหลายอย่างแล้วแต่โปรแกรมจะเรียกใช้
โดยทั่วไปแล้วรีจีสเตอร์จะถูกใช้ในการเก็บข้อมูลที่กำลังถูกประมวลผล ณ เวลาปัจจุบันแต่หน่วยความจำจะถูกใช้ในการเก็บข้อมูลที่ถูกเรียกใช้ใน
อนาคตอันใกล้ส่วนหน่วยเก็บข้อมูลสำรองจะถูกใช้ในการเก็บข้อมูลที่อาจถูกเรียกใช้ได้ในภายหลังของการประมวลผลโปรแกรมเดียวกัน
ปฏิบัติงานของการซีพียู
จากโปรแกรมที่ประกอบด้วยกลุ่มของคำสั่งที่ต้องการให้คอมพิวเตอร์ทำการประมวลแต่คำสั่งประกอบด้วย รหัสให้ทำงาน ( Operation Code ) หรือ ออปโคด (Operation) เช่น ADD(การบวก) SUB (การลบ) MUL (การคูณ) DIV (การหาร)และเรียกว่า โอเปอแรนด์ (Operand) ซึ่งจะบอกตำแหน่งที่เก็บข้อมูลในหน่วยความจำ เช่น สัญลักษณ์ A หรือ B ตัวอย่างของคำสั่งหนึ่งๆที่มีโปรแกรมภาษาแอสเซมบลี เช่น ADD,A,B หมายถึง ให้มีการนำข้อมูลที่เก็บอยู่ในหน่วยความจำตำแหน่ง Aและข้อมูลที่อยู่ในหน่วยความจำที่ตำแหน่งBมาทำการบวกกันซึ่งคำสั่งนี้จะต้องถูกแปลให้เป็นภาษาเครื่อง (Machine Language) ก่อนการปฏิบัติงานของซีพียูเสมอ
รูปการปฏิบัติการของซีพียู
ก่อนที่คำสั่งและคำสั่งจะถูกประมวลผลต้องมีการอ่านโปรแกรมซึ่งประกอบด้วยชุดคำสั่งต่างๆ รวมทั้งที่จะถูกนำไปใช้ในโปรแกรมนำเข้าไปเก็บไว้ในหน่วยความจำหลักก่อนโดยข้อมูลหรือโปรแกรมนี้อาจนำเข้ามาจากอุปกรณ์นำข้อมูลเข้า/ออก หรือจากหน่ายความจำสำรองอย่างใดอย่างหนึ่งการประมวลผลคำสั่งแต่ละคำสั่งของซีพียูจะมีขั้นตอนการทำงานพอสรุปได้ดั้งนี้
1.หน่วยควบคุม (CU) จะเข้าไปอ่านคำสั่งมาจากหน่วยความจำหลัก 1 คำสั่ง
2.หน่วยควบคุมจะทำการถอนรหัสคำสั่งนั้นว่าอย่างไร ให้เป็นรหัสการทำงาน (Operation Code) โดยจะแปลส่วนของส่วนของรหัสการทำงานก่อนว่า คืออะไร แล้วจึงแปลส่วนของ โอเปอร์แรนด์ เมื่อแปลเสร็จเรียบร้อยก็จะดึงข้อมูลจากหน่วยความจำส่งไปให้หน่วยคำนวณ (ALU) เพื่อปฏิบัติงานตามคำสั่งต่อไป
2.หน่วยควบคุมจะทำการถอนรหัสคำสั่งนั้นว่าอย่างไร ให้เป็นรหัสการทำงาน (Operation Code) โดยจะแปลส่วนของส่วนของรหัสการทำงานก่อนว่า คืออะไร แล้วจึงแปลส่วนของ โอเปอร์แรนด์ เมื่อแปลเสร็จเรียบร้อยก็จะดึงข้อมูลจากหน่วยความจำส่งไปให้หน่วยคำนวณ (ALU) เพื่อปฏิบัติงานตามคำสั่งต่อไป
3.หน่วยคำนวณ (ALU) จะประมวลผลคำสั่งและข้อมูลข้อมูลที่เกี่ยวกับการคำนวณหรือการตรวจสอบเงื่อนไขที่หน่วยความจำส่งมาให้
4.ผลลัพธ์ที่ได้จากการประมวลผลจะถูกนำไปเก็บอยู่ในหน่วยความจำ
4.ผลลัพธ์ที่ได้จากการประมวลผลจะถูกนำไปเก็บอยู่ในหน่วยความจำ
การปฏิบัติงานของหน่วยควบคุม (CU)
หลังจากที่มีการนำโปรแกรมและข้อมูลเข้ามาเก็บไว้ในหน่วยความจำหลักแล้ว เมื่อจะมีการประมวลผลคำสั่งแต่ละคำสั่งในโปรแกรม หน่วยควบคุมจะทำการดึงสั่งจากหน่วยความจำหลักขึ้นมา 1 คำสั่ง แล้วส่งส่วนที่รหัสทำงานหรือออปโคด ไปเก็บยังรีจีสเตอร์ที่เรียกว่า Instruction Register และส่วนที่เป็นโอเปอร์แรนด์ซึ่งเก็บต่ำแหน่งที่อยู่ของข้อมูลจะถูกนำไปเก็บไว้ใน Address Register หลังจากนั้นจะมีวงจรที่เรียกว่า Instruction Register นี้ แล้วส่งสัญญาณการแปลนี้ต่อให้กับหน่วยคำนวณ และหน่วยอื่นที่เกี่ยวข้องซึ่งอาจได้แก่หน่วยความจำ หน่วยนำข้อมูลหรือหน่วยเก็บข้อมูลสำรอง เพื่อดึงข้อมูลที่จะใช้สั่งนั้นเข้ามา
การปฏิบัติงานของหน่วยคำนวณทางคณิตศาสตร์และทางตรรกวิทยา(ALU)
ภายใน ALUจะมีวงจรการคำนวณการบวก ลบ หาร และวงจรทางตรรกวิทยาที่ทำหน้าที่ที่ตัดสินใจเปรียบเทียบค่าของตัวเลข2จำนวนว่ามีค่ามากกว่า น้อยกว่า หรือเท่ากับใน ALU จะถูกเก็บข้อมูลชั่วคราวที่เรียกว่า Accumulator Register สำหรับเก็บข้อมูลตัวเลขที่จะถูกใช้ในการคำนวณและเปรียบเทียบ และ Accumulator Registerที่จะทำหน้าที่เก็บผลลัพธ์ที่จะได้จากการคำนวณอีกด้วย เมื่อมีการคำนวณหรือเปรียบเทียบตัวเลขใดๆตัวเลขนั้นจะถูกนำเข้ามาจากหน่วยความจำหลักตามค่าตำแหน่งที่อยู่ของข้อมูลที่เก็บอยู่ใน Address Registerและจะถูกนำไปเก็บไว้ใน Storage Register ใน ALU ถ้าจะทำการคำนวณก็จะสางข้อมูลต่อไปยังวงจรคำนวณและกลบหน่วยความจำหลัก
รูปโครงสร้างการทำงานของซีพียู
การจักสรร (Allocateหรือ Assign) หมายถึง การจัดหน่วยประมวลผลหรือการสับหลีก (Scheduling) หน่วยประมวลผลหรือระบบให้กับโปรเซสหรืองาน โดยหาจัดการหน่วยประมวลผลและระบบต้องคำนึงถึงความต้องการโดยทั่วไป ดังนี้
1. ความยุติธรรม แม้ว่าลำดับความสำคัญของงานที่เข้าสู่ระบบจะไม่มีทางเท่ากันได้แต่ระบบปฏิบัติการต้องระมัดระวัง
2. ประโยชน์ใช้สอย โดยปกติระบบคอมพิวเตอร์มีขนาดใหญ่จำพวก Mainframe มีราคาแพงและค่าใช้จ่ายสูงมากจึงต้องควบคุมให้ระดับการใช้งานให้คุ้มค่า
3.อัตราตอบสนองในระบบปฏิบัติการบางประเภท เช่น แบบโต้ตอบจำเป็นต้องใช้เวลาสนองตอบไม่เกินความรำคาญแก่ผู้ใช้
4.การคาดคะเนได้ พฤติกรรมของปฏิบัติระบบการมัลติโปรแกรมมิ่ง จำต้องไม่ผันแปรตามสภาพของระบบมากนัก หมายความว่าสำหรับวันๆหนึ่งเวลาใช้จ่ายที่ใช้การดำเนินแต่ละคราวใกล้เคียงกัน
5.ลดค่าโสหุ้ย โดยปกติผู้ออกแบบระบบพยายามจำค่าโสหุ้ย (Overhead) เป็นงานของระบบปฏิบัติการที่ต้องกระทำ แต่ไม่เกิดเป็นผลลัพธ์อะไรในสายตาของผู้ใช้ระบบเนื่องจากโสหุ้ยเป็นงานหรือโปรเซสประเภทหนึ่งซึ่งต้องการใช้ทรัพยากรของระบบในทางกลับกัน เช่น ในระบบมัลติโปรแกรมมิ่งเพื่อให้ประโยชน์ใช้สอยของระบบดีขึ้น
5.ลดค่าโสหุ้ย โดยปกติผู้ออกแบบระบบพยายามจำค่าโสหุ้ย (Overhead) เป็นงานของระบบปฏิบัติการที่ต้องกระทำ แต่ไม่เกิดเป็นผลลัพธ์อะไรในสายตาของผู้ใช้ระบบเนื่องจากโสหุ้ยเป็นงานหรือโปรเซสประเภทหนึ่งซึ่งต้องการใช้ทรัพยากรของระบบในทางกลับกัน เช่น ในระบบมัลติโปรแกรมมิ่งเพื่อให้ประโยชน์ใช้สอยของระบบดีขึ้น
6.กระจายการใช้ทรัพยากร ระบบปฏิบัติการต้องพยายามดึงงานเข้าสู้ระบบในลักษณะที่กระจายให้ทรัพยากรทุกชิ้นในระบบได้ใช้ประโยชน์อย่างเสมอกัน
7.ลำดับความสำคัญ การจัดการหน่วยประมวลผลต้องเอื้ออำนวยผู้ใช้ให้สามารถกำหนดลำดับความสำคัญหรือบุริมภาพ (Priority) ของงานตนได้
8.สาใจกับทรัพยากรที่สำคัญ บางครั้งระบบปฏิบัติการต้องยกลำดับความสำคัญของงานที่ไม่สำคัญให้สูงขึ้น หากงานนั้นจับจองทรัพยากรที่ต้องใช้งานอื่นที่มีลำดับความสำคัญ ที่สูงลงโดยเร็ว
9.ใส่ใจกับโปรเซสที่ดี ระบบปฏิบัติการควรให้ความสำคัญต่อโปรเซสที่ทำประโยชน์ให้กับระบบคอมพิวเตอร์ เช่น เป็นงานที่ใช้ทรัพยากรที่ไม่ค่อยมีผู้ใช้หรือเป็นงานที่เสร็จเร็วโดยใช้ทรัพยากรน้อยมาก
10.เสื่อมถอยโดยบรรจง ระบบคอมพิวเตอร์ควรมีพฤติกรรมที่เสื่อมถอยลงอย่างค่อยเป็นค่อยไปเมื่อมีงานโหมเข้าสู่ระบบต่างๆอยู่ดีๆอัตราตอบสนองก็เกิดเลวลงอย่างกะทันหันเพียงเพราะมีงานเข้าสู้ระบบเพียงสองสามงานเท่านั้น แต่ในระบบปฏิบัติการบางประเภทใช้วิธีป้องกันปัญหานี้โดยจำกัดจำนวนงานที่จะโหมเข้าสู่ระบบแต่มิให้งานล้มระบบ
10.เสื่อมถอยโดยบรรจง ระบบคอมพิวเตอร์ควรมีพฤติกรรมที่เสื่อมถอยลงอย่างค่อยเป็นค่อยไปเมื่อมีงานโหมเข้าสู่ระบบต่างๆอยู่ดีๆอัตราตอบสนองก็เกิดเลวลงอย่างกะทันหันเพียงเพราะมีงานเข้าสู้ระบบเพียงสองสามงานเท่านั้น แต่ในระบบปฏิบัติการบางประเภทใช้วิธีป้องกันปัญหานี้โดยจำกัดจำนวนงานที่จะโหมเข้าสู่ระบบแต่มิให้งานล้มระบบ
จุดประสงค์ต่างๆดังกล่าวนี้ ทำให้ระบบปฏิบัติการสำหรับระบบคอมพิวเตอร์ขนาดใหญ่ซับซ้อนมากเพราะความต้องการดังกล่าวมักขัดแย้งกัน เช่น
ประโยชน์ใช้สอยของระบบจะตกลงหากต้องการให้อัตราสนองดีขึ้น โดยเฉพาะงานที่มีการตอบโต้ผ่านทางเทอร์มินัลเพราะงานเหล่านี้ไม่ค่อยใช้เครื่อง
เรามาพิจารณาการเปลี่ยนสถานะของโปรเซส ดังในรูป

รูปการเปลี่ยนสถานะของโปรเซส

รูปการเปลี่ยนสถานะของโปรเซส
มีโปรเซสอยู่ในสถานะพร้อมเพื่อรอให้ซีพียู เมื่อซีพียูว่างโปรเซสที่อยู่ต้นคิวในสถานะพร้อมจะได้ครอบครองซีพียูเข้าไปอยู่ในสถานะรัน โปรเซสอยู่ในสถานะรันได้นานไม่เกินเวลาควอนตัม ถ้าโปรเซสต้องรอเหตุการณ์บางอย่างโดยไม่มีความจำเป็นต้องใช้ซีพียูโปรเซสนั้นจะถูกย้ายไปอยู่ในสถานะติดขัดแต่ถ้าโปรเซสอยู่ในสถานะรันจนครบเวลาควอนตัม โปรเซสนั้นจะต้องออกไปรอใช้งานซีพียูในสถานะพร้อมเปิดโอกาสให้โปรเซสอื่นได้ครอบครองซีพียูบ้างไม่ว่าโปรเซสจะปลดปล่อยซีพียูเนื่องจากหมดเวลาควอนตัม หรือมีการรอเหตุการณ์บางเหตุการณ์ ซีพียูจะต้องถูกครอบครองโดยโปรเซสอื่นที่รออยู่ในสถานะพร้อม นั้นหมายความว่าซีพียูต้องเปลี่ยนจากการทำงานหนึ่งไปเป็นอีกงานหนึ่ง เราเรียกเหตุการณ์นี้ว่าการเปลี่ยนสถานะ (Context switching) ของซีพียู การเปลี่ยนสถานะซีพีถือได้ว่าเป็น”ค่าใช้จ่าย”(Overhead)ของระบบค่าใช้จ่ายนี้หมายถึงงานที่ระบบจำเป็นต้องกระทำเพื่อจุดประสงค์บางอย่าง ระบบต้องใช้เวลาในการทำงานเหล่านี้ ทำให้เสียเวลาในการทำงานของโปรเซสของผู้ใช้ไปด้วย ดังนั้นถ้าระบบมีงานที่จำเป็นต้องทำมากระบบก็จะเสียเวลาไปมาก สำหรับการเปลี่ยนสถานะของซีพียูจะมีการสูญเสียเวลาสำหรับหลักๆ 3 งาน คือ
1.เก็บค่ารีจีสเตอร์และสถานะของเครื่องไว้ใน PCB ของโปรเซสที่กำลังจะปล่อยซีพียู
2.คัดเลือกโปรเซสในสถานะพร้อมเพื่อให้มาครอบครองซีพียู
3.โหลดค่ารีจีสเตอร์และสถานะของเครื่องจากPCBของโปรเซสใหม่การคัดเลือกหาโปรเซสที่จะเข้าไปอยู่ในสถานะรันเมื่อซีพียูว่างนั้น ถือได้ว่าเป็นการจักสรรซีพียูให้กับโปรเซสต่างๆซึ่งเป็นหน้าที่ของระบบปฏิบัติการ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น