Transcript บทที่ 1
บทที่ 1 ความรู ้พ้นื ฐาน 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 1 วัตถุประสงค์ 1. ความรู้เบือ้ งต้ นเกีย่ วกับโปรแกรมระบบ 11 รู้โครงสร้ างเบือ้ งต้ นของโปรแกรมระบบ 111 บอกความหมาย ของตัวคอมไพเลอร์ ตัวแอสเซมเบลอร์ 112 บอกความหมาย ของตัวโหลดเดอร์ 113 บอกความหมาย ของระบบปฏิบัตกิ าร 12 รู้โครงสร้ างเบือ้ งต้ นของเครื่อง 121 อธิบายหน่ วยความจา 122 อธิบายหน่ วยประมวลผลกลาง 123 อธิบายคาสั่ง 124 อธิบายข้ อมูล 125 อธิบายแอดเดรส 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 2 วัตถุประสงค์ 13 รู ้ววิ ฒั นาการในแต่ละองค์ประกอบ ของโปรแกรมระบบ 131 บอกวิวฒั นาการของ ตัวแอสเซมเบลอร์ 132 บอกวิวฒั นาการของ ตัวโหลดเดอร์ 133 บอกวิวฒั นาการของ ตัวแมคโคร 134 บอกวิวฒั นาการของ ตัวคอมไพเลอร์ 135 บอกวิวฒั นาการของ ระบบที่มีรูปแบบ 14 รู้วิวฒั นาการของระบบปฏิบตั ิการ 141 บอกวิวฒั นาการของ ระบบปฏิบตั ิการ 142 อธิ บายระบบปฏิบตั ิการแบบต่างๆ 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 3 คอมพิวเตอร์ • เครื่ อง ที่ทางานตามคาสัง่ ที่เราโปรแกรมไว้ 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 4 โปรแกรมระบบ คืออะไร • โปรแกรมที่ถูกพัฒนาขึ้น เพื่อช่วยให้ผใู ้ ช้คอมพิวเตอร์ (Users) สามารถใช้คอมพิวเตอร์ ได้ตรงตามความต้องการของผูใ้ ช้ ง่าย และ สะดวก • โปรแกรมที่ใช้ ช่วยในการสร้างโปรแกรมประยุกต์ 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 5 ตัวอย่างของโปรแกรมระบบ • • • • • Assembler Compiler Loader Macro Processor Operating System 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 6 องค์ประกอบของการเขียนโปรแกรมระบบ People Application Programming Compilers Loaders I/O Programs 06/06/47 File Systems Assemblers Tex Editors Scheduler Macro Processors Debugging Aids Libraries บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) Searching and Sorting Memory Management Device Management 7 โครงสร้าง เครื่ องคอมพิวเตอร์ Memory I/O Processor Card Read/Punch 06/06/47 I/O Processor ·· CPU CPU ·· Printer Disk Or Drum บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 8 โครงสร้าง เครื่ องคอมพิวเตอร์ (ต่อ) • Memory เป็ นอุปกรณ์ที่ใช้เก็บข้อมูล และคาสัง่ • Processor อุปกรณ์ที่ใช้ในการประมวลผลข้อมูล ตามคาสัง่ ที่เก็บ ไว้ในหน่วยความจา • ข้อมูล และคาสัง่ เก็บอยูใ่ นรู ปของ ‘0’ และ ‘1’ • ‘0’ และ ‘1’ เรี ยก Binary Digits (Bit) • เมื่อหลาย Bits มารวมกัน กลายเป็ น Words, Characters หรื อ Bytes เป็ นต้น 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 9 โครงสร้าง เครื่ องคอมพิวเตอร์ (ต่อ) • Memory Location ถูกกาหนดโดย Address ที่ช้ ีไปยังข้อมูล หรื อ คาสั่ง ในหน่วยความจา • Memory หรื อหน่วยความจา คล้ายกับ ตูจ้ ดหมาย ที่ใช้บรรจุกลุ่มข้อมูล ‘0’ และ ‘1’ โดยมี Address กากับ Address 10,000 10,001 10,002 06/06/47 Contents 0000 0000 0000 0001 0011 0000 0000 0001 0000 0000 0000 0101 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 10 โครงสร้าง เครื่ องคอมพิวเตอร์ (ต่อ) • A Code หรื อ รหัส คือกลุ่มของ Bits ที่เกิดจากกฎเกณฑ์ ที่เรา ตั้งขึ้น เช่น – BCD ใช้แทนตัวเลข – EBCDIC และ ASCII ใช้แทนตัวอักขระ – Instruction ขึ้นอยูก่ บั ตัว Processor • CPU (Central Processing Unit) หน่วยประมวลผล กลาง 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 11 โครงสร้าง เครื่ องคอมพิวเตอร์ (ต่อ) • I/O Processor ทาหน้าที่ยา้ ยข้อมูลระหว่างหน่วยความจา กับ อุปกรณ์ประกอบภายนอก เช่น เครื่ องพิมพ์ ดิสก์ เครื่ องพิมพ์ เป็ นต้น – ทางานตามคาสั่งที่เก็บไว้ในหน่วยความจา – สั่งให้ทางานโดย CPU • I/O Instructions คือกลุ่มคาสัง่ ที่ทางานโดยตัว I/O Processors – ชุดตาสั่ง อาจแตกต่างจากชุดคาสั่งของ CPU – สามารถทางานแบบ Asynchronously (Simultaneously) กับตัว CPU 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 12 โครงสร้าง เครื่ องคอมพิวเตอร์ (ต่อ) • การทางานแบบ Asynchronous ระหว่าง I/O และ CPU เป็ นต้นแบบของ Multiprocessing • Multiprocessing หมายถึง ระบบคอมพิวเตอร์ ที่มีตวั Processor มากกว่า 1 ตัว ทางานพร้อมกัน โดยใช้หน่วยความจา (Memory) ที่เดียวกัน 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 13 โครงสร้าง เครื่ องคอมพิวเตอร์ (ต่อ) • Procedure หรื อโปรแกรมย่อย ที่แก้ไขตัวมันเอง (Modify) เรี ยกว่า Impure Procedure – Impure Procedure • • • • อ่านเข้าใจยาก ไม่สามารถทางานร่ วมกัน (Shared) แบบ Multiprocessor ได้ สัง่ ให้ทางานแต่ละครั้ง (Execute) จะเจอคาสัง่ ต่างๆ กัน เพราะฉะนั้น เอาโปรแกรม มาใช้หนหรื อ 2 หนไม่ได้ – ถ้าจะให้โปรแกรม Reusable เหมือนกันทุกครั้ง ที่ทาการ Execute ต้องเขียนโปรแกรมเป็ น Pure Procedure หรื อ Re-Entrant Code 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 14 1.2 องค์ประกอบของโปรแกรมระบบ 1.2.1 Assembler ใช้แปลงโปรแกรมภาษาแอสเซมบลี้ ให้เป็ นภาษาเครื่ อง Source Program Destination Program Assembly Language Assembler Program Program 06/06/47 Object บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 15 1.2.2 ไม่มี Loaders Memory Assembler Assembly Language Object Program Program • เปลืองหน่วยความจา • ต้องทาการแปลงทุกครั้ง เมื่อ ต้องการ Execute 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 16 1.2.2 มี Loaders Assembler Assembly Language Object Program Loader Program • Loader เล็กกว่า ตัว Assembler ดังนั้นกิน หน่วยความจาน้อยกว่า สามารถใช้ Object Program ได้ใหญ่ข้ ึน Loader Object Program Loader • สามารถใช้โปรแกรมย่อยได้ 06/06/47 Object Program บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 17 ปั ญหาของโปรแกรมย่อย •โปรแกรม 1 (ขนาดเล็ก) มี Hole •โปรแกรม 2 (ขนาดใหญ่) ทับโปรแกรมย่อย SQRT 06/06/47 SQRT SQRT Program 1 Program 2 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 18 หน้าที่ของ Loader • จัดสรรพื้นที่ในหน่วยความจาให้กบั โปรแกรม (Allocation) • เชื่อมโยง Address ของ Symbolic ต่างๆ ระหว่าง Object (Linking) • ปรับ Address ให้สอดคล้องกับหน่วยความจา ใน กรณี การอ้าง Address เป็ นแบบ Relocate Address (Relocation) • เรี ยกโปรแกรมจากดิสก์ มาไว้ยงั หน่วยความจา (Loading) 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) Sub 1 Sub 2 Sub3 Main 19 Time • Execution Time ระยะเวลาในการ Execute โปรแกรม ของผูใ้ ช้ • Assembly Time ระยะเวลาในการแปลงโปรแกรมภาษา แอสเซมบลี้ ให้เป็ น Object Program • Compile Time ระยะเวลาในการแปลงโปรแกรมภาษาชั้นสูง เช่น Pascal ให้เป็ น Object Program • Load Time ระยะเวลาในการโหลดโปรแกรมจากดิสก์ลง หน่วยความจา และปรับแอดเดรส พร้อมให้โปรแกรมทางาน 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 20 1.2.3 Macro : Macro name : Macro end : Name : Name : • แทนที่ ขยาย • ทาโดย Macro Processor ลดงานโปรแกรมเมอร์ ในการ Code โปรแกรม 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 21 1.2.4 Compiler High Level Language Compiler Object Program Program • Interpreter – เป็ นโปรแกรมที่ทาการ Execute ตัว Source โปรแกรมภาษาชั้นสู ง โดยตรง ราวกับว่า ตัว Source โปรแกรมเป็ นภาษาเครื่ อง 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 22 1.2.5 Formal Systems • Basic Symbol: ตัวอักขระ, กลุ่มของคา (Axiom) • Operation: กลุ่มความสัมพันธ์แบบ Finite Set ตัวอย่าง เช่น Set Theory, Boolean Algebra, Post System, Backus Norm Form เป็ นต้น ประโยชน์ • เป็ นวิชาพื้นฐาน ศึกษาในวิชา Automata Theory และ Theory of Computing เพื่อศึกษาต่อในวิชา Programming Language, Compiler • ใช้ออกแบบ Syntax และ Semantic ของภาษา 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 23 1.3 Operating System • ขั้นตอนในการ Execute โปรแกรมระบบเก่า เช่น ภาษา Fortran ยุคเริ่ มแรก – ใส่ โปรแกรมระบบ Compiler ของภาษา Fortran (กดปุ่ ม) – ใส่ Source Program (กดปุ่ ม) – หา Loader จาก Library ใส่ (กดปุ่ ม) – หยิบ Object Cards มาใส่ (กดปุ่ ม) – หา Subroutine Card มาใส่ (กดปุ่ ม) • ยุง่ ยาก ใช้ลาบาก • เสี ยเวลามากในการทางาน 1 Job/Program 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 24 Batch Operating System • โปรแกรมจานวนมาก ถูก Loaded ลงหน่วยความจา • เป็ นระบบ Multiprogramming (มีหลายโปรแกรมบรรจุ ภายในหน่วยความจา CPU สามารถสวิทช์ไปทาโปรแกรมอื่นได้ ถ้า โปรแกรมที่กาลังทางานอยู่ รอการใช้อุปกรณ์ I/O) – Multiprogramming with Fixed Tasks (MFT) (หน่วยความแต่ละโปรแกรมจาคงที่) – Multiprogramming with Variable Tasks (MFT) (หน่วยความแต่ละโปรแกรมจาแปรไปตามขนาดของโปรแกรม) 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 25 Fragmentation Fortran Holes Assembler Loader Users 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 26 การแก้ปัญหา Fragmentation • Relocatable Partition • Paging • Segment 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 27 Paging 1 2 3 4 5 : : • Simple Paging • Demand Paging • Pure Demand Paging 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 28 Time Sharing แบ่งเวลาของ CPU ออกเป็ นส่ วน ให้กบั User แต่ละคน จนดูเหมือนว่า User แต่ละคนเป็ นเจ้าของ CPU 06/06/47 บทที่ 1 ความรู ้พ้นื ฐาน (การเขียนโปรแกรมระบบ) 29