Transcript บทที่ 2
บทที่ 2 การทางานของ PC PC ทำงำนได้ อย่ ำงไร เริ่ มเปิ ดเครื่ อง ไฟฟ้ าวิ่งเข้าไปใน Power Supply ผ่านไปบนเมนบอร์ด CPU เริ่ มทางานที่ตาแหน่งของ BIOS BIOS เริ่ มทางาน ทาการตรวจสอบฮาร์ดแวร์พ้นื ฐานต่างๆ VGA, RAM, H.D., F.D., ค่า Config ใน CMOS ค้นหา Bootstrap Program ใน Master Boot Record โหลดข้อมูลจาก Master Boot Record เพื่อโหลด O.S. O.S. เริ่ มทางาน เมื่อ OS ทำงำน รอรับอินพุทจากผูใ้ ช้ Command Line , Graphic ทางานตามคาสัง่ นั้น รันโปรแกรมต่างๆ ควบคุมฮาร์ดแวร์ เรื่ องความปลอดภัย, ความถูกต้องของข้อมูล, เสถียรภาพ จะทางาน โดยวนรอบไปเรื่ อยๆจนกว่าจะ Shutdown ดังนั้น OS ก็เป็ นโปรแกรมเหมือนกัน แต่จะได้ทางานบ่อยครั้งที่สุด I/O ติดต่ อกับ CPU ได้ อย่ ำงไร ให้ น.ศ. ลองนึกภาพดูวา่ เราจะส่ งข้อมูลจากคียบ์ อร์ด ไปที่หน้าจอได้ อย่างไร ? ทางวิ่งของข้อมูล ข้อมูลที่จะส่ งมีกี่ไบท์ อัตราเร็ วในการส่ งข้อมูล ความถี่ในการส่ งข้อมูล Polling, Buffer, Interrupt, DMA กำรทำงำนแบบ Polling CPU จะวิ่งวนแบบ Round Robin เพื่อถามกับ I/O ทีละตัว หากใครต้องการส่ ง / รับข้อมูลก็สามารถทาได้ หากไม่กจ็ ะผ่านไป CPU You? I/O พิจารณาข้อดี / ข้อเสี ย You? I/O How about you? I/O กำรทำงำนแบบ Interrupt การทางานแบบ Polling นั้น CPU ต้องทางานตลอดเวลา วิธีการนี้ CPU จะทางานโดยไม่สนใจ I/O เมื่อ I/O ต้องการติดต่อกับ CPU ก็จะส่ งสัญญาณมาที่ CPU โดยตรง เป็ นสัญญาณในระดับฮาร์ดแวร์ (ที่ขาของ CPU จะมีขา INT.) CPU INT. Hey I want to send some. ลองคิดดูวา่ CPU จะรู ้ได้อย่างไรว่าใครเรี ยกมา และจะให้บริ การอย่างไร I/O Interrupt Service Routine เมื่อมี I/O ติดต่อมาที่ CPU แล้ว CPU ก็จะกระโดดไปทางานใน ส่ วนของ Interrupt Service Routine ที่อยูใ่ น Memory CPU จะรู ้วา่ ใครติดต่อมา โดยดูจากหมายเลขการอินเทอร์รัพท์ (Interrupt Request Number,IRQ.) ก่อนที่จะกระโดดไปทางาน CPU จะ PUSH ค่าใน PC ลงไปใน Stack ของระบบ เมื่อทางานเสร็ จแล้ว ก็จะ POP ค่าใน Stack กลับเข้ามาใน PC อีก ครั้งหนึ่ง จาเป็ นต้องรู ้ลึกขนาดนี้หรื อ - Windows, Linux, Open Source Buffer เป็ นหน่วยความจาขนาดเล็กๆ ใช้พกั ข้อมูลชัว่ คราว เป็ นตัวคัน่ ระหว่าง I/O กับ หน่วยความจาหลัก ส่ วนใหญ่อยูใ่ น Controller ของ I/O - ให้ น.ศ. ลองคิดถึงประโยชน์ของ Buffer Controller System Memory Buffer Data I/O ดูกำรทำงำนจริงของ I/O การทางานของ Keyboard กับ CPU เมื่อกด K.B. ข้อมูลวิ่งมาที่ Buffer (บน Controller) ข้อมูลพักไว้ชวั่ คราว จนกว่าใกล้จะเต็ม หรื อถึงค่าที่ต้งั ไว้ (Threshold) Controller ส่ งสัญญาณ INT ไป Trigger ที่ CPU CPU หยุดงานเก่าไว้ และมาอ่านข้อมูลจาก Buffer ไปวางไว้ใน RAM (ส่ วนของ I/O เฉพาะของ K.B.) CPU กระโดดกลับไปทางานเก่าต่อไป ดู Java Applet ประกอบในเว็บไซท์ ลองเขียน Flowchart ให้ น.ศ. แบ่งกลุ่มๆละประมาณ 5 คน ลองคุย ทบทวน การทางานของ Interrupt คิดถึง Flow การทางานของมัน นากระดาษมา 1 แผ่น วาด Flowchart ลงไปในกระดาษ เขียนรายชื่อสมาชิกในกลุ่มลงไป ส่ งอาจารย์ อาจารย์เก็บไว้ DMA ลองคิดถึงการส่ งข้อมูลของ CPU จาก RAM ไปที่หน้าจอ ให้ น.ศ. ที่ชื่อขึ้นต้นด้วย อักษร ส. ตอบ .... สิ่ งที่ตอ้ งคานึงถีง 1. ข้อมูลวิ่งจาก RAM ไปที่จอภาพได้อย่างไร 2. ความเร็ วของ CPU และฮาร์ดแวร์อื่นๆ 3. ความเร็ วโดยรวมของระบบ (Performance) กำรส่ งข้ อมูลไปทีจ่ อภำพโดยไม่ มี DMA สมมติวา่ ใน RAM มีขอ้ มูลรู ปภาพทั้งหมด 100KB. อยูใ่ น RAM ตาแหน่งที่ 500 ถึง 600 CPU ทาการ Copy ข้อมูลทีละ Byte ไปที่ Buffer ของ การ์ด จอ หลังจากนั้น CPU (อีกแล้ว) ก็ทาการส่ งข้อมูลจาก Buffer ไปที่ DAC (Digital-Analog Converter) ทีละ Byte เมื่อข้อมูลน้อยลงก็จะ Copy ข้อมูลชุดใหม่มาอีก อธิบำยกำรทำงำนของ DMA สมมติวา่ ใน RAM มีขอ้ มูลรู ปภาพทั้งหมด 100KB. อยูใ่ น RAM ตาแหน่งที่ 500 ถึง 600 CPU ทาการ Copy ข้อมูลทีละ Byte ไปที่ Buffer ของ การ์ด จอ เมื่อทาเสร็ จจะไปทางานอื่นได้เลย บนการ์ดจอ จะมี Microprocessor เพื่อทาการประมวลผลข้อมูล บน Buffer ที่ได้ แล้วส่ งไปที่ DAC ด้วยตนเอง เมื่อข้อมูลใน Buffer ลดลงจนใกล้หมด การ์ดจอส่ งสัญญาณ INT. มาแจ้งแก่ CPU และ CPU ก็จะ Copy ข้อมูลชุดใหม่มา พักสมอง... ทากิจกรรมเพื่อคลายสมองซีกซ้าย ร้องเพลง Cache หน่วยความจาหรื อ Buffer ที่มีความฉลาดในตัว มีอลั กอริ ธึมที่ใช้ในการจัดการ - LRU Algorithm เป็ นตัวคัน่ ระหว่างส่ วนต่างๆ เช่น CPU Cache (L1,L2) Memory Cache Disk Cache หลักกำรทำงำน ภายใน Cache จะมี Hardware ที่จะเก็บข้อมูลของข้อมูลจริ งใน Cache ได้ เมื่อ Cache เต็ม จะใช้ Replacement Algorithm ในแบบ LRU (Least Recently Used) ดูยอ้ นหลังกลับไป ข้อมูลไหนถูกอ่านเก่าที่สุด ก็จะถูกแทนที่ 20.00 น. 18.00 น. DATA 20.30 น. 17.00 น. 20.10 น. Victim กำรทำงำนแบบ 2 ช่ วง (Dual Mode Operation) จะแบ่งการทางานออกเป็ น 2 โหมด ได้แก่ Supervisor Mode และ User Mode ต่างกันที่ “สิ ทธิและขอบเขตในการทางาน” Supervisor Mode มีสิทธิ ทุกอย่างในการทางาน User Mode ไม่สามารถใช้ฮาร์ ดแวร์ ได้โดยตรง ให้ น.ศ. ลองคิดดูวา่ เราจะสร้าง Dual Mode Operation ได้ อย่างไร ใช้ Register………ถามว่าจะใช้ กี่ตวั และกี่บิท ลองคิด มีลกั ษณะของโปรแกรมแบบใดบ้างที่เป็ น User Mode และ Supervisor Mode หากไม่มีการแบ่ง Mode เป็ น 2 Mode แล้ว จะเป็ นอย่างไร หากโปรแกรมใดๆสามารถสัง่ การฮาร์ดดิสก์ให้หมุนได้โดยตรงจะเป็ น อย่างไร เหตุใดจึงใช้ Register ในการทางาน กำรป้ องกันด้ วย Hardware การทางานของ OS นั้น จะต้องคานึงถึงฮาร์ดแวร์ที่ใช้ดว้ ย ประโยชน์ของฮาร์ดแวร์ -> ทางานได้เร็ ว, ไม่ตอ้ งใช้ CPU หรื อ Main Memory Timer, Interrupt ตัวอย่าง เราสามารถนาฮาร์ ดแวร์ มาช่วยในการป้ องกันการใช้พ้นื ที่หน่วยความจา นอก ขอบเขตที่กาหนดของโปรแกรมใดๆได้ ทุกๆโปรแกรมที่ทางานจะต้องใช้ Memory ทุกๆโปรแกรมใน Memory จะมีขอบเขตของตนเอง ออกนอกขอบเขตไม่ได้ ภำพอธิบำย Memory 500 โปรแกรม 200 - เราจะใช้ Hardware อะไรในการควบคุม - จะควบคุม หรื อทางานได้อย่างไร 0 Solution Memory จะใช้ Register 2 ตัวในการควบคุม Base Register 500 เก็บแอดเดรสตัวล่าง Limit Register เก็บขนาดของพื้นที่ของโปรแกรม 200 Base 300 Limit 200 0 กำรทำงำนของ CPU เมื่อมีการอ้างถึงหน่วยความจาที่ตาแหนงใดๆก็ตาม CPU จะ ตรวจสอบกับ Register 2 ตัวนี้ก่อนเสมอ หาก Error ก็จะจับ (Trap) โปรแกรมนั้นทันที Base Base CPU Address Base + limit yes >= yes < no no Trap to O.S.