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.