(อาจารย์พิเชนทร์) หลักการของการจัดการ Process นะครับ เราเคยได้ยินไหม Process ครับ ถามหมู่ 1 เคยได้ยินไหมครับ คำนี้ เรียนตั้งแต่มัธยมนะ Process คืออะไรเอ่ย Process นะครับ เขาบอกว่านะครับ เขาให้ความหมาย ความหมายเยอะแยะนะครับ มีหลายความหมาย แต่ความหมายที่เราใช้กันนะครับ เอกสารยังไม่ได้หรือ อยู่กับใครเอกสารหมดหรือยัง อยู่กับใครครับเอกสาร เหลืออยู่กับใคร มีไหม อยู่กับใครครับ เอกสารเหลือน่ะ บทนี้ บทที่ 2 นี่ อยู่กับใคร เหลืออยู่กับใคร มันต้องเหลือสิ ถ่ายมา มันต้อง 50 ชุดนะครับ ถ่ายมาอยู่ไหนล่ะห้อง 1 มันยังไม่เห็นเอกสารอาทิตย์ที่แล้ว วางไว้ที่โต๊ะไหน หรือหมู่ 1 หมู่ 1 หมู่ 1 ส่งไว้ที่ไหน ยังไม่ส่งใช่ไหม เพราะเห็นแต่ของห้อง 2 ผมตรวจแล้วนะ ตรวจก็คืนให้แล้วนะครับ ใครมาช้ามาเอานะครับ เอกสารที่ผมตรวจนะครับผม ผมจะไม่ได้ตรวจให้ทุกข้อนะ ผมจะเซ็นลายเซ็นให้เฉย ๆ นะครับ เป็นการตรวจเช็ก แต่ละสัปดาห์แล้วก็เราเอาไว้อ่านสอบนะครับ เพราะว่าตอนนี้เราเรียน 2-3 สัปดาห์แล้วนะครับ จะครบเดือนแล้ว เดี๋ยวสัปดาห์หน้านะครับ สัปดาห์หน้าห้องหมู่ 2 จะไม่อยู่นะครับ ผมก็ไม่อยู่นะครับ สัปดาห์หน้าเราไม่มีนะครับ วิชานี้ เราจะยกเลิกคลาสนะครับ เพราะว่าหมู่ 2 จะไปศึกษาดูงานข้างนอกนะครับ ผมก็ไปด้วยนะครับ ทั้งวันนะครับ สัปดาห์ถัดไปปิดใช่ไหม หยุด สัปดาห์ถัดไปอีกเรียน สัปดาห์ถัดไปหยุดอีก เดือนนี้หยุดเยอะนะครับ มาดูนะครับ Process นะครับ Process Processเขาให้ความหมายว่า Process คือ โปรแกรมที่กำลังถูก Execute นะครับ Execute คืออะไร เคยได้ยินไหมครับ เขาบอก Process คือ โปรแกรมที่กำลังถูก Executeเป็นอย่างไรครับ Execute ผมเชื่อว่าพวกเราจบมัธยมศึกษาปีที่ 6 มานี่ มันต้องเคยได้เรียนแล้วใช่ไหม คอมพิวเตอร์พื้นฐาน เรียนหรือยัง เรียนหรือยังครับ หมู่ 1เรียนแล้วใช่ไหมนะครับ ถามตอบด้วยเด้อ ถามตอบมีปฏิสัมพันธ์ด้วยนะครับ เพราะเราทุกวันนี้นะครับ เราค่อนข้างขาดปฏิสัมพันธ์นะครับ ผมเข้าใจนะ พวกเราเป็น generation ที่แตกต่างกับอาจารย์ นะครับ เราเจนอะไรครับ เรา generation อะไรGen Y หรอ แม่นหรอใช่ไหม ใช่หรือ เรา Gen y หรือGen อะไรดี ยังไม่รู้อีกตัวเอง Gen อะไร เดี๋ยวไปถามห้อง 2ยังไม่ถามห้อง 2 ถามห้อง 1 ก่อนตอนนี้พวกเรามีปัญหานะครับ เรื่องของความแตกต่างระหว่าง generation นะครับ รุ่นผมนี่คุยกับพวกเรานี่ไม่ค่อยรู้เรื่อง จริงไหม จริงไหมอุบล เราคนละ Generationนะครับ ความคิดแตกต่างกัน รุ่นพวกเรานี่ความอดทนน้อยนะครับ รอได้ไหม รอไม่ได้นะครับ จะเอาเดี๋ยวนี้จะกินข้าวก็จะกินเดี๋ยวนี้ ถ้าจะให้ไปต่อคิวก็ไม่ไปเห็นไหมครับ มันถึงเกิดอะไรขึ้นมา ขายออนไลน์ พวก Grab พวก Food Panda ใช่ไหมจากที่ผมอ่านนะครับ อ่านทดสอบก่อนเรียนพวกเรานะครับ ก็พื้นฐานเราก็พอ ๆ กันนะ พอ ๆ กันนะครับ ก็คือยังไม่เข้าใจความหมาย ยังไม่เข้าใจหลักการของคอมพิวเตอร์มากก็ไม่เป็นไรนะครับ เพราะว่าจริง ๆ อย่างที่ผมบอก เราควรจะจัดให้เรียนอยู่ชั้นปีที่ 3 นะครับ แต่เราก็มาจัดเสียปี 1 เทอม 1 ก็ไม่เป็นไรนะครับ ก็ปรับเอา เขาบอกว่า Processโปรแกรมที่กำลังถูก Execute ถ้าเรามองก็คือสัปดาห์ก่อนใช่ไหม พอเราส่งข้อมูลจากคีย์บอร์ดใช่ไหมครับ ส่งจากคีย์บอร์ปุ๊บ เข้าไปไหนครับ คิดตามเข้าไปไหน คีย์บอร์ด คือ Input ใช่ไหม พอเข้าไปในคอมพิวเตอร์ เราเรียกว่าเข้าไปทำอะไรไปประมวลผลใช่ไหมครับ ประมวลผลเสร็จทำอะไรต่อ ก็ไปแสดงผลใช่ไหม นี่คือหลักของมันInput ประมวลผล Process ใช่ไหม แล้วก็ออกไป Output นี่คือหลักการของมัน เขาบอกว่า Process คือ โปรแกรมกำลังถูก Execute นั่นหมายความว่า... บางคนให้ความหมายว่าเป็นโปรแกรมที่กำลังเข้าไปครอบครอง CPU หรือเข้าไปใช้งาน CPU แล้วแต่เอกสารตำราแต่ละคนแต่งนะครับ คือ หลักการ ก็คือคำว่า "Process" ก็คือโปรแกรมที่กำลังถูก Execute ในคอมพิวเตอร์เรา มันจะมีไฟล์อยู่ไฟล์หนึ่ง เป็นนามสกุล ไฟล์ทุกไฟล์ต้องมีนามสกุลนะครับ เดี๋ยวเรามาดูรายละเอียดต่อไปนะครับ ก็คือนามสกุลที่ .exeเคยเห็นไหม เคยสังเกตไหมเวลาเราใช้คอมพิวเตอร์ หรือไม่รู้เปิดขึ้นมาใช้แล้วก็ปิดนะครับ เราอย่าไปดูในสไลด์อาจารย์มากนะ อาจารย์ก็พูดไปเรื่อยนะ มันไม่ได้อยู่ในนี้หรอกนะครับ คราวนี้ถ้า Process ถ้าโปรแกรมเดียว โปรแกรมเดิมนี่ ทำงานปุ๊บเป็นอย่างไรครับ ยุ่งยากไหม Input เสร็จ เข้าไปประมวลผลเสร็จ แสดงออก ถ้าโปรแกรมเดียวไม่มีปัญหานะครับ แต่ถ้าเมื่อไรก็ตามที่มีหลาย ๆ โปรแกรมทำงานพร้อมกัน ที่เขาบอกว่าเป็นระบบหลายโปรแกรมเขาบอก Process อาจเปรียบได้กับรถยนต์ คือ มีรถยนต์หลายคันนะครับและตัวของ CPU เอง ก็เปรียบเหมือนคนขับ เหมือนกับว่าในคอมพิวเตอร์เรานี่มี CPU อยู่แค่ตัวเดียว แต่มีคนต้องการใช้งานเยอะ โปรแกรมเยอะ ต้องทำอย่างไรครับ วิธีการมัน ถ้าเป็นเราเราทำอย่างไรครับ เช่น มีรถอยู่ 5 คัน มีคนขับอยู่คนเดียว ทำอย่างไรจึงจะขับเข้าไปถึงในเมืองพร้อมกันได้ ลากรถ 4 คัน คนอื่นล่ะคนอื่นล่ะทำอย่างไร คนอื่นมีวิธีการอื่นไหมครับ หลักการคอมพิวเตอร์เวลาทำงานใช่ไหม โปรแกรมจะเข้าไปทำงาน หรือเข้าไปครอบCPU ได้ที่ละ 1 โปรแกรม ก็เหมือนคนเรานี่ขับรถนี่ ขับได้ทีละคัน จะลากจะพ่วง ทำไม่ได้ ตามหลักการนะทำไม่ได้ ทำอย่างไรดีล่ะ วิธีการ ก็คือขึ้นไปขับคันที่ 1 จากราชภัฏสกลนครไปถึงหน้าค่ายกฤษ แล้วไปจอดกลับมาขับครั้งที่ 2 ก็มา... คันที่ 4 คันที่ 5นะครับ พอถึงขับไปใหม่ขับไปถึงหน้าประตูเมือง ย้อนไปที่ 1, 2, 3, 4, 5 อย่างนี้ นี้คือหลักการนะครับ แต่เวลาทำงานจริงเป็นอย่างไรครับ คอมพิวเตอร์ทำงานด้วยความเร็วสูงไหม สูงไหม หายใจทันไหมครับ ทันไหม ไม่น่าทันนะ การทำงานจริง ๆ มันจะทำงานเหมือนที่อาจารย์ยกตัวอย่างเมื่อกี้ ไปทีละคัน ทีละคัน แต่พอมาทำงานจริง มันทำงานได้ความเร็วสูง มันเลยเหมือนประหนึ่งว่ามันไปพร้อม ๆ กันเลยนะครับ นี่คือหลักการทำงานของคอมพิวเตอร์นะครับ อย่างยกตัวอย่างนี้ ระบบ CPU เป็นคนขับโปรแกรมหลาย ๆ โปรแกรม เหมือนรถนะครับ ทำอย่างไรให้ไปด้วยความเร็วสูงนะครับ คราวนี้มาดูองค์ประกอบของ Process นะครับ Process มีองค์ประกอบอะไรบ้าง พอเรียนจบบทนี้นะครับ นักศึกษาก็จะงงนะครับ เริ่มงงนะ มันเริ่มเหมือนบทที่ 1 ใช่ไหม บทที่ 1 พื้นฐานนะครับ งงไม่ต้องตกใจครับ ค่อย ๆ ปรับนะครับ เพราะว่าเราเพิ่งเข้าเรียนปี 1 นะครับ ปรับสภาพแวดล้อม ปรับสภาพหลาย ๆ อย่างนะครับ แล้วตอนนี้ห้องแล็บเราก็ยังใช้ไม่ได้ใช่ไหม อาจารย์เข้าแจ้งหรือยังว่าใช้ได้เมื่อไร อาคาร 7 เราไม่แจ้งเพราะว่าเราไม่รู้ว่าจะใช้ได้เมื่อไร ผมแวะไปเมื่อวานก็ไม่มีทีท่าว่าจะได้ใช้เลยนะ คนทำก็นั่งทำง็อกแง็ก ๆ อยู่คน 2 คน เทอมนี้ผมว่าไม่น่าทันนะ น่าจะได้ใช้เทอมหน้านะครับ เทอมหน้าก็เราได้เครื่องใหม่มาอีกแล้ว เราอยากได้เทอมหน้า ก็เป็นรุ่นพวกเราได้ใช้นะครับ เทอมหน้าองค์ประกอบตัวที่ 1 ของ Process นะครับ ก็คือ 1. Process ทุกตัวจะต้องมีชื่อและหมายเลขประจำตัวนะครับ Process ID นะครับ และจะต้องไม่ซ้ำกันนะครับ เหมือนชื่อไฟล์น่ะนะครับ ชื่อไฟล์ซ้ำกันได้ไหม ได้ไหมครับ ชื่อไฟล์ นามสกุลไฟล์นะครับ องค์ประกอบ Process อีกตัวหนึ่ง คือ ชื่อและหมายเลขประจำตัวห้ามซ้ำกัน เหมือนหมายเลขบัตรประจำตัวเราซ้ำกันได้ไหมครับ ได้ไหม ไม่ได้นะครับ แต่ถ้าถามย้อนกลับว่าชื่อและนามสกุลมีโอกาสซ้ำกันได้ไหม ได้นะครับ เพราะอะไร เช่น อาจจะมีพิเชนทร์ จันทร์ปุ่ม 5 คน เหมือนกันเพราะอะไรครับ เพราะอาจจะมีญาติพี่น้องนามสกุลเหมือนกัน บังเอิญว่าชื่อพิเชนทร์มันเพราะ เลยตั้งเหมือนกันเลข 123 หลักห้ามซ้ำกันองค์ประกอบอันที่ 2 ของProcess ทุก Process จะต้องมีโค้ดนะครับ เป็นโค้ดนะครับ เป็นโค้ด เป็นรหัส คำว่า "โค้ด" ก็คือจะต้อง Execute ได้ทันทีคือ เป็นภาษาเครื่องแปลเรียบร้อยแล้วนะครับ องค์ประกอบอันที่ 3 ก็คือข้อมูล Data ข้อมูลนี้นะครับ ข้อมูลนี้นะครับ เขาบอกว่าโปรแกรมต้องการหรือจัดการข้อมูลอาจจะเป็นของ Process ใด Process หนึ่งหรืออาจจะใช้ข้อมูลร่วมกันกับ Process อื่นก็ได้นะครับ ใช้ร่วมกันได้ ตัวอย่างของ Process ที่ใช้ข้อมูลร่วมกันนะครับ เช่น Process ในระบบฐานข้อมูลนะครับ เช่น ฐานข้อมูลระบบงานทะเบียนราชภัฏสกลนครอย่างนี้ เช่น เรามารายงานตัวเป็นนักศึกษานะครับ ปุ๊บนะครับ ขึ้นทะเบียนปุ๊บ พอเราไปห้องสมุดก็ใช้ฐานข้อมูลเดียวกัน ในการเงินก็ใช้ฐานข้อมูลชุดเดียวกันนะครับ ศูนย์คอม(พิวเตอร์) ไปกองพัฒฯ ก็ฐานข้อมูลอันเดียวกันนะครับ โดยใช้ฐานข้อมูลร่วมกันนะครับ องค์ประกอบอันที่ 4 ของ Process ก็คือ Process Control Block นะครับ หรือบล็อกควบคุมโปรแกรมนะครับ ซึ่งตัวของระบบปฎิบัติการจะกำหนดเนื้อที่บางส่วนในหน่วยความจำ ทำเป็น ProcessControl Block หรือ PCB นะครับ กำหนดไว้ทำไมนะครับ ก็คือ 1. กำหนดไว้เพื่อเป็นสถานะ Process ปัจจุบัน เก็บหมายเลขของ Process ความสำคัญของ Processอยู่ใน PCB นะครับ ใน Process แต่ละตัวจะมี บล็อกควบคุมโปรแกรมหรือ PCB อยู่นะครับ ซึ่ง PCB นี้ก็จะเก็บสถานะของ Process ที่เป็นปัจจุบันนะครับ แล้วก็เก็บลำดับความสำคัญของ Process เอาไว้นะครับ นอกจากนั้นก็ยังเก็บสารสนเทศที่เกี่ยวกับการจัดการหน่วยความจำของ Process ข้อมูลการรับส่งข้อมูลของ Process คือ เก็บข้ามูลสำคัญของ Process ใน PCB นั่นเองนะครับ พื้นที่จัดเก็บ คือ Registerนะครับ Register คืออะไร Register คือ หน่วยความจำขนาดเล็กที่ในหน่วยความจำ ส่วนในรายละเอียดต่าง ๆ อาจารย์จะพูดในบทที่ 3, 4, 5 นะครับ อันนี้พูดคร่าว ๆ ก่อน ให้พวกเรามองภาพกว้าง ๆ นะครับ ครับผม ดูต่อนะครับ องค์ประกอบต่อมานะครับ ของ Process ก็คือ Program Status Words นะครับ หรือ PSW นะครับ Program Status Words นะครับ เป็นตัวควบคุมลับดับการ Execute ของ Process มันจะบอกว่า Process นี้จะเข้าไปครอบครองCPU ลำดับที่เท่าไรนะครับ ต่อมานะครับ คุณสมบัติของ Process นะครับ Process ทุก Process จะมีคุณสมบัติดังต่อไปนี้นะครับ ก็คือ 1. Process ทุกตัวจะมีลำดับความสำคัญ ต่างกันนะครับ Process ทุก Processจะมีลำดับความสำคัญ เช่น Process A อาจจะมีความสำคัญมากกว่า Process B หรือ Process ของผู้ดูแลระบบอาจจะมีความสำคัญมากกว่า Process ของ User อย่างนี้ อันที่ 2คุณสมบัติอันที่ 2 อำนาจหน้าที่Process ทุกตัวจะมีอำนาจหน้าที่ที่ต่างกัน เช่น Processของผู้ดูแลระบบมีอนาจมากกว่าของ User อย่างนี้เป็นต้นนะครับ หรือคุณสมบัติอื่น ๆ ที่OS กำหนด อันนี้ขึ้นอยู่กับ OS ครับ OS ว่าเราใช้ OS อะไร เช่น ใช้ Windows 8 ใช้ Windows 10 ใช้ Windows 11 คุศสมบัติของ Process ก็จะต่างออกไป ยกตัวอย่างเช่นนะครับ Windows 8 สามารถตั้งชื่อได้ความยาวกี่ตัวอักษรรู้ไหม เคยไหม อาจารย์จะยังไม่บอกว่ากี่ตัวอักษรนะเราสามารตั้งชื่อได้นะ ชื่อไฟล์นะครับ กับ Windows 11 ต่างกันไหม ลองดูนะ ลองดู เดี๋ยสเจะไปลองตอนภาคปฏิบัติ ลองสิว่าเราถ้าเกิดเป็น Windows 11 สามารถตั้งชื่อความยาวกี่ตัวนะครับ นี่คือคุณสมบัติที่แต่ละตัวของ OS เป็นคนกำหนดนะครับ เมื่อกี้องค์ประกอบของ Process นะครับ คราวนี้มาดูสถานะขของ Process นะครับ สไลด์นะครับ อยู่กับพี่พลอยนะพลอยค่อย เอาขึ้นให้น้องนะครับ อาจารย์ลืมอัปลงในไลน์กลุ่มนะครับ จะได้ดูก่อนนะครับ คราวนี้มาดูสถานะของ Process นะครับ Process ก็แบ่งออกเป็นสถานะได้ดังต่อไปนนี้นะครับ 1. สถานะพร้อม สถานะพร้อมเป็นอย่างไร สถานะพร้อมเป็นสถานะพร้อมที่ Processพร้อมที่จะใช้ CPU ทันทีที่ OS มอบหมายให้ รอแล้ว เหมือนเรารอคิวแล้ว ยืนรอแล้ว รอเข้าไปครอบครอง CPU นะครับ หรือรอเข้าไปใช้งาน CPU เราเรียกว่า "สถานะพร้อม" เช่น เราจะไปเข้าห้องน้ำ ห้องน้ำเป็น CPU สมมตินะ เรายืนรอคิวนี่ เราพร้อมแล้ว พร้อมจะเข้าไปใช้งานเราเรียกว่า "สถานะพร้อม" นะครับ สถานะที่ 2 คือสถานะ Run Run คืออะไรครับ สถานะ Run เป็นสถานะที่ Process กำลังครอบครอง CPU อยู่ ก็คือเข้าไปครอบครอง CPU ที่เราเรียกว่า "Run Program" นี่คือสถานะ Run นะครับ สถานะที่ 3 นะครับ สถานะติดขัด เขาบอกว่าสถานะติดขัดเกิดจากการที่ Process หยุดรอเหตุการณ์ใดเหตุการณ์หนึ่งให้เกิดขึ้น โดย Process ไม่จำเป็นต้องใช้ CPU และมันต้องไปครอบครอง CPU เราไม่รู้ครับ ว่าเหตุการณ์นั้นคือเหตุการณ์อะไร ไม่รู้ ยกตัวอย่างเช่น ผมกับแม็กกี้หรือกับอุบลน่ะ กับอุบล ผมเป็น Process A ไปยืนรอคิวในสถานะพร้อม อุบลรอผมคนที่ 2ผมเปลี่ยนจากสถานะพร้อมเข้าเป็นสถานะ Run ก็คือเข้าไปครอบครอง 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 ยกเลิกทันนะ กด F8, F9 ปุ๊บ นึกได้ผ่านไป 2 นาที ไม่ถูกกดยกเลิกแต่โปรแกรมเราทุกวันนี้ เราคลิกปุ๊บ ประมวลผลปั๊บนะครับ มันมีความเร็วสูงนะครับ ตามรูปนี้นะครับ พยายามมองตามนะครับ เพราะว่าเราจะเรียนอีก 3 ครั้ง แล้วก็จะสอบกลางภาคนะครับ สอบกลางภาค พอสอบกลางภาคเสร็จอาจารย์ก็จะะยกคลาสไปอยู่อาคาร 7 เพื่อเรียนภาคปฏิบัตินะครับ ภาคปฎิบัติก็อย่างที่เราตกลงไว้ เราจะเรียนแค่สัปดาห์ละ 8 คน เราจะไม่เรียนทั้งห้องแบบนี้นะครับ คราวนี้มาดูอีกสถานะหนึ่งนะครับ ที่เราพูดไว้ ก็คือสถานะติดขัด เห็นไหมครับ ดูรูป มาพร้อม เห็นไหม พร้อมปุ๊บ มา Run เข้าไป Run จะหมดเวลาควอนตัม หรือไม่หมดก็แล้วแต่ แต่บังเอิญว่า Process นั้นไปติดต่อกับอุปกรณ์รอบข้าง เช่น ติดต่อกับ Printer นะครับ ช่วงที่ติดต่อ Printer ไม่ได้ทำงาน ก็จะทุกผลักออกมาเป็นสถานะติดขัด พอติดขัดเสร็จก็จะย้อนกลับไปพร้อมใหม่ ที่อาจารย์อธิบายไว้ข้างต้นแล้วนะครับ นี่คือสถานะติดขัด เขาบอกว่าการเปลี่ยนสถานะทั้ง 3 ของ Process ก็คือ พร้อม Run ติดขัด เป็นการเปลี่ยนในสภาพทั่วไปนะครับ พร้อม Run ติดขัดนี่ แต่ถ้าเกิดเหตุการณ์ที่ผิดปกติขึ้นในระบบปฏิบัติการหรือระบบคอมพิวเตอร์เรา ระบบปฏิบัติการอาจจะย้าย Process จากสถานะใดสถานะหนึ่งจาก 3 สถานะ ให้ไปอยู่สถานะพักก็ได้ เพราะสถานะพักเราบอกว่ามันหยุดนิ่งเลย ไม่ทำงานต่อแล้ว ก็คือเข้าไป Run แล้วก็จบใช่ไหม แต่ถ้าเกิดเหตการณ์ผิดปกติขึ้นใน OS จากสถานะพร้อม Run ติดขัด ไปพักก็ได้นะครับ ซึ่งจะเกิดขึ้นได้ก็ด้วยสาเหตุดังต่อไปนี้นะครับ 1. เกิดการทำงานของระบบผิดพลาดเช่นสั่ง ๆ ๆ ไป ปรากฎว่าระบบ Error ผิดพลาด ไปกดสตางค์ 1,000 บาทออกมา 10,000 บาท ดีไหมโทมัส ดีไหมเอาไหม อย่าไปเอานะลูก เขาจับเจ้าเด้อ ต้องไปแจ้งธนาคารนะครับ ไปเอามาใช้ไม่ได้นะครับ ผิดกฎหมาย นี่คือระบบผิดพลาด มันก็จะย้ายทุกอย่างไปที่สถานะพัก จนกว่าเหตุการณ์ปกติเริ่มต้นใหม่นะครับ สาเหตุอันที่ 2 นะครับ ที่จะเกิดสถานะพักนะครับ ผู้ใช้ต้องการหยุดการทำงานชั่วคราว ทำ ๆ อยู่ เราสั่งหยุดอย่างนี้ มันก็จะไปอยู่สถานะพัก เช่น Run อยู่ยกเลิกอย่างนี้ สาเหตุอันที่ 3 นะครับ ในระบบมีงานมากเกินไป สั่งเข้าไป สั่งเข้าไป สั่งเข้าไป Overload แฮงค์ Error ก็ย้ายไปสถานะพักนะครับ นี่คือสาเหตุหลัก ๆ 3 สาเหตุที่ทำให้การเปลี่ยนสถานะจากสถานะพร้อม Run ติดขัดไปอยู่ในสถานะพักนะครับ เห็นไหมครับ รูป เห็นไหมจากรูปนะครับ พร้อม Run ติดขัด เห็นไหม แต่ถ้าเกิดสาเหตุจากเมื่อกี้ ระบบเกิดทำงานผิดพลาด ผู้ใช้สั่งหยุดเอง ระบบทำงานมากเกินไปปุ๊บ มาพักเลยนะครับ ดังนั้นนะครับ เราก็สามารถแยกสถานะของ Process เป็น 2 ส่วน ก็คือส่วนที่ 1 พร้อม Run ติดขัดใช่ไหม ส่วนที่ 2 คือพักนะครับ คราานี้มาดูลำดับชั้นของ Process นะครับ Process ก็มีลำดับชั้นนะครับ เขาบอกว่าระบบปฏิบัติการหรือ OS นะครับ ผมใช้คำย่อว่า "OS" นะครับ เขาบอกว่า OS เองก็ประกอบด้วยหลาย ๆ Process ถ้าหลายคนสับสน เช่น ถ้าอาจารย์ครับ Process เราจะเรียกว่า "โปรแกรม" ได้ไหม ได้ไหม ได้ไหมครับ บางคนไม่รู้เหมือนกันนะครับ เขาบอกว่า OS เองก็ประกอบไปด้วยหลายProcess 1 2 3 เยอะแยะมากมาย เมื่อผู้ใช้สั่งงาน เอาสีอะไรดี พื้นสีดำไปไม่เป็นเลยนะครับ ไม่เป็นไร ดูต่อ เขาบอกว่าเมื่อ Process ประกอบด้วย หลาย ๆ Process นั้นนะครับ เมื่อผู้ใช้สั่งงานหรือให้โปรแกรม Run OS หรือระบบปฏิบัติการจะสร้าง Process สำหรับงานนั้นขึ้นมานะครับ ซึ่ง Process ของผู้ใช้นี้นะครับ เป็น Process ย่อยของนึกออกไหมเขาบอกว่า Process เองก็มีเยอะแยะมาของมันนะครับ ซึ่งเราสำหรับผู้ใช้สั่งงานปุ๊บ เช่น อุบล บอกอุบลต้องการที่จะเข้าไปครอบครอง CPU ระบบปฏิบัติการก็จะสร้าง Process หนึ่งขึ้นมาสำหรับงานนะครับ นั่นแสดงว่าProcess ของอุบลนั้นก็เป็น Process ย่อยของระบบปฏิบัติการ นึกออกไหมครับ นึกตามนะครับ ซึ่ง Process OS ก็จะมีคุณสมบัติเหมือนกับ Process อื่น ๆ ทั่วไปนะครับ เขาว่า ดังนั้น Process อื่น ๆ สามารถมี Process ย่อย ๆ ไปอีกเรื่อย ๆ ได้นะครับ เขาเรียกว่า "การให้กำเนิด" นึกออกไหม ตัวอย่างเช่นนะครับ อุบลต้องการเข้าไปครอบครอง CPU อุบลเป็น Process หนึ่งแล้ว ตัวอาจารย์เองเป็น OS เป็นระบบปฏิบัติเมื่ออุบลจะเข้าไปครอบครอง CPU หรือเข้าไปสถานะ Run อุบลจะถูกผม OS ตั้ง Process หนึ่งขึ้นมาเพื่อไปกำกับดูแลอุบลนะครับ นี่เรียกว่า "การให้กำเนิด" แต่พออุบลบอกอุบลเข้าไปครอบครอง CPU แล้ว เข้าไปสถานะ Run แล้วนะครับ อุบลก็จะมี Process ย่อยต่อไปอีก นึกออกไหม ซึ่งไม่รู้ว่ามีอะไรบ้าง เราไม่รู้นะครับ ซึ่งตัวของ Process ย่อยที่เราเรียกว่า "การให้กำเนิด" นั้น เราจะเรียกว่า "Process พ่อ" นะครับ ส่วน Process ย่อยที่สร้างต่อจาก Processผู้ให้กำเนิดเราเรียกว่า "Process ลู"เป็นลำดับชั้นนะครับ เป็นลักษณะแบบโครงสร้างแบบต้นไม้ ดูรูปนี้เห็นไหมครับ นี่คือลำดับชั้นของ Process นะครับ นี่คือลำดับย่อของ Process หัวข้อต่อมานะครับ ความสัมพันธ์ระหว่าง Process เราไม่พักเลยนะ พี่ล่ามคนเดียวนะครับ ขอพัก 5 นาทีนะครับ ขอพัก 5 นาทีนะครับ พี่ล่ามจะได้ไป ทานน้ำ ไปเข้าน้ำทานน้ำ แล้วก็เข้าห้องน้ำนะครับ พักก่อน 5 นาทีนะครับ เดี๋ยวเราต่ออีกประมาณ 15 สไลด์นะครับ (อาจารย์พิเชนทร์)ดูต่อนะครับ ความสัมพันธ์ระหว่าง Process นะครับ การทำงานของระบบคอมพิวเตอร์นั้นนะครับ ก็จะประกอบไปด้วย Process ต่าง ๆ นะครับ ทั้งของระบบแล้วของผู้ใช้นะครับ เมื่อมันมี Process มากมายทำงานพร้อม ๆ กันนะครับ จัดการขึ้นนะครับ นอกจากการจัดการแล้วนะครับเราก็ต้องมีการติดต่อระหว่างกันนะครับ เหมือนเราเราอยู่ในห้องเรานะครับ เราจะต้องมีการติดต่อสัมพันธ์กันนะครับ คราวนี้เรามาดูหัวข้อความสัมพันธ์ระหว่าง Process นะครับ การติดต่อระหว่าง Process นั้น ก็คือหมายความว่า Process หนึ่งอาจต้องการใช้ข้อมูลของอีก Process นึ่งจึงต้องทำไมครับ ต้องมีการส่งข้อมูลหรือต้องการติดต่อกันระหว่าง Process นะครับ ซึ่งการติดต่อกันระหว่าง Process นั้นนะครับ ก็มีหลายวิธีมาดูวิธีที่ 1 นะครับ ติดต่อกันโดยนะครับ ใช้หน่วยความจำร่วมนะครับ หมายความว่า เมื่อ Process หนึ่งต้องการส่ง Process หรือส่งข้อมูลไปให้อีก Process หนึ่งมันจะส่งข้อมูลผ่านหน่วยความจำร่วม ฟังก่อนนะครับ ฟังก่อนนะครับ อย่าเพิ่งคุยกันครับ จะจบแล้วครับ อีกแค่ 10 สไลด์นะครับ ฟังหรือเปล่าครับนี่ ฟังหรือเปล่า บอกเงียบก่อนนะครับ ฟังก่อน อย่าเพิ่งคุยกันเสียงดังนะครับ เดี๋ยวมันจะไม่เข้าใจนะครับ เวลาสอบ เรามัวแต่ลอกในหน้าจอนี่บางทีมันพอเวลาไปสอบนะครับ มันจะตอบไม่ได้นะครับ เดี๋ยวสอบกลางภาคก็จะรู้คะแนนตัวเองว่าเป็นอย่างไร ผมบอกแล้วนะครับ ว่าข้อสอบผมนั้นมีทั้งหมด 8 ชุดนะครับ ผมให้นั่งสอบแบบติดกันเลยนะครับ ข้อสอบคนละชุดนะครับ ถ้าเราไม่เข้าใจเราจะเขียนอธิบายได้ ดูนะครับ ความสัมพันธ์อันที่ 1 ก็คือเวลามันติดต่อหากันมันจะใช้หน่วยความจำร่วมกัน ดูรูปข้างล่างเลยนะครับ Process A ต้องการส่งข้อมูลไปให้ Process B มันทำกันอย่างไรนะครับ วิธีการ ก็คือ Process Aส่งไปแล้ว แต่ส่งไปที่หน่วยความจำนะครับ ส่งไปที่หน่วนความจำ เมื่อ Process Bต้องการจะไปรับข้อมูลจาก Process Aมันก็จะไปรับที่หน่วยความจำนะครับ ซึ่งหน่วยความจำก็จะมี Address แล้วเราจะรู้ได้อย่างไรครับ Process A ส่งอะไรมาให้เช็กจากอะไรครับ เช็กจากชื่อ จาก ID ใช่ไหม เพราะว่าชื่อของ Process แต่ละตัวก็จะมีรหัสด้วยนะครับ เห็นไหมครับ Process A นี่ มันจะส่งข้อมูลมานะครับ เราส่งไปให้หน่วยความจำร่วม Process A ก็ไปรับที่หน่วยความจำ วิธีการที่ 1 นะครับ การติดต่อกันระหว่างหน่วยความจำนะครับ นอกจากการใช้หน่วยควาามจำร่วมติดต่อระหว่าง Process นะครับ ก็ยังมีวิธีการที่สะดวกกว่านะครับ แล้วก้นิยมใช้เป็นมาตราฐานนะครับ นั่นก็คือการใช้ช่องทางข้อมูลหรือเรียกง่าย ๆ ว่า "พอร์ต" นะครับ ติดต่อผ่านพอร์ต รู้จักพอร์ตนะ เช่น Port USB Port Pararealต่อสายเข้าไปในเครื่องคอทมพิวเตอร์เรานะครับ อันนี้ง่ายกว่านะครับ สะดวกกว่าเช่น เราต้องการส่งข้อมูลจากเครื่องของคนหนึ่งไปเครื่องอีกคนหนึ่งผ่านอะไร ผ่านพอร์ตนะครับ คราวนี้วิธี่การส่งข้อมูลทั้งผ่านหน่วยความจำร่วมแล้วก็ผ่านพอร์ตนั้นนะครับ ในเรื่องของโครงสร้างของพอร์ตก็มีหลายแบบนะครับ จะส่งแบบไหนนะครับ อันที่ 1 นะครับ โครงสร้างของพอร์ต แบบที่ 1 ก็คือแบบคิวนะครับ โครงสร้างแบบนี้ ก็คือข้อมูลจะถูกดึงออกมาจากพอร์ตตามลำดับก่อน-หลัง ข้อมูลไหนส่งเข้ามาก่อนก็จะออกไปก่อน ก็คือแบบคิวเป็นคิวนะครับ เช่น ผมเข้าไปก่อนอุบล ผมก็ออกก่อนอุบลนะครับ นี่คือโครงสร้างข้อมูลแบบพอร์ต ง่าย ๆ ครับ เข้าก่อน ออกก่อนนะครับ โครงสร้างพอร์ตแบบที่ 2 ก็คือโครงสร้างแบบไปป์นะครับ รูปข้างล่างใช่ไหมแบบไปป์ ก็คือมีโครงสร้างแบบมีการทำงานแบบคิว คือ เข้าก่อนออกก่อน แต่มีข้อแตกต่างกับแบบคิวที่ว่าถ้าเป็นพอร์ตแบบไปป์จะมีความยาวของพอร์ตไม่จำกัด ถ้าเป็นแบบคิวจะจำกันเช่น พอร์ตแบบคิวแบบว่ามีขนาดของพอร์ต ความยาว 10 ช่อง สมมตินะ 10 ช่อง ก็แสดงว่าเข้าไปได้แค่ 10 คิวนะครับ แต่ถ้าพอร์ตแบบไปป์ โครงสร้างเหมือนพอร์ตแบบคิวก็จริง เข้าก่อน ออกก่อน แต่จะมีความยาวของพอร์ต นี่คือโครงสร้างแบบไปป์นะครับ โครงสร้าง Port แบบที่ 3 ก็คือStack นะครับ เป็นอย่างไรครับ แบบสแต็กStack คือ โครงสร้างที่ตรงข้ามกับแบบคิวเลยครับ ก็คือข้อมูลชุดใดที่ถูกส่งออกมาก่อนจะถูกดึงออกทีหลัง คือ เข้าก่อนออกทีหลังนะครับ นี่คือโครงสร้างแบบ Stack นะครับ นี่คือโครงสร้างของพอร์ตทั้ง 3 แบบนะครับ คราวนี้มาดูปัญหาของ Process นะครับ เมื่อมีการทำงานมากกว่า 1 Process ขึ้นไปนะครับ มันย่อมทำให้เกิดปัญหาเกิดขึ้นในการใช้งาน เมื่อมีโปรแกรมทำงานในระบบคอมพิวเตอร์เรา ปัญหาก็ไม่เกิดขึ้นรนะครับ เมื่อมีหลาย ๆ โปรแกรมทำงานอยู่บนระบบเดียวกันมีการใช้ทรัพยากรแย่งกันใช้ มันย่อมเกิดปัญหาขึ้นนะครับ ดังนั้น มันจะต้องมีการจัดสรรการใช้ Process ขึ้นนะครับ ถึงอย่างไรก็ตาม ปัญหาที่เราจะกล่าวต่อไปนี้ มันจะต้องไม่เกิดขึ้นกับระบบของเรานะครับ ดังนั้น คนที่ออกแบบระบบปฏิบัติการจะต้องแก้ปัญหาดังต่อไปนี้ให้ได้ เวลาเราเขียนโปรแกรมเราจะต้องเลี่ยงปัญหาเหล่านี้ให้ได้นะครับ ปัญหาการทำงานของ Process อันดับแรกเลยนะครับ ก็คือปัญหาการตัดตอนนะครับ ปัญหาการตัดตอนเกิดจากอะไรครับ เกิดจากการที่ Process หนึ่งต้องการใช้ทรัพยากรของ Process แต่ปรากฏว่า Process นั้นมีลำดับความสำคัญน้อยกว่า จึงยอมปลดปล่อยให้ Process ที่มีระดับความสำคัญมากกว่าเข้าไปครอบครองตัว CPUแทนตัวมันเอง นึกออกใช่ไหมครับ ก็คือ Process หนึ่งนี่ เช่น ผมกำลังจะเข้าไปครอบครอง CPU แต่ปรากฏว่าอุบลเข้ามาต่อคิวผม บังเอิญว่าลำดับความสำคัญอุบลสำคัญมากกว่าผม ผมยอมให้อุบลเข้าไปแทนผม นี่เกิดการตัดตอนขึ้น ถ้าเราจะอธิบายให้เป็นวิชาการ อธิบายว่าเกิดจาการที่ Process ใด Process หนึ่ง ที่จะเข้าไปครอบครอง CPU หรือเข้าไปในสถานะ Run นั้นยอมให้ Process ที่มีลำดับความสำคัญมากกว่าเข้าไปแทนที่มัน มันก็จะเกิดการตัดตอนขึ้นนะครับ ซึ่งปัญหาตัวนี้นะครับ คนที่ออกแบบระบบปฏิบัติการจะต้องไม่ให้เกิดขึ้นนะครับ ปัญหาต่อมา นอกจากปัญหาการตัดตอนแล้ว ปัญหาต่อมา ก็คือปัญหาการอดตาย หรือปัญหาการเลื่อนไปอย่างไม่มีสิ้นสุด หมายความว่าเมื่อเกิดการตัดตอนขึ้นใช่ไหม Process หนึ่งปล่อยให้ Process อีก Process หนึ่งที่มีความสำคัญมากกว่าเข้าไปครอบครอง CPU แทนมัน แล้วแทนไปเรื่อย ๆ นี่เราเรียกว่า "การอดตาย" เช่น ตัวอย่างเมื่อกี้ผมจะเข้าไปครอบครอง CPU แต่บังเอินว่าอุบลมาต่อคิว อุบลมีลำดับความสำคัญมากกว่า อุบลเข้าไปแทนที่พออุบลเสร็จแล้วผมจะเข้าไปต่อ แต่ปรากฏว่าแม็กกี้มาต่อ และแม็กกี้มีความสำคัญมากกว่าผม ก็เข้าไปแทนที่อีก พอแม็กกี้ออกมา ผมจะเข้าไปต่อ ปรากฎว่ามิ่งมาต่อ แล้วมิ่งมีความสำคัญมากกว่า มิ่งก็เข้าไปแทน ก็คือรอไปไม่มีวันสิ้นสุด รอไปเรื่อย ๆ ไม่มีวันสิ้นสุดนะครับ ถ้าเป็นสมัยก่อนนะครับ ผมก็จะยกตัวอย่างให้พวกเราเห็นภาพชัดเจน สมมติว่าที่อาคาร 7 เรานะครับ สร้างห้องน้ำมาใหม่ ห้องน้ำเปรียบเสมือน CPU สมมตินะ ผมจะเข้าเป็นคนแรก กำลังจะเปิดประตูเข้าไปห้องน้ำ ปรากฏว่าอุบล ไม่ใช่อุบล อธิการสะกิดหลัง พิเชนทร์ ๆ ผมขออนุญาตเข้าก่อน ผมมองไปข้างหลัง อธิการใหญ่กว่าผม อธิการเข้าไป นี่เกิดการตัดตอน แต่พออธิการเข้าไปเสร็จปุ๊บ ปรากฏว่ามีคนสะกิดหลังอีกแล้ว ผู้ว่าฯ สะกิดหลัง เป็นอย่างไรครับ ผู้ว่าเข้าไป นายอำเภอสกิดหลัง ผู้ว่าสกิดหลังเกิดการ ที่ใหญ่กว่าผมน่ะ ต้องตัดตอน พอตัดตอนเสร็จปุ๊บไม่มีโอกาสได้เข้า ก็เลยเป็นอดตายนะครับ นี่คือปัญหาที่เกิดขึ้นกับ Proหาที่ 2ของเรานะครับ ปัญหาที่ 3เขาบอกว่าทำไมถึงให้เกิดการตัดตอนไม่ได้หรือการอดตายไม่ได้ มันจะเกิดปัญหาขึ้น ถ้าทรัพยากรบางประเภท ถ้าเราปล่อยให้เกิดการตัดตอนจะเกิดปัญหาขึ้น เช่น เครื่องพิมพ์ ให้เรามาถึงเครื่องพิมพ์ที่เป็นหัวเข็ม เคยเห็นไหม มันจะดังแกร๊ก พรินต์ทีละบรรทัด เคยเห็นไหมครับ เครื่องพิมพ์แบบหัวเข็ม เหมือนเราไปซื้อของตามอะไร ตามเซเว่น หรือเราไปจ่ายค่าเทอม มันจะพรินต์เป็นหัวเข็มออกมา ถ้าเราปล่อยให้เกิดการตัดตอนขึ้น เช่น ผมสั่งพรินต์ไปได้ 2 บรรทัด แล้วอุบลสั่งมา อุบลบอกว่าอุบลมีความสำคัญมากกว่า แล้วเกิดการตัดตอนขึ้น บรรทัดที่ 3 จะกลายเป็นของอุบล ดังนั้น ห้ามให้มีเหตุการณ์นี้เกิดขึ้นนะครับ เพราะทรัพยากร บางอย่างให้เกิดขึ้นไม่ได้นะครับ ปัญหาต่อมานะครับ ปัญหาการติดตาย ดูรูปประกอบเลยนะครับ ปัญหาการติดตายเกิดจากอะไรครับ เกิดจาก Processใดก็แล้วแต่ ครอบครองทรัพยากรของตัวเองอยู่ แล้วในขณะเดียวกันต้องการไปครอบครองทรัพยากรของเราแต่ไม่ยอมให้ Process อื่น เข้ามาครอบครองทรัพยากรของตัวเอง เหมือนกันนะครับ เช่น ผมบอกอุบล อาจารย์ยิมสตางค์ของอุบลหน่อย 100 ล้าน อุบลก็บอกเหมือนกัน อาจารย์ผมก้ยืมตังอาจารย์หน่อย 200 ล้าน แต่อุบลก็ไม่ควักให้ผมนะ ผมก็ไม่ควักให้อุบล เพราะเราก็ไม่มีทั้งคู่นะ คือ อยากได้สตางค์อุบล อุบลก็อยากได้สตางค์ผม แต่ไม่ควักให้ นี่คือลักษณะการติดตายก็คือ Process ใด Process หนึ่งนี่ครอบครองทรัพยากรตัวเองอยู่แต่อยากไปได้ทรัพยากรของคนอื่นคนอื่น แต่ตัวเองก็ไม่ยอมให้ทรัพยากรของตัวเองนะครับ นี่คือลักษณะการติดตายหรือ Dead lock นะครับ เขาบอกว่าปัญหาการติดตายนั้น ไม่จำเป็นต้องเกิดจาก 2 Process อาจจะเกิดจากหลาย Process ก็ได้นะครับ มากกว่า 2 Process แต่ต้องมีเงื่อนไขดังนี้ เช่น 1. การครอบครองเป็นแบบตัดตอนไม่ได้ อันนี้ก็ตัดตอนไม่ได้นะ Process A, Process B ก็ไม่ได้ Process C ก็ไม่ได้ Dead lock เลยครับ ติดตายเลย ไม่ไป ไม่มานะครับ เงื่อนไขแบบที่ 2การครอบครองเป็นแบบไม่เกิดร่วม ต่างคนต่างทำงาน ต่างคนต่างอยู่คนละส่วน ติดตายขึ้นนะครับ เงื่อนไขที่ 3 คือ ในการรอใช้ทรัพยากรเป็นการรอแบบวนรอบหรือวงรอบ หรือภาษาเขีียนโปรแกรมเราเรียกว่า "วนลูป" หรือ "วนรอบ" ก็จะเกิดปัญหาการปิดตายขึ้นนะครับ นี่คือปัญหา 3 ปัญหาที่เกิดขึ้นในระบบเรา แต่เวลาเราออกแบบ OS ก็เกิดขึ้นนะครับ หัวข้อสุดท้ายนะครับ หัวข้อสุดท้ายของบทนี้นะครับ เธรดนะครับ เขาบอกในระบบปฏิบัติการรุ่นใหม่ ๆ บางตัวซึ่งเราใช้แล้วนะครับ เราใช้แบบนี้อยู่นะครับ ถ้าเป็นสมัยก่อนยกไม่เกิดระบบนี้ขึ้นมานะครับ เธรด ก็คือเป็นการที่ระบบปฏิบัติการแบ่งย่อย Process ออกมาเป็นส่วน ๆ ดูรูปประกอบเลยนะครับ นี่... ทำไมไม่ขึ้น ขวามือผมเห็นไหม 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 สัปดาห์นะครับ ก็สัปดาห์หน้าเราไม่ได้เจอกันนะครับ พี่ล่าม สัปดาห์หน้าจะพาน้อง ๆ ไปนอกสถานที่ก็ ถ้าไม่มีใครถามอะไรแล้วนะครับ ก็เจอกันสัปดาห์หน้านะครับ ไปดูงานนอกสถานที่กัน โอเคครับผม ไป