ในระบบคอมพิวเตอร์เราใช้ ชื่อ ในการอ้างอิงถึงข้อมูลต่างๆ โดยที่ชื่อเหล่านี้จะบ่งบอกถึงวัตถุหนึ่งๆโดยเฉพาะ จึงต้องมีระบบจัดการชื่อ (naming system)

Name Spaces

เป็นกราฟอวัฏจักรระบุทิศทาง โดยจะแบ่งได้ออกเป็น

Leaf node

เป็น entity ที่ไม่มีเส้นลากออกไปอีกแล้ว โดยปกติจะเป็น node ที่เก็บข้อมูลไว้ (เช่นในระบบ file ก็จะเป็น file)

directory node

เป็น entity ที่มีเส้นลากต่อออกไปได้หลายเส้น มีหน้าที่ในการอ้างอิง node ย่อยอื่นๆ โดยจะเก็บ directory table ที่บอกว่ามีใครต่ออยู่บ้าง

root node

เป็น node รากของต้นไม้ โดยปกติใน 1 ระบบ จะมีแค่ 1 root เพื่อความง่ายในการอ้างอิง

Path name

บ่งบอกถึงตำแหน่งของ node ในกราฟ โดยแบ่งออกได้เป็น โดยปกติเราจะใช้ slash “/” ในการแบ่งแต่ละโหนดออกจากัน โดยปกติ path ใดที่มี / นำหน้า จะหมายถึง root เสมอ

absolute path

node แรกของ path เป็น root node เสมอ

:/home/kz/Downloads

relative path

เทียบจากตำแหน่งปัจจุบันของที่อยู่

ที่อยู่ปัจจุบัน /home/kz/

:Downloads/

Name Resolution

Linking

เป็นการเชื่อมโยงไปยังโหนดอื่น โดยแบ่งออกได้เป็น

hardlink : node สามารถเข้าถึงได้ด้วย path ที่แตกต่างกัน 2 path ขึ้นการ การลบ path ใด path หนึ่ง ไม่มีผลต่อข้อมูล การแก่้ไขข้อมูลใดๆ จาก path ใดๆ จะมีผลต่อข้อมูลของทั้งคู่

symbolic link :node สามารถเข้าถึงได้ด้วย path ที่เชื่อมโยงไปยังอีก node การลบ node หรือ path ที่ถูกอ้่างอิง จะทำให้ path ที่เป็น symbolic เข้าถึง ข้อมูลนั้นไม่ได้ (ถูกลบตามไปด้วย)

Mounting

คือการรวม name space เข้าไว้ด้วยกัน โดยจะมี

mount point คือ directory node ที่บ่งบอกถึงตำแหน่งของ node ที่เก็บ node identifier ไว้

mouting point คือ directory node ที่อยู่ในอีก name space หนึ่ง

การจะ mount ได้ต้องมี protocol สำหรับการสื่อสารและตำแหน่งของ name space ในเครื่อง server อื่นๆ เช่น NFS

Implementation of a Name Space

สำหรับระบบ DS ขนาดใหญ่เราอาจจะต้องแบ่ง name space ออกเป็นชั้นๆได้แก้

Global Layer, Administrational Layer และ Managerial Layer ถ้ามองในระบบของ DNS GL ก็จะเป็นพวก TLD domain ส่วนของ AL ก็จะเป็นชื่อบริษัทหรือองค์กรที่ใช้งาน และ ML จะเป็นชื่อหน่วยงานย่อยๆในองค์กร ที่อาจจะเปลี่ยนแปลงได้ง่าย

Implementation of Name Resolution

client จะต้องเรียกไปยัง name resolver  ซึ่ง name resolver จะทำหน้าที่ไปหาตำแหน่งของชื่อมาให้ โดยอาจจะทำได้ 2 วิธีคือ

itreative name resolution

คือการยกหน้าที่ในการหา ให้ root server ไปเป็นคนหาข้อมูลแล้วส่งข้อมูลกลับมาทีละชั้นๆ แล้ว client’s name resolver จะเป็นตัวที่นำข้อมูลนี้ไปใช้ค้นหาใน name server อื่นๆต่อไป

recursive name resolutiom

คือการยกหน้าที่การค้นหาให้ root server แล้ว root server จะส่งการค้นหาไปยัง name server ตัวต่อไป แล้ว name server ก็จะส่งการค้นหาไปยัง name server ตัวต่อไปอีก เรื่อยๆจนถึงเป้าหมาย แล้วข้อมูลก็จะส่งกลับมายัง client  ผ่านลำดับทอดเดิม ข้อเสียคือ root server จะทำงานหนักมาก เนื่องจากจะต้องรับ complete path name แต่ข้อดีคือ การส่งข้อมูลไปมาระหว่าง client กับ name server จะน้อยกว่า ทำให้ได้ผลลัพธ์ทีเร้วขึ้น