เพิ่มขีดความสามารถก็จะมีการพัฒนาเพื่อเพิ่มขีดความสามารถของระบบปฏิบัติการ ตามไปด้วย และระบบปฏิบัติการอีกกลุ่มหนึ่งคือระบบปฏิบัติการยูนิกซ์ซึ่งเป็น ระบบปฏิบัติการที่ใช้งานบนเครื่องตั้งแต่ระดับไมโครคอมพิวเตอร์ขึ้นไปจนถึง ซูเปอร์คอมพิวเตอร์    ต่อมาก็เกิดการเปลี่ยนแปลงครั้งใหญ่ในวงการระบบปฏิบัติการกล่าวคือมีระบบ ปฏิบัติการที่ใช้สำหรับเครื่องคอมพิวเตอร์ส่วนบุคคลที่มีการเชื่อมโยงกัน เป็นเครือข่ายคอมพิวเตอร์เรียกว่าระบบปฏิบัติการเครือข่าย ( Network Operating    System : NOS )    ซึ่งทำให้สามารถขยายขอบเขตการใช้งานเครื่องคอมพิวเตอร์ส่วนบุคคลได้เป็น อย่างมาก ระบบปฏิบัติการเครือข่ายมีแนวความคิดพื้นฐานไม่ต่างจากระบบจัดการแบบเดิม เท่าใดนัก โดยจะมีการจัดการเกี่ยวกับอุปกรณ์ควบคุมการสื่อสาร และโปรแกรมที่ควบคุมการทำงาน เช่น การเข้าถึงข้อมูล เป็นต้น    แต่อย่างไรก็ตามก็ยังรักษาโครงสร้าง และหน้าที่หลักๆ ของระบบปฏิบัติการเอาไว้เช่นเดิม

3.9 โครงสร้างระบบปฏิบัติการ
          3.6.1 องค์ประกอบของระบบ หรือคอมโพแนนต์ของระบบ (System component)
ระบบแบ่งงานออกเป็นส่วนย่อยต่าง ๆ เรียกว่า component เช่น input, output หรือ function ซึ่งหน้าที่ของระบบ คือจัดการส่วนย่อยต่าง ๆ ให้ทำงานร่วมกันได้อย่างมีประสิทธิภาพ ซึ่งมีงานหลาย ๆ อย่างที่ต้องจัดการ ดังนี้
         3.6.1.1 การจัดการโปรเซส (Process management)
         3.6.1.2 การจัดการหน่วยความจำ (Memory management)
         3.6.1.3 การจัดการไฟล์ (File management)
         3.6.1.4 การจัดการอินพุต / เอาต์พุต (Input/Output management)
         3.6.1.5 การจัดการสื่อจัดเก็บข้อมูล (Storage management)
         3.6.1.6 เน็ตเวิร์ค (Networking)
         3.6.1.7 ระบบป้องกัน (Protection system)
         3.6.1.8 ระบบตัวแปลคำสั่ง (Interpreter system)
         3.6.2 เซอร์วิสของระบบปฏิบัติการ (Operating system services)
บริการพื้นฐานที่ระบบปฏิบัติการต้องมีให้กับผู้ใช้ ที่น่าสนใจมีดังนี้
         3.6.2.1 การเอ็กซิคิวต์โปรแกรม
         3.6.2.2 การปฏิบัติกับอินพุต/เอาต์พุต
         3.6.2.3 การจัดการกับระบบไฟล์
         3.6.2.4 การติดต่อสื่อสาร
         3.6.2.5 การตรวจจับข้อผิดพลาด
         3.6.2.6 การแชร์รีซอร์ส
         3.6.2.7 การป้องกัน
         3.6.3 System calls
ทำหน้าที่ กำหนดอินเทอร์เฟสระหว่าง process กับ operating system เพื่อการควบคุม และจัดการระบบ โดยแบ่งออกเป็น 5 กลุ่ม
         3.6.3.1 การควบคุมโปรเซส
         3.6.3.2 การจัดการกับไฟล์
         3.6.3.3 การจัดการดีไวซ์
         3.6.3.4 การบำรุงรักษาข้อมูล
         3.6.3.5 การติดต่อสื่อสาร

         Source: http://big99.212cafe.com/archive/2007-10-31/os-operating-system-resource-os-software-hardware-firmwaremiddot-software-os-os-software-osmiddot-ha/
         
         3.10 วิธีการจัดเก็บแฟ้มข้อมูล
 
         วิธีการเก็บข้อมูลที่ใช้กันในระบบปฏิบัติการทุกตัวคือ จัดเก็บข้อมูลเป็นแฟ้มข้อมูลหรือไฟล์ (file การอ้างถึงไฟล์หรือข้อมูลต่างๆ ภายในไฟล์ของโปรแกรม จะไม่มีความเกี่ยวข้องกับแอดเดรสของโปรแกรมใดๆ ทั้งสิ้น ระบบปฏิบัติการ มีโอเปอร์เรชั่นพิเศษที่เรียกว่า system call ไว้ให้โปรแกรมเรียกใช้ เพื่อให้สามารถจัดการงานที่เกี่ยวกับไฟล์ได้ เช่น สร้างไฟล์ ลบไฟล์ อ่านหรือเขียนไฟล์ เป็นต้น

วิธีการจัดเก็บไฟล์ที่ใช้กันอยู่ทั่วไปมี 3 วิธี

  1. การเก็บเป็นไบต์เรียงกันไป ซึ่งใช้กับระบบ UNIX
  2. เก็บเป็นเรคคอร์ด ซึ่งเรคคอร์ดจะมีขนาดคงที่สามารถจะอ่านหรือเขียนที่เรคคอร์ดไหนก็ได้ แต่ไม่สามารถเพิ่มหรือลบเรคคอร์ดกลางๆ ได้ วิธีนี้ใช้ใน CP/M
  3. เป็นการจัดเก็บแบบต้นไม้หรือทรี (tree) ของบล็อก (ในดิสก์) แต่ละบล็อกจะมี n เรคคอร์ด แต่ละ เรคคอร์ดจะมีคีย์ (key) เอาไว้ช่วยในค้นหาเรคคอร์ด เรคคอร์ดสามารถเพิ่มหรือลบออกที่ใดก็ได้ ถ้ามีเรคคอร์ด ถูกเพิ่มเข้าไปในบล็อกที่เต็มแล้ว บล็อกนั้นก็จะแยกออกเป็น 2 บล็อกใหม่ในทรีและจัดเรียงตามลำดับอักษร วิธีนี้ใช้บนเครื่องระดับเมนเฟรมหลายเครื่อง และเรียกว่า ISAM (indexed sequential access method)

เนื่องจากจุดประสงค์หนึ่งของการออกแบบระบบปฏิบัติการ ก็คือ การทำให้ผู้ใช้เป็นอิสระจากอุปกรณ์ (device independent) ดังนั้นการเข้าถึงไฟล์ (ในแง่ของผู้ใช้) จะต้องเหมือนกันหรือมีรูปแบบเดียวกันหมดไม่ว่าจะเป็นไฟล์หรืออุปกรณ์ใดๆ เช่นโปรแกรมที่อ่านข้อมูลจากไฟล์ อินพุต เข้ามาเรียงลำดับข้อมูล และเขียนผลลัพธ์กลับออกไปที่ไฟล์เอาต์พุต ควรใช้ได้กับไฟล์บนฟล็อปปี้ดิสห์หรือไฟล์บนฮาร์ดดิสก์ และควรเขียนเอาต์พุตออกทางไฟล์ จอภาพ หรือเครื่องพิมพ์ ได้โดยไม่ต้องเขียนโปรแกรมให้ตรวจสอบในแต่ละกรณี สิ่งเหล่านี้ปล่อยให้เป็นหน้าที่ของ ระบบปฏิบัติการ ที่จะตรวจสอบว่าเอาต์พุตนั้นเป็นอะไร และเลือกวิธีจัดการที่เหมาะสมกับเอาต์พุตนั้นๆ

          โดยทั่วๆ ไป เราจะแบ่งไฟล์ออกเป็นไฟล์ชนิดต่างๆ ขึ้นอยู่กับการใช้งานของไฟล์นั้นๆ ส่วนมากแล้วการแยกแยะไฟล์ทำได้โดยตั้งชื่อไฟล์ให้มีนามสกุล หรือส่วนขยาย (file extension) ให้ต่างกันออกไป ตัวอย่างเช่น
FILENAME.PAS : เป็นไฟล์โปรแกรมภาษาปาสคาล

FILENAME.ASM : เป็นไฟล์โปรแกรมภาษาแอสเซมบลี้

FILENAME.DAT : เป็นไฟล์ข้อมูล

FILENAME.DOC: เป็นไฟล์ข้อมูลประเภท Word Processor

         ในระบบปฏิบัติการบางตัวส่วนขยายนี้ไม่มีความหมาย คือระบบปฏิบัติการไม่สนใจว่าไฟล์นั้นจะมีส่วนขยายเป็นอะไร แต่มีส่วนขยายไว้เพื่อให้เป็นรูปแบบเดียวกันกับระบบปฏิบัติการ อื่นๆ ในระบบปฏิบัติการบางตัวกฎการตั้งชื่อสำหรับส่วนขยายมีความหมายกับตัวระบบปฏิบัติการด้วย ไฟล์บางชนิดระบบปฏิบัติการจะกำหนดว่าจะต้องมีส่วนขยายเป็นอะไร เช่น ใน MS-DOS ไฟล์ที่สามารถนำมารันได้ต้องมีส่วนขยายเป็น .EXE หรือ .COM

          3.11
ไดเร็กทอรี่
         ไดเร็กทอรี่ (directory) คือสารบัญที่เก็บรวบรวมรายชื่อของไฟล์ และข้อมูลบางอย่าง ที่สำคัญของไฟล์เอาไว้ ในระบบปฏิบัติการทุกระบบจะต้องมีไดเร็กทอรี่เพื่อเก็บรายชื่อไฟล์ทั้งหมดในระบบไว้ ผู้ใช้สามารถตรวจดูไฟล์ต่างๆ ได้จากไดเร็กทอรี่ ไดเร็กทอรี่เองก็ถือว่าเป็นไฟล์เช่นกัน โครงสร้างของไดเร็กทอรี่ประกอบด้วยหน่วยย่อยหลายหน่วย ใน 1 หน่วยจะเก็บข้อมูลของไฟล์ 1 ไฟล์ เช่น ชื่อ ส่วนขยาย ชนิด ขนาด และอื่นๆ
         วิธีทำไดเร็กทอรี่ให้กับระบบที่ง่ายที่สุด คือ ในระบบจะมีไดเร็กทอรี่อยู่เพียงไดเร็กทอรี่เดียว และให้ไฟล์ทุกๆ ไฟล์ในระบบรวมอยู่ในไดเร็กทอรี่เดียวกัน ระบบนี้เรียกว่า ระบบไดเร็กทอรี่เดี่ยว (single directory) หรือ ไดเร็กทอรี่ 1 ระดับ (1 level directory) ไดเร็กทอรี่แบบนี้ไม่ค่อยสะดวกในการใช้งาน ถ้ามีผู้ใช้หลายคน แต่ละคนมีไฟล์หลายไฟล์หลายชนิด ไฟล์ทั้งหมดนี้จะอยู่ปนกัน ไม่สามารถจัดแบ่งแยกไฟล์ของผู้ใช้แต่ละคนออกจากกัน ถ้าเกิดกรณีที่มีการสร้างไฟล์ของผู้ใช้คนหนึ่งตรงกับไฟล์ของผู้ใช้คนอื่น (มีชื่อและส่วนขยายเดียวกัน) อาจทำให้ไฟล์ของผู้ใช้คนนั้นทำลายไฟล์เก่าที่มีอยู่แล้ว (โดยถูกเขียนทับ) หรืออาจทำให้การสร้างไฟล์นั้นทำไม่ได้ ในระบบปฏิบัติการ ของไมโครคอมพิวเตอร์รุ่นเก่าๆ เท่านั้นที่มีการทำระบบไดเร็กทอรี่เดี่ยว
         เพื่อแก้ไขปัญหาของการตั้งชื่อไฟล์ตรงกัน และไฟล์ของผู้ใช้ทุกคนอยู่ปะปนกัน ผู้ออกแบบระบบปฏิบัติการ ในระยะต่อมาจึงพัฒนาโครงสร้างของระบบไดเร็กทอรี่เสียใหม่ คือให้ผู้ใช้แต่ละคนสามารถสร้างไดเร็กทอรี่ของตนเองได้ 1 ไดเร็กทอรี่เรียกว่าเป็นไดเร็กทอรี่ย่อย (sub-directory) ไดเร็กทอรี่ย่อยนี้จะอยู่ภายใต้ไดเร็กทอรี่เดียวกัน เรียกว่าเป็น ไดเร็กทอรี่ราก (root directory) หรือเรียกสั้นๆ ว่ารูท (root) รูทจะมีไดเร็กทอรี่ย่อยได้หลายไดเร็กทอรี่ ภายในไดเร็กทอรี่ย่อยนี้มีหลายไฟล์ได้หลายๆ ไฟล์ ผู้ใช้สามารถตั้งชื่อไฟล์และชนิดให้ตรงกับไฟล์ของผู้ใช้คนอื่นได้ถ้าไฟล์ทั้ง 2 นี้อยู่ต่างไดเร็กทอรี่กัน เราเรียกระบบไดเร็กทอรี่แบบนี้ว่า ระบบไดเร็กทอรี่ 2 ระดับ (2 level directory) อย่างไรก็ตาม ไดเร็กทอรี่แบบนี้ยังมีปัญหากับผู้ใช้ที่มีไฟล์มากๆ เขายังคงไม่สามารถแบ่งแยกหรือจัดไฟล์ออกเป็นหมวดหมู่ได้ (ถึงแม้ว่าไม่มีไฟล์ของผู้อื่นมาปะปนกับไฟล์ของเขา) เช่นมีผู้ใช้คนหนึ่งเป็นอาจารย์สอนหนังสือ เขามีไฟล์หลายไฟล์ที่เกี่ยวกับงานเขียนตำราเรียน ไฟล์งานเขียนบทความ ไฟล์การบ้านนักเรียนที่ส่งมา ไฟล์ของงานวิจัยที่กำลังศึกษาอยู่ ไฟล์เกี่ยวกับผู้อุปการะและทุนการศึกษา ไฟล์ที่เป็นเกมส์ และไฟล์อื่นๆ ในลักษณะนี้เขาก็ยังคงพบกับปัญหาที่ไฟล์หลายๆ ประเภทอยู่รวมปะปนกัน

          เพื่อแก้ปัญหาที่เกิดกับผู้ใช้ในระบบไดเร็กทอรี่ 2 ระดับ ระบบปฏิบัติการในรุ่นหลังๆ นี้จึงยอมให้ผู้ใช้สามารถสร้างไดเร็กทอรี่ย่อยของตนเองได้มากตามที่ต้องการ เพื่อให้ผู้ใช้สามารถแบ่งแยกไฟล์ประเภทเดียวกันให้อยู่ในไดเร็กทอรี่เดียวกัน ไม่ปะปนรวมกับไฟล์ประเภทอื่น เมื่อผู้ใช้สร้างไดเร็กทอรี่ขึ้นมามากมาย ทำให้ระบบไดเร็กทอรี่มีลักษณะเหมือนเป็นโครงสร้างต้นไม้ (tree structure) เราเรียกระบบไดเร็กทอรี่ นี้ว่า ไดเร็กทอรี่หลายระดับ
การอ้างถึงไฟล์แต่ละไฟล์ในไดเร็กทอรี่ ("ไฟล์" ในที่นี้หมายรวมถึงไดเร็กทอรี่ด้วย อย่าลืมว่าไดเร็กทอรี่ก็คือไฟล์เช่นกัน) จำเป็นจะต้องบอกที่อยู่หรือพาธ (path) ของไฟล์นั้นๆ เพื่อให้ระบบรู้ว่าเรากำลังอ้างถึงไฟล์ใน ไดเร็กทอรี่ใด (ไฟล์คนละไฟล์ที่อยู่ในไดเร็กทอรี่ต่างกันอาจมีชื่อเหมือนกันได้ การบอกพาธจะทำให้ระบบทราบว่า เรากำลังอ้างถึงไฟล์ใด และอยู่ที่ไหนในระบบ) การอ้างถึงไฟล์มี 2 วิธี คือ การอ้างถึงชื่อพาธสัมบูรณ์ (absolute path name) หรือ ชื่อพาธสัมพันธ์ (relative path name)

          การอ้างถึงไฟล์โดยใช้ชื่อพาธสัมบูรณ์เป็นการอ้างถึงไฟล์โดยเริ่มต้นจากรูทเสมอ ตามด้วยชื่อไดเร็กทอรี่ย่อยต่างๆ ไล่ลงมาตามลำดับชั้นของไดเร็กทอรี่ จนกระทั่งถึงไดเร็กทอรี่ย่อยที่ไฟล์นั้นอยู่ และจบลงด้วยชื่อไฟล์นั้น
ส่วนการอ้างถึงไฟล์โดยใช้ชื่อพาธสัมพัทธ์นั้น จะต้องทำความเข้าใจเกี่ยวกับไดเร็กทอรี่ปัจจุบัน (working directory หรือ current directory) ผู้ใช้สามารถย้ายตำแหน่งการทำงานจากไดเร็กทอรี่หนึ่งไปยังอีกไดเร็กทอรี่หนึ่งได้ ในขณะที่ผู้ใช้ทำงานอยู่บนไดเร็กทอรี่ใดเราจะเรียกไดเร็กทอรี่นั้นว่าไดเร็กทอรี่ปัจจุบัน ชื่อพาธสัมพัทธ์จะเริ่มต้นจากไดเร็กทอรี่ปัจจุบันไล่ไปตามลำดับชั้นของไดเร็กทอรี่ที่ไฟล์นั้นอยู่ และจบลงด้วยชื่อไฟล์
         โดยทั่วไปในไดเร็กทอรี่ย่อยจะมีไดเร็กทอรี่ที่ชื่อ . และ .. ไดเร็กทอรี่ . จะหมายถึงไดเร็กทอรี่ย่อยนั้นเอง และไดเร็กทอรี่ .. หมายถึง ไดเร็กทอรี่ที่อยู่เหนือขึ้นไปหนึ่งระดับ การแยกแยะพาธที่เราอ้างถึงว่าเป็นแบบพาธสัมบูรณ์ หรือชื่อพาธสัมพัทธ์นั้น สังเกตได้ด้วยเครื่องหมายรูทเท่านั้น ถ้าการอ้างถึงไฟล์ขึ้นต้นด้วยเครื่องหมาย "/" หรือ "\" (แล้วแต่ตัวระบบปฏิบัติการ) การอ้างนั้นคือการอ้างโดยใช้พาธสัมบูรณ์ แต่ถ้าเป็นแบบพาธสัมพัทธ์จะต้องขึ้นต้นด้วยชื่อไดเร็กทอรี่ย่อยหรือชื่อไฟล์


<< ก่อนหน้า -- หน้าแรก >>