--- title: ระบบปฏิบัติการและเทคโนโลยีฯ subtitle: date: วันพฤหัสบดีที่ 30 มิถุนายน 2565 เวลา 13.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์พิเชนทร์) พี่ล่ามถอดหน้ากากได้ไหมครับ หัวข้อของการจัดการ Process นะครับ เราเคยได้ยินไหม Process ครับ Process ถามหมู่ 1 เคยได้ยินไหมครับ คำนี้เรียนตั้งแต่มัธยม Process คืออะไร เอ่ย Process Process เขาบอกว่านะครับ เขาให้ความหมาย ความหมายเยอะแยะนะครับ แต่ความหมายที่เราใช้กันนะครับ เอกสารยังไม่ได้หรือ อยู่กับใครเอกสารหมดหรือยัง อยู่กับใครครับ เอกสาร หรืออยู่กับใครมีไหม อยู่กับใครครับ เอกสารเหลือน่ะ หมดไหมครับ บทที่ 2 น่ะ อยู่กับใคร เหลืออยู่กับใคร มันต้องเหลือสิ มันตั้ง 50 ชุดนะครับ ถ่ายมาอยู่ไหนล่ะ ห้อง 1 มันยังไม่เห็นเอกสารอาทิตย์ที่แล้ว วางไว้ที่โต๊ะไหนหรือหมู่ 1 หมู่ 1 หมู่ 1 ส่งไว้ที่ไหน ยังไม่ส่งใช่ไหม เห็นแต่ของห้อง 2 แต่ผมตรวจแล้วนะครับ ผม ตรวจแล้ว ก็คืนให้แล้วนะครับ ใครมาช้ามาเอานะครับ เอกสารที่ผมตรวจนะครับผม จะไม่ได้ตรวจให้ทุกข้อนะครับ ผมจะเซ็นให้เฉย ๆ นะครับ เป็นการตรวจเช็กแต่ละสัปดาห์ให้เฉย ๆ นะครับ เป็นการตรวจเช็กแต่ละสัปดาห์ แล้วก็เราเอาไว้อ่านสอบนะครับ เพราะว่าตอนนี้เราเรียน 2-3 สัปดาห์แล้วนะครับ จะครบเดือนแล้ว เดี๋ยวสัปดาห์หน้านะครับ ห้องหมู่ 2 จะไม่อยู่นะครับ ผมก็ไม่อยู่นะครับ สัปดาห์หน้าเราไม่มีนะครับ เราจะยกเลิกคลาสนะครับ เพราะว่าหมู่ 2 จะไปศึกษาดูงานข้างนอกนะครับ ผมก็ไปด้วยนะครับ ทั้งวันนะครับ สัปดาห์ถัดไปปิดใช่ไหม หยุด สัปดาห์ถัดไปอีกเรียน สัปดาห์ถัดไปหยุดอีก เดือนนี้หยุดเยอะนะครับ มาดูนะครับ Process นะครับ Process Process เขาให้ความหมายว่า Process คือ โปรแกรมที่กำลังถูก Execute นะครับ Execute คืออะไร เคยได้ยินไหมครับ เขาบอก Process คือ โปรแกรมที่กำลังถูก Execute เป็นอย่างไรครับ Execute ผมเชื่อว่าพวกเราจบมัธยมศึกษาปีที่ 6 มาแล้ว มันต้องเคยได้เรียน เรียนหรือยังครับ หมู่ 1 เรียนแล้วใช่ไหมนะครับ ถามตอบด้วยเด้อ ถามตอบมีปฏิสัมพันธ์ด้วยนะครับ เพราะเราทุกวันนี้นะครับ เราค่อนข้างขาดปฏิสัมพันธ์นะครับ ผมเข้าใจนะ พวกเราเป็น Generations นะครับ เราเจนอะไรครับ เรา Genaration อะไร Gen Y หรอ แม่นหรอ ใช่ไหม ใช่หรือ เรา Gen y หรือ Gen อะไรดี ยังไม่รู้อีกตัวเอง Gen อะไร ยังไม่ถามห้อง 2 เดี๋ยวไปถามห้อง 2 ถามห้อง 1 ก่อน ตอนนี้พวกเรามีปัญหานะครับ เรื่องของความแตกต่างระหว่าง Genaretion รุ่นผมนี่ คุยกับพวกเรานี่ ไม่ค่อยรู้เรื่อง จริงไหม เราคนละ Generation นะครับ รุ่นพวกเรานี่ ความอดทนน้อยนะครับ รอได้ไหม รอไม่ได้นะครับ จะเอาเดี๋ยวนี้จะกินข้าวก็จะกินเดี๋ยวนี้ ถ้าจะให้ไปต่อคิวก็ไม่ไปนะครับ เห็นไหมครับ มันถึงเกิดอะไรขึ้นมา ขายพวก Grab พวก Food Panda ใช่ไหม จากที่ผมอ่านนะครับ อ่านทดสอบก่อนเรียนพวกเรา ก็พื้นฐานพอ ๆ กันนะ พอ ๆ กันนะครับ ก็คือยังไม่เข้าใจความหมาย ยังไม่เข้าใจหลักการของคอมพิวเตอร์มาก ก็ไม่เป็นไรนะครับ จริง ๆ อย่างที่ผมบอก เราควรจะจัดให้เรียนอยู่ชั้นปีที่ 3 นะครับ แต่เราก็มาจัด ปี 1 เทอม 1 ก็ไม่เป็นไรนะครับ ก็ปรับเอา เขาบอกว่า Process คือ โปรแกรมที่กำลังถูก Execute สัปดาห์ก่อนใช่ไหม พอเราส่งข้อมูลจากคีย์บอร์ด ใช่ไหมครับ ส่งจากคีย์บอร์ดปุ๊บ เข้าไปไหนครับ คิดตามเข้าไปไหนคีย์บอร์ด คือ Input ใช่ไหม พอเข้าไปในคอมพิวเตอร์เราเรียกว่าเข้าไปอะไร ไปประมวลผล ใช่ไหมครับ ประมวลผลเสร็จ ทำอะไรต่อ ก็ไปแสดงผลใช่ไหม นี่คือหลักของมัน Input ประมวลผล Process ใช่ไหม แล้วก็ออกไป Output เขาบอกว่า Process คือ โปรแกรมกำลังถูก Execute นั่นหมายความว่า... บางคนให้ความหมายว่าเป็นโปรแกรมที่เข้าไปครอบครอง CPU หรือเข้าไปใช้งาน CPU ก็แล้วแต่ เอกสารตำราแต่ละคนแต่งนะครับ คือ หลักการคำว่า "Process" ก็คือโปรแกรมที่กำลังถูก Execute ในคอมพิวเตอร์เรา มันจะมีไฟล์อยู่ไฟล์หนึ่ง เป็นนามสกุล ไฟล์ทุกไฟล์ต้องมีนามสกุล ดูรายละเอียดต่อไปนะครับ ก็คือนามสกุลที่ .exe เคยเห็นไหม เคยสังเกตไหม เวลาเราใช้หรือไม่รู้เปิดขึ้นมาใช้แล้วก็ปิดนะครับ เราอย่าไปดูในสไลด์อาจารย์บ้างนะ อาจารย์ก็พูดไปเรื่อยนะ มันไม่ได้อยู่ในนี้ คราวนี้ถ้า Process ถ้าโปรแกรมเดียว โปรแกรม... ทำงานปุ๊บเป็นอย่างไรครับ ยุ่งยากไหม Input เสร็จ เข้าไปประมวลผลเสร็จ แสดงออก ถ้าโปรแกรมเดียวไม่มีปัญหานะครับ แต่ถ้าเมื่อไหร่ก็ตามที่มีหลาย ๆ โปรแกรมทำงานพร้อมกัน ที่เขาบอกว่าเป็นระบบหลายโปรแกรม เขาบอก Process อาจเปรียบได้กับรถยนต์ คือ มีรถยนต์หลายคัน และตัวของ CPU เอง ก็เปรียบเหมือนคนขับ เหมือนกับว่าคอมพิวเตอร์เรา แต่มีคนต้องการใช้งานเยอะ โปรแกรมเยอะ ต้องทำอย่างไรครับ วิธีการมัน ถ้าเป็นเราเราทำอย่างไรครับ เช่น มีรถอยู่ 5 คัน มีคนขับอยู่คนเดียว ทำอย่างไรจึงจะขับเข้า ๆ พร้อมกันได้ ลากรถ 4 คัน คนอื่นล่ะคนอื่นล่ะทำอย่างไร คนอื่นมีวิธีการอื่นไหมครับ หลักการคอมพิวเตอร์เวลาทำงาน ใช่ไหม โปรแกรมจะเข้าไปทำงาน เข้าไปครอบ CPU ได้ที่ละ 1 โปรแกรม ก็เหมือนคนเรานี่ขัยรถ ขับได้ทีละคัน จะลากจะพ่วง ทำไม่ได้ หลักการทำไม่ได้ ทำอย่างไรดีล่ะ วิธีการก็คือเขาจะขึ้นไปขับคันที่ 1 จากราชภัฏสกลนคร แล้วไปจอด กลับมาขับครั้งที่ 2 ก็มา... คันที่ 4 คันที่ 5 นะครับ พอถึงขับไปใหม่ขับไปถึงหน้าประตูเมือง ย้อนไปที่ 1, 2, 3, 4, 5 อย่างนี้นะครับ นี่คือหลักการ แต่ เวลาทำงานจริงเป็นอย่างไรครับ คอมพิวเตอร์ทำงานด้วยความเร็วสูงไหม หายใจทันไหมครับ ทันไหม ไม่น่าทันนะ การทำงานจริง ๆ มันจะทำงานเหมือนที่อาจารย์ยกตัวอย่างเมื่อกี้ ไปทีละคัน ๆ แต่พอมาทำงานจริงมันทำงานได้ความเร็วสูง มันเลยเหมือนประหนึ่งว่ามันไปพร้อม ๆ กันเลยนะครับ นี่คือหลักการทำงานของคอมพิวเตอร์นะครับ อย่างยกตัวอย่างนี้ ระบบ CPU เป็นคนขับโปรแกรมหลาย ๆ โปรแกรม เหมือนรถนะครับ ทำอย่างไรให้ไปด้วยความเร็วสูง คราวนี้มาดูองค์ประกอบของ Process นะครับ Process มีองค์ประกอบอะไรบ้างนะครับ พอเรียนจบบทนี้นะครับ นักศึกษาก็จะงง เริ่มงงนะ มันเริ่มเหมือนบทที่ 1 ใช่ไหม พื้นฐานนะครับ งงไม่ต้องตกใจครับ ค่อย ๆ ปรับนะครับ ปรับสภาพแวดล้อม ปรับสภาพหลาย ๆ อย่างนะครับ แล้วตอนนี้ห้อง Lab เราก็ยังใช้ไม่ได้ใช่ไหม อาจารย์เข้าแจ้งหรือยังว่าใช้ได้เมื่อไหร่ อาคาร 7 เรา ไม่แจ้งเพราะว่าเราไม่รู้ว่าจะใช้ได้เมื่อไหร่ ผมแวะไปเมื่อวานก็ไม่มีทีท่าว่าจะได้ใช้เลยนะ คนทำก็นั่งทำง็อกแง็ก ๆ อยู่คน 2 คน เทอมนี้ผมว่าไม่น่าทันนะ น่าจะได้ใช้เทอมหน้านะครับ เทอมหน้าก็ เราอยากได้เทอมหน้า ก็เป็นรุ่นพวกเราได้ใช้นะครับ เทอมหน้าองค์ประกอบตัวที่ 1 ของ Process นะครับ ก็คือ 1. Process ทุกวตัวจะต้องมีชื่อและก็หมายเลขประจำตัวนะครับ Process ID นะครับ และจะต้องไม่ซ้ำกันนะครับ เหมือนชื่อไฟล์น่ะ ชื่อไฟล์ซ้ำกันได้ไหมครับ ชื่อไฟล์นามสกุลไฟล์นะครับ องค์ประกอบ Process อีกตัวหนึ่ง คือ ชื่อและหมายเลขประจำตัวเ หมือนหมายเลขบัตรประจำตัวเรา เราซ้ำกันได้ไหมครับ ได้ไหม ไม่ได้นะครับ แต่ถ้าถามย้อนกลับว่าชื่อและนามสกุลมีโอกาสซ้ำกันได้ไหม ได้นะครับ เพราะอะไร เช่น อาจจะมีพิเชน จันทร์ปุ่ม เหมือนกัน เพราะอะไรครับ เพราะอาจจะมีญาติพี่น้องนามสกุลเหมือนกัน บังเอิญว่าชื่อพิเชนทร์มันเพราะ เลยตั้งเหมือนกัน เลข 1 2 3 หลักห้ามซ้ำกัน องค์ประกอบอันที่ 2 ของ Process ทุก Process มี Code นะครับ เป็นโค้ดนะครับ เป็น code เป็นรหัส คำว่า "โค้ด" ก็คือจะต้อง Execute ได้ทันที คือภาษาเครื่องแปลเรียบร้อยแล้วนะครับ องค์ประกอบอันที่ 3 ก็คือข้อมูล Data ข้อมูลนี้นะครับ เขาบอกว่าโปรแกรมต้องการหรือจัดการข้อมูลอาจจะเป็นของ Process ใด Process หนึ่งก็ได้ หรืออาจจะใช้ข้อมูลร่วมกันกับ Process ใช้ร่วมกันได้ ตัวอย่างของ Process ที่ใช้ข้อมูลร่วมกัน เช่น Process ในระบบฐานข้อมูลนะครับ เช่น ฐานข้อมูลระบบงานทะเบียนราชภัฏสกลนคร เช่น เรามารายงานตัวเป็นนักศึกษาปั๊บนะครับ ขึ้นทะเบียนปุ๊บ พอเราไปห้องสมุดก็ใช้ฐานข้อมูลเดียวกัน ในการเงินก็ใช้ฐานข้อมูลชุดเดียวกันนะครับ ศูนย์คอม (พิวเตอร์)ไปกอง ก็ฐานข้อมูลอันเดียวกันนะครับ โดยใช้ฐานข้อมูลร่วมกันนะครับ องค์ประกอบอันที่ 4 ของ Process ก็คือ Process Control Block นะครับ หรือบล็อกควบคุมโปรแกรม ระบบปฎิบัติการจะกำหนดเนื้อที่บางส่วน กำหนดเนื้อที่บางส่วนในหน่วยความจำ ทำเป็น Process Contoln Blcok หรือ PCB นะครับ กำหนดไว้ทำไมนะครับ ก็คือ 1. กำหนดไว้เป็น Process กำหนดไว้เพื่อเป็นเก็บหมายเลขความสำคัญของ Process อยู่ใน PCB นะครับ ใน Process แต่ละตัวจะมีบล็อกควบคุมโปรแกรมหรือ PCB อยู่นะครับ ซึ่ง PCB นี้ก็จะเก็บสถานะของ Process แล้วก็เก็บลำดับความสำคัญของ Process เอาไว้นะครับ นอกจากนั้นก็ยังเก็บสารสนเทศที่เกี่ยวกับการจัดการหน่วยความจำของ Process ข้อมูลรับส่งข้อมูลของ Process หรือเก็บข้อมูลสำคัญของ Process ใน PCB นั่นเองนะครับ พื้นที่จัดเก็บ คือ Register นะครับ Register คือ หน่วยความจำขนาดเล็ก ที่ในหน่วยความจำส่วนในรายละเอียดต่าง ๆ อาจารย์จะพูดในบทที่ 3, 4, 5 นะครับ อันนี้พูดคร่าว ๆ ก่อน ให้พวกเรามอภาพกว้าง ๆ ครับผม ดูต่อนะครับ องค์ประกอบต่อมานะครับ ของ Process ก็คือ Program Status Words นะครับ หรือ PSW นะครับ Program Status Words นะครับ เป็นตัวควบคุมลับดับของ Execute ของ Process มันจะบอกว่า Process นี้จะเข้าไปครอบครอง CPU ลำดับที่เท่าไรนะครับ ต่อมานะครับ คุณสมบัติของ Process นะครับ แต่ละ Process จะมีคุณสมบัติดังต่อไปนี้นะครับ ก็คือ 1. Process ทุกตัวจะมีบำดับความสำคัญ ต่างกันนะครับ Process ทุก Process จะมีลำดับความสำคัญต่างกัน เช่น Process A อาจจะมีความสำคัญมากกว่า Process B หรือ Process ของผู้ดูแลระบบ อาจจะมีความสำคัญมากกว่าของ User อย่างนี้ อันที่ 2 คุณสมบัติอันที่ 2 อำนาจหน้าที่ Process ทุกตัว จะมีอำนาจหน้าที่ที่ต่างกัน เช่น Process ของผู้ดูแลระบบมีอำนาจ มากกว่าของ User อย่างนี้เป็นต้นนะครับ หรือ คุณสมบัติอื่น ๆ ที่ OS กำหนด อันนี้ขึ้นอยู่กับ OS ครับ เช่น ใช้ Windows 8 ใช้ Windows 10 คุณสมบัติของ Process ก็จะต่างออกไป ยกตัวอย่างเช่นนะครับ Windows 8 สามารถตั้งชื่อได้ความยาวกี่ตัวอักษรรู้ไหม เคยไหม อาจารย์จะยังไม่บอกว่ากี่ตัวอักษรนะ เราสามารตั้งชื่อได้นะ นะครับ กับ Windows 11 ต่างกันไหม ลองดูนะ ลองดูจะไปลองตอนภาคปฏิบัติ ลองสิว่าเราถ้าเกิดเป็น Windows 11 สามารถตั้งชื่อความยาวกี่ตัวนะครับ นี่คือคุณสมบัติที่แต่ละตัวที่ Process เป็นคนกำหนดนะครับ เมื่อกี้องค์ประกอบของ Process นะครับ คราวนี้ องค์ประกอบของ Process นะครับ สไลด์นะครับ อยู่กับพี่พลอยนะ พลอยค่อยเอาขึ้นให้น้องนะครับ อาจารย์ลืมอัปลงในไลน์กลุ่มนะครับ แวะดูก่อนนะครับ คราวนี้มาดูสถานะของ Process นะครับ Process ก็แบ่งออกเป็นสถานะได้ดังต่อไปนี้นะครับ สถานะพร้อมเป็นอย่างไร สถานะพร้อมเป็นสถานะพร้อมที่ Process พร้อมที่จะใช้ CPU ทันทีที่ OS มอบหมายให้ รอแล้วเหมือนเรารอคิวแล้ว ยืนรอแล้ว รอเข้าไปครอบครอง CPU หรือรอเข้าไปใช้งาน CPU เราเรียกว่า "สถานะพร้อม" เช่น เราจะไปเข้าห้องน้ำ ห้องน้ำเป็น CPU แล้วนะครับ เรายืนรอคิวนี่ เราพร้อมแล้ว พร้อมจะเข้าไปใช้งานเราเรียกว่า "สถานะพร้อม" นะครับ สถานะที่ 2 คือ สถานะ Run Run คืออะไรครับ สถานะ Run เป็นสถานะ Process กำลังครอบครอง CPU อยู่ ก็คือเข้าไปครอบครอง CPU ที่เราเรียกว่า Run Progarm นี่คือสถานะ Run นะครับ สถานะที่ 3 นะครับ สถานะติดขัด เขาบอกว่าสถานะติดขัด เกิดจากการที่ Process หยุดรอเหตุการณ์ใดเหตุการณ์หนึ่งให้เกิดขึ้น โดย Process ไม่จำเป็นต้องใช้ CPU และมันต้องไปครอบครอง CPU เราไม่รู้เหตุการณ์นั้นคือเหตุการณ์อะไร ไม่รู้ยกตัวอย่างเช่น ผมกับแม็กกี้หรือกับอุบล ผมเป็น Process A ไปยืนรอคิวในสถานะพร้อม อุบลรอผมคนที่ 2 ผมเปลี่ยนจากสถานะพร้อม เข้าเป็นสถานะ Run ก็คือคนที่ 2 ผมเข้าไปครอบครอง CPU อุบลก็รออยู่สถานะพร้อม ในจังหวะที่ผมกำลังครอบครอง CPU อยู่ บังเอิญว่าผมจำเป็นจะต้องไปพิมพ์งาน ไปพิมพ์เอกสาร ช่วงที่พิมพ์เอกสาร ผมจะต้องออกไปที่พรินต์เตอร์ไปที่พรินเตอร์ แล้วช่วงที่ออกไปที่พรินเตอร์นี่ ต้องใช้งาน CPU จังหวะนี่ล่ะครับ เรียกว่าสถานะติดขัด คือเกิดเหตุการณ์ที่ตัวของ Process ออกไปติดต่ออุปกรณ์รอบข้าง จังหวะนี้อุบลก็จะเข้ามาแทนที่ผม นึกออกไหมนะครับ ถ้าเขาถามว่าสถานะติดขัดเกิดจากอะไร เราก็บอกว่าเกิดจากสถานะที่ Process เข้าไปครอบครอง CPU แล้วนะครับ แต่เกิดเหตุที่ Process ไม่จำเป็นจะต้องครอบครอง CPU ต่อ หรือไปติดต่ออุปกรณ์ข้างนอกอุปกรณ์รอบข้างแทน ต้องปล่อย CPU ออกไป Process ใหม่ก็เข้ามาครองแทนที่นะครับ นี่คือสถานะติดขัด สถานะต่อมานะครับ สถานะพัก เขาบอกสถานะพัก ก็คือสถานะที่ Process ไม่มีการทำงานใด ๆ เลย ก็คือจบสมบูรณ์ เช่น ผมไปครอบครอง CPU ทำงานเสร็จสิ้นแล้วปุ๊บ ออกจบเลย มาทำงานต่อ ได้พักจบนะครับ ซึ่ง Process นั้นนะครับ สามารถที่จะเปลี่ยนสถานะหนึ่งไปสถานะหนึ่ง ได้ตลอดเวลานะครับ ขึ้นอยู่ว่าสถานะ ณ ตรงนั้น อยู่ในสถานะอะไร อาจจะพร้อม พร้อมเสร็จเข้าไป Run Run เสร็จปุ๊บ ต้องไปติดต่ออุปกรณ์รอบข้าง เป็นสถานะติดขัด พอติดขัดเสร็จก็กลับไปพร้อมใหม่ พร้อมเสร็จเข้าไป Run Run เสร็จแล้ว จบแล้วไปพักนะครับ มันจะเปลี่ยนไปอย่างนี้ตลอดเวลานะครับ อันนี้อาจารย์อธิบายไปแล้วนะครับ เมื่อกี้สไลด์นะครับ ลองดูรูปนะครับ เห็นไหมครับ ในรูปภาพอธิบายการเปลี่ยนสถานะของ Process ใช่ไหม เหมือนที่อาจายร์อธิบายไปเมื่อกี้ ยืนต่อคิวเลย 1 2 3 4 5 พร้อมไหม พร้อม พอพร้อมเสร็จ ได้เวลา โอเค Run ทีละตัว ๆ ทีละโปรแกรม ทีละ Process ถ้ามีอะไรเกิดขึ้น จบครับ พักเลย นี่คือการเปลี่ยนสถานะของ Process แต่ถ้าเกิดเหตุการณ์ใดเหตุการณ์หนึ่งเกิดขึ้นนะครับ เพราะอะไรครับ รูปนี้ รูปนี้ มาพร้อมมา Run แล้วก็จบ ถ้าสมมติว่า Process แต่ละตัวเข้าไป Run ใช้เวลาไม่เท่ากันจะเกิดอะไรขึ้นนะ เช่น Process A เช่น ผมพร้อมเข้าไป Run 2 วินาที แล้วก็จบ มีอะไรเกินขึ้นไหม ไม่มี คราวนี้อุบล อุบลมาต่อคิวมาพร้อม อุบลเข้าไป Run ปุ๊บ อุบลบอกผมใช้เวลา 3 ชั่วโมง เป็นอย่างไรครับ เราก็จบ ใช่ไหม คราวนี้มิ่ง 3 คนที่ 3 มาต่อคิวพร้อม แต่ปรากฏว่ามิ่งต้องการใช้เวลาแค่ 1 วินาที แต่ต้องรออุบล 3 ชั่วโมง นึกออกไหม นึกภาพตามนะ จบ ดังนั้น ในระบบคอมพิวเตอร์ของเรานั้น มันจะต้องไม่ให้เกิดเหตุการณ์นี้เกิดขึ้น มันจึงต้องกำหนดเวลาขึ้นมา คุณจะต้องเข้าไปเวลานี้ แล้วจบนะ เราเรียกเวลานี้ว่าเวลาควอนตัม ถ้าย้อนถามกลับว่าเวลาควอนตัมคืออะไร คืออะไรครับ คือเวลาที่ถูกกำหนดไว้ว่า Process แต่ละตัว สามารถเข้าไปครอบครอง CPU ได้เป็นเวลาเท่าไร หรือนานเท่าไร เช่น เรากำหนดเวลาควอนตัมไว้ 5 วินาที สมมตินะ 5 วินาที แสดงว่า Process ทุกตัวจะสามารถเข้าไปครอบครองได้แค่ 5 วินาที เช่น เมื่อกี้อย่างเมื่อกี้ ผม Process A เข้าไป 3 วิฯ จบไหม จบ เพราะว่าเราให้ 5 วินาที ใช่ไหม ควอนตัมอุบลก็จะเข้าไปได้แค่ 5 วิ (นาที) แล้วอุบลต้องย้อนกลับไปพร้อมใหม่เพิ่มให้ มิ้งเข้าไปใหม่ นี่คือหลักการของมันนะครับ มันก็จะเกิดรูปนี้ขึ้น ใช่ไหม นี่นะครับ พร้อม พออเราเอาเวลาควอนตัมมาจับ เข้าไป Run ได้แค่ 5 วิฯ นะ ถ้าเกินนั้นนะ มันจะกลับไปวนใหม่ มันเลยทำให้เกิดระบบหลายโปรแกรมนะครับ แต่เวลาเราทำงานกับคอมพิวเตอร์ มันเป็นอย่างไรครับ แต่ในความรู้สึกเราเป็นอย่างไรครับ มันทำงานด้วยความเร็วสูง มันเลยเหมือนประหนึ่งว่าอย่างนี้จริงหรือ ใช่ไหม เราหายใจแทบไม่ทัน สมัยที่อาจารย์เรียนเขียนโปรแกรมนะครับ เมื่อเกือบ 30 ปีที่แล้วนะ เวลาเรา Run โปรแกรม เราจะกด Escape Escape กด F8, F9 ปุ๊บ นึกได้ผ่านไป 2 นาที ไม่ถูกกดยกเลิก แต่โปรแกรมเราทุกวันนี้ เราคลิกปุ๊บ ประมวลผลปั๊บ มันมีความเร็วสูงนะครับ ตามรูปนี้นะครับ พยายามมองตามนะ เพราะว่าเราจะเรียนอีก 3 ครั้ง แล้วก็จะสอบกลางภาคนะครับ สอบกลางภาค พอสอบกลางภาคเสร็จ อาจารย์ก็จะยกคลาส ไปอยู่อาคาร 7 เพื่อเรียนภาคปฏิบัตินะครับ ภาคปฎิบัติเราก็จะเรียนแค่สัปดาห์ละ 8 คน เราจะไม่เรียนทั้งห้องแบบนี้นะครับ คราวนี้มาดูอีกสถานะ หนึ่งนะครับ ที่เราพูดไว้ก็คือสถานะติดขัด เห็นไหมครับ ดูรูป มาพร้อม เห็นไหม พร้อมปุ๊บ มา Run เข้าไป Run จะหมดเวลาควอนตัม หรือไม่หมดก็แล้วแต่ บังเอิญว่า Process นั้นไปติดต่อกับอุปกรณ์รอบข้าง ติดต่อกับ Printer ช่วงที่ติดต่อพรินเตอร์ไม่ได้ทำงานก็จะถูกผลักออกมาเป็นสถานะติดขัด พอติดขัดเสร็จก็จะย้อนกลับไปพร้อมใหม่นะครับ นี่คือสถานะติดขัด เขาบอกว่าการเปลี่ยนสถานะทั้ง 3 ของ Process ก็คือ พร้อม Run ติดขัด เป็นการเปลี่ยนในสภาพทั่วไปนะครับ พร้อม Run ติดขัด แต่ถ้าเกิดเหตุการณ์ที่ผิดปกติขึ้นในระบบปฏิบัติการหรือระบบคอมพิวเตอร์เรา ระบบปฏิบัติการอาจจะย้าย Process ใดสถานะหนึ่ง ให้ไปอยู่สถานะพักก็ได้ เพราะสถานะพักเราบอกว่ามันหยุดนิ่งเลย ไม่ทำงานต่อแล้ว ก็คือเข้าไป Run แล้วก็จบใช่ไหม แต่ถ้าเกิดเหตการณ์ขึ้น จากสถานะพร้อม Run ติดขัด ไปพักก็ได้นะครับ ซึ่งจะเกิดขึ้นได้ก็ด้วยสาเหตุดังต่อไปนี้นะครับ 1. เกิดการทำงานของระบบผิดพลาด เช่น สั่ง ๆ ไป ปรากฏว่าระบบ Error ผิดพลาด ไปกดสตางค์ 1 บาท ออกมา 10,000 บาท ดีไหมโทมัส ดีไหมเอาไหม อย่าไปเอานะลูก เขาจับเจ้าเด้อ ต้องไปแจ้งธนาคารนะครับ ผิดกฎหมายนะครับ นี่คือระบบผิดพลาด มันก็จะย้ายทุกอย่างไปที่สถานะพัก จนกว่าเหตุการณ์ปกติเริ่มต้นใหม่นะครับ สาเหตุอันที่ 2 นะครับ ที่จะเกิดสถานะพักนะครับ ผู้ใช้ต้องการหยุดการทำงานชั่วคราว ทำ ๆ อยู่เราสั่งหยุดอย่างนี้ มันก็จะไปอยู่สถานะพัก เช่น Run อยู่กดยกเลิก อย่างนี้ สาเหตุอันที่ 3 นะครับ ในระบบมีงานมากเกินไป สั่งเข้าไป ๆ ๆ Over load Hank Error ก็ย้ายไปสถานะพักนะครับ นี่คือสาเหตุหลัก ๆ 3 สาเหตุ ทำให้การเปลี่ยนสถานะ จากสถานะพร้อม Run ติดขัดไปอยู่ในสถานะพัก ห็นไหมครับ จากรูปนะครับ พร้อม Run ติดขัด แต่ถ้าเกิดสาเหตุจากเมื่อกี้ ระบบเกิดทำงานผิดพลาด ผู้ใช้สั่งหยุดเอง ระบบทำงานมากเกินไปปุ๊บ มาพักเลยนะครับ ดังนั้นนะครับ เราก็สามารถแยกสถานะของ Process เป็น 2 ส่วน ก็คือส่วนที่ 1 พร้อม Run ติดขัด ใช่ไหม ส่วนที่ 2 คือ พักนะครับ คราวนี้มาดูลำดับชั้นของ Process นะครับ Process ก็มีลำดับชั้นนะครับ เขาบอกว่าระบบปฏิบัติการ หรือ OS นะครับ ผมใช้คำย่อว่า "OS" เขาบอกว่า OS เอง ก็ประกอบด้วยหลาย ๆ Process ถ้าหลายคนสับสน ถ้าอาจาย์ครับ Process เราจะเรียกว่าโปรแกรมได้ไหม ได้ไหม ได้ไหมครับ บางคนไม่รู้เหมือนกันนะครับ เขาบอกว่า OS เอง ก็ประกอบไปด้วยหลาย Process 1 2 3 เยอะแยะมากมาย เขาบอกว่าเมื่อผู้ใช้สั่งงาน เอาสีอะไรดี พื้นสีดำไปไม่เป็นเลยนะครับ ไม่เป็นไรดูต่อ เขาบอกว่าเมื่อ Process ประกอบด้วยหลายขั้นนะครับ เมื่อผู้ใช้สั่งงานหรือให้โปรแกรม Run OS หรือระบบปฏิบัติการจะสร้าง Process สำหรับงานนั้นขึ้นมานะครับ ซึ่ง Process สำหรับผู้ใช้นี่นะครับ เป็น Process ย่อยของ นึกออกไหม เขาบอกว่า Process เอง ก็มีเยอะแยะมากมายของมันนะครับ ซึ่งเราสำหรับผู้ใช้สั่งงานปุ๊บ เช่น อุบลบอกอุบลต้องการเข้าไปครอบครอง CPU ระบบปฏิบัติการก็จะสร้าง Process หนึ่ง เข้ามาในระบบปฏิบัติการสำหรับงานนะครับ นั่นแสดงว่า Process ของอุบลนั้น ก็เป็น Process ย่อยของระบบปฏิบัติการ นึกออกไหมครับ นึกตามนะ นะครับ ซึ่ง Process OS ก็จะมีคุณสมบัติเหมือนอื่น ๆ ทั่วไปนะครับ เขาว่า ดังนั้น Process อื่น ๆ สามารถมี Process ย่อย ๆ ไปอีกเรื่อย ๆ ได้นะครับ เขาเรียกว่าการให้กำเนิด นึกออกไหม ตัวอย่างเช่นนะครับ อุบล ต้องการเข้าไปครอบครอง CPU อุบลเป็น Process หนึ่งแล้ว ตัวอาจารย์เองเป็น OS เป็นระบบปฏิบัติการ เมื่ออุบลจะเข้าไปครอบครอง CPU หรือเข้าไปสถานะ Run จะถูกผม OS ตั้ง Process หนึ่งขึ้นมาเพื่อไปกำกับดูแลอุบลนะครับ นี่เราเรียกว่า "การให้กำเนิด" แต่พออุบลบอกเข้าไปครอบครอง CPU แล้ว เข้าไปสถานะ Run แล้ว อุบลก็จะมี Process ย่อยต่อไปอีก นึกออกไหม ซึ่งไม่รู้ว่ามีอะไรบ้าง เราไม่รู้ ซึ่งตัวของ Process ย่อย ที่เราเรียกว่า "การให้กำเนิด" นั้นเราจะเรียกว่า "โปรเซสพ่อ" นะครับ ส่วน Process ย่อย ที่สร้างต่อจาก Process ผู้ให้กำเนิดเราเรียกว่า Process เป็นลำดับชั้นนะครับ เป็นลักษณะแบบโครงสร้างแบบต้นไม้ ดูรูปนี้เห็นไหมครับ นี่คือลำดับชั้นของ Process นะครับ นี่คือลำดับย่อยของ Porcess หัวข้อต่อมานะครับ ความสัมพันธ์ระหว่าง Process เราไม่พักเลยนะ เราไม่พักเลยนะครับ พี่ล่ามคนเดียวนะครับ ขอพัก 5 นาทีนะครับ พี่ล่ามจะได้ไปทานน้ำ ไปเข้าห้องน้ำ ทานน้ำ แล้วก็เข้าห้องน้ำนะครับ พักก่อน 5 นาทีนะครับ เดี๋ยวเราต่ออีกประมาณ 15 สไลด์นะครับ Proc (อาจารย์พิเชนทร์) ดูต่อนะครับ ความสัมพันธ์ระหว่าง Process นะครับ การทำงานของระบบคอมพิวเตอร์นั้นนะครับ ก็จะประกอบไปด้วย Process ต่าง ๆ นะครับ ทั้งของระบบแล้วของผู้ใช้นะครับ เมื่อมันมี Process มากมายทำงานพร้อม ๆ กันนะครับ จึงต้องมีการจัดการขึ้นนะครับ นอกจากการจัดการแล้ว เราก็ต้องมีการติดต่อระหว่างกัน เหมือนเรา เราอยู่ในห้องเรานะครับ เราจะต้องมีการติดต่อสัมพันธ์กันนะครับ คราวนี้ เรามาดูหัวข้อความสัมพันธ์ระหว่าง Process นะครับ การติดต่อระหว่าง Process นั้น ก็คือหมายความว่า Process หนึ่ง อาจต้องการใช้ข้อมูลของอีก Process หนึ่ง จึงต้องทำไมครับ ต้องมีการส่งข้อมูลหรือต้องการติดต่อกันระหว่าง Process นะครับ ซึ่งการติดต่อกันระหว่าง Process นั้นนะครับ มันก็มีอยู่หลายวิธี มาดูวิธีที่ 1 นะครับ ติดต่อกันโดยนะครับ ใช้หน่วยความจำร่วมนะครับ หมายความว่าเมื่อ Process หนึ่ง ต้องการหรือส่งข้อมูลไปให้อีก Process หนึ่ง มันจะส่งข้อมูลผ่านหน่วยความจำร่วม ฟังก่อนนะครับ ฟังก่อนอย่างอย่าเพิ่งคุยกันครับ จะจบแล้วอีกแค่ 10 สไลด์นะครับ ฟังหรือเปล่าครับ นี่ฟังหรือเปล่า บอกเงียบก่อนนะครับ ฟังก่อน อย่าเพิ่งคุยกันเสียงดังนะครับ เดี๋ยวมันจะไม่เข้าใจนะครับ เวลาสอบ เรามัวแต่ลอกในหน้าจอนี่ บางทีมันพอเวลาไปสอบนะครับ มันจะตอบไม่ได้นะครับ เดี๋ยวสอบกลางภาคก็จะรู้คะแนนตัวเองนะครับ ว่าได้เท่าไร ผมบอกแล้วนะครับ ว่าข้อสอบผมนั้นมีทั้งหมด 8 ชุดนะครับ ผมให้นั่งสอบแบบติดกันเลยนะครับ ไม่ต้องไปเว้น ไม่ต้องไปอะไร ข้อสอบคนละชุดนะครับ ถ้าเราไม่เข้าใจเราจะเขียนอธิบายได้ ดูนะครับ ความสัมพันธ์อันที่ 1 ก็คือเวลามันติดต่อหากัน มันจะใช้หน่วยความจำร่วมกัน ดูรูปข้างล่างเลยนะครับ Process A ต้องการส่งข้อมูลไปให้ Process B มันทำกันอย่างไรนะครับ วิธีการ ก็คือ Process A ส่งไปแล้วจัดส่งไปที่หน่วยความจำนะครับ จัดส่งไปที่หน่วนความจำ เมื่อ Process B ต้องการจะไปรับข้อมูลจาก Process A มันก็จะไปรับที่หน่วยความจำนะครับ ซึ่งหน่วยความจำก็จะมี Address แล้วเราจะรู้ได้อย่างไรครับ Process A ส่งอะไรมาให้ เช็กจากอะไรครับ เช็กจากชื่อจาก ID ใช่ไหม เพราะว่าชื่อของ Process แต่ละตัว ก็จะมีรหัสด้วยนะครับ เห็นไหมครับ Process A นี่ มันจะส่งข้อมูลมานะครับ เราส่งไปให้หน่วยความจำร่วม Process A ก็ไปรับที่หน่วยความจำนะครับ การติดต่อกันระหว่างหน่วยความจำนะครับ นอกจากการใช้หน่วยควาามจำร่วมติดต่อระหว่าง Process นะครับ ก็ยังมีวิธีการที่สะดวกนะครับ แล้วก็นิยมใช้เป็นมาตราฐานนะครับ นั่นก็คือการใช้ช่องทางข้อมูล หรือเรียกง่าย ๆ ว่า "พอร์ต" นะครับ ติดต่อผ่านพอร์ต รู้จัก Port นะ Port parareal ต่อสายเข้าไปในเครื่องคอมพิวเตอร์เรานะครับ อันนี้ง่ายกว่านะครับ สะดวกกว่า เช่น เราต้องการส่งข้อมูลจากเครื่องของคนหนึ่ง ไปเครื่องอีกคนหนึ่งผ่านอะไร ผ่านพอร์ตนะครับ คราวนี้วิธีการส่งข้อมูลทั้งผ่านหน่วยความจำร่วม แล้วก็ผ่านพอร์ตนั้นนะครับ ในเรื่องของโครงสร้างของพอร์ตก็มีหลายแบบนะครับ จะส่งแบบไหนนะครับ อันที่ 1 นะครับ โครสร้างของ Port แบบที่ 1 ก็คือแบบคิวนะครับ โครงสร้างแบบนี้ ก็คือข้อมูลจะถูกดึงออกมาจากพอร์ตตามลำดับก่อน-หลัง ข้อมูลไหนส่งเข้ามาก่อน ก็จะ ออกไปก่อน ก็คือแบบคิวเป็นคิวนะครับ เช่น ผมเข้าไปก่อนอุบล ผมก็ออกก่อนอุบลนะครับ นี่คือโครงสร้างข้อมูลแบบพอร์ต ง่าย ๆ ครับ เข้าก่อน ออกก่อน นะครับ โครงสร้างพอร์ตแบบที่ 2 ก็คือโครงสร้างแบบไปป์นะครับ รูปข้างล่างใช่ไหม แบบไปป์มีการทำงานแบบคิว คือเข้าก่อน ออกก่อน แต่มีข้อแตกต่างกับแบบคิว ที่ว่าถ้าเป็นพอร์ตแบบไปป์จะมีความยาวของพอร์ตแบบไม่จำกัด ถ้าเป็นแบบคิวจะจำกัน เช่นพอร์ตแบบคิวแบบว่ามีขนาดของพอร์ต ความยาว 10 ช่อง สมมตินะ ก็แสดงว่าเข้าไปได้แค่ 10 คิวนะครับ แต่ถ้าพอร์ตแบบไปป์ โครงสร้างเหมือนพอร์ตแบบคิวก็จริง เข้าก่อน ออกก่อน แต่จะมีความยาวของพอร์ต นี่คือโครงสร้างแบบไปป์นะครับ โครงสร้าง Port แบบที่ 3 ก็คือแบบ Stack นะครับ เป็นอย่างไรครับ แบบ Stack Stack ก็คือโครงสร้างที่ตรงข้ามกับแบบคิวเลยครับ ก็คือข้อมูลชุดใดที่ถูกส่งออกมาก่อน จะถูกดึงออกทีหลัง คือ เข้าก่อนออกทีหลังนะครับ นี่คือโครงสร้างแบบ Stack นะครับ นี่คือโครงสร้างของพอร์ตทั้ง 3 แบบนะครับ คราวนี้มาดูปัญหาของ Process นะครับ เมื่อมีการทำงานมากกว่า 1 Process ขึ้นไปนะครับ มันย่อมทำให้เกิดปัญหาเกิดขึ้น ในการใช้งาน ถ้ามีโปรแกรมทำงานในระบบคอมพิวเตอร์เรา ปัญหาก็ไม่เกิดขึ้นนะครับ เมื่อมีหลาย ๆ โปรแกรมทำงานอยู่บนระบบเดียวกัน มีการใช้ทรัพยากรแย่งกันใช้ มันย่อมเกิดปัญหาขึ้นนะครับ ดังนั้น มันจะต้องมีการจัดสรรการใช้ Process ขึ้นนะครับ ถึงอย่างไรก็ตามที่เราจะกล่าวต่อไปนี้ มันจะต้องไม่เกิดขึ้นกับระบบของเรานะครับ ดังนั้น คนที่ออกแบบระบบปฏิบัติการจะต้องแก้ปัญหาดังต่อไปนี้ให้ได้นะครับ เวลาเราเขียนโปรแกรมเราจะต้องเลี่ยงปัญหาเหล่านี้ให้ได้นะครับ ปัญหาการทำงานของ Process อันดับแรกเลยนะครับ ก็คือปัญหาการตัดตอนนะครับ ปัญหาการตัดตอนเกิดจากอะไรครับ เกิดจากการที่ Process หนึ่ง ต้องการใช้ทรัพยากรของ Process แต่ปรากฏว่า Process นั้น มีลำกับความสำคัญน้อยกว่าจึงยอมปลดปล่อย ที่มีระดับความสำคัญมากกว่าเข้าไปครอบครองตัว CPU แทนตัวมันเอง นึกออกใช่ไหมครับ ก็คือ Process หนึ่ง อย่างเช่น ผมกำลังจะเข้าไปครอบครอง CPU แต่ปรากฏว่าอุบลเข้ามาต่อคิวผม บังเอิญว่าลำดับความสำคัญอุบลสำคัญมากกว่าผม ผมยอมให้อุบลเข้าไปแทนผม นี่เกิดการตัดตอนขึ้น ให้เป็นหลักการวิชาการ อธิบายว่าเกิดจาการที่ Process ใด Process หนึ่ง ที่จะเข้าไปครอบครอง CPU หรือเข้าไปในสถานะ Run นั้น ยอมให้ Process ที่มีความสำคัญมากกว่าเข้าไปแทนที่มัน มันก็จะเกิดการตัดตอนขึ้นนะครับ ซึ่งปัญหาตัวนี้นะครับ คนที่ออกแบบระบบปฏิบัติการจะต้องไม่ให้เกิดขึ้นนะครับ ปัญหาต่อมานะครับ นอกจากปัญหาการตัดตอนแล้ว ปัญหาต่อมา ก็คือปัญหาการอดตาย หรือปัญหา การเลื่อนไปอย่างไม่มีสิ้นสุด หมายความว่าเมื่อเกิดการตัดตอนขึ้น Process หนึ่งปล่อยให้ Process อีก Process หนึ่งที่มีความสำคัญมากกว่าเข้าไปครอบครอง CPU มัน แล้วแทนไปเรื่อย ๆ นี่ เราเรียกว่าว่า "การอดตาย" เช่น ตัวอย่างเมื่อกี้ผมจะเข้าไปครอบครอง CPU แต่บังเอิญว่าอุบลมาต่อคิว อุบลมีลำดับความสำคัญมากกว่า อุบลเข้าไปแทนที่ พออุบลเสร็จแล้วผมจะเข้าไปต่อ แต่ปรากฏว่าแม็กกี้มาต่อ แล้วแม็กกี้มีความสำคัญมากกว่าผม ก็เข้าไปแทนที่อีก พอแม็กกี้ออกมา ผมจะเข้าไปต่อ ปรากฎว่ามิ่งมาต่อ แล้วมิ้งมีความสำคัญมากกว่า แล้วมิ่งเข้าไปแทน ก็คือรอไป ไม่มีวันสิ้นสุด รอไปเรื่อย ๆ ไม่มีวันสิ้นสุดนะครับ ถ้าเป็นสมัยก่อนนะครับ ผมก็จะยกตัวอย่างให้พวกเรา สมมติว่าที่อาคาร 7 เรานะครับ สร้างห้องน้ำมาใหม่ เปรียบเสมือน CPU สมมตินะ ผมจะเข้าเป็นคนแรก กำลังจะเปิดประตูเข้าไปห้องน้ำ ปรากฏว่าอุบล ไม่ใช่อุบล อธิการสะกิดหลัง พิเชนทร์ ๆ ผมขออนุญาตเข้าก่อน ผมมองไปข้างหลัง อธิการใหญ่กว่าผม อธิการเข้าไป นี่เกิดการตัดตอน แต่พออธิการเข้าไปเสร็จปุ๊บ ปรากฏว่ามีคนสะกิดหลังอีกแล้ว ผู้ว่าฯ สะกิดหลัง เป็นอย่างไรครับ ผู้ว่าฯ เข้าไป นายอำเภอสกิดหลัง ผู้ว่าฯ สกิดหลังเกิดการต้องตัดตอน พอตัดตอนเสร็จปุ๊บ ไม่มีโอกาสได้เข้าก็เลยเป็นอดตายนะครับ นี่คือปัญหาหาที่ 2 ของเรานะครับ ปัญหาที่ 3 เขาบอกว่าทำไมถึงให้เกิดการตัดตอนไม่ได้ หรือการอดตายไม่ได้ มันจะเกิดปัญหาขึ้น ถ้าทรัพยากรบางประเภท ถ้าเราปล่อยให้เกิดการตัดตอน จะเกิดปัญหาขึ้น เช่น เครื่องพิมพ์ให้เรามาถึงเครื่องพิมพ์ ที่เป็นหัวเข็ม เคยเห็นไหม มันจะดังแกร๊ก มันจะพรินต์ทีละบรรทัด เคยเห็นไหมครับ เครื่องพิมพ์แบบหัวเข็ม เหมือนเราไปซื้อของตามเซเว่น หรือเราไปจ่ายค่าเทอม มันจะพรินต์เป็นหัวเข็มออกมา ถ้าเราปล่อยให้เกิดการตัดตอนขึ้น เช่น ผมสั่งพรินต์ไปได้ 2 บรรทัด สั่งมาอุบลบอกว่าอุบลมีความสำคัญมากกว่าแล้วเกิดการตัดตอน บรรทัดที่ 3 จะกลายเป็นของอุบล ดังนั้น ห้ามให้มีเหตุการณ์นี้เกิดขึ้นนะครับ เพราะทรัพยากร บางอย่าง ให้เกิดขึ้นไม่ได้นะครับ ปัญหาต่อมานะครับ ปัญหาการติดตาย ดูรูปประกอบเลยนะครับ ปัญหาการติดตายเกิดจากอะไรครับ ดูรูปเลย เมื่อ Process ใดก็แล้วแต่ ครอบครองทรัพยากรของตัวเองอยู่แล้ว ในขณะเดียวกัน ต้องการไปครอบครองทรัพยากรของเรา แต่ไม่ยอมให้ Process อื่นเข้ามาครอบครองทรัพยากรของตัวเองเหมือนกันนะครับ เช่น ผมบอกอุบลอาจารย์ยืมสตางค์ของอุบลหน่อย 1 ร้อยล้าน อุบลก็บอกเหมือนกัน อาจารย์ผมก็ยืมสตางค์อาจารย์หน่อย 200,000 แต่อุบลก็ไม่ควักให้ผมนะ ผมก็ไม่ควักให้อุบล เพราะเราก็ไม่มีทั้งคู่นะ คือ อยากได้สตางค์อุบล อุบลไม่ควักให้ นี่คือลักษณะการปิดตาย ก็คือ Process ใด Process หนึ่งนี่ครอบครองทรัพยากรตัวเองอยู่ แต่อยากไปได้ทรัพยากรของคนอื่น แต่ตัวเองก็ไม่ยอมให้ทรัพยากรของตัวเองนะครับ นี่คือลักษณะการปิดตาย หรือเขาบอกว่าปัญหาการติดตายนั้น ไม่จำเป็นต้องเกิดจาก 2 Process อาจจะเกิดจากหลาย Process ก็ได้นะครับ มากกว่า 2 Process แต่ต้องมีเงื่อนไข ดังนี้ เช่น 1. การครอบครองเป็นแบบตัดตอนไม่ได้ อันนี้ก็ตัดตอนไม่ได้นะ Process A, Process B ก็ไม่ได้ Process C ก็ไม่ได้ ไม่ไป ไม่มา นะครับ เงื่อนไขแบบที่ 2 การครอบครองเป็นแบบไม่เกิดร่วม ต่างคนต่างทำงาน ต่างคนต่างอยู่คนละส่วน ปิดตายขึ้นนะครับ เงื่อนไขที่ 3 คือ ในการรอใช้ทรัพยากรเป็นการรอแบบวนรอบ หรือวงรอบ หรือภาษาเขีียนโปรแกรม เราเรียกว่า "วนลูป" หรือ" วนรอบ" ก็จะเกิดปัญหาการปิดตายขึ้นนะครับ นี่คือปัญหา 3 ปัญหาที่เกิดขึ้นในระบบเรา แต่เวลาเราออกแบบ OS ก็เกิดขึ้น หัวข้อสุดท้ายนะครับ ของบทนี้นะครับ เธรดนะครับ เขาบอกในระบบปฏิบัติการบางตัวซึ่งเราใช้แล้วนะครับ เราใช้แบบนี้อยู่นะครับ ถ้าเป็นสมัยก่อนไม่เกิดระบบนี้นะครับ เธรด ก็คือเป็นการที่ระบบปฏิบัติการแบ่งย่อย Processing ออกมาเป็นส่วน ๆ ดูรูปประกอบเลยนะครับ นี่... ทำไมไม่ขึ้น ขวามือผม ใช่ไหม Process A กับ Process B Process A โค้ดโปรแกรม แล้วก็ข้อมูลองค์ประกอบอื่น นี่คือเขียนโปรแกรมแบบไม่ใช่เธรด แต่พอเทรดปุ๊บมันจะแบ่งส่วนเทรด 1, 2, 3, 4, 5 เป็นส่วนย่อยนะครับ เราแบ่งเธรดมีประโยชน์อะไรนะครับ มันจะให้ทำงานเร็วขึ้น สามารถทำงานกับหน่วยความจำที่มีขนาดเล็กได้แก้ไขง่าย นี่คือหลักการเขียนโปรแกรมใน ณ ปัจจุบันนี้นะครับ เดี๋ยวพอเราเขียนโปรแกรมเราเรียนไปสักปี 2 ทำไมเราต้องมาเขียนเป็นแบบเทรดโบราณนะครับ เขียนทีเดียว 100 บรรทัด 500 บรรทัด เวลามีปัญหามาปุ๊บ การแก้ไขปัญหานะครับ แก้ไขยากนะครับ นี่คือหลักการของการเขียนโปรแกรมนะครับ แจ้งพวกเรานะครับ เมื่อกี้ได้พูดไปแล้วนะครับ สัปดาห์หน้านะครับ วันที่ 7 เราก็จะไปศึกษาดูงานนอกสถานที่นะครับ หมู่ 2 นะครับ หมู่ 2 หมู่ 1 ยังไม่ได้ไปนะครับ เราจะไปศึกษาดูงานที่นครพนม ผมจะพาไปที่หมู่บ้านก่อน ไปดูหมู่บ้านอะไรไม่รู้ จำไม่ได้นะครับ พวกทำเกี่ยวกับพื้นเมือง แล้วก็จะพาไปพิพิธภัณฑ์สัตว์น้ำ นครพนม ก็สัปดาห์หน้าก็หมู่ 1 ก็ต้องมาเรียน ก็เห็นพี่พลอยประสานไปที่อาจารย์อะไรนะ ที่เราเรียนน่ะ ตอนเช้าน่ะ ก็เรียนด้วยกันใช่ไหม เห็นว่าอาจารย์ว่าคณะฯ ก็ไหว้ครู แต่ว่าสัปดาห์หน้าเราไม่มีเรียนนะครับ ห้อง 1 นะ มีเรียน แต่สัปดาห์หน้าหมู่ 2 เราจะไปนอกสถานที่ จะพาไปดูอะไรนะ ไปดูปลาบึก เขาจะป้อนอาหารปลาบึก เอาอุบลไปให้อาหารปลา อุบลนะ ก็ไปทั้งวันนะครับ ก็แจ้งพวกเราไว้ สัปดาห์หน้าก็หยุดนะครับ พอสัปดาห์ถัดไปก็เจอกันนู้นเลยครับ นะครับ ก็ตอนนี้เราเปิดเทอมมาได้เดือนหนึ่งนะครับ เป็นอย่างไรครับ ปรับตัวได้ ได้แล้วนะ บางคนก็ส่งงานไว้ที่โต๊ะนะครับ เดี๋ยวผมจะส่งคืนให้นะ ผมจะตรวจแล้วส่งคืนให้ ๆ เราเอาเก็บไว้อ่านสอบ แบบฝึกหัดที่ผมให้ทำ มีใครอยากจะถามอะไรเพิ่มเติมไหมครับ ครับ ถ้าไม่มีก็... Process พ่อเกิดอย่างไร Process พ่อเกิดขึ้นจากนะครับ เกิดขึ้นจาก การที่เมื่อเวลาใดเวลาหนึ่ง เช่น เรา... สมมตินะ ๆ ผมเป็น Process ผมต้องการจะเข้าไปครอบครอง จะเข้าไปครอบครอง CPU ตัวของระบบปฏิบัติการจะสร้าง Process หนึ่งขึ้นมา เพื่อมากำกับผมไป จะพาเข้าไปครอบครอง CPU นะ นี่เป็นการให้กำเนิด เป็นการให้กำเนิด เพื่อพา Process เข้าไป ตรงนี้เรียกว่า Process พ่อ นะครับ นี่คือหลักการของมันของมันนะครับ ครับ ก็ต้อง ขอบคุณพี่ล่ามมากนะครับ ที่ได้ให้การอนุเคราะห์เรามาอีก 1 สัปดาห์นะครับ อีก 1 สัปดาห์ สัปดาห์หน้าเราไม่ได้เจอกันนะครับ พี่ล่าม สัปดาห์หน้าจะพาน้อง ๆ ไปนอกสถานที่ ก็ถ้าไม่มีใครถามอะไรแล้วนะครับ ก็เจอกันสัปดาห์หน้านะครับ ไปดูงานนอกสถานที่กัน โอเคครับผม ไป [สิ้นสุดการถอดความ] Ր