คอมพิวเตอร์ Windows อินเทอร์เน็ต

สถาปัตยกรรมแบบกระจายที่มีการจัดการ สถาปัตยกรรมของระบบควบคุมแบบกระจายตามสภาพแวดล้อมการคำนวณแบบหลายไปป์ไลน์ที่กำหนดค่าใหม่ได้ ระบบไฟล์แบบกระจาย "โปร่งใส" L-Net

AIS แบบกระจายได้กลายเป็นความจริงในชีวิตประจำวัน เอไอเอสหลายองค์กรใช้ฐานข้อมูลแบบกระจาย วิธีการกระจายข้อมูลและการจัดการข้อมูลแบบกระจาย วิธีการทางสถาปัตยกรรมที่รับรองความสามารถในการปรับขยายของระบบ การนำหลักการของสถาปัตยกรรมไคลเอนต์-เซิร์ฟเวอร์แบบหลายระดับไปใช้งาน ตลอดจนสถาปัตยกรรมของเลเยอร์กลางได้รับการปรับปรุง

สถาปัตยกรรมแบบเคลื่อนที่กำลังเริ่มนำไปใช้ในทางปฏิบัติ สิ่งนี้ใช้ได้กับทั้งระบบฐานข้อมูลและเว็บแอปพลิเคชัน

แนวทางในการสร้างระบบแบบกระจายตามสถาปัตยกรรมแบบเพียร์ทูเพียร์กำลังได้รับการฟื้นฟู ซึ่งตรงกันข้ามกับสถาปัตยกรรมไคลเอนต์-เซิร์ฟเวอร์ที่ครอบงำในปัจจุบันในระบบแบบกระจาย บทบาทของฝ่ายที่มีปฏิสัมพันธ์ในเครือข่ายจะไม่ได้รับการแก้ไข พวกเขาถูกกำหนดขึ้นอยู่กับสถานการณ์ในเครือข่ายตามปริมาณงานของโหนด

ในการเชื่อมต่อกับการพัฒนาเทคโนโลยีการสื่อสารอย่างเข้มข้น AIS มือถือกำลังพัฒนาอย่างแข็งขัน วิธีการทางเทคนิคและซอฟต์แวร์สำหรับการสร้างได้รับการพัฒนา สิ่งนี้นำไปสู่การพัฒนาระบบฐานข้อมูลมือถือ ทีมวิจัยจำนวนมากทำการวิจัยเกี่ยวกับคุณลักษณะเฉพาะของระบบดังกล่าวและสร้างต้นแบบต่างๆ เทคโนโลยี Java ได้กลายเป็นเครื่องมือสำคัญสำหรับการพัฒนาซอฟต์แวร์มือถือ

มีการสร้างมาตรฐาน Wireless Application Protocol (WAP) และได้รับการสนับสนุนจากโทรศัพท์มือถือบางรุ่นแล้ว ตาม WAP และ XML W3C ได้พัฒนาภาษามาร์กอัปสำหรับการสื่อสารแบบไร้สาย WML (Wireless Markup Language)

ในการพัฒนา AIS ได้รับความสนใจมากขึ้นในเมตาดาต้า ในที่นี้ มีขั้นตอนในสองทิศทาง - กำหนดมาตรฐานการนำเสนอข้อมูลเมตาและรับรองการสนับสนุนในระบบ

AIS ใช้วิธีการและวิธีการที่หลากหลายในการนำเสนอข้อมูลเมตา (แหล่งเก็บข้อมูลเมตาประเภทต่างๆ) การขาดความเป็นหนึ่งเดียวในด้านนี้ทำให้การแก้ปัญหาการเคลื่อนย้ายแอปพลิเคชันมีความซับซ้อนอย่างมาก การใช้ซ้ำและการบูรณาการของแหล่งข้อมูลและเทคโนโลยีสารสนเทศ ตลอดจนการปรับรื้อปรับระบบของ AIS

เพื่อเอาชนะปัญหาเหล่านี้ การพัฒนามาตรฐานข้อมูลเมตาที่เน้นที่เทคโนโลยีสารสนเทศต่างๆ กำลังดำเนินการอย่างแข็งขัน ในพื้นที่นี้มีมาตรฐานระดับสากล ระดับชาติ และอุตสาหกรรมจำนวนหนึ่งที่กำหนดการนำเสนอข้อมูลเมตาและการแลกเปลี่ยนข้อมูลเมตาใน AIS บางคนได้รับสถานะของมาตรฐานโดยพฤตินัยแล้ว เราจะจำกัดตัวเองที่นี่ให้พูดถึงเฉพาะส่วนที่สำคัญที่สุดเท่านั้น

น่าจะเป็นมาตรฐานแรกโดยพฤตินัยสำหรับหมวดหมู่นี้คือภาษาคำอธิบายข้อมูลของ CODASYL สำหรับฐานข้อมูลในเครือข่าย มาตรฐานต่อไปนี้ควรตั้งชื่อ : มาตรฐานของภาษาแบบสอบถาม SQL สำหรับฐานข้อมูลเชิงสัมพันธ์ที่มีคำจำกัดความของเค้าร่างข้อมูลที่เรียกว่า -- ชุดของการแสดงของสกีมาฐานข้อมูลเชิงสัมพันธ์ คอมโพเนนต์มาตรฐานฐานข้อมูลอ็อบเจ็กต์ ODMG ที่อธิบายอินเตอร์เฟสที่เก็บสคีมาอ็อบเจ็กต์ มาตรฐานสากล IRDS (ระบบพจนานุกรมทรัพยากรสารสนเทศ) ซึ่งอธิบายระบบสำหรับการสร้างและบำรุงรักษาไดเรกทอรีของแหล่งข้อมูลสารสนเทศขององค์กร

ต่อไป ควรกล่าวถึงมาตรฐาน Common Warehouse Metamodel (CWM) สำหรับการแสดงข้อมูลเมตาของคลังข้อมูลที่พัฒนาโดยกลุ่ม OMG โดยอิงจากมาตรฐาน OIM (Open Information Model) ที่สร้างขึ้นก่อนหน้านี้โดยกลุ่ม MDC (Meta Data Coalition) .

XML ใหม่สำหรับแพลตฟอร์มเทคโนโลยีเว็บยังรวมถึงมาตรฐานการนำเสนอข้อมูลเมตา การสนับสนุนข้อมูลเมตาเป็นหนึ่งในนวัตกรรมที่สำคัญที่สุดของเว็บ ซึ่งทำให้เทคโนโลยีในการจัดการทรัพยากรสารสนเทศเปลี่ยนแปลงไปอย่างสิ้นเชิง แม้ว่าในตอนแรกจำเป็นต้องมีการสนับสนุนข้อมูลเมตาในเทคโนโลยีฐานข้อมูล แต่ข้อมูลเมตาไม่ได้รับการสนับสนุนบนเว็บรุ่นแรก

มาตรฐานข้อมูลเมตาของเว็บรวมถึงชุดย่อยของภาษา XML ที่ใช้เพื่ออธิบายโครงสร้างเชิงตรรกะของเอกสาร XML บางประเภท คำอธิบายนี้เรียกว่า DTD (Document Type Definition) นอกจากนี้ แพลตฟอร์ม XML ยังรวมมาตรฐาน XML Schema ซึ่งมีความสามารถขั้นสูงเพิ่มเติมในการอธิบายเอกสาร XML มาตรฐาน Resource Definition Framework (RDF) กำหนดภาษาแทนความรู้อย่างง่ายสำหรับการอธิบายเนื้อหาของเอกสาร XML สุดท้าย มาตรฐาน OWL (Ontology Web Language) ที่เกิดขึ้นใหม่กำหนดภาษาคำอธิบาย ontology อย่างเป็นทางการสำหรับ Semantic Web

มาตรฐาน Unified Modeling Language (UML) ซึ่งแสดงข้อมูลเมตาสำหรับเครื่องมือวิเคราะห์และออกแบบวัตถุของ CASE ได้รับการพัฒนาโดยกลุ่ม OMG ภาษานี้ได้รับการสนับสนุนในผลิตภัณฑ์ซอฟต์แวร์ของ CASE จำนวนมาก OMG ยังได้สร้างมาตรฐาน XML Metadata Interchange (XMI) สำหรับการแลกเปลี่ยนข้อมูลเมตาระหว่างเครื่องมือ CASE โดยใช้ UML

นอกจากนี้ ควรกล่าวถึงมาตรฐาน Dublin Core (DC) ซึ่งเป็นชุดขององค์ประกอบข้อมูลเมตาสำหรับอธิบายเนื้อหาของเอกสารที่มีลักษณะแตกต่างกัน มาตรฐานนี้ได้รับความนิยมอย่างรวดเร็วและพบว่ามีการใช้อย่างแพร่หลายในสภาพแวดล้อมเว็บ (ดูหัวข้อ 3.3)

เดินหน้าพัฒนามาตรฐานเดิมและมาตรฐานใหม่สำหรับการนำเสนอข้อมูลเมตาของ AIS ต่อไป ข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับมาตรฐานที่เป็นปัญหาสามารถพบได้ในสารานุกรม

ตามที่ผู้เชี่ยวชาญที่มีชื่อเสียงในด้านวิทยาการคอมพิวเตอร์ E. Tanenbaum ไม่มีการยอมรับโดยทั่วไปและในขณะเดียวกันก็มีคำจำกัดความที่เข้มงวดของระบบแบบกระจาย ปัญญาบางท่านโต้แย้งว่าการแจกจ่ายเป็นเช่นนั้น ระบบคอมพิวเตอร์ซึ่งคอมพิวเตอร์ทำงานผิดปกติซึ่งผู้ใช้ไม่เคยสงสัยมาก่อนนำไปสู่การยุติงานทั้งหมดของพวกเขา น่าเสียดายที่ส่วนสำคัญของระบบการคำนวณแบบกระจายเป็นไปตามคำจำกัดความนี้ แต่อย่างเป็นทางการหมายถึงเฉพาะระบบที่มีจุดอ่อนเฉพาะ ( จุดบกพร่องจุดเดียว).

บ่อยครั้ง เมื่อกำหนดระบบแบบกระจาย จุดเน้นอยู่ที่การแบ่งหน้าที่ในคอมพิวเตอร์หลายเครื่อง ด้วยวิธีการนี้ สิ่งใด ๆ จะถูกแจกจ่าย ระบบคอมพิวเตอร์โดยที่การประมวลผลข้อมูลถูกแบ่งระหว่างคอมพิวเตอร์สองเครื่องขึ้นไป ตามคำจำกัดความของ E. Tanenbaum ระบบที่กระจายค่อนข้างแคบสามารถกำหนดเป็นชุดของคอมพิวเตอร์อิสระที่เชื่อมต่อกันด้วยช่องทางการสื่อสาร ซึ่งจากมุมมองของผู้ใช้ซอฟต์แวร์บางตัว จะดูเหมือนทั้งหมดเพียงเครื่องเดียว

วิธีการกำหนดระบบแบบกระจายนี้มีข้อเสียอยู่ ตัวอย่างเช่น ทุกอย่างที่ใช้ในระบบแบบกระจายดังกล่าว ซอฟต์แวร์สามารถทำงานบนคอมพิวเตอร์เครื่องเดียวได้ แต่จากมุมมองของคำจำกัดความข้างต้น ระบบดังกล่าวจะไม่ถูกแจกจ่ายอีกต่อไป ดังนั้น แนวคิดของระบบแบบกระจายจึงน่าจะมาจากการวิเคราะห์ซอฟต์แวร์ที่สร้างระบบดังกล่าว

เพื่อเป็นพื้นฐานในการอธิบายการโต้ตอบของสองหน่วยงาน ให้พิจารณารูปแบบทั่วไปของการโต้ตอบระหว่างไคลเอนต์กับเซิร์ฟเวอร์ ซึ่งฝ่ายใดฝ่ายหนึ่ง (ไคลเอนต์) เริ่มต้นการแลกเปลี่ยนข้อมูลโดยส่งคำขอไปยังอีกฝ่าย (เซิร์ฟเวอร์) เซิร์ฟเวอร์ประมวลผลคำขอและหากจำเป็น จะส่งการตอบกลับไปยังไคลเอนต์ (รูปที่ 1.1)


ข้าว. 1.1.

การโต้ตอบภายในเฟรมเวิร์กของโมเดลไคลเอ็นต์-เซิร์ฟเวอร์สามารถเป็นแบบซิงโครนัสได้ เมื่อไคลเอ็นต์กำลังรอให้เซิร์ฟเวอร์ประมวลผลคำขอ หรือแบบอะซิงโครนัส ซึ่งไคลเอ็นต์ส่งคำขอไปยังเซิร์ฟเวอร์และดำเนินการดำเนินการต่อไปโดยไม่ต้องรอเซิร์ฟเวอร์ การตอบสนอง. โมเดลไคลเอ็นต์และเซิร์ฟเวอร์สามารถใช้เป็นพื้นฐานในการอธิบายการโต้ตอบต่างๆ สำหรับหลักสูตรนี้ การโต้ตอบของส่วนประกอบต่างๆ ของซอฟต์แวร์ที่สร้างระบบแบบกระจายเป็นสิ่งสำคัญ


ข้าว. 1.2.

พิจารณาการใช้งานทั่วไปบางอย่างซึ่งตามแนวคิดสมัยใหม่สามารถแบ่งออกเป็นระดับตรรกะต่อไปนี้ (รูปที่ 1.2): หน้าจอผู้ใช้(PI), ตรรกะของแอปพลิเคชัน (LP) และการเข้าถึงข้อมูล (DD) การทำงานกับฐานข้อมูล (DB) ผู้ใช้ระบบโต้ตอบกับมันผ่านอินเทอร์เฟซผู้ใช้ ฐานข้อมูลเก็บข้อมูลที่อธิบายโดเมนของแอปพลิเคชัน และเลเยอร์ตรรกะของแอปพลิเคชันใช้อัลกอริทึมทั้งหมดที่เกี่ยวข้องกับ สาขาวิชา.

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


ข้าว. 1.3.

สถาปัตยกรรมของแอปพลิเคชันที่สร้างขึ้นบนหลักการนี้เรียกว่าไคลเอนต์ - เซิร์ฟเวอร์หรือสองชั้น ในทางปฏิบัติ ระบบดังกล่าวมักไม่จัดอยู่ในประเภทแบบกระจาย แต่อย่างเป็นทางการถือได้ว่าเป็นตัวแทนที่ง่ายที่สุดของระบบแบบกระจาย

การพัฒนาสถาปัตยกรรมไคลเอนต์-เซิร์ฟเวอร์เป็นสถาปัตยกรรมสามระดับ ซึ่งอินเทอร์เฟซผู้ใช้ ตรรกะของแอปพลิเคชัน และการเข้าถึงข้อมูลถูกแยกออกเป็นส่วนประกอบอิสระของระบบที่สามารถทำงานบนคอมพิวเตอร์อิสระ (รูปที่ 1.4)


ข้าว. 1.4.

คำขอของผู้ใช้ในระบบดังกล่าวจะได้รับการประมวลผลตามลำดับโดยส่วนไคลเอ็นต์ของระบบ เซิร์ฟเวอร์ลอจิกของแอปพลิเคชัน และเซิร์ฟเวอร์ฐานข้อมูล อย่างไรก็ตาม ระบบแบบกระจายมักจะเข้าใจว่าเป็นระบบที่มีสถาปัตยกรรมที่ซับซ้อนมากกว่าแบบสามระดับ

ในบทที่แล้ว เราดูระบบมัลติโปรเซสเซอร์ที่เชื่อมต่อกันอย่างแน่นหนาด้วยหน่วยความจำแบบแบ่งใช้ โครงสร้างข้อมูลเคอร์เนลแบบแบ่งใช้ และพูลแบบแบ่งใช้ซึ่งกระบวนการถูกเรียกใช้ อย่างไรก็ตาม บ่อยครั้งควรจัดสรรโปรเซสเซอร์ในลักษณะที่เป็นอิสระจากสภาพแวดล้อมการทำงานและเงื่อนไขการทำงานเพื่อวัตถุประสงค์ในการแบ่งปันทรัพยากร ตัวอย่างเช่น สมมติว่าผู้ใช้คอมพิวเตอร์ส่วนบุคคลต้องการเข้าถึงไฟล์ที่อยู่ในเครื่องที่ใหญ่กว่า แต่ในขณะเดียวกันก็ยังสามารถควบคุมคอมพิวเตอร์ส่วนบุคคลได้ แม้ว่าบางโปรแกรม เช่น uucp จะรองรับการถ่ายโอนไฟล์เครือข่ายและฟังก์ชันเครือข่ายอื่นๆ การใช้งานจะไม่ถูกซ่อนจากผู้ใช้ เนื่องจากผู้ใช้ทราบว่ากำลังใช้เครือข่ายอยู่ นอกจากนี้ ควรสังเกตว่าโปรแกรมเช่นโปรแกรมแก้ไขข้อความไม่สามารถทำงานกับไฟล์ที่ถูกลบได้เช่นเดียวกับโปรแกรมทั่วไป ผู้ใช้ควรมีชุดมาตรฐานของฟังก์ชันระบบ UNIX และนอกเหนือจากปัญหาคอขวดด้านประสิทธิภาพที่อาจเกิดขึ้นแล้ว ไม่ควรรู้สึกถึงการข้ามขอบเขตของเครื่อง ตัวอย่างเช่น การทำงานของระบบทำงานเปิดและอ่านด้วยไฟล์บนเครื่องระยะไกล ไม่ควรแตกต่างจากการทำงานกับไฟล์ที่เป็นของระบบภายในเครื่อง

สถาปัตยกรรมระบบแบบกระจายแสดงในรูปที่ 13.1 คอมพิวเตอร์แต่ละเครื่องที่แสดงในรูปเป็นหน่วยที่ประกอบด้วยซีพียู หน่วยความจำ และอุปกรณ์ต่อพ่วง โมเดลไม่แตกแม้ว่าคอมพิวเตอร์จะไม่มีระบบไฟล์ในเครื่อง: ต้องมีอุปกรณ์ต่อพ่วงเพื่อสื่อสารกับเครื่องอื่นและไฟล์ทั้งหมดที่เป็นของมันสามารถอยู่ในคอมพิวเตอร์เครื่องอื่นได้ หน่วยความจำกายภาพที่มีอยู่สำหรับแต่ละเครื่องนั้นไม่ขึ้นอยู่กับกระบวนการที่ทำงานบนเครื่องอื่น ในแง่นี้ ระบบแบบกระจายจะแตกต่างจากระบบมัลติโปรเซสเซอร์ที่เชื่อมต่อกันอย่างแน่นหนาที่กล่าวถึงในบทที่แล้ว ดังนั้น แกนหลักของระบบในเครื่องแต่ละเครื่องจึงทำงานโดยไม่ขึ้นกับสภาพการทำงานภายนอกของสภาพแวดล้อมแบบกระจาย

รูปที่ 13.1. โมเดลระบบสถาปัตยกรรมแบบกระจาย


ระบบแบบกระจายซึ่งมีการอธิบายไว้อย่างดีในวรรณคดี แบ่งตามประเภทดังต่อไปนี้:

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

ระบบกระจายเช่น "Newcastle" อนุญาตให้มีการสื่อสารทางไกลโดยใช้ชื่อไฟล์ระยะไกลในไลบรารี (ชื่อนี้นำมาจากบทความ "The Newcastle Connection" - ดู) ไฟล์ที่ถูกลบมี BOM (ชื่อเฉพาะ) ที่ในพาธการค้นหา มีอักขระพิเศษหรือส่วนประกอบชื่อทางเลือกที่นำหน้ารูทของระบบไฟล์ การใช้วิธีนี้ไม่เกี่ยวข้องกับการเปลี่ยนแปลงเคอร์เนลของระบบ ดังนั้นจึงง่ายกว่าวิธีอื่นๆ ที่กล่าวถึงในบทนี้ แต่มีความยืดหยุ่นน้อยกว่า

ระบบแบบกระจายมีความโปร่งใสโดยสมบูรณ์ ซึ่งชื่อเฉพาะมาตรฐานนั้นเพียงพอที่จะอ้างอิงถึงไฟล์ที่อยู่ในเครื่องอื่น มันขึ้นอยู่กับเคอร์เนลที่จะรู้จักไฟล์เหล่านี้ว่าถูกลบไปแล้ว เส้นทางการค้นหาไฟล์ที่ระบุในชื่อคอมโพสิตจะข้ามขอบเขตเครื่องที่จุดเชื่อมต่อ ไม่ว่าจะมีจุดดังกล่าวจำนวนเท่าใดเมื่อระบบไฟล์ถูกเมาต์บนดิสก์

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

13.1 โปรเซสเซอร์อุปกรณ์ต่อพ่วง

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

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


รูปที่ 13.2 การกำหนดค่าระบบอุปกรณ์ต่อพ่วง


รูปที่ 13.3 รูปแบบข้อความ

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

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

เพื่ออธิบายวิธีการทำงานของระบบต่อพ่วง ให้พิจารณาถึงฟังก์ชันต่างๆ ได้แก่ getppid, open, write, fork, exit และ signal ฟังก์ชัน getppid ค่อนข้างตรงไปตรงมา เนื่องจากเกี่ยวข้องกับแบบฟอร์มคำขอและการตอบสนองอย่างง่ายที่มีการแลกเปลี่ยนระหว่างอุปกรณ์ต่อพ่วงและ CPU คอร์บนโปรเซสเซอร์อุปกรณ์ต่อพ่วงสร้างข้อความที่มีเครื่องหมาย จากนั้นจึงตามด้วยฟังก์ชันที่ร้องขอคือฟังก์ชัน getppid และส่งคำขอไปยังโปรเซสเซอร์กลาง กระบวนการดาวเทียมบนโปรเซสเซอร์กลางอ่านข้อความจากโปรเซสเซอร์อุปกรณ์ต่อพ่วง ถอดรหัสประเภทของฟังก์ชันระบบ ดำเนินการ และรับตัวระบุพาเรนต์ จากนั้นจะสร้างการตอบสนองและส่งผ่านไปยังกระบวนการต่อพ่วงที่รอดำเนินการที่ปลายอีกด้านของสายการสื่อสาร เมื่อโปรเซสเซอร์ต่อพ่วงได้รับการตอบกลับ โปรเซสเซอร์นั้นจะถูกส่งต่อไปยังกระบวนการที่เรียกว่าฟังก์ชันระบบ getppid หากกระบวนการต่อพ่วงเก็บข้อมูล (เช่น ID กระบวนการของพาเรนต์) ไว้ในหน่วยความจำภายใน กระบวนการนั้นก็ไม่จำเป็นต้องสื่อสารกับคู่หูเลย

หากมีการเรียกใช้ฟังก์ชันระบบเปิด กระบวนการต่อพ่วงจะส่งข้อความไปยังตัวร่วม ซึ่งรวมถึงชื่อไฟล์และพารามิเตอร์อื่นๆ หากสำเร็จ กระบวนการที่แสดงร่วมจะจัดสรรดัชนีและจุดเข้าสู่ตารางไฟล์ จัดสรรรายการในตารางตัวอธิบายไฟล์ของผู้ใช้ในพื้นที่ และส่งกลับตัวอธิบายไฟล์ไปยังกระบวนการต่อพ่วง ตลอดเวลานี้ ที่ปลายอีกด้านของสายสื่อสาร กระบวนการต่อพ่วงกำลังรอการตอบกลับ เขาไม่มีโครงสร้างใด ๆ ที่จะเก็บข้อมูลเกี่ยวกับไฟล์ที่กำลังเปิดอยู่ descriptor ที่ส่งคืนโดย open เป็นตัวชี้ไปยังรายการในกระบวนการที่แสดงร่วมในตาราง descriptor ไฟล์ผู้ใช้ ผลลัพธ์ของการเรียกใช้ฟังก์ชันแสดงในรูปที่ 13.4


รูปที่ 13.4. การเรียกฟังก์ชันเปิดจากกระบวนการต่อพ่วง

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

ฟังก์ชันเดียวที่ต้องเปลี่ยนขณะทำงานบน CPU คือฟังก์ชันระบบส้อม เมื่อกระบวนการเรียกใช้ฟังก์ชันนี้บน CPU เคอร์เนลจะเลือกโปรเซสเซอร์อุปกรณ์ต่อพ่วงสำหรับมันและส่งข้อความไปยังกระบวนการพิเศษ - เซิร์ฟเวอร์แจ้งภายหลังว่าจะเริ่มยกเลิกการโหลดกระบวนการปัจจุบัน สมมติว่าเซิร์ฟเวอร์ยอมรับคำขอ เคอร์เนลใช้ fork เพื่อสร้างกระบวนการต่อพ่วงใหม่ โดยจัดสรรรายการตารางกระบวนการและพื้นที่ที่อยู่ โปรเซสเซอร์กลางจะยกเลิกการโหลดสำเนาของกระบวนการที่เรียกว่าฟังก์ชัน fork ไปยังโปรเซสเซอร์อุปกรณ์ต่อพ่วง เขียนทับพื้นที่ที่อยู่ที่จัดสรรใหม่ วางดาวเทียมในพื้นที่เพื่อสื่อสารกับกระบวนการต่อพ่วงใหม่ และส่งข้อความไปยังอุปกรณ์ต่อพ่วงเพื่อเริ่มต้นตัวนับโปรแกรมสำหรับ กระบวนการใหม่ กระบวนการดาวเทียม (บน CPU) เป็นลูกหลานของกระบวนการที่เรียกว่าส้อม กระบวนการต่อพ่วงในทางเทคนิคแล้วเป็นทายาทของกระบวนการเซิร์ฟเวอร์ แต่ตามหลักเหตุผลแล้ว มันเป็นกระบวนการที่สืบเชื้อสายมาจากกระบวนการที่เรียกว่าฟังก์ชันส้อม กระบวนการของเซิร์ฟเวอร์ไม่มีการเชื่อมต่อแบบลอจิคัลกับลูกเมื่อการ Fork เสร็จสิ้น งานเดียวของเซิร์ฟเวอร์คือการช่วยขนถ่ายเด็ก เนื่องจากการเชื่อมต่อที่แข็งแกร่งระหว่างส่วนประกอบระบบ (โปรเซสเซอร์อุปกรณ์ต่อพ่วงไม่มีอิสระ) กระบวนการต่อพ่วงและกระบวนการดาวเทียมจึงมีรหัสประจำตัวเหมือนกัน ความสัมพันธ์ระหว่างกระบวนการแสดงในรูปที่ 13.5: เส้นต่อเนื่องแสดงความสัมพันธ์แม่และลูก และเส้นประแสดงความสัมพันธ์ระหว่างเพื่อน


รูปที่ 13.5. เรียกใช้ฟังก์ชัน fork บน CPU

เมื่อกระบวนการเรียกใช้ฟังก์ชัน fork บนโปรเซสเซอร์อุปกรณ์ต่อพ่วง กระบวนการจะส่งข้อความไปยังดาวเทียมบน CPU ซึ่งจะดำเนินการตามลำดับการกระทำทั้งหมดที่อธิบายไว้ข้างต้น ดาวเทียมเลือกโปรเซสเซอร์ต่อพ่วงใหม่และเตรียมการที่จำเป็นสำหรับการขนถ่ายภาพของกระบวนการเก่า: ส่งคำขอไปยังกระบวนการต่อพ่วงหลักเพื่ออ่านภาพเพื่อตอบสนองต่อการถ่ายโอนข้อมูลที่ร้องขอเริ่มต้นที่ปลายอีกด้านหนึ่ง ของช่องทางการติดต่อ ดาวเทียมอ่านภาพที่ส่งและเขียนทับไปยังผู้สืบทอดที่อยู่รอบข้าง เมื่อการขนถ่ายภาพเสร็จสิ้น ดาวเทียมจะแยกกระบวนการ สร้างลูกบน CPU และส่งผ่านค่าของตัวนับโปรแกรมไปยังลูกที่อยู่รอบข้าง เพื่อให้คนหลังรู้ว่าที่อยู่ที่จะเริ่มดำเนินการจากที่อยู่ที่ใด เห็นได้ชัดว่า จะดีกว่าถ้ากำหนด child ของกระบวนการที่แสดงร่วมให้กับชายด์ต่อพ่วงในฐานะพาเรนต์ แต่ในกรณีของเรา กระบวนการที่สร้างขึ้นสามารถทำงานบนโปรเซสเซอร์ต่อพ่วงอื่นๆ ได้ ไม่ใช่แค่กระบวนการที่สร้างขึ้น ความสัมพันธ์ระหว่างกระบวนการที่ส่วนท้ายของฟังก์ชัน fork แสดงในรูปที่ 13.6 เมื่อกระบวนการต่อพ่วงเสร็จสิ้น กระบวนการจะส่งข้อความที่เกี่ยวข้องไปยังกระบวนการผ่านดาวเทียม และนั่นก็จบลงด้วย กระบวนการที่แสดงร่วมไม่สามารถเริ่มต้นการปิดระบบได้


รูปที่ 13.6 การเรียกใช้ฟังก์ชัน fork บนโปรเซสเซอร์อุปกรณ์ต่อพ่วง

ในระบบมัลติโปรเซสเซอร์และโปรเซสเซอร์เดียว กระบวนการต้องตอบสนองต่อสัญญาณในลักษณะเดียวกัน: กระบวนการจะเสร็จสิ้นการดำเนินการของฟังก์ชันระบบก่อนที่จะตรวจสอบสัญญาณ หรือในทางกลับกัน เมื่อรับสัญญาณ ให้ออกจากสถานะระงับทันทีและ ขัดจังหวะการทำงานของระบบอย่างกะทันหันหากสอดคล้องกับลำดับความสำคัญซึ่งเขาถูกระงับ เนื่องจากกระบวนการผ่านดาวเทียมทำหน้าที่ของระบบในนามของกระบวนการต่อพ่วง จึงต้องตอบสนองต่อสัญญาณที่ประสานกับขั้นตอนหลัง หากบนระบบตัวประมวลผลเดียว สัญญาณทำให้กระบวนการยกเลิกฟังก์ชัน กระบวนการร่วมบนระบบหลายตัวประมวลผลควรทำงานในลักษณะเดียวกัน อาจกล่าวได้เช่นเดียวกันในกรณีที่สัญญาณแจ้งให้กระบวนการยุติการทำงานโดยใช้ฟังก์ชันการออก: กระบวนการต่อพ่วงจะยุติและส่งข้อความที่เกี่ยวข้องไปยังกระบวนการดาวเทียมซึ่งแน่นอนว่าจะสิ้นสุดลงด้วย

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


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

รูปที่ 13.7 การประมวลผลสัญญาณในระบบต่อพ่วง


สมมติว่ากระบวนการต่อพ่วงหยุดการทำงานชั่วคราวในขณะที่กระบวนการดาวเทียมทำหน้าที่ของระบบแทน หากสัญญาณเกิดขึ้นที่อื่น กระบวนการของดาวเทียมจะตรวจพบได้เร็วกว่ากระบวนการต่อพ่วง เป็นไปได้สามกรณี

1. ถ้าระหว่างรอเหตุการณ์บางอย่าง กระบวนการของดาวเทียมไม่เข้าสู่สถานะถูกระงับ ซึ่งจะออกเมื่อได้รับสัญญาณ จะดำเนินการฟังก์ชั่นของระบบจนจบ ส่งผลการดำเนินการไปยังกระบวนการต่อพ่วงและแสดง ซึ่งเป็นสัญญาณที่ได้รับ

2. หากกระบวนการได้รับคำสั่งให้ละเว้นสัญญาณประเภทนี้ ดาวเทียมจะยังคงปฏิบัติตามอัลกอริธึมการเรียกใช้ฟังก์ชันของระบบโดยไม่ออกจากสถานะที่ถูกระงับโดย longjmp ในการตอบกลับที่ส่งไปยังกระบวนการต่อพ่วง จะไม่มีข้อความได้รับข้อความ

3. หากเมื่อรับสัญญาณ กระบวนการดาวเทียมขัดจังหวะการทำงานของฟังก์ชันระบบ (โดย longjmp) ระบบจะแจ้งกระบวนการต่อพ่วงเกี่ยวกับเรื่องนี้และแจ้งหมายเลขสัญญาณให้ทราบ

กระบวนการต่อพ่วงจะค้นหาข้อมูลเกี่ยวกับการรับสัญญาณในการตอบสนองที่ได้รับ และหากมี ให้ประมวลผลสัญญาณก่อนออกจากฟังก์ชันระบบ ดังนั้น พฤติกรรมของโปรเซสในระบบมัลติโพรเซสเซอร์จะสอดคล้องกับพฤติกรรมของมันในระบบยูนิโพรเซสเซอร์: โพรเซสออกจากระบบโดยไม่ออกจากโหมดเคอร์เนล หรือเรียกใช้ฟังก์ชันการประมวลผลสัญญาณแบบกำหนดเอง หรือละเว้นสัญญาณและทำหน้าที่ของระบบให้เสร็จสมบูรณ์


รูปที่ 13.8 ขัดจังหวะระหว่างการดำเนินการของฟังก์ชันระบบ

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

หากมีสัญญาณเกิดขึ้นที่โปรเซสเซอร์อุปกรณ์ต่อพ่วงระหว่างการทำงานของระบบ กระบวนการต่อพ่วงจะมืดมิดว่าอีกไม่นานจะกลับสู่การควบคุมจากกระบวนการดาวเทียมหรือระบบจะเข้าสู่สถานะหยุดชั่วคราวอย่างไม่มีกำหนด กระบวนการต่อพ่วงจะส่งข้อความพิเศษไปยังดาวเทียมเพื่อแจ้งการเกิดขึ้นของสัญญาณ แกนกลางบน CPU ถอดรหัสข้อความและส่งสัญญาณไปยังดาวเทียม ปฏิกิริยาที่จะรับสัญญาณได้อธิบายไว้ในย่อหน้าก่อนหน้า กระบวนการต่อพ่วงไม่สามารถส่งข้อความไปยังดาวเทียมได้โดยตรง เนื่องจากดาวเทียมกำลังใช้งานฟังก์ชันของระบบและไม่ได้อ่านข้อมูลจากสายสื่อสาร

จากตัวอย่างที่อ่าน ควรสังเกตว่ากระบวนการต่อพ่วงไม่รู้ว่าคู่หูกำลังรออินพุตจากเทอร์มินัลหรือกำลังดำเนินการอื่นๆ กระบวนการต่อพ่วงจะส่งข้อความสัญญาณไปยังดาวเทียม: หากดาวเทียมอยู่ในสถานะระงับโดยมีลำดับความสำคัญที่ขัดจังหวะได้ ดาวเทียมจะออกจากสถานะนี้ทันทีและยุติการทำงานของระบบ มิฉะนั้น ฟังก์ชันจะถูกยกยอดไปจนเสร็จสิ้น

สุดท้าย ให้พิจารณากรณีของการมาถึงของสัญญาณในเวลาที่ไม่เกี่ยวข้องกับการทำงานของฟังก์ชันระบบ หากสัญญาณมาจากโปรเซสเซอร์อื่น ดาวเทียมจะรับก่อนและส่งข้อความสัญญาณไปยังกระบวนการต่อพ่วง ไม่ว่าสัญญาณนั้นจะเกี่ยวข้องกับกระบวนการต่อพ่วงหรือไม่ก็ตาม คอร์อุปกรณ์ต่อพ่วงถอดรหัสข้อความและส่งสัญญาณไปยังกระบวนการซึ่งตอบสนองตามปกติ หากสัญญาณมาจากโปรเซสเซอร์อุปกรณ์ต่อพ่วง กระบวนการนี้จะดำเนินการตามมาตรฐานโดยไม่ต้องใช้บริการดาวเทียม

เมื่อกระบวนการต่อพ่วงส่งสัญญาณไปยังกระบวนการต่อพ่วงอื่น ๆ กระบวนการดังกล่าวจะเข้ารหัสข้อความการโทรฆ่าและส่งไปยังกระบวนการดาวเทียม ซึ่งจะเรียกใช้ฟังก์ชันที่เรียกในเครื่อง หากกระบวนการบางอย่างที่ตั้งใจส่งสัญญาณนั้นอยู่บนโปรเซสเซอร์อุปกรณ์ต่อพ่วงอื่นๆ ดาวเทียมของพวกมันจะรับสัญญาณ (และตอบสนองต่อมันตามที่อธิบายไว้ข้างต้น)

13.2 ประเภทการสื่อสาร NEWCASTLE

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

ระบบเหล่านี้ใช้หนึ่งในสองพาธต่อไปนี้เพื่อระบุไฟล์ที่ถูกลบ ในบางระบบ จะมีการเพิ่มอักขระพิเศษลงในชื่อไฟล์แบบผสม: องค์ประกอบชื่อที่อยู่ข้างหน้าอักขระนี้จะระบุเครื่อง ส่วนชื่อที่เหลือคือไฟล์ในเครื่องนั้น ตัวอย่างเช่น ชื่อจำเพาะ


"sftig! / fs1 / mjb / rje"


ระบุไฟล์ "/ fs1 / mjb / rje" บนเครื่อง "sftig" รูปแบบการระบุไฟล์นี้เป็นไปตามแบบแผน uucp สำหรับการถ่ายโอนไฟล์ระหว่างระบบที่เหมือน UNIX ในรูปแบบอื่น ไฟล์ที่ถูกลบจะถูกระบุโดยการเพิ่มคำนำหน้าพิเศษให้กับชื่อ ตัวอย่างเช่น:


/../sftig/fs1/mjb/rje


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


รูปที่ 13.9 การกำหนดคำขอไปยังเซิร์ฟเวอร์ไฟล์ (ตัวประมวลผล)


เราจะอุทิศส่วนที่เหลือของหัวข้อนี้ให้กับแบบจำลองของระบบโดยใช้ลิงก์ Newcastle ซึ่งเคอร์เนลไม่เกี่ยวข้องกับการจดจำไฟล์ที่ถูกลบ ฟังก์ชั่นนี้ถูกกำหนดโดยสมบูรณ์ให้กับรูทีนย่อยจากไลบรารี C มาตรฐาน ซึ่งในกรณีนี้เล่นบทบาทของอินเทอร์เฟซระบบ รูทีนเหล่านี้วิเคราะห์องค์ประกอบแรกของชื่อไฟล์ ซึ่งในวิธีการระบุทั้งสองที่อธิบายไว้มีสัญญาณของความห่างไกลของไฟล์ นี่คือการออกจากรูทีนที่รูทีนของไลบรารีไม่แยกวิเคราะห์ชื่อไฟล์ รูปที่ 13.9 แสดงวิธีการจัดทำคำขอไปยังเซิร์ฟเวอร์ไฟล์ หากไฟล์อยู่ในเครื่อง เคอร์เนลของระบบภายในจะประมวลผลคำขอตามปกติ พิจารณากรณีตรงข้าม:


เปิด ("/../ sftig / fs1 / mjb / rje / file", O_RDONLY);


รูทีนย่อย open ในไลบรารี C จะแยกวิเคราะห์สององค์ประกอบแรกของชื่อไฟล์ที่แตกต่าง และรู้ว่าต้องค้นหาไฟล์บนเครื่องระยะไกล "sftig" เพื่อให้มีข้อมูลเกี่ยวกับว่ากระบวนการก่อนหน้านี้มีการเชื่อมต่อกับเครื่องที่กำหนดหรือไม่ รูทีนย่อยจะเริ่มต้นโครงสร้างพิเศษที่จะจดจำข้อเท็จจริงนี้ และในกรณีของคำตอบเชิงลบ จะสร้างการเชื่อมต่อกับไฟล์เซิร์ฟเวอร์ที่ทำงานบนรีโมต เครื่องจักร. เมื่อกระบวนการกำหนดคำขอครั้งแรกสำหรับการประมวลผลระยะไกล เซิร์ฟเวอร์ระยะไกลจะยืนยันคำขอหากจำเป็น บันทึกในช่องของผู้ใช้และรหัสประจำตัวกลุ่ม และสร้างกระบวนการดาวเทียมที่จะทำหน้าที่ในนามของกระบวนการไคลเอนต์

เพื่อตอบสนองคำขอของไคลเอ็นต์ ดาวเทียมต้องมีสิทธิ์ไฟล์เดียวกันบนเครื่องระยะไกลเป็นไคลเอ็นต์ กล่าวอีกนัยหนึ่ง ผู้ใช้ "mjb" ต้องมีสิทธิ์เข้าถึงทั้งไฟล์ระยะไกลและไฟล์ในเครื่องเหมือนกัน ขออภัย เป็นไปได้ว่ารหัสประจำตัวไคลเอ็นต์ "mjb" อาจตรงกับรหัสประจำตัวของไคลเอ็นต์อื่นบนเครื่องระยะไกล ดังนั้น ผู้ดูแลระบบบนเครื่องที่ทำงานบนเครือข่ายควรตรวจสอบให้แน่ใจว่าผู้ใช้แต่ละรายได้รับรหัสประจำตัวที่ไม่ซ้ำกันสำหรับเครือข่ายทั้งหมด หรือทำการแปลงรหัสในขณะที่กำหนดคำขอบริการเครือข่าย หากยังไม่เสร็จสิ้น กระบวนการที่แสดงร่วมจะมีสิทธิ์ของไคลเอ็นต์อื่นบนเครื่องระยะไกล

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

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

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

เมื่อกระบวนการเรียก fork รูทีนของไลบรารีที่เหมาะสมจะส่งข้อความไปยังดาวเทียมแต่ละดวง ดาวเทียมดำเนินการแยกสาขาและส่งรหัสย่อยไปยังไคลเอนต์หลัก กระบวนการของไคลเอ็นต์เรียกใช้ฟังก์ชันระบบส้อม ซึ่งถ่ายโอนการควบคุมไปยังลูกที่มันวางไข่ เด็กในพื้นที่กำลังสนทนากับเด็กจากดาวเทียมที่อยู่ห่างไกลซึ่งที่อยู่ถูกเก็บไว้โดยกิจวัตรของห้องสมุด การตีความฟังก์ชันส้อมนี้ทำให้กระบวนการดาวเทียมควบคุมไฟล์ที่เปิดอยู่และไดเรกทอรีปัจจุบันได้ง่ายขึ้น เมื่อออกจากกระบวนการทำงานกับไฟล์ระยะไกล (โดยการเรียกฟังก์ชัน exit) รูทีนย่อยจะส่งข้อความไปยังดาวเทียมระยะไกลทั้งหมดเพื่อให้ทำเช่นเดียวกันเมื่อได้รับข้อความ มีการกล่าวถึงบางแง่มุมของการใช้งานฟังก์ชัน exec และ exit system ในแบบฝึกหัด

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

13.3 "โปร่งใส" กระจายระบบไฟล์

คำว่า "การจัดสรรแบบโปร่งใส" หมายความว่าผู้ใช้ในเครื่องหนึ่งสามารถเข้าถึงไฟล์บนอีกเครื่องหนึ่งโดยไม่ทราบว่ากำลังข้ามขอบเขตเครื่อง เช่นเดียวกับที่ผู้ใช้อยู่บนเครื่องเมื่อเปลี่ยนจากระบบไฟล์หนึ่งไปยังอีกระบบหนึ่งผ่านจุดเชื่อมต่อ ชื่อที่กระบวนการอ้างอิงถึงไฟล์ที่อยู่บนเครื่องระยะไกลจะคล้ายกับชื่อของไฟล์ในเครื่อง: ไม่มีอักขระเฉพาะในนั้น ในการกำหนดค่าที่แสดงในรูปที่ 13.10 ไดเร็กทอรี "/ usr / src" ที่เป็นของเครื่อง B ถูก "เมานต์" ในไดเร็กทอรี "/ usr / src" ที่เป็นของเครื่อง A. ซอร์สโค้ดของระบบเดียวกัน ซึ่งปกติจะพบใน "/ ไดเร็กทอรี usr / src" ผู้ใช้ที่ทำงานบนเครื่อง A สามารถเข้าถึงไฟล์ที่อยู่บนเครื่อง B โดยใช้รูปแบบการเขียนชื่อไฟล์ตามปกติ (เช่น "/usr/src/cmd/login.c") และเคอร์เนลจะตัดสินว่าไฟล์นั้นเป็นไฟล์ระยะไกลหรือในเครื่อง . ผู้ใช้ที่ทำงานบนเครื่อง B สามารถเข้าถึงไฟล์ในเครื่องของตนได้ (โดยไม่ทราบว่าผู้ใช้เครื่อง A สามารถเข้าถึงไฟล์เดียวกันได้) แต่ในทางกลับกัน จะไม่สามารถเข้าถึงไฟล์ที่อยู่ในเครื่อง A ได้ แน่นอน มีตัวเลือกอื่น ๆ ใน โดยเฉพาะระบบที่ติดตั้งระบบรีโมตทั้งหมดไว้ที่รูทของระบบโลคัล เพื่อให้ผู้ใช้สามารถเข้าถึงไฟล์ทั้งหมดบนทุกระบบได้


รูปที่ 13.10. ระบบไฟล์หลังจากเมานต์ระยะไกล

ความคล้ายคลึงกันระหว่างการติดตั้งระบบไฟล์ในเครื่องและการอนุญาตให้เข้าถึงระบบไฟล์ระยะไกลได้กระตุ้นให้มีการปรับฟังก์ชันการเมานต์ให้เข้ากับระบบไฟล์ระยะไกล ในกรณีนี้ เคอร์เนลมีตารางการต่อเชื่อมรูปแบบเพิ่มเติมที่พร้อมใช้งาน เมื่อใช้ฟังก์ชันเมานต์ เคอร์เนลจะจัดระเบียบการเชื่อมต่อเครือข่ายด้วยเครื่องระยะไกลและเก็บข้อมูลที่แสดงลักษณะการเชื่อมต่อนี้ไว้ในตารางการเมานท์

ปัญหาที่น่าสนใจเกี่ยวกับชื่อพาธที่มี ".." หากกระบวนการสร้างไดเร็กทอรีปัจจุบันจากระบบไฟล์ระยะไกล การใช้อักขระ ".." ในชื่อจะทำให้กระบวนการกลับคืนสู่ระบบไฟล์ในเครื่องมากกว่าการเข้าถึงไฟล์ที่อยู่เหนือไดเร็กทอรีปัจจุบัน กลับไปที่รูปที่ 13.10 อีกครั้ง โปรดทราบว่าเมื่อกระบวนการที่เป็นของเครื่อง A ซึ่งก่อนหน้านี้ได้เลือกไดเร็กทอรีปัจจุบัน "/ usr / src / cmd" ที่อยู่ในระบบไฟล์ระยะไกลจะรันคำสั่ง



ไดเร็กทอรีปัจจุบันจะเป็นไดเร็กทอรีรากของเครื่อง A ไม่ใช่เครื่อง B. อัลกอริธึม namei ที่ทำงานอยู่ในเคอร์เนลของระบบระยะไกล หลังจากได้รับลำดับของอักขระ ".." ให้ตรวจสอบว่ากระบวนการเรียกเป็นตัวแทนของไคลเอ็นต์ กระบวนการ และถ้าเป็นเช่นนั้น จะตั้งค่าว่าไคลเอ็นต์กำลังปฏิบัติต่อไดเร็กทอรีการทำงานปัจจุบันเป็นรูทของระบบไฟล์รีโมตหรือไม่

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


รูปที่ 13.11. การเปิดไฟล์ระยะไกล


พิจารณากระบวนการที่เปิดไฟล์ระยะไกล "/usr/src/cmd/login.c" โดยที่ "src" คือจุดเชื่อมต่อ โดยการแยกวิเคราะห์ชื่อไฟล์ (โดยใช้โครงร่าง namei-iget) เคอร์เนลจะตรวจพบว่าไฟล์นั้นถูกลบและส่งคำขอไปยังเครื่องโฮสต์เพื่อรับดัชนีที่ถูกล็อก เมื่อได้รับคำตอบที่ต้องการ เคอร์เนลในพื้นที่จะสร้างสำเนาของดัชนีในหน่วยความจำที่สอดคล้องกับไฟล์ระยะไกล จากนั้นเคอร์เนลจะตรวจสอบสิทธิ์การเข้าถึงที่จำเป็นสำหรับไฟล์ (เช่น สำหรับการอ่าน) โดยส่งข้อความอื่นไปยังเครื่องระยะไกล อัลกอริธึมแบบเปิดจะดำเนินต่อไปตามแผนทั้งหมดที่ระบุไว้ในบทที่ 5 โดยจะส่งข้อความไปยังเครื่องระยะไกลตามความจำเป็น จนกว่าอัลกอริธึมจะเสร็จสมบูรณ์และดัชนีจะว่าง ความสัมพันธ์ระหว่างโครงสร้างข้อมูลเคอร์เนลเมื่ออัลกอริธึมแบบเปิดเสร็จสิ้นจะแสดงในรูปที่ 13.11

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

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

ในกรณีของฟังก์ชันระบบเปิด คำขอเรียกใช้ฟังก์ชันที่ส่งไปยังเครื่องระยะไกลจะรวมส่วนของชื่อไฟล์ที่เหลือหลังจากไม่รวมองค์ประกอบชื่อพาธการค้นหาที่แยกแยะไฟล์รีโมต ตลอดจนแฟล็กต่างๆ ในตัวอย่างก่อนหน้าของการเปิดไฟล์ "/usr/src/cmd/login.c" เคอร์เนลจะส่งชื่อ "cmd / login.c" ไปยังเครื่องระยะไกล ข้อความนี้ยังรวมถึงข้อมูลประจำตัว เช่น รหัสประจำตัวผู้ใช้และกลุ่ม ซึ่งจำเป็นสำหรับการตรวจสอบสิทธิ์ของไฟล์บนเครื่องระยะไกล หากได้รับการตอบกลับจากเครื่องระยะไกลที่ระบุว่าเปิดฟังก์ชันสำเร็จ เคอร์เนลในเครื่องจะดึงดัชนีว่างในหน่วยความจำของเครื่องภายในและทำเครื่องหมายว่าเป็นดัชนีไฟล์ระยะไกล เก็บข้อมูลเกี่ยวกับเครื่องระยะไกลและดัชนีระยะไกล และ จัดสรรรายการใหม่ในตารางไฟล์เป็นประจำ เมื่อเปรียบเทียบกับดัชนีจริงบนเครื่องระยะไกล ดัชนีที่เครื่องท้องถิ่นเป็นเจ้าของนั้นเป็นทางการและไม่ละเมิดการกำหนดค่าของรุ่น ซึ่งโดยทั่วไปจะเหมือนกับการกำหนดค่าที่ใช้เมื่อเรียกใช้ขั้นตอนระยะไกล (รูปที่ 13.11) หากฟังก์ชันที่เรียกใช้โดยกระบวนการเข้าถึงไฟล์ระยะไกลโดยตัวอธิบาย เคอร์เนลภายในจะทราบจากดัชนี (ในเครื่อง) ว่าไฟล์นั้นเป็นไฟล์ระยะไกล กำหนดคำขอที่มีฟังก์ชันที่เรียก และส่งไปยังเครื่องระยะไกล คำขอมีตัวชี้ไปยังดัชนีระยะไกลโดยที่กระบวนการดาวเทียมสามารถระบุไฟล์ระยะไกลได้

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

13.4 รูปแบบการแจกจ่ายโดยไม่มีกระบวนการโอน

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

เมื่อกระบวนการเปิดไฟล์ระยะไกล เคอร์เนลระยะไกลจะกำหนดดัชนีสำหรับลิงก์ที่ตามมาไปยังไฟล์ เครื่องในเครื่องจะรักษาตารางตัวอธิบายไฟล์แบบกำหนดเอง ตารางไฟล์ และตารางดัชนีที่มีชุดระเบียนปกติ โดยมีรายการตารางดัชนีระบุเครื่องระยะไกลและดัชนีระยะไกล ในกรณีที่ฟังก์ชันของระบบ (เช่น อ่าน) ใช้ file descriptor เคอร์เนลจะส่งข้อความที่ชี้ไปยังดัชนีระยะไกลที่กำหนดไว้ก่อนหน้านี้ และโอนข้อมูลที่เกี่ยวข้องกับกระบวนการ: รหัสประจำตัวผู้ใช้ ขนาดไฟล์สูงสุด ฯลฯ เครื่องมี กระบวนการของเซิร์ฟเวอร์เมื่อใช้งาน การโต้ตอบกับไคลเอนต์ใช้แบบฟอร์มที่อธิบายไว้ก่อนหน้านี้ อย่างไรก็ตาม การเชื่อมต่อระหว่างไคลเอนต์และเซิร์ฟเวอร์ถูกสร้างขึ้นเฉพาะในช่วงระยะเวลาของฟังก์ชันระบบ

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

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

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

แม้จะมีข้อดีจากการใช้กระบวนการทางดาวเทียม แต่ความจำเป็นในการป้อนข้อมูลฟรีในตารางกระบวนการในทางปฏิบัตินั้นรุนแรงมากจนในกรณีส่วนใหญ่ บริการของกระบวนการเซิร์ฟเวอร์ยังคงใช้ในการประมวลผลคำขอระยะไกล


รูปที่ 13.12 ไดอะแกรมแนวคิดของการโต้ตอบกับไฟล์ระยะไกลที่ระดับเคอร์เนล

13.5 บทสรุป

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

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

13.6 การออกกำลังกาย

*1. อธิบายการใช้งานฟังก์ชันระบบทางออกในระบบที่มีโปรเซสเซอร์ต่อพ่วง อะไรคือความแตกต่างระหว่างกรณีนี้และเมื่อกระบวนการออกเมื่อรับสัญญาณที่ไม่ถูกตรวจจับ? เคอร์เนลควรดัมพ์เนื้อหาของหน่วยความจำอย่างไร

2. กระบวนการไม่สามารถละเลยสัญญาณ SIGKILL ได้ อธิบายว่าเกิดอะไรขึ้นในระบบต่อพ่วงเมื่อกระบวนการรับสัญญาณดังกล่าว

* 3. อธิบายการใช้งานฟังก์ชันระบบ exec กับระบบที่มีโปรเซสเซอร์ต่อพ่วง

*4. โปรเซสเซอร์กลางควรแจกจ่ายกระบวนการระหว่างโปรเซสเซอร์อุปกรณ์ต่อพ่วงอย่างไรเพื่อให้โหลดโดยรวมสมดุล

*5. จะเกิดอะไรขึ้นหากโปรเซสเซอร์ต่อพ่วงมีหน่วยความจำไม่เพียงพอที่จะรองรับกระบวนการทั้งหมดที่ถ่ายออกไป การขนถ่ายและการแลกเปลี่ยนโปรเซสในเครือข่ายควรทำอย่างไร?

6. พิจารณาระบบที่ส่งคำขอไปยังเซิร์ฟเวอร์ไฟล์ระยะไกลหากพบคำนำหน้าพิเศษในชื่อไฟล์ ให้เรียกกระบวนการ excl ("/../ sftig / bin / sh", "sh", 0); ไฟล์เรียกทำงานอยู่บนเครื่องระยะไกล แต่ต้องทำงานบนระบบโลคัล อธิบายวิธีการย้ายโมดูลระยะไกลไปยังระบบโลคัล

7. หากผู้ดูแลระบบต้องการเพิ่มเครื่องใหม่ให้กับระบบที่มีอยู่ด้วยการเชื่อมต่อเช่น Newcastle แล้ววิธีที่ดีที่สุดในการแจ้งโมดูลไลบรารี C เกี่ยวกับเรื่องนี้คืออะไร?

*แปด. ในระหว่างการดำเนินการของฟังก์ชัน exec เคอร์เนลจะเขียนทับพื้นที่ที่อยู่ของกระบวนการ รวมถึงตารางไลบรารีที่ใช้โดยลิงก์ Newcastle เพื่อติดตามลิงก์ไปยังไฟล์ระยะไกล หลังจากเรียกใช้ฟังก์ชัน กระบวนการจะต้องรักษาความสามารถในการเข้าถึงไฟล์เหล่านี้โดยตัวบอกลักษณะเก่า อธิบายการดำเนินการตามประเด็นนี้

*เก้า. ดังแสดงในหัวข้อ 13.2 การเรียกใช้ฟังก์ชันระบบทางออกบนระบบที่มีการเชื่อมต่อนิวคาสเซิลส่งผลให้มีการส่งข้อความไปยังกระบวนการร่วม บังคับให้ระบบหลังยุติการทำงาน สิ่งนี้ทำในระดับกิจวัตรของห้องสมุด จะเกิดอะไรขึ้นเมื่อกระบวนการในพื้นที่ได้รับสัญญาณที่บอกให้ออกจากโหมดเคอร์เนล

*สิบ. ในระบบที่มีลิงก์ Newcastle ซึ่งระบุไฟล์ระยะไกลโดยนำหน้าชื่อด้วยคำนำหน้าพิเศษ ผู้ใช้จะระบุ ".." (ไดเร็กทอรีหลัก) เป็นคอมโพเนนต์ชื่อไฟล์ได้อย่างไร ให้ข้ามผ่านจุดเชื่อมต่อระยะไกล

11. เรารู้จากบทที่ 7 ว่าสัญญาณต่างๆ ทำให้กระบวนการดัมพ์เนื้อหาของหน่วยความจำลงในไดเร็กทอรีปัจจุบัน จะเกิดอะไรขึ้นหากไดเร็กทอรีปัจจุบันมาจากระบบไฟล์ระยะไกล? คุณจะให้คำตอบอะไรหากระบบใช้ความสัมพันธ์แบบนิวคาสเซิล

*12. กระบวนการในท้องถิ่นจะมีความหมายอย่างไรหากกระบวนการดาวเทียมหรือเซิร์ฟเวอร์ทั้งหมดถูกลบออกจากระบบ

*13. พิจารณาวิธีการใช้อัลกอริธึมลิงก์ในระบบกระจายแบบโปร่งใส พารามิเตอร์สามารถเป็นชื่อไฟล์ระยะไกลได้สองชื่อ เช่นเดียวกับอัลกอริธึม exec ที่เกี่ยวข้องกับการดำเนินการอ่านข้อมูลภายในหลายอย่าง พิจารณารูปแบบการสื่อสารสองรูปแบบ: การเรียกโพรซีเดอร์ระยะไกลและการเรียกใช้ฟังก์ชันระบบระยะไกล

*สิบสี่. เมื่อเข้าถึงอุปกรณ์ กระบวนการของเซิร์ฟเวอร์สามารถเข้าสู่สถานะถูกระงับ ซึ่งจะถูกนำออกจากโปรแกรมควบคุมอุปกรณ์ โดยปกติ หากจำนวนเซิร์ฟเวอร์มีจำกัด ระบบจะไม่สามารถตอบสนองคำขอของเครื่องในพื้นที่ได้อีกต่อไป สร้างโครงร่างที่เชื่อถือได้ซึ่งกระบวนการของเซิร์ฟเวอร์ทั้งหมดจะไม่ถูกระงับในขณะที่รอให้ I / O ที่เกี่ยวข้องกับอุปกรณ์ดำเนินการให้เสร็จสิ้น ฟังก์ชันของระบบจะไม่ยุติในขณะที่เซิร์ฟเวอร์ทั้งหมดไม่ว่าง


รูปที่ 13.13. การกำหนดค่าเซิร์ฟเวอร์เทอร์มินัล

*15. เมื่อผู้ใช้เข้าสู่ระบบ ระเบียบวินัยของเทอร์มินัลจะเก็บข้อมูลว่าเทอร์มินัลเป็นเทอร์มินัลโอเปอเรเตอร์ที่นำกลุ่มของกระบวนการ ด้วยเหตุนี้ เมื่อผู้ใช้กดปุ่ม "break" บนแป้นพิมพ์เทอร์มินัล กระบวนการทั้งหมดในกลุ่มจะได้รับสัญญาณขัดจังหวะ พิจารณาการกำหนดค่าระบบที่เทอร์มินัลทั้งหมดเชื่อมต่อทางกายภาพกับเครื่องหนึ่งเครื่อง แต่การลงทะเบียนผู้ใช้จะดำเนินการตามตรรกะในเครื่องอื่น (รูปที่ 13.13) ในแต่ละกรณี ระบบจะสร้างกระบวนการ getty สำหรับรีโมตเทอร์มินัล หากคำขอไปยังระบบระยะไกลได้รับการประมวลผลโดยชุดกระบวนการของเซิร์ฟเวอร์ โปรดทราบว่าเมื่อดำเนินการตามขั้นตอนที่เปิดอยู่ เซิร์ฟเวอร์จะหยุดรอการเชื่อมต่อ เมื่อฟังก์ชันเปิดเสร็จสิ้น เซิร์ฟเวอร์จะกลับไปที่พูลเซิร์ฟเวอร์ ตัดการเชื่อมต่อกับเทอร์มินัล สัญญาณขัดจังหวะถูกทริกเกอร์โดยการกดปุ่ม "break" อย่างไรที่ส่งไปยังที่อยู่ของกระบวนการที่รวมอยู่ในกลุ่มเดียวกัน

*16. การใช้หน่วยความจำร่วมกันเป็นคุณลักษณะที่มีอยู่ในเครื่องท้องถิ่น จากมุมมองเชิงตรรกะ การจัดสรรพื้นที่ส่วนกลางของหน่วยความจำกายภาพ (ในเครื่องหรือระยะไกล) สามารถดำเนินการได้สำหรับกระบวนการที่เป็นของเครื่องจักรต่างๆ อธิบายการดำเนินการตามประเด็นนี้

* 17. กระบวนการเพจเจอร์และอัลกอริธึมเพจที่กล่าวถึงในบทที่ 9 ถือว่าใช้เพจเจอร์ท้องถิ่น ควรทำการเปลี่ยนแปลงอัลกอริธึมเหล่านี้อย่างไรจึงจะสามารถรองรับอุปกรณ์ถ่ายข้อมูลระยะไกลได้

*สิบแปด. สมมติว่าเครื่องระยะไกล (หรือเครือข่าย) ประสบกับความผิดพลาดร้ายแรงและโปรโตคอลเลเยอร์เครือข่ายภายในจะบันทึกข้อเท็จจริงนี้ พัฒนารูปแบบการกู้คืนสำหรับระบบภายในที่ส่งคำขอไปยังเซิร์ฟเวอร์ระยะไกล นอกจากนี้ ให้พัฒนารูปแบบการกู้คืนสำหรับระบบเซิร์ฟเวอร์ที่ขาดการติดต่อกับลูกค้า

*19. เมื่อกระบวนการเข้าถึงไฟล์ระยะไกล เป็นไปได้ที่กระบวนการจะสำรวจหลายเครื่องเพื่อค้นหาไฟล์ ใช้ชื่อ "/ usr / src / uts / 3b2 / os" เป็นตัวอย่าง โดยที่ "/ usr" เป็นไดเร็กทอรีที่เป็นของเครื่อง A "/ usr / src" คือจุดต่อเชื่อมของรูทของเครื่อง B " / usr / src / uts / 3b2 "เป็นจุดเชื่อมต่อของรูทของเครื่อง C การเดินผ่านเครื่องหลายเครื่องไปยังปลายทางสุดท้ายเรียกว่า multihop อย่างไรก็ตาม หากมีการเชื่อมต่อเครือข่ายโดยตรงระหว่างเครื่อง A และ C การส่งข้อมูลผ่านเครื่อง B จะไม่มีประสิทธิภาพ อธิบายคุณลักษณะของการใช้งาน "multihopping" ในระบบที่มีการเชื่อมต่อ Newcastle และในระบบกระจาย "โปร่งใส"

ปัจจุบัน IS ทั้งหมดได้รับการพัฒนาเพื่อการค้าทั้งหมดมีสถาปัตยกรรมแบบกระจายซึ่งหมายถึงการใช้เครือข่ายทั่วโลกและ / หรือท้องถิ่น

ในอดีต สถาปัตยกรรมไฟล์เซิร์ฟเวอร์เป็นสถาปัตยกรรมแรกที่แพร่หลาย เนื่องจากตรรกะนั้นเรียบง่ายและง่ายที่สุดในการถ่ายโอนไปยังสถาปัตยกรรมดังกล่าวที่ IS ดำเนินการอยู่แล้ว จากนั้นจึงเปลี่ยนเป็นสถาปัตยกรรมไคลเอ็นต์-เซิร์ฟเวอร์ ซึ่งสามารถตีความได้ว่ามีความต่อเนื่องทางตรรกะ ระบบสมัยใหม่ที่ใช้ในเครือข่าย INTERNET ทั่วโลกส่วนใหญ่เกี่ยวข้องกับสถาปัตยกรรมของวัตถุแบบกระจาย (ดูรูปที่ สาม15 )


IS สามารถจินตนาการได้ว่ามีองค์ประกอบดังต่อไปนี้ (รูปที่ III-16)

III.03.2. แอปพลิเคชันเซิร์ฟเวอร์ไฟล์

เป็นสถาปัตยกรรมแบบกระจายครั้งแรกในอดีต (รูปที่ III-17) มันถูกจัดระเบียบอย่างเรียบง่าย: มีเพียงข้อมูลบนเซิร์ฟเวอร์ และทุกอย่างเป็นของเครื่องไคลเอนต์ เนื่องจากเครือข่ายท้องถิ่นค่อนข้างถูก และด้วยสถาปัตยกรรมดังกล่าว แอพพลิเคชั่นซอฟต์แวร์จึงทำงานอัตโนมัติ สถาปัตยกรรมดังกล่าวจึงมักถูกใช้ในปัจจุบัน เราสามารถพูดได้ว่านี่เป็นตัวแปรของสถาปัตยกรรมไคลเอนต์ - เซิร์ฟเวอร์ซึ่งมีเฉพาะไฟล์ข้อมูลเท่านั้นที่ตั้งอยู่บนเซิร์ฟเวอร์ คอมพิวเตอร์ส่วนบุคคลต่างๆ โต้ตอบกันโดยใช้ที่เก็บข้อมูลทั่วไปเท่านั้น ดังนั้นโปรแกรมที่เขียนขึ้นสำหรับคอมพิวเตอร์เครื่องหนึ่งจึงปรับให้เข้ากับสถาปัตยกรรมดังกล่าวได้ง่ายที่สุด


ข้อดี:

ข้อดีของสถาปัตยกรรมไฟล์เซิร์ฟเวอร์:

ความง่ายในการจัดระเบียบ

ไม่ขัดแย้งกับข้อกำหนดที่จำเป็นสำหรับฐานข้อมูลเพื่อรักษาความสมบูรณ์และความน่าเชื่อถือ

ความแออัดของเครือข่าย

การตอบสนองที่คาดเดาไม่ได้ต่อคำขอ

ข้อเสียเหล่านี้อธิบายได้จากข้อเท็จจริงที่ว่าคำขอใด ๆ ไปยังฐานข้อมูลนำไปสู่การถ่ายโอนข้อมูลจำนวนมากผ่านเครือข่าย ตัวอย่างเช่น ในการเลือกหนึ่งแถวหรือหลายแถวจากตาราง ทั้งตารางจะถูกดาวน์โหลดไปยังเครื่องไคลเอนต์และ DBMS จะเลือกที่นั่นแล้ว การรับส่งข้อมูลเครือข่ายที่มีนัยสำคัญนั้นเต็มไปด้วยองค์กรของการเข้าถึงฐานข้อมูลจากระยะไกล

III.03.2. b แอปพลิเคชันไคลเอนต์ - เซิร์ฟเวอร์

ในกรณีนี้ มีการกระจายความรับผิดชอบระหว่างเซิร์ฟเวอร์และไคลเอนต์ ขึ้นอยู่กับว่าแยกจากกันอย่างไร อ้วนและ ลูกค้าแบบบาง.


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

หลัก ข้อบกพร่องรุ่นไคลเอ็นต์แบบบาง - โหลดเซิร์ฟเวอร์และเครือข่ายสูง การคำนวณทั้งหมดดำเนินการบนเซิร์ฟเวอร์ และอาจนำไปสู่การรับส่งข้อมูลเครือข่ายที่สำคัญระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ คอมพิวเตอร์สมัยใหม่มีกำลังในการประมวลผลเพียงพอ แต่ในทางปฏิบัติไม่ได้ใช้ในโมเดล / ไคลเอ็นต์แบบบางของธนาคาร

ในทางตรงกันข้าม โมเดลไคลเอ็นต์แบบหนาใช้พลังการประมวลผลของเครื่องโลคัล: แอปพลิเคชันจะวางอยู่บนคอมพิวเตอร์ไคลเอนต์ ตัวอย่างของสถาปัตยกรรมประเภทนี้คือระบบ ATM ซึ่ง ATM เป็นไคลเอนต์ และเซิร์ฟเวอร์คือคอมพิวเตอร์ส่วนกลางที่ให้บริการฐานข้อมูลบัญชีลูกค้า

III.03.2. c สถาปัตยกรรมไคลเอนต์ - เซิร์ฟเวอร์สองและสามระดับ

สถาปัตยกรรมทั้งหมดที่กล่าวถึงข้างต้นเป็นแบบสองชั้น พวกเขาแยกความแตกต่างระหว่างระดับไคลเอนต์และระดับเซิร์ฟเวอร์ พูดอย่างเคร่งครัด IC ประกอบด้วยสามระดับตรรกะ:

· ระดับผู้ใช้;

ระดับการสมัคร:

· ชั้นข้อมูล

ดังนั้น ในรุ่น 2 ระดับ ซึ่งมีเพียง 2 ระดับที่เกี่ยวข้องกัน จะมีปัญหาเรื่องความสามารถในการปรับขนาดและประสิทธิภาพหากเลือกรุ่นไคลเอ็นต์แบบบาง หรือปัญหาการจัดการระบบหากเลือกรุ่นไคลเอ็นต์แบบหนา ปัญหาเหล่านี้สามารถหลีกเลี่ยงได้หากเราใช้แบบจำลองที่ประกอบด้วยสามระดับ โดยสองระดับเป็นเซิร์ฟเวอร์ (รูปที่ III-21)

เซิร์ฟเวอร์ข้อมูล

อันที่จริง แอปพลิเคชันเซิร์ฟเวอร์และเซิร์ฟเวอร์ข้อมูลสามารถอยู่ในเครื่องเดียวกันได้ แต่ไม่สามารถทำหน้าที่ของกันและกันได้ สิ่งที่ดีเกี่ยวกับโมเดลสามระดับคือ มันแยกการดำเนินการแอปพลิเคชันและการจัดการข้อมูลอย่างมีเหตุผล

ตารางที่ III-5 การประยุกต์สถาปัตยกรรมประเภทต่างๆ

สถาปัตยกรรม แอปพลิเคชัน
ไคลเอ็นต์แบบบางสองชั้น 1 ระบบเดิมที่ไม่แนะนำให้แยกการดำเนินการแอปพลิเคชันและการจัดการข้อมูล 2 แอปพลิเคชันที่เน้นการประมวลผลด้วยการจัดการข้อมูลเพียงเล็กน้อย 3 แอปพลิเคชั่นที่มีข้อมูลจำนวนมาก แต่คำนวณได้น้อย
ลูกค้าหนาสองชั้น 1 แอปพลิเคชันที่ผู้ใช้ต้องการการประมวลผลข้อมูลอย่างเข้มข้น เช่น การสร้างภาพข้อมูล 2 แอปพลิเคชันที่มีชุดฟังก์ชันผู้ใช้ที่ค่อนข้างคงที่ซึ่งนำไปใช้กับสภาพแวดล้อมระบบที่มีการจัดการที่ดี
ไคลเอนต์เซิร์ฟเวอร์สามระดับ 1 แอปพลิเคชันขนาดใหญ่ที่มีเซลล์และไคลเอ็นต์นับพัน 2 แอปพลิเคชันที่ทั้งข้อมูลและวิธีการประมวลผลมีการเปลี่ยนแปลงบ่อยครั้ง 3 แอปพลิเคชั่นที่รวมข้อมูลจากหลายแหล่ง

โมเดลนี้เหมาะสำหรับแอปพลิเคชันหลายประเภท แต่จำกัดนักพัฒนา IS ที่ต้องตัดสินใจว่าจะให้บริการที่ใด ให้การสนับสนุนสำหรับความสามารถในการปรับขนาด และพัฒนาเครื่องมือเพื่อเชื่อมต่อลูกค้าใหม่

III.03.2. d สถาปัตยกรรมวัตถุแบบกระจาย

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

ODBC Driver Manager
คนขับ 1
ไดรเวอร์ K
DB 1
DB K
การทำงานกับSQL

สถาปัตยกรรม ODBC ประกอบด้วยส่วนประกอบ:

1. การสมัคร (เช่น IS) มันทำงาน: ร้องขอการเชื่อมต่อกับแหล่งข้อมูล ส่งแบบสอบถาม SQL ไปยังแหล่งข้อมูล อธิบายพื้นที่จัดเก็บและรูปแบบสำหรับการสืบค้น SQL จัดการข้อผิดพลาดและแจ้งให้ผู้ใช้ทราบ ยืนยันหรือย้อนกลับธุรกรรม ขอเชื่อมต่อกับ แหล่งข้อมูล.

2. ตัวจัดการอุปกรณ์ มันโหลดไดรเวอร์ตามความต้องการของแอปพลิเคชัน มีอินเทอร์เฟซเดียวสำหรับแอปพลิเคชันทั้งหมด และอินเทอร์เฟซผู้ดูแลระบบ ODBC จะเหมือนกันและไม่ว่า DBMS ใดที่แอปพลิเคชันจะโต้ตอบด้วย ตัวจัดการไดรเวอร์ที่ Microsoft จัดหาให้คือไดนามิกโหลดไลบรารี (DLL)

3. ไดรเวอร์ขึ้นอยู่กับ DBMS โปรแกรมควบคุม ODBC คือไลบรารีลิงก์แบบไดนามิก (DLL) ที่ใช้ฟังก์ชัน ODBC และโต้ตอบกับแหล่งข้อมูล ไดรเวอร์คือโปรแกรมที่ประมวลผลคำขอสำหรับฟังก์ชันเฉพาะของ DBMS (สามารถแก้ไขคำขอตาม DBMS) และส่งคืนผลลัพธ์ไปยังแอปพลิเคชัน DBMS ทุกตัวที่รองรับเทคโนโลยี ODBC จะต้องจัดเตรียมไดรเวอร์สำหรับ DBMS นั้นให้กับนักพัฒนาแอปพลิเคชัน

4. แหล่งข้อมูลประกอบด้วยข้อมูลการควบคุมที่ระบุโดยผู้ใช้ ข้อมูลเกี่ยวกับแหล่งข้อมูล และใช้เพื่อเข้าถึง DBMS เฉพาะ ในกรณีนี้จะใช้วิธีการของระบบปฏิบัติการและแพลตฟอร์มเครือข่าย

โมเดลไดนามิก

โมเดลนี้มีสมมติฐานหลายประการ ซึ่งอย่างน้อย 5 ไดอะแกรมถูกใช้ใน UML ดูหน้า 2.04.2- 2.04.5.

พิจารณาด้านการจัดการ รูปแบบการกำกับดูแลช่วยเสริมแบบจำลองโครงสร้าง

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

การควบคุมในระบบซอฟต์แวร์มีสองประเภทหลัก

1. การจัดการแบบรวมศูนย์

2. การจัดการตามเหตุการณ์

การจัดการแบบรวมศูนย์สามารถ:

· ลำดับชั้น- บนพื้นฐานของหลักการ "โทรกลับ" (นี่คือวิธีการทำงานของโปรแกรมการศึกษาส่วนใหญ่)

· รุ่นผู้จัดส่งซึ่งใช้สำหรับระบบคู่ขนาน

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

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

ตัวอย่างของการจัดการดังกล่าวคือการจัดระเบียบแอปพลิเคชันใน Windows

โมเดลโครงสร้างที่อธิบายไว้ก่อนหน้านี้ทั้งหมดสามารถนำไปใช้ได้โดยใช้การจัดการแบบรวมศูนย์หรือการจัดการตามเหตุการณ์

หน้าจอผู้ใช้

ในการพัฒนารูปแบบอินเทอร์เฟซ ไม่ควรคำนึงถึงเฉพาะงานของซอฟต์แวร์ที่ออกแบบเท่านั้น แต่ยังรวมถึงคุณลักษณะของสมองที่เกี่ยวข้องกับการรับรู้ข้อมูลด้วย

III.03.4. ลักษณะทางจิตฟิสิกส์ของบุคคลที่เกี่ยวข้องกับการรับรู้และการประมวลผลข้อมูล

ส่วนหนึ่งของสมองซึ่งสามารถเรียกได้ว่าเป็นผู้ประมวลผลการรับรู้ตามอัตภาพอย่างต่อเนื่องโดยไม่ต้องมีส่วนร่วมของสติประมวลผลข้อมูลที่เข้ามาเปรียบเทียบกับประสบการณ์ที่ผ่านมาและเก็บไว้ในที่จัดเก็บ

เมื่อภาพที่มองเห็นดึงดูดความสนใจของเรา ข้อมูลที่เราสนใจก็มาถึงในความทรงจำระยะสั้น หากเราไม่ดึงดูดความสนใจ ข้อมูลในที่จัดเก็บจะหายไปและแทนที่ด้วยส่วนต่อไปนี้

ในแต่ละช่วงเวลา จุดโฟกัสของความสนใจสามารถแก้ไขได้ที่จุดหนึ่ง ดังนั้นหากจำเป็นต้องติดตามหลายสถานการณ์พร้อมกัน โฟกัสจะย้ายจากวัตถุที่ติดตามหนึ่งไปยังอีกวัตถุหนึ่ง ในขณะเดียวกันความสนใจก็กระจัดกระจายและรายละเอียดบางอย่างอาจถูกมองข้าม การรับรู้นั้นขึ้นอยู่กับแรงจูงใจเป็นส่วนใหญ่

เมื่อคุณเปลี่ยนเฟรม สมองจะถูกบล็อกชั่วขณะหนึ่ง: สมองจะควบคุมรูปภาพใหม่โดยเน้นรายละเอียดที่สำคัญที่สุด ซึ่งหมายความว่าหากคุณต้องการการตอบสนองอย่างรวดเร็วจากผู้ใช้ คุณไม่ควรเปลี่ยนรูปภาพในทันที

หน่วยความจำระยะสั้นเป็นคอขวดในระบบประมวลผลข้อมูลของบุคคล ความจุของมันคือ 7 ± 2 วัตถุที่ไม่เชื่อมต่อ ข้อมูลที่ไม่มีการอ้างสิทธิ์จะถูกเก็บไว้ในนั้นไม่เกิน 30 วินาที เพื่อไม่ให้ลืมข้อมูลสำคัญใดๆ สำหรับเรา เรามักจะทำซ้ำกับตนเองโดยอัปเดตข้อมูลในหน่วยความจำระยะสั้น ดังนั้น เมื่อออกแบบอินเทอร์เฟซ พึงระลึกไว้เสมอว่าคนส่วนใหญ่พบว่ามันยาก ตัวอย่างเช่น การจำและป้อนตัวเลขที่มีตัวเลขมากกว่าห้าหลักบนหน้าจออื่น

แม้ว่าความจุและเวลาในการจัดเก็บของหน่วยความจำระยะยาวจะไม่จำกัด แต่การเข้าถึงข้อมูลก็ไม่ใช่เรื่องง่าย กลไกในการดึงข้อมูลจากหน่วยความจำระยะยาวมีลักษณะเชื่อมโยงกัน เพื่อปรับปรุงการท่องจำข้อมูล ข้อมูลจะเชื่อมโยงกับข้อมูลที่หน่วยความจำจัดเก็บอยู่แล้วและทำให้ง่ายต่อการรับข้อมูล เนื่องจากการเข้าถึงหน่วยความจำระยะยาวนั้นทำได้ยาก ขอแนะนำให้คาดหวังให้ผู้ใช้ไม่จำข้อมูล แต่โดยที่ผู้ใช้จะรับรู้ได้

III.03.4. b เกณฑ์พื้นฐานสำหรับการประเมินอินเตอร์เฟส

การสำรวจและการสำรวจจำนวนมากที่ดำเนินการโดยบริษัทพัฒนาซอฟต์แวร์ชั้นนำได้แสดงให้เห็นว่าผู้ใช้ให้ความสำคัญกับอินเทอร์เฟซ:

1) ความง่ายในการเรียนรู้และการท่องจำ - ประมาณการเฉพาะเวลาของการเรียนรู้และระยะเวลาในการเก็บรักษาข้อมูลและหน่วยความจำ

2) ความเร็วในการบรรลุผลเมื่อใช้ระบบซึ่งกำหนดโดยจำนวนคำสั่งและการตั้งค่าที่เมาส์ป้อนหรือเลือก

3) ความพึงพอใจส่วนตัวกับการทำงานของระบบ (ใช้งานง่าย ล้า ฯลฯ)

ยิ่งกว่านั้น สำหรับผู้ใช้มืออาชีพที่ทำงานกับแพ็คเกจเดียวกันอย่างต่อเนื่อง เกณฑ์ที่สองและสามมาที่ที่หนึ่งอย่างรวดเร็ว และสำหรับผู้ใช้ที่ไม่ใช่มืออาชีพที่ทำงานกับซอฟต์แวร์เป็นระยะๆ และทำงานที่ค่อนข้างง่าย - อย่างแรกและที่สาม

จากมุมมองนี้ คุณลักษณะที่ดีที่สุดสำหรับผู้ใช้มืออาชีพในปัจจุบันคืออินเทอร์เฟซที่มีการนำทางฟรี และสำหรับผู้ใช้ที่ไม่ใช่มืออาชีพ - อินเทอร์เฟซการจัดการโดยตรง เป็นที่ทราบกันมานานแล้วว่าเมื่อทำการคัดลอกไฟล์ สิ่งอื่น ๆ ทั้งหมดเท่าเทียมกัน มืออาชีพส่วนใหญ่ใช้เชลล์เช่น Far ในขณะที่ผู้ที่ไม่ใช่มืออาชีพใช้ Windows "ลากแล้วปล่อย"

III.03.4. c ประเภทของอินเทอร์เฟซผู้ใช้

ส่วนต่อประสานผู้ใช้ประเภทต่อไปนี้มีความโดดเด่น:

ดั้งเดิม

การนำทางฟรี

การจัดการโดยตรง

อินเทอร์เฟซเป็นแบบดั้งเดิม

ดั้งเดิมเรียกว่าอินเทอร์เฟซที่จัดระเบียบการโต้ตอบกับผู้ใช้และใช้ในโหมดคอนโซล การเบี่ยงเบนเพียงอย่างเดียวจากกระบวนการตามลำดับที่ข้อมูลมีคือการวนซ้ำผ่านชุดข้อมูลหลายชุด

อินเทอร์เฟซเมนู

ต่างจากอินเทอร์เฟซดั้งเดิม โดยให้ผู้ใช้เลือกการดำเนินการจากรายการพิเศษที่แสดงโดยโปรแกรม อินเทอร์เฟซเหล่านี้ถือว่ามีการใช้งานหลายสถานการณ์การทำงาน ลำดับของการกระทำที่กำหนดโดยผู้ใช้ การจัดระเบียบเมนูแบบต้นไม้แสดงให้เห็นว่าการค้นหารายการในเมนูมากกว่าสองระดับเป็นเรื่องยาก

(เนื้อหาเว็บไซต์ http://se.math.spbu.ru)

บทนำ.

ปัจจุบันมีการกระจายระบบซอฟต์แวร์ขนาดใหญ่เกือบทั้งหมด ระบบกระจาย- ระบบที่การประมวลผลข้อมูลไม่ได้กระจุกตัวอยู่ในคอมพิวเตอร์เครื่องเดียว แต่กระจายไปยังคอมพิวเตอร์หลายเครื่อง ในการออกแบบระบบแบบกระจายซึ่งมีสิ่งที่เหมือนกันมากกับการออกแบบซอฟต์แวร์โดยทั่วไป ยังมีรายละเอียดเฉพาะบางอย่างที่ต้องพิจารณา

ลักษณะสำคัญของระบบแบบกระจายมีหกลักษณะ

  1. การแบ่งปันทรัพยากร ระบบแบบกระจายอนุญาตให้ใช้ทรัพยากรทั้งฮาร์ดแวร์ (ฮาร์ดไดรฟ์ เครื่องพิมพ์) และซอฟต์แวร์ (ไฟล์ คอมไพเลอร์) ร่วมกัน
  2. ความเปิดกว้างเป็นความสามารถในการขยายระบบโดยการเพิ่มทรัพยากรใหม่
  3. ความเท่าเทียมในระบบแบบกระจาย หลายโพรเซสสามารถทำงานพร้อมกันบนคอมพิวเตอร์หลายเครื่องบนเครือข่ายได้ กระบวนการเหล่านี้สามารถโต้ตอบได้ในขณะที่กำลังทำงาน
  4. ความสามารถในการปรับขนาด . ภายใต้ ความสามารถในการปรับขนาดได้ความเป็นไปได้ของการเพิ่มคุณสมบัติและวิธีการใหม่เป็นที่เข้าใจ
  5. ความทนทานต่อความผิดพลาด การมีอยู่ของคอมพิวเตอร์หลายเครื่องทำให้สามารถทำซ้ำข้อมูลและต่อต้านข้อผิดพลาดของฮาร์ดแวร์และซอฟต์แวร์บางอย่างได้ ระบบแบบกระจายสามารถรองรับการทำงานบางส่วนได้ในกรณีที่เกิดข้อผิดพลาด ความล้มเหลวทั้งหมดของระบบเกิดขึ้นเฉพาะกับข้อผิดพลาดของเครือข่ายเท่านั้น
  6. ความโปร่งใสผู้ใช้จะสามารถเข้าถึงทรัพยากรในระบบได้อย่างเต็มที่ ในขณะที่ข้อมูลเกี่ยวกับการกระจายทรัพยากรทั่วทั้งระบบก็ถูกซ่อนจากพวกเขา

ระบบกระจายยังมีข้อเสียหลายประการ

  1. ความซับซ้อน... การทำความเข้าใจและประเมินคุณสมบัติของระบบแบบกระจายโดยทั่วไปนั้นยากกว่ามาก และยากต่อการออกแบบ ทดสอบและบำรุงรักษา นอกจากนี้ ประสิทธิภาพของระบบยังขึ้นอยู่กับความเร็วของเครือข่าย ไม่ใช่โปรเซสเซอร์แต่ละตัว การจัดสรรทรัพยากรใหม่สามารถเปลี่ยนความเร็วของระบบได้อย่างมาก
  2. ความปลอดภัย... โดยทั่วไปแล้ว ระบบสามารถเข้าถึงได้จากเครื่องต่างๆ หลายเครื่อง สามารถตรวจสอบและสกัดกั้นข้อความบนเครือข่ายได้ ดังนั้น ในระบบแบบกระจาย การรักษาความปลอดภัยจึงยากกว่ามาก
  3. ความสามารถในการควบคุม... ระบบสามารถประกอบด้วยคอมพิวเตอร์ประเภทต่างๆ ที่สามารถติดตั้งระบบปฏิบัติการเวอร์ชันต่างๆ ได้ ข้อผิดพลาดในเครื่องหนึ่งสามารถแพร่กระจายไปยังเครื่องอื่นในลักษณะที่คาดเดาไม่ได้
  4. ความคาดเดาไม่ได้ ... ปฏิกิริยาของระบบแบบกระจายต่อเหตุการณ์บางอย่างไม่สามารถคาดเดาได้ และขึ้นอยู่กับโหลดเต็มของระบบ องค์กร และโหลดของเครือข่าย เนื่องจากพารามิเตอร์เหล่านี้สามารถเปลี่ยนแปลงได้อย่างต่อเนื่อง ดังนั้นเวลาในการตอบสนองต่อคำขอจึงอาจแตกต่างกันอย่างมากจากเวลานั้น

จากข้อบกพร่องเหล่านี้ คุณจะเห็นได้ว่าเมื่อออกแบบระบบแบบกระจาย มีปัญหามากมายที่ต้องพิจารณาโดยนักพัฒนา

  1. การระบุทรัพยากร ... ทรัพยากรในระบบแบบกระจายอยู่ในคอมพิวเตอร์หลายเครื่อง ดังนั้นควรพิจารณาระบบการตั้งชื่อทรัพยากรเพื่อให้ผู้ใช้สามารถเข้าถึงและอ้างอิงทรัพยากรที่ต้องการได้อย่างง่ายดาย ตัวอย่างคือระบบ URL (Uniform Resource Locator) ซึ่งกำหนดชื่อเว็บเพจ
  2. การสื่อสาร... ความสามารถในการทำงานสากลของอินเทอร์เน็ตและการใช้โปรโตคอล TCP / IP อย่างมีประสิทธิภาพในอินเทอร์เน็ตสำหรับระบบแบบกระจายส่วนใหญ่เป็นตัวอย่างของวิธีที่มีประสิทธิภาพที่สุดในการจัดการการสื่อสารระหว่างคอมพิวเตอร์ อย่างไรก็ตาม ในบางกรณีที่ต้องการประสิทธิภาพหรือความน่าเชื่อถือเป็นพิเศษ คุณสามารถใช้เครื่องมือพิเศษได้
  3. คุณภาพการบริการของระบบ ... พารามิเตอร์นี้สะท้อนถึงประสิทธิภาพ ความสมบูรณ์ และความน่าเชื่อถือ มีหลายปัจจัยที่ส่งผลต่อคุณภาพของบริการ: การกระจายกระบวนการ ทรัพยากร ฮาร์ดแวร์ และความสามารถในการปรับตัวของระบบ
  4. สถาปัตยกรรมซอฟต์แวร์ ... สถาปัตยกรรมซอฟต์แวร์อธิบายการกระจายฟังก์ชันของระบบระหว่างส่วนประกอบของระบบ ตลอดจนการกระจายส่วนประกอบเหล่านี้ระหว่างโปรเซสเซอร์ หากคุณต้องการรักษาบริการระบบคุณภาพสูง การเลือกสถาปัตยกรรมที่เหมาะสมเป็นสิ่งสำคัญ

ความท้าทายสำหรับผู้ออกแบบระบบแบบกระจายคือการออกแบบซอฟต์แวร์และฮาร์ดแวร์เพื่อให้มีคุณสมบัติที่จำเป็นทั้งหมดของระบบแบบกระจาย สิ่งนี้จำเป็นต้องรู้ข้อดีและข้อเสียของสถาปัตยกรรมระบบแบบกระจายต่างๆ สถาปัตยกรรมระบบแบบกระจายมีสามประเภท

  1. สถาปัตยกรรมไคลเอนต์ / เซิร์ฟเวอร์ ... ในรูปแบบนี้ ระบบถือได้ว่าเป็นชุดของบริการที่เซิร์ฟเวอร์มอบให้กับลูกค้า ในระบบดังกล่าว เซิร์ฟเวอร์และไคลเอ็นต์แตกต่างกันอย่างมาก
  2. สถาปัตยกรรมสามชั้น ... ในรูปแบบนี้ เซิร์ฟเวอร์ไม่ได้ให้บริการแก่ลูกค้าโดยตรง แต่ผ่านทางเซิร์ฟเวอร์ตรรกะทางธุรกิจ

มีการกล่าวกันมากกว่าหนึ่งครั้งเกี่ยวกับสองรุ่นแรก มาดูรายละเอียดเพิ่มเติมในรุ่นที่สามกันดีกว่า

  1. สถาปัตยกรรมวัตถุแบบกระจาย ... ในกรณีนี้ ไม่มีความแตกต่างระหว่างเซิร์ฟเวอร์และไคลเอนต์ และระบบสามารถถูกมองว่าเป็นชุดของอ็อบเจ็กต์ที่มีการโต้ตอบ ซึ่งตำแหน่งนั้นไม่สำคัญจริงๆ ไม่มีความแตกต่างระหว่างผู้ให้บริการและผู้ใช้

สถาปัตยกรรมนี้ใช้กันอย่างแพร่หลายในปัจจุบันและเรียกอีกอย่างว่า สถาปัตยกรรมบริการเว็บบริการเว็บเป็นแอปพลิเคชั่นที่เข้าถึงได้ทางอินเทอร์เน็ตและให้บริการบางอย่างซึ่งรูปแบบนั้นไม่ขึ้นอยู่กับผู้ให้บริการ (เนื่องจากใช้รูปแบบข้อมูลสากล - XML ​​​​) และแพลตฟอร์มการทำงาน ปัจจุบัน มีสามเทคโนโลยีที่แตกต่างกันที่สนับสนุนแนวคิดของระบบอ็อบเจ็กต์แบบกระจาย นี่คือเทคโนโลยี EJB, CORBA และ DCOM

ประการแรก คำสองสามคำเกี่ยวกับ XML โดยทั่วไป XML เป็นรูปแบบข้อมูลทั่วไปที่ใช้เพื่อให้บริการเว็บ บริการเว็บเป็นไปตามมาตรฐานและโปรโตคอลแบบเปิด: SOAP, UDDI และ WSDL

  1. สบู่ ( Simple Object Access Protocol ที่พัฒนาโดย W3C กำหนดรูปแบบสำหรับคำขอไปยังบริการบนเว็บ ข้อความระหว่างบริการเว็บและผู้ใช้ถูกจัดแพคเกจไว้ในซอง SOAP ที่เรียกว่า (บางครั้งเรียกว่าซองจดหมาย XML) ตัวข้อความสามารถประกอบด้วยคำขอเพื่อดำเนินการบางอย่างหรือการตอบสนอง - ผลของการกระทำนี้
  2. WSDL (ภาษาคำอธิบายบริการเว็บ)อินเทอร์เฟซบริการเว็บอธิบายไว้ในเอกสาร WSDL (และ WSDL เป็นชุดย่อยของ XML) ก่อนปรับใช้บริการ นักพัฒนาจะเขียนคำอธิบายในภาษา WSDL ระบุที่อยู่ของบริการเว็บ โปรโตคอลที่รองรับ รายการการดำเนินการที่อนุญาต และรูปแบบคำขอและการตอบสนอง
  3. UDDI (คำอธิบายสากล การค้นพบและบูรณาการ) -โปรโตคอลการค้นหาบริการเว็บอินเทอร์เน็ต ( http://www.uddi.org/). เป็นทะเบียนธุรกิจที่ผู้ให้บริการเว็บลงทะเบียนบริการและนักพัฒนาค้นหาบริการที่ต้องการรวมในแอปพลิเคชันของตน

จากการพูดคุยนี้ อาจดูเหมือนว่าบริการบนเว็บเป็นวิธีแก้ปัญหาที่ดีที่สุดและไม่มีใครโต้แย้ง และคำถามเดียวก็คือการเลือกเครื่องมือในการพัฒนา อย่างไรก็ตามมันไม่ใช่ มีทางเลือกอื่นนอกเหนือจากบริการเว็บ Semantic Web ซึ่งผู้สร้าง WWW Tim Berners-Lee พูดถึงเมื่อห้าปีที่แล้ว

หากเป้าหมายของบริการเว็บคือการอำนวยความสะดวกในการสื่อสารระหว่างแอปพลิเคชัน Semantic Web ได้รับการออกแบบมาเพื่อแก้ปัญหาที่ซับซ้อนมากขึ้น โดยใช้กลไกข้อมูลเมตาเพื่อเพิ่มประสิทธิภาพของค่าของข้อมูลที่สามารถพบได้บนเว็บ ซึ่งสามารถทำได้โดยละทิ้งแนวทางเชิงเอกสารไปในทางวัตถุแทน

บรรณานุกรม

  1. ซอมเมอร์วิลล์I. วิศวกรรมซอฟต์แวร์.
  2. Dranitsa A. Java กับ .NET - "คอมพิวเตอร์" # 516
  3. แหล่งข้อมูลทางอินเทอร์เน็ต