โครงสร้างของระบบคอมพิวเตอร์ และโครงสร้างของระบบปฏิบัติการ
ระบบคอมพิวเตอร์ ในยุคปัจจุบัน จะประกอบไปด้วยซีพียู และตัวควบคุมอุปกรณ์ (Device Controller) อยู่จำนวนหนึ่ง ที่มีการเชื่อมโยงเข้าด้วยกันผ่านสายส่งข้อมูล หรือที่เรียกว่าบัส (Bus)
ตัวควบคุมอุปกรณ์ แต่ละตัวจะมีหน้าที่ควบคุมอุปกรณ์ที่ตนรับผิดชอบ เช่น ดิสก์ไดรฟ์ หรือเครื่องพิมพ์ เป็นต้น
Device controller แต่ละตัวรับผิดชอบ device ของตัวเองCPU และ device controller สามารถทำงานพร้อมกันได้มี memory controller เพื่อจัดลำดับการ share memoryเมื่อคอมพิวเตอร์เริ่ม running ตัวอย่างเช่น เมื่อเปิดสวิตช์ หรือ reboot ก็จำเป็นที่จะต้อง run โปรแกรมเริ่มต้น (initial program) หรือ boot strap program ซึ่งเป็นการนำ register ของ CPU และ device controller เข้าสู่หน่วยความจำ bootstrap program ต้องถูก load ไปไว้ใน kernel ของระบบปฏิบัติการ ระบบปฏิบัติการจึงจะเริ่ม execute โปรแกรมแรก เช่น “init” และรอผลลัพธ์ ผลที่ได้มักเป็นสัญญาณขัดจังหวะ จากฮาร์ดแวร์หรือซอฟแวร์ ฮาร์ดแวร์อาจขัดจังหวะโดยส่งสัญญาณผ่านทาง system bus มาที่ CPU โดยซอฟแวร์ ขัดจังหวะโดยการปฏิบัติการบางอย่างที่พิเศษเรียกว่า system call หรือ monitor callเมื่อ CPU ถูกขัดจังหวะ ก็จะหยุดทำงานที่กำลังทำอยู่ แล้วหันไปทำงานตามสัญญาณขัดจังหวะนั้นทันที โดยย้ายไปทำงานยังตำแหน่งในหน่วยความจำที่บรรจุโปรแกรมสำหรับดำเนินการกับสัญญาณนั้น (interrupt service routine) เมื่อดำเนินการเสร็จ CPU ก็จะกลับไปทำงานเดิมที่ค้างไว้
หน้าที่โดยทั่วไปของสัญญาณขัดจังหวะ
สัญญาณขัดจังหวะจะส่งการควบคุมไปยัง interrupt service routine ผ่านทาง ตารางสัญญาณขัดจังหวะ (interrupt vector) (array ของ address ของ service routine ต่าง ๆ)สถาปัตยกรรมของสัญญาณขัดจังหวะ จะต้องบันทึกตำแหน่งของชุดคำสั่งที่ถูกขัดจังหวะไว้สัญญาณขัดจังหวะที่เข้าสู่ระบบจะถูก disable ถ้ามีการทำงานของสัญญาณขัดจังหวะตัวอื่นอยู่ก่อนแล้ว เพื่อป้องกันการสูญหายของสัญญาณขัดจังหวะ (lost interrupt)ในระบบที่ซับซ้อนขึ้นอาจยอมให้มีการขัดจังหวะซ้อน ๆ กันได้โดยเรียงตามศักดิ์(Priority) สัญญาณที่มีศักดิ์สูงกว่าอาจขัดจังหวะสัญญาณที่มีศักดิ์ต่ำกว่า แต่ถ้ามีศักดิ์เท่ากันต้องรอ interrupt พร้อมกันไม่ได้ระบบปฏิบัติการยุคใหม่ ใช้ ตัวขับสัญญาณขัดจังหวะ (interrupt driver) ถ้าไม่มีการ process , ไม่มีการเรียกใช้อุปกรณ์รับส่งข้อมูล ไม่มีการตอบสนองผู้ใช้ ระบบปฏิบัติการก็ไม่ต้องทำอะไร นั่นเป็นสัญญาณบอกเหตุว่าเกิด interrupt หรือ trap (กับดัก)trap คือ software-generated interrupt (การเกิดการขัดจังหวะของซอฟแวร์) ซึ่งเกิด error หรือไม่ก็เกิดจาก การร้องขอของโปรแกรมของผู้ใช้
อินเตอร์รัพท์เวคเตอร์และกลไกการอินเตอร์รัพท์อินเตอร์รัพท์เวคเตอร์ มีบทบาท ในการ กระโดด ไปยัง ตำแหน่งใหม่ เมื่อ ซีพียูได้รับ สัญญาณ อินเตอร์รัพท์ ดังนี้ คือ เมื่อซีพียู ได้รับ สัญญาณ อินเตอร์รัพท์ ซีพียู จะตอบรับ และกระโดด ไปทำ ยังตำแหน่งที่ บอก อินเตอร์รัพท์เวคเตอร์ มาจากไหน โดยหลักง่ายๆ สัญญาณ อินเตอร์รัพท์ เป็นสัญญาณเกิด จาก วงจรภายนอก ซีพียู ดังนั้น วงจรภายนอก ที่เป็นตัวกำเนิด สัญญาณ INT นี้ ต้องเป็นผู้ บอกให้ซีพียู รู้ว่า จะต้อง ไปทำคำสั่ง ที่ไหน นั่นคือ วงจรภายนอก จะต้องเป็นผู้ ให้อินเตอร์รัพท์ เวคเตอร์ ซึ่งเป็น ตัวเลข ไบนารี แก่ซีพียู ในเวลา ที่ซีพียู ตอบรับรู้ สัญญาณ นั่นเอง เราอาจ เรียกง่ายๆ ว่า ขบวนการ Interrupt acknowledge คือ การตอบรับรู้ วงจรภายนอก ที่กำเนิดสัญญาณ อินเตอร์รัพท์นั้น และ ขอรับ อินเตอร์รัพท์ เวคเตอร์ จากวงจร ภายนอก นั่นเอง
DMA (Direct Memory Access) หรือการส่งเข้าถึงข้อมูลในหน่วยความจำโดยตรง คือกระบวนการโอนย้ายข้อมูลระหว่างหน่วยความจำกับอุปกรณ์ภายนอก โดยไม่ผ่าน CPUกระบวนการ DMA เริ่มต้นจาก1. อุปกรณ์ที่ต้องการทำ DMA ส่งสัญญาณ DREQ เพื่อร้องขอทำ DMA ไปยัง DMA controller ในช่องทาง (channnel) ที่ต้องการ2. เมื่อ DMA controller ได้รับสัญญาณ ก็จะตรวจสอบก่อนว่าสามารถอณุญาติให้ทำ DMA ได้หรือไม่แล้วจึงส่งสัญญาณ HRQ เพื่อบอก CPU ว่าต้องการเข้ามาใช้ BUS โดยส่งสัญญาณนี้ไปยังของ HOLD ของ CPU3. เมื่อ CPU ได้รับสัญญาณ HRQ จาก DMA controller ที่ขา HOLD และพร้อมที่จะตอบสนองก็จะส่งสัญญาณ HLDA หรือ Hold Acknowledge ตอบกลับไปยัง DMA controller เพื่อแสดงว่า CPU ได้ปลดตัวเองและปล่อยการควบคุม แล้วจะส่งหน้าที่ต่างๆให้ DMA controller รับไปดำเนินการ4. เมื่อ DMA controller ได้รับสัญญาณ HLDA แล้วก็เข้าควบคุม address bus และ controller bus และส่งสัญญาณ DACK ตอบกลับไปยังอุปกรณ์เพื่อแสดงถึงการพร้อมสำหรับเริ่มต้นส่งข้อมูล5. การส่งข้อมูลจะเริ่มต้นโดยจะส่งสัญญาณ AEN ส่งสัญญาณ คือ address แรกของหน่วยความจำเป้าหมายออกไปที่ address bus และส่งสัญญาณไปควบคุมการเขียนและอ่านหน่วยความจำกับอุปกรณ์กับอุปกรณ์ออกไป เพื่อดำเนินการย้ายข้อมูลระหว่างอุปกรณ์กับหน่วยความจำ6. เมื่อข้อมูลโอนย้ายจนครบสมบูรณ์แล้วก็จะเข้าสู่กระบวนการยกเลิก DMA โดย DMA จะส่งสัญญาณ EOP หรือ End Of Process ออกไป7. ส่งผลให้สัญญาณ AEN ตกลงเป็น LOW เพื่อคืน bus ให้กับ CPU และ HRQ จาก DMA controller ที่ไปของให้ CPU HOLD ก็จะหายไป เพื่อให้ CPU กลับมาดูแล bus ต่างๆดังเดิม8.เมื่อสัญญาณที่ร้องของ HOLD หายไป CPU ก็จะรับรู้และจะตอบสนองโดยยกเลิกสัญญาณ HLDA เพื่อแสดงว่าตอนนี้ CPU กลับมาดูแลระบบแล้ว
ลำดับชั้นของหน่วยความจำ (Memory Hierarchy)หน่วยความจำมีอยู่หลายชนิดด้วยกัน แต่ละชนิดต่างก็มีอัตราความเร็วที่แตกต่างกันรวมทั้งขนาดความจุและราคาที่แตกต่างกัน สาเหตุที่เป็นเช่นนั้นก็เพราะว่า เพื่อให้เราเลือกหน่วยความจำใช้งานได้อย่างเหมาะสม
หน่วยความจำชั่วคราว (Volatile memory) คือหน่วยความจำของคอมพิวเตอร์ที่จำเป็นต้องมีไฟฟ้าเลี้ยงตลอดเวลาตราบเท่าที่ยังต้องการให้มันเก็บข้อมูลนั้นอยู่ หรืออีกนัยหนึ่งก็คือหากไม่ได้รับไฟฟ้าเลี้ยงแล้วข้อมูลที่เคยเก็บอยู่ในหน่วยความจำชั่วคราวก็จะหายไป ตัวอย่างของหน่วยความจำชั่วคราวก็คือ แรมชนิดต่างๆ ตรงกันข้ามกับหน่วยความจำถาวรที่ยังรักษาข้อมูลอยู่แม้ว่าจะไม่มีไฟฟ้าเลี้ยงแล้วก็ตาม
หน่วยความจำถาวร ( Non-volatile memory) คือหน่วยความจำของคอมพิวเตอร์ที่สามารถเก็บรักษาข้อมูลได้อยู่โดยไม่ต้องอาศัยไฟฟ้า ตัวอย่างหน่วยความจำถาวรเช่น รอม, แฟลช ยังรวมถึงหน่วยเก็บข้อมูลด้วยแม่เหล็ก เช่น จานบันทึกแบบแข็ง (hard disks), แผ่นบันทึก (floppy disks) และแถบแม่เหล็ก (magnetic tape), หน่วยเก็บข้อมูลด้วยแสง เช่น แผ่นซีดี และหน่วยเก็บข้อมูลยุคเก่า เช่น บัตรเจาะรู
การป้องกันหน่วยความจำระบบต้องมีการป้องกัน ความผิดพลาดที่เกิดจากกระบวนการหนึ่งไปกระทบอีกกระบวนการหนึ่ง โดยสร้างกลไกบางอย่างเพื่อป้องกันแฟ้มข้อมูล, หน่วยความจำส่วนหนึ่งหรือหน่วยประมวลผลกลาง
โครงสร้างของระบบปฎิบัติการ
1 การจัดการกระบวนการ (Process Management)กระบวนการคือ โปรแกรมที่กำลังทำงานอยู่ ได้แก่ งานแบบกลุ่ม (batch job) โปรแกรมของผู้ใช้ในระบบปันส่วน (time-shared user program) งานสปุลลิ่ง เป็นต้นกระบวนการต้องใช้ทรัพยากรต่าง ๆ ในการทำงานหนึ่ง ๆ เช่น เวลาประมวลผล , หน่วยความจำ , แฟ้มข้อมูล และอุปกรณ์รับส่งข้อมูล ซึ่งกระบวนการอาจได้รับทรัพยากรเหล่านี้ตั้งแต่ตอนที่ถูกสร้างขึ้น หรือได้มาระหว่างทำงาน ทั้งยังสามารถส่งผ่านทรัพยากรไปสู่กระบวนการอื่นได้อีกด้วย เช่น กระบวนการหนึ่งมีหน้าที่แสดงสถานะของแฟ้มข้อมูลหนึ่ง บนจอภาพ ก็จะได้รับข้อมูลเข้าเป็นชื่อแฟ้มข้อมูล และก็จะทำคำสั่งบางอย่างเพื่อให้ได้ข้อมูลสถานะของแฟ้มนั้นมาเพื่อแสดงต่อไป
กระบวนการเป็นหน่วยย่อยของงานในระบบ ระบบประกอบไปด้วยกระบวนการหลาย ๆ กระบวนการ กระบวนการบางอันเป็นของระบบปฏิบัติการเอง บางอันเป็นของผู้ใช้ระบบ กระบวนการเหล่านี้สามารถทำงานไปเสมือนพร้อมกัน (concurrent) ได้ โดยการสลับกันใช้หน่วยประมวลผลกลาง
2 งานบริการของระบบปฏิบัติการ (Operating – System Service)ระบบปฏิบัติการ เป็นผู้จัดสภาพแวดล้อมให้โปรแกรมทำงาน โดยให้บริการต่าง ๆ แก่โปรแกรม และผู้ใช้ระบบ ระบบปฏิบัติการต่าง ๆ มักมีการให้บริการที่แตกต่างกัน แต่จะมีส่วนหนึ่งที่เหมือนกัน เพื่อให้ความสะดวกต่อผู้ใช้ หรือ ผู้เขียนโปรแกรม ในการทำงานต่าง ๆ ให้ง่ายและรวดเร็ว บริการเหล่านี้ ได้แก่การให้โปรแกรมทำงาน (Program Execution) ระบบต้องสามารถนำโปรแกรมลงสู่หน่วยความจำหลัก และให้โปรแกรมทำงาน โดยที่การทำงานต้องมีวันสิ้นสุด ไม่ว่าจะเป็นปกติหรือไม่ปกติก็ตามการรับส่งข้อมูล (I/O Operation) โปรแกรมของผู้ใช้อาจต้องการรับส่งข้อมูล โดยผ่านแฟ้มข้อมูล หรือ อุปกรณ์รับส่งข้อมูล อุปกรณ์รับส่งข้อมูลบางชนิดต้องการคำสั่งช่วยพิเศษ เช่น เครื่องขับเทป ต้องการการถอยหลังกลับเมื่อเต็ม หรือจอภาพต้องการคำสั่งล้างจอเมื่อเริ่มต้นทำงาน เนื่องจากผู้ใช้ไม่สามารถใช้อุปกรณ์รับส่งข้อมูลได้โดยตรง ดังนั้น ระบบจึงต้องจัดหาวิธีการเพื่อเป็นตัวกลางใช้แทนการใช้ระบบแฟ้มข้อมูล (File – system Manipulation) ระบบแฟ้มข้อมูลเป็นสิ่งจำเป็นอย่างยิ่ง โปรแกรมต้องการอ่าน หรือ เขียนข้อมูลลงในแฟ้มข้อมูล นอกจากนี้ ยังต้องการสร้าง หรือ ลบแฟ้มข้อมูลด้วยการใช้ชื่อแฟ้มการติดต่อสื่อสาร (Communications) บางครั้งกระบวนการหนึ่งอาจต้องการส่งข้อมูลให้อีกกระบวนการหนึ่ง โดยที่กระบวนการทั้งสองนั้น อาจอยู่ในเครื่องคอมพิวเตอร์เดียวกันหรือคนละเครื่องกัน แต่ติดต่อผ่านเครือข่ายคอมพิวเตอร์ การติดต่อสื่อสารนี้อาจทำได้โดยใช้ หน่วยความจำร่วม (share memory) หรือ การส่งผ่านข้อความ (message passing) โดยมีระบบปฏิบัติการเป็นตัวกลางการตรวจจับข้อผิดพลาด (Error detection) ระบบปฏิบัติการจำเป็นต้องมีกลไกในการตรวจจับข้อผิดพลาดที่อาจจะเกิดขึ้นได้ เช่น ในหน่วยประมวลผลกลาง (เครื่องเสีย , ไฟดับ) ในอุปกรณ์รับส่งข้อมูล (เทปเสีย , การติดต่อผ่านเครือข่ายล้มเหลว , หรือกระดาษพิมพ์หมด) หรือในโปรแกรมของผู้ใช้ (เช่น คำนวณผิด , ระบุตำแหน่งในหน่วยความจำผิด หรือ ใช้ CPU time มากไป) สำหรับข้อผิดพลาดแต่ละชนิด ระบบปฏิบัติการจะจัดการด้วยวิธีที่เหมาะสมเพื่อแก้ข้อผิดพลาดเหล่านั้นนอกจากระบบปฏิบัติการจะมีหน้าที่อำนวยความสะดวกให้แก่ผู้ใช้ ยังต้องประกันประสิทธิภาพในการปฏิบัติการของระบบเองอีกด้วย ในระบบผู้ใช้หลายคน เราสามารถเพิ่มประสิทธิภาพได้โดยใช้ทรัพยากรร่วมกันการจัดสรรทรัพยากร (Resource allocation) เมื่อมีผู้ใช้หลายคนหรืองานหลายงานทำงานพร้อมกันในช่วงเวลาหนึ่ง ทรัพยากรต่าง ๆ ก็ต้องถูกจัดสรรให้กับคนหรืองานเหล่านั้น ชนิดของทรัพยากรต่าง ๆ จะถูกจัดการด้วยระบบปฏิบัติการ ทรัพยากรบางอย่าง (เช่น รอบการใช้ CPU , หน่วยความจำหลัก และ ที่เก็บแฟ้มข้อมูล) อาจจะมีรหัสในการจัดสรรพิเศษ โดยที่ทรัพยากรอย่างอื่น (เช่น อุปกรณ์รับส่งข้อมูล) อาจจะมีรหัสร้องขอ และปลดปล่อยพิเศษการทำบัญชี (Accounting) เราต้องเก็บรวบรวมการทำงานของผู้ใช้ โดยเก็บบันทึกไว้เป็นบัญชีหรือทำเป็นสถิติการใช้ทรัพยากรต่าง ๆ แบบสะสม สถิติการใช้เหล่านี้จะเป็นเครื่องมือที่มีค่าสำหรับนักวิจัยซึ่งหวังจะ reconfigure ระบบเพื่อปรับปรุงบริการในด้านการคำนวณการป้องกัน (Protection) information ที่เก็บในระบบคอมพิวเตอร์ที่มีผู้ใช้หลายคนอาจจะต้องการควบคุมการใช้งานด้วยตัวมันเอง เมื่อมีกระบวนการหลาย ๆ กระบวนการทำงานพร้อมกัน เราต้องไม่ให้กระบวนการหนึ่งไปแทรกแซงกระบวนการอื่น ๆ หรือ แม้แต่ตัวระบบปฏิบัติการเอง การป้องกันเป็นการประกันว่า การเข้าถึงทรัพยากรของระบบทั้งหมดต้องถูกควบคุม การรักษาความปลอดภัยของระบบจากภายนอกเป็นสิ่งสำคัญ การรักษาความปลอดภัยเริ่มด้วย ผู้ใช้แต่ละคนต้องได้รับการรับรองตัวเองต่อระบบ โดยทั่วไปก็จะหมายถึงรหัสผ่าน เพื่ออนุญาตให้ใช้ทรัพยากรต่าง ๆ ซึ่งรวมไปถึงการป้องกันอุปกรณ์รับส่งข้อมูล ซึ่งประกอบไปด้วย โมเด็มและการ์ดเครือข่าย (network adapters) ถ้าระบบถูกป้องกันและรักษาความปลอดภัยก็เท่ากับว่าเป็นการป้องกันไว้ก่อนลาง
3 System Calls (การเรียกระบบ)System Call จัดเตรียมส่วนต่อประสาน (interface) ระหว่างกระบวนการหนึ่งกับระบบปฏิบัติการ การเรียกระบบมักเป็นคำสั่งภาษา assembly บางระบบอาจอนุญาตให้เรียกระบบได้โดยตรงจากโปรแกรมภาษาระดับสูง ซึ่งกรณีนี้การเรียกระบบจะถูกกำหนดเป็นหน้าที่ หรือ subroutine call (การเรียกระบบย่อย)ภาษาหลาย ๆ ภาษา เช่น C , Bliss , BCPL , PL/360 , และ PERL ถูกนำมาใช้แทน assembly สำหรับการเขียนโปรแกรมระบบตัวอย่างการเรียกระบบ ลองดูการโปรแกรมซึ่งอ่านข้อมูลจากแฟ้มข้อมูลหนึ่งแล้วเขียนลอกลงในอีกแฟ้มหนึ่ง ขั้นแรกโปรแกรมต้องทราบชื่อของแฟ้มข้อมูลทั้งสองนั้นเสียก่อน (input file และ output file) ถ้าเป็นระบบที่ใช้สัญลักษณ์ภาพ และตัวชี้ (icon –based และ mouse – based) มักมีรายชื่อแฟ้มบนจอภาพให้ผู้ใช้เลือก โดยใช้ตัวชี้ และ กดปุ่มบนตัวชี้ เพื่อกำหนดแฟ้มรับ และ แฟ้มส่งข้อมูลเมื่อได้ชื่อแฟ้มทั้งสองแล้ว โปรแกรมก็ต้องเรียกระบบ เพื่อให้เปิดแฟ้มส่งข้อมูล และ สร้างแฟ้มรับข้อมูล อาจมีข้อผิดพลาดเกิดขึ้นในการเรียกระบบนี้ เช่น ไม่มีแฟ้มข้อมูลที่ผู้ใช้ขอเปิดเป็นแฟ้มส่งข้อมูล (หาชื่อไม่พบ) หรือ ผู้ใช้ไม่มีสิทธิใช้แฟ้มข้อมูลดังกล่าว (protected) ซึ่งโปรแกรมต้องแสดงข้อความทางจอภาพ (โดยการเรียกระบบอีกคำสั่งหนึ่ง) หรือ สั่งหยุดการทำงาน (โดยเรียกระบบอีกคำสั่งหนึ่ง) โดยมีข้อผิดพลาด ถ้าพบแฟ้มส่งข้อมูล และ สามารถเปิดได้ ต่อไปก็เป็นการสร้างแฟ้มรับข้อมูลใหม่ (เรียกระบบเช่นกัน) อาจมีข้อผิดพลาดได้เหมือนกัน เช่น ชื่อแฟ้มซ้ำกับแฟ้มที่มีอยู่แล้ว ซึ่งอาจจะทำให้โปรแกรมต้องหยุดการทำงาน (โดยการเรียกระบบ) หรือ ลบแฟ้มเก่าทิ้งไป (โดยการเรียกระบบอีก) แล้วสร้างแฟ้มใหม่ขึ้น (เรียกระบบอีก) หรือ (ในระบบโต้ตอบ) แสดงข้อความถามผู้ใช้ (เรียกระบบเพื่อแสดงข้อความ เรียกระบบเพื่อรับคำสั่งจากแป้นพิมพ์) ว่าจะเขียนทับหรือยกเลิกการทำงาน
หลังจากที่จัดเตรียมแฟ้มทั้งสองแล้ว โปรแกรมก็ต้องวนเวียนอ่านจากแฟ้มส่งข้อมูล (เรียกระบบ) แล้วเขียนลงในแฟ้มรับข้อมูล (เรียกระบบอีก) ในการอ่าน และ เขียนนี้ ระบบต้องส่งสถานะไปให้โปรแกรมด้วยว่าทำงานเสร็จ หรือ มีข้อผิดพลาดเกิดขึ้น ในการอ่านอาจพบว่าอุปกรณ์ผิดพลาด หรือสิ้นสุดแฟ้มข้อมูล ในการเขียนอาจพบว่า เนื้อที่เต็มแล้ว หรือ กระดาษหมดแล้ว หรือ ถึงสุดหางเทปแล้ว เป็นต้น (ทั้งนี้ขึ้นอยู่กับอุปกรณ์รับข้อมูลนั้น)เมื่อคัดลอกแฟ้มข้อมูลจนหมดแล้ว โปรแกรมจะปิดแฟ้มทั้งสอง (เรียกระบบอีก) และ แสดงข้อความบนจอภาพ (เรียกระบบอีก) ว่าเสร็จแล้ว และสุดท้ายหยุดโปรแกรม (เรียกระบบเป็นครั้งสุดท้ายเช่นกัน) จากตัวอย่างนี้ จะเห็นว่าโปรแกรมหนึ่ง ๆ อาจเรียกระบบบ่อยครั้งมาก การติดต่อระหว่างโปรแกรมกับสิ่งแวดล้อม จำเป็นต้องทำผ่านระบบปฏิบัติการทั้งสิ้น
ตัวควบคุมอุปกรณ์ แต่ละตัวจะมีหน้าที่ควบคุมอุปกรณ์ที่ตนรับผิดชอบ เช่น ดิสก์ไดรฟ์ หรือเครื่องพิมพ์ เป็นต้น
หน้าที่โดยทั่วไปของสัญญาณขัดจังหวะ
สัญญาณขัดจังหวะจะส่งการควบคุมไปยัง interrupt service routine ผ่านทาง ตารางสัญญาณขัดจังหวะ (interrupt vector) (array ของ address ของ service routine ต่าง ๆ)สถาปัตยกรรมของสัญญาณขัดจังหวะ จะต้องบันทึกตำแหน่งของชุดคำสั่งที่ถูกขัดจังหวะไว้สัญญาณขัดจังหวะที่เข้าสู่ระบบจะถูก disable ถ้ามีการทำงานของสัญญาณขัดจังหวะตัวอื่นอยู่ก่อนแล้ว เพื่อป้องกันการสูญหายของสัญญาณขัดจังหวะ (lost interrupt)ในระบบที่ซับซ้อนขึ้นอาจยอมให้มีการขัดจังหวะซ้อน ๆ กันได้โดยเรียงตามศักดิ์(Priority) สัญญาณที่มีศักดิ์สูงกว่าอาจขัดจังหวะสัญญาณที่มีศักดิ์ต่ำกว่า แต่ถ้ามีศักดิ์เท่ากันต้องรอ interrupt พร้อมกันไม่ได้ระบบปฏิบัติการยุคใหม่ ใช้ ตัวขับสัญญาณขัดจังหวะ (interrupt driver) ถ้าไม่มีการ process , ไม่มีการเรียกใช้อุปกรณ์รับส่งข้อมูล ไม่มีการตอบสนองผู้ใช้ ระบบปฏิบัติการก็ไม่ต้องทำอะไร นั่นเป็นสัญญาณบอกเหตุว่าเกิด interrupt หรือ trap (กับดัก)trap คือ software-generated interrupt (การเกิดการขัดจังหวะของซอฟแวร์) ซึ่งเกิด error หรือไม่ก็เกิดจาก การร้องขอของโปรแกรมของผู้ใช้
อินเตอร์รัพท์เวคเตอร์และกลไกการอินเตอร์รัพท์อินเตอร์รัพท์เวคเตอร์ มีบทบาท ในการ กระโดด ไปยัง ตำแหน่งใหม่ เมื่อ ซีพียูได้รับ สัญญาณ อินเตอร์รัพท์ ดังนี้ คือ เมื่อซีพียู ได้รับ สัญญาณ อินเตอร์รัพท์ ซีพียู จะตอบรับ และกระโดด ไปทำ ยังตำแหน่งที่ บอก อินเตอร์รัพท์เวคเตอร์ มาจากไหน โดยหลักง่ายๆ สัญญาณ อินเตอร์รัพท์ เป็นสัญญาณเกิด จาก วงจรภายนอก ซีพียู ดังนั้น วงจรภายนอก ที่เป็นตัวกำเนิด สัญญาณ INT นี้ ต้องเป็นผู้ บอกให้ซีพียู รู้ว่า จะต้อง ไปทำคำสั่ง ที่ไหน นั่นคือ วงจรภายนอก จะต้องเป็นผู้ ให้อินเตอร์รัพท์ เวคเตอร์ ซึ่งเป็น ตัวเลข ไบนารี แก่ซีพียู ในเวลา ที่ซีพียู ตอบรับรู้ สัญญาณ นั่นเอง เราอาจ เรียกง่ายๆ ว่า ขบวนการ Interrupt acknowledge คือ การตอบรับรู้ วงจรภายนอก ที่กำเนิดสัญญาณ อินเตอร์รัพท์นั้น และ ขอรับ อินเตอร์รัพท์ เวคเตอร์ จากวงจร ภายนอก นั่นเอง
DMA (Direct Memory Access) หรือการส่งเข้าถึงข้อมูลในหน่วยความจำโดยตรง คือกระบวนการโอนย้ายข้อมูลระหว่างหน่วยความจำกับอุปกรณ์ภายนอก โดยไม่ผ่าน CPUกระบวนการ DMA เริ่มต้นจาก1. อุปกรณ์ที่ต้องการทำ DMA ส่งสัญญาณ DREQ เพื่อร้องขอทำ DMA ไปยัง DMA controller ในช่องทาง (channnel) ที่ต้องการ2. เมื่อ DMA controller ได้รับสัญญาณ ก็จะตรวจสอบก่อนว่าสามารถอณุญาติให้ทำ DMA ได้หรือไม่แล้วจึงส่งสัญญาณ HRQ เพื่อบอก CPU ว่าต้องการเข้ามาใช้ BUS โดยส่งสัญญาณนี้ไปยังของ HOLD ของ CPU3. เมื่อ CPU ได้รับสัญญาณ HRQ จาก DMA controller ที่ขา HOLD และพร้อมที่จะตอบสนองก็จะส่งสัญญาณ HLDA หรือ Hold Acknowledge ตอบกลับไปยัง DMA controller เพื่อแสดงว่า CPU ได้ปลดตัวเองและปล่อยการควบคุม แล้วจะส่งหน้าที่ต่างๆให้ DMA controller รับไปดำเนินการ4. เมื่อ DMA controller ได้รับสัญญาณ HLDA แล้วก็เข้าควบคุม address bus และ controller bus และส่งสัญญาณ DACK ตอบกลับไปยังอุปกรณ์เพื่อแสดงถึงการพร้อมสำหรับเริ่มต้นส่งข้อมูล5. การส่งข้อมูลจะเริ่มต้นโดยจะส่งสัญญาณ AEN ส่งสัญญาณ คือ address แรกของหน่วยความจำเป้าหมายออกไปที่ address bus และส่งสัญญาณไปควบคุมการเขียนและอ่านหน่วยความจำกับอุปกรณ์กับอุปกรณ์ออกไป เพื่อดำเนินการย้ายข้อมูลระหว่างอุปกรณ์กับหน่วยความจำ6. เมื่อข้อมูลโอนย้ายจนครบสมบูรณ์แล้วก็จะเข้าสู่กระบวนการยกเลิก DMA โดย DMA จะส่งสัญญาณ EOP หรือ End Of Process ออกไป7. ส่งผลให้สัญญาณ AEN ตกลงเป็น LOW เพื่อคืน bus ให้กับ CPU และ HRQ จาก DMA controller ที่ไปของให้ CPU HOLD ก็จะหายไป เพื่อให้ CPU กลับมาดูแล bus ต่างๆดังเดิม8.เมื่อสัญญาณที่ร้องของ HOLD หายไป CPU ก็จะรับรู้และจะตอบสนองโดยยกเลิกสัญญาณ HLDA เพื่อแสดงว่าตอนนี้ CPU กลับมาดูแลระบบแล้ว
ลำดับชั้นของหน่วยความจำ (Memory Hierarchy)หน่วยความจำมีอยู่หลายชนิดด้วยกัน แต่ละชนิดต่างก็มีอัตราความเร็วที่แตกต่างกันรวมทั้งขนาดความจุและราคาที่แตกต่างกัน สาเหตุที่เป็นเช่นนั้นก็เพราะว่า เพื่อให้เราเลือกหน่วยความจำใช้งานได้อย่างเหมาะสม
หน่วยความจำถาวร ( Non-volatile memory) คือหน่วยความจำของคอมพิวเตอร์ที่สามารถเก็บรักษาข้อมูลได้อยู่โดยไม่ต้องอาศัยไฟฟ้า ตัวอย่างหน่วยความจำถาวรเช่น รอม, แฟลช ยังรวมถึงหน่วยเก็บข้อมูลด้วยแม่เหล็ก เช่น จานบันทึกแบบแข็ง (hard disks), แผ่นบันทึก (floppy disks) และแถบแม่เหล็ก (magnetic tape), หน่วยเก็บข้อมูลด้วยแสง เช่น แผ่นซีดี และหน่วยเก็บข้อมูลยุคเก่า เช่น บัตรเจาะรู
โครงสร้างของระบบปฎิบัติการ
1 การจัดการกระบวนการ (Process Management)กระบวนการคือ โปรแกรมที่กำลังทำงานอยู่ ได้แก่ งานแบบกลุ่ม (batch job) โปรแกรมของผู้ใช้ในระบบปันส่วน (time-shared user program) งานสปุลลิ่ง เป็นต้นกระบวนการต้องใช้ทรัพยากรต่าง ๆ ในการทำงานหนึ่ง ๆ เช่น เวลาประมวลผล , หน่วยความจำ , แฟ้มข้อมูล และอุปกรณ์รับส่งข้อมูล ซึ่งกระบวนการอาจได้รับทรัพยากรเหล่านี้ตั้งแต่ตอนที่ถูกสร้างขึ้น หรือได้มาระหว่างทำงาน ทั้งยังสามารถส่งผ่านทรัพยากรไปสู่กระบวนการอื่นได้อีกด้วย เช่น กระบวนการหนึ่งมีหน้าที่แสดงสถานะของแฟ้มข้อมูลหนึ่ง บนจอภาพ ก็จะได้รับข้อมูลเข้าเป็นชื่อแฟ้มข้อมูล และก็จะทำคำสั่งบางอย่างเพื่อให้ได้ข้อมูลสถานะของแฟ้มนั้นมาเพื่อแสดงต่อไป
กระบวนการเป็นหน่วยย่อยของงานในระบบ ระบบประกอบไปด้วยกระบวนการหลาย ๆ กระบวนการ กระบวนการบางอันเป็นของระบบปฏิบัติการเอง บางอันเป็นของผู้ใช้ระบบ กระบวนการเหล่านี้สามารถทำงานไปเสมือนพร้อมกัน (concurrent) ได้ โดยการสลับกันใช้หน่วยประมวลผลกลาง
2 งานบริการของระบบปฏิบัติการ (Operating – System Service)ระบบปฏิบัติการ เป็นผู้จัดสภาพแวดล้อมให้โปรแกรมทำงาน โดยให้บริการต่าง ๆ แก่โปรแกรม และผู้ใช้ระบบ ระบบปฏิบัติการต่าง ๆ มักมีการให้บริการที่แตกต่างกัน แต่จะมีส่วนหนึ่งที่เหมือนกัน เพื่อให้ความสะดวกต่อผู้ใช้ หรือ ผู้เขียนโปรแกรม ในการทำงานต่าง ๆ ให้ง่ายและรวดเร็ว บริการเหล่านี้ ได้แก่การให้โปรแกรมทำงาน (Program Execution) ระบบต้องสามารถนำโปรแกรมลงสู่หน่วยความจำหลัก และให้โปรแกรมทำงาน โดยที่การทำงานต้องมีวันสิ้นสุด ไม่ว่าจะเป็นปกติหรือไม่ปกติก็ตามการรับส่งข้อมูล (I/O Operation) โปรแกรมของผู้ใช้อาจต้องการรับส่งข้อมูล โดยผ่านแฟ้มข้อมูล หรือ อุปกรณ์รับส่งข้อมูล อุปกรณ์รับส่งข้อมูลบางชนิดต้องการคำสั่งช่วยพิเศษ เช่น เครื่องขับเทป ต้องการการถอยหลังกลับเมื่อเต็ม หรือจอภาพต้องการคำสั่งล้างจอเมื่อเริ่มต้นทำงาน เนื่องจากผู้ใช้ไม่สามารถใช้อุปกรณ์รับส่งข้อมูลได้โดยตรง ดังนั้น ระบบจึงต้องจัดหาวิธีการเพื่อเป็นตัวกลางใช้แทนการใช้ระบบแฟ้มข้อมูล (File – system Manipulation) ระบบแฟ้มข้อมูลเป็นสิ่งจำเป็นอย่างยิ่ง โปรแกรมต้องการอ่าน หรือ เขียนข้อมูลลงในแฟ้มข้อมูล นอกจากนี้ ยังต้องการสร้าง หรือ ลบแฟ้มข้อมูลด้วยการใช้ชื่อแฟ้มการติดต่อสื่อสาร (Communications) บางครั้งกระบวนการหนึ่งอาจต้องการส่งข้อมูลให้อีกกระบวนการหนึ่ง โดยที่กระบวนการทั้งสองนั้น อาจอยู่ในเครื่องคอมพิวเตอร์เดียวกันหรือคนละเครื่องกัน แต่ติดต่อผ่านเครือข่ายคอมพิวเตอร์ การติดต่อสื่อสารนี้อาจทำได้โดยใช้ หน่วยความจำร่วม (share memory) หรือ การส่งผ่านข้อความ (message passing) โดยมีระบบปฏิบัติการเป็นตัวกลางการตรวจจับข้อผิดพลาด (Error detection) ระบบปฏิบัติการจำเป็นต้องมีกลไกในการตรวจจับข้อผิดพลาดที่อาจจะเกิดขึ้นได้ เช่น ในหน่วยประมวลผลกลาง (เครื่องเสีย , ไฟดับ) ในอุปกรณ์รับส่งข้อมูล (เทปเสีย , การติดต่อผ่านเครือข่ายล้มเหลว , หรือกระดาษพิมพ์หมด) หรือในโปรแกรมของผู้ใช้ (เช่น คำนวณผิด , ระบุตำแหน่งในหน่วยความจำผิด หรือ ใช้ CPU time มากไป) สำหรับข้อผิดพลาดแต่ละชนิด ระบบปฏิบัติการจะจัดการด้วยวิธีที่เหมาะสมเพื่อแก้ข้อผิดพลาดเหล่านั้นนอกจากระบบปฏิบัติการจะมีหน้าที่อำนวยความสะดวกให้แก่ผู้ใช้ ยังต้องประกันประสิทธิภาพในการปฏิบัติการของระบบเองอีกด้วย ในระบบผู้ใช้หลายคน เราสามารถเพิ่มประสิทธิภาพได้โดยใช้ทรัพยากรร่วมกันการจัดสรรทรัพยากร (Resource allocation) เมื่อมีผู้ใช้หลายคนหรืองานหลายงานทำงานพร้อมกันในช่วงเวลาหนึ่ง ทรัพยากรต่าง ๆ ก็ต้องถูกจัดสรรให้กับคนหรืองานเหล่านั้น ชนิดของทรัพยากรต่าง ๆ จะถูกจัดการด้วยระบบปฏิบัติการ ทรัพยากรบางอย่าง (เช่น รอบการใช้ CPU , หน่วยความจำหลัก และ ที่เก็บแฟ้มข้อมูล) อาจจะมีรหัสในการจัดสรรพิเศษ โดยที่ทรัพยากรอย่างอื่น (เช่น อุปกรณ์รับส่งข้อมูล) อาจจะมีรหัสร้องขอ และปลดปล่อยพิเศษการทำบัญชี (Accounting) เราต้องเก็บรวบรวมการทำงานของผู้ใช้ โดยเก็บบันทึกไว้เป็นบัญชีหรือทำเป็นสถิติการใช้ทรัพยากรต่าง ๆ แบบสะสม สถิติการใช้เหล่านี้จะเป็นเครื่องมือที่มีค่าสำหรับนักวิจัยซึ่งหวังจะ reconfigure ระบบเพื่อปรับปรุงบริการในด้านการคำนวณการป้องกัน (Protection) information ที่เก็บในระบบคอมพิวเตอร์ที่มีผู้ใช้หลายคนอาจจะต้องการควบคุมการใช้งานด้วยตัวมันเอง เมื่อมีกระบวนการหลาย ๆ กระบวนการทำงานพร้อมกัน เราต้องไม่ให้กระบวนการหนึ่งไปแทรกแซงกระบวนการอื่น ๆ หรือ แม้แต่ตัวระบบปฏิบัติการเอง การป้องกันเป็นการประกันว่า การเข้าถึงทรัพยากรของระบบทั้งหมดต้องถูกควบคุม การรักษาความปลอดภัยของระบบจากภายนอกเป็นสิ่งสำคัญ การรักษาความปลอดภัยเริ่มด้วย ผู้ใช้แต่ละคนต้องได้รับการรับรองตัวเองต่อระบบ โดยทั่วไปก็จะหมายถึงรหัสผ่าน เพื่ออนุญาตให้ใช้ทรัพยากรต่าง ๆ ซึ่งรวมไปถึงการป้องกันอุปกรณ์รับส่งข้อมูล ซึ่งประกอบไปด้วย โมเด็มและการ์ดเครือข่าย (network adapters) ถ้าระบบถูกป้องกันและรักษาความปลอดภัยก็เท่ากับว่าเป็นการป้องกันไว้ก่อนลาง
3 System Calls (การเรียกระบบ)System Call จัดเตรียมส่วนต่อประสาน (interface) ระหว่างกระบวนการหนึ่งกับระบบปฏิบัติการ การเรียกระบบมักเป็นคำสั่งภาษา assembly บางระบบอาจอนุญาตให้เรียกระบบได้โดยตรงจากโปรแกรมภาษาระดับสูง ซึ่งกรณีนี้การเรียกระบบจะถูกกำหนดเป็นหน้าที่ หรือ subroutine call (การเรียกระบบย่อย)ภาษาหลาย ๆ ภาษา เช่น C , Bliss , BCPL , PL/360 , และ PERL ถูกนำมาใช้แทน assembly สำหรับการเขียนโปรแกรมระบบตัวอย่างการเรียกระบบ ลองดูการโปรแกรมซึ่งอ่านข้อมูลจากแฟ้มข้อมูลหนึ่งแล้วเขียนลอกลงในอีกแฟ้มหนึ่ง ขั้นแรกโปรแกรมต้องทราบชื่อของแฟ้มข้อมูลทั้งสองนั้นเสียก่อน (input file และ output file) ถ้าเป็นระบบที่ใช้สัญลักษณ์ภาพ และตัวชี้ (icon –based และ mouse – based) มักมีรายชื่อแฟ้มบนจอภาพให้ผู้ใช้เลือก โดยใช้ตัวชี้ และ กดปุ่มบนตัวชี้ เพื่อกำหนดแฟ้มรับ และ แฟ้มส่งข้อมูลเมื่อได้ชื่อแฟ้มทั้งสองแล้ว โปรแกรมก็ต้องเรียกระบบ เพื่อให้เปิดแฟ้มส่งข้อมูล และ สร้างแฟ้มรับข้อมูล อาจมีข้อผิดพลาดเกิดขึ้นในการเรียกระบบนี้ เช่น ไม่มีแฟ้มข้อมูลที่ผู้ใช้ขอเปิดเป็นแฟ้มส่งข้อมูล (หาชื่อไม่พบ) หรือ ผู้ใช้ไม่มีสิทธิใช้แฟ้มข้อมูลดังกล่าว (protected) ซึ่งโปรแกรมต้องแสดงข้อความทางจอภาพ (โดยการเรียกระบบอีกคำสั่งหนึ่ง) หรือ สั่งหยุดการทำงาน (โดยเรียกระบบอีกคำสั่งหนึ่ง) โดยมีข้อผิดพลาด ถ้าพบแฟ้มส่งข้อมูล และ สามารถเปิดได้ ต่อไปก็เป็นการสร้างแฟ้มรับข้อมูลใหม่ (เรียกระบบเช่นกัน) อาจมีข้อผิดพลาดได้เหมือนกัน เช่น ชื่อแฟ้มซ้ำกับแฟ้มที่มีอยู่แล้ว ซึ่งอาจจะทำให้โปรแกรมต้องหยุดการทำงาน (โดยการเรียกระบบ) หรือ ลบแฟ้มเก่าทิ้งไป (โดยการเรียกระบบอีก) แล้วสร้างแฟ้มใหม่ขึ้น (เรียกระบบอีก) หรือ (ในระบบโต้ตอบ) แสดงข้อความถามผู้ใช้ (เรียกระบบเพื่อแสดงข้อความ เรียกระบบเพื่อรับคำสั่งจากแป้นพิมพ์) ว่าจะเขียนทับหรือยกเลิกการทำงาน