บทที่ 1

Download Report

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