MAC OS X-ის სტრუქტურა
საოპერაციო სისტემა Mac OS X — საკმაოდ რთული ორგანიზმია და ცალსახად იმის თქმა, თუ რას წარმოადგენს ის, ძნელია. მისი საერთო კონცეფციის ყველაზე წარმატებულ ახსნად ითვლება საოპერაციო სისტემის წამრმოდგენა მრავალდონიანი სტურქტურის სახით, სადაც ყოველი დონეს კონკრეტული დანიშულება გააჩნია და ამოცანათა თავისი ნაკრები.
Mac OS X შედგება რამდნეიმე ნაწილისაგან, რომლებიც ერთმანეთშია ჩადგმული. ყველაზე ზემოთ განთავსებულია სამომხმარებლო ინტერფეისი Aqua. მის ქვემოთ გამოყენებითი აპლიკაციების მხარდაჭერის შრე: Classic, Carbon, Cocoa, Java. კიევ უფრო ღრმად განთავსებულია გრაფიკისა და მულტიმედიის შრე: Quartz, OpenGL, QuickTime. და ბოლოს, ყველაზე ქვემოთ განთავსებულია სისტემის მთავარი ძრავი, ბირთვი Darwin.
ბირთვი Darwin
საოპერაციო სისტემა Mac OS X-ის საფუძველი ბირთვი Darwin გახლავთ. პროდუქტის ბაზარზე უფრო სწრაფად გამოსატანად და ხარისხის ასამაღლებლად კომპანია Apple-მა Darwin-ის შექმნისას ამ ბირთვის საწყისი კოდი გაასაჯაროვა ნებისმიერი მსურველისათვის. Darwin-ის მოდულები სრულიად ღია იყო (დ ასეტად რჩება) და ხელმისაწვდომი პროგრამისტებისათვის. შედეგად, Darwin-ის შექმნაზე ადამიანების დიდმა ჯგუფმა შეძლო მუშაობა — 100 ათას ადამიანზე მეტმა.
Darwin-ის ცენტრალური ნაწილი არის მიკრობირთვი Mach 3, რომელიც Mac OS X-ში გადმოვიდა NextStep/OpenStep-იდან. ის პასუხისმგებელია საოპერაციო სისტემის მოქმედების ყველაზე საბაზო შესაძლებლობებზე. ამ მიკრობირთვული არქიტექტურის უპირატესობა მონოლითური ბირთვის წინააღმდეგ არის იმაში, რომ ბირთვის ყველა საბაზო ფუნქცია სრულდება მცირე ზომის კომპონენტის სახით, რომელიც მუშაობს პრივილეგირებულ რეჟიმში, სისტემის დანარჩენი ფუნქციები გაფორმებულია მიერთებადი მოდულების სახით და მუშაობენ ჩვეულებრივ, სამომხმარებლო რეჟიმში. ამგვარად, მნიშვნელოვნად მატულობს საიმედოობა, შესაძლებელია საოპერაციო სისტემის საკვანძო კომპონენტების ადვილი მოდიფიკაცია და ა.შ.
ცოტა თუ გავუსწრებთ თხრობის თანმიმდევრობას, გეტყვით რომ 2001 წელს, ხვადასხვა ბირთვების (Rhapsody, Darwin) შემუშავების ხუთი წლის თავზე გამოვიდა Mac OS X 10.0 (Cheetah) — მიკრობირთვის Mach-ის ბაზაზე, რომელიც აღებული იყო NeXT OS-იდან და BSD-დან, ძველი, კლასიკური Mac OS Classic-ის ემულაციის სისტემით, რამდენიმე ახალი ტექნოლოგიით, რომლებიც მიმართული იყო იმისკენ, რომ Apple-ის ახალ საოპერაციო სისტემას დაეკმაყოფილებინა დროის მოთხოვნები. 2001 წელს გამოვიდა Mac OS X 10.1 (Puma), 2002 – Mac OS X 10.2 (Jaguar), 2003 – Mac OS X 10.3 (Panther), 2005 – Mac OS X 10.4 (Tiger), 2007 – Mac OS X 10.5 (Leopard), 2009 – Mac OS X 10.6 (Snow Leopard), 2011 – Mac OS X 10.7 (Lion), 2012 – Mac OS X 10.8 (Mountain Lion), 2013 – Mac OS X 10.9 (Mavericks), 2014 – Mac OS X 10.10 (Yosemite), 2015 – Mac OS X 10.11 (El Capitan) და ბოლოს, 2016 წელს გამოვიდა Mac OS X 10.12 (Sierra).
მაშ ასე, ყველაზე ქვედა დონეზე განთავსებულია ინტეგრირებული ბირთვი, რომელსაც Darwin ქვია. კომპიუტერული ტერმინი „ბირთვი“ ნიშნავს სისტემის მცირე ზომის, როგორც წესი მონოლითურ ნაწილს, რომლის დანიშნულებაა მინიმალური საბაზო ფუქნციების შესრულება საოპერაციოს სისტემის სხვა ძირითადი სერვისებისათვის. Mac OS X-ში ბირთვის მცნება არსებითად გაფართოებულია. ბირთვის ქვეშ მოიაზრება ყველა პროგრამული მოდული, რომლებიც ბირთვის სამისამართო სივრცეში სრულდება. Darwin აერთიანებს საკუთარ თავში რამდენიმე ტექნოლოგიას, მათგან ძირითადია:
მიკრობირთვი Mach 3.0;
საოპერაციო სისტემის სერვისები, BSD 4.4-Lite-ის ბაზაზე;
სწრაფი, არსებულ სტანდარტებზე დაფუძნებული ქსელური მოდულები;
შეტანა/გამოტანის სისტემა (I/O Kit);
სხვადსხვა ფაილური სისტემების მხარდაჭერა.
მიკრობირთვი Mach
მიკრობირთვის Mach (Carnegie-Mellon-ის უნივერისტეტში შემქნილი) წარმოადგენს Darwin-ის ბირთვის საფუძველს, ვინაიდან ასრულებს საოპერაციო სისტემის ყველა კრიტიკულად მნიშვნელოვან ფუნქციას. ის მართავს პროცესორის ჩატვირთვას, ქმნის განრიგებს და ყურადღებას აქცევს მათ შესრულებას, ანაწილებს მეხსიერებას და უზრუნველყოფს მის დაცვას, ქმნის სისტემური შეტყობინებების ცენტრალიზირებულ ინფრასტრუქტურას საოპერაციო სისტემის სხვა დონეებისათვის.
მეხსიერების დაცვა. Mach ზრუნავს იმაზე, რომ არცერთმა აპიკაციამ არ შეძლოს სხვა აპლიკაციის, ან სისტემის სამისამართო სივრცეში რაიმეს ჩაწერა. ამიტომ პროგრამის მუშაობის დარღევვა არ გამოიწვევს მთლიანი სისტემის კრახს: საკმარისია გავთიშოთ პროგრამა, რომელმაც გამოწვია დარღვევა და განვაგრძოთ მუშაობა;
უპირატესი მრავალამოცანიანობა (Preemption). თანამედროვე სისტემებში მრავალი ამოცანა იყოფს პროცესორის რესურსებს. Mach აკონტროლებს პროცესორის დატვირთვა, ადგენს განრიგს, აყენებს ამოცანების თანმიმდევრობას, რათა უზრუნველყოს პროცესორის მაქისმალური ეფექტურობა და მიაწოდოს ყველა ამოცანას საჭირო პროცესორული დრო;
ვირტუალური მეხსიერება. ყოველ ამოცანას Mac OS X-ში გამოეყოფა თავისი სამისამართო სივრცე 4 გბაიტამდე მოცულობით. მაგრამ ნებისმიერი ამოცანის რეალური შესრულება შესაძლებელია მხოლოდ ნამდვილ ფიზიკურ მეხსიერებაში — კომპიუტერის ოპერატიულ მეხსიერებაში. Mach ახორციელებს ამოცანებისათვის ფიზიკური მეხსიერების სივრცის გამოყოფას და ვირტუალური მისამართების ფიზკური მეხსიერების მისამართებად გარდაქმნას. როგორც წესი, პროგრამის, ან მონაცემების მხოლოდ ერთი ფრაგმენტი იტვირთება ვირტუალური მეხსიერებიდან ფიზიკურში. თუ საჭიროა სხვა ფრაგმენტის ჩატვირთვა, ის იტვირთება დისკური მატარებლიდან და უპირატესად გამოდევნის წინა ფარგმენტს. Mach აკონტროლებს ჩატვირთვას და მეხსიერების გათავისუფლებას, უზრუნველყოფს მრავალი ამოცანის ეფექტურ მუშაობას.
რეალური დროის რეჟიმი. პროცესებისათვის, რომლებიც საჭიეორებენ სწრაფ რეაქციას, Mach უზრუნველყოფს რესურსებთან წვდომას მინიმალურ დროში.
BSD-სისტემა
მიკრობირთვთან მჭიდროდ ინტეგრირებულია BSD-სისტემა, რომელიც Mac OS X-ში BSD 4.4-Lite (Berkeley Software Distribution)-ის ერთგვარად სახეცვლილი ვერსიაა. Darwin-ის BSD-სისტემა ახორციელებს სხვადასხვა ფაილური სისტემებისა და ქსელური ტექნოლოგიების მხარდაჭერას. ამის გარდა, BSD-სისტემა პასუხს აგებს:
უსაფრთოხების სისტემაზე, იდენტიფიკაციაზე და მომხმარებელთა უფლებებზე;
პროგრამებიდან გამოძახებების გარდაქმნაზე სისტემურ დონეზე;
პროცესორების BSD-მოდელზე;
BSD-სოკეტების რეალიზაციაზე;
ე.წ. პროცესების ძაფების რეალიზაციაზე (POSIX threads);
ბირთვის Application Program Interface (API)-ზე.
შეტანა-გამოტანის სისტემა
შეტანა-გამოტანის სისტემა (I/O Kit) აგებულია ობიექტზე-ორიენტირებულ მოდელზე და შესაბამის ბიბლიოთეკებზე. ის მხარს უჭერს მრავალ, სხვადასხვა ტიპის მოწყობილობას, აადვილებს დრაივერების დაწერას, არის მოდულური ტიპის და ექვემდებარება გაფართოებას. მისი მნიშვნელოვანი მახასიათებლებია:
ჭეშმარიტი Plug-and-Play რეჟიმი;
მოწყობილობების დინამიური მართვა (ცხელი მიერთება);
დრაივერების დინამიური ჩატვირთვა საჭიროების მიხედვით;
ენერგომოხმარების მართვა როგორც პორტატული, აგრეთვე სამაგიდე კომპიუტერებისათვის;
მრავალპროცესორული დამუშავება.
Mac OS X-ში მომხმარებლის დონეზე ქსელური და საკომუნკაციო საშუალებების პროგრამული საფუძველი არის OpenTransport ტექნოლოგია. OpenTransport მხარს უჭერს ფუქნციების დიდ ნაწილს, რომლებიც ჯერ კიდევ Mac OS 8 და 9 ვერსიებში იყო, თუმცა ზოგიერთი ფუნქცია შეიცვალა. ქსელში მუშაოდ Mac OS X-ში არის:
BSD 4.4-ის ТСР/IР პროტოკოლების სტეკი;
IP და AppleTalk-ის მხარდაჭერა;
რამდენიმე IP-მისამართის მხარდაჭერა ერთი ქსელური ინტერფეისის ფარგლებში (multihoming);
მარშრუტიზაცია;
ერთი და იგივე მონაცემების მრავალმისამართიანი გადაცემა რამდენიმე ადრესატთან — multicast;
AppleTalk-ის რეალიზაცია socket-ის ბაზაზე;
Mac OS Classic-ის მხარდაჭერა;
ქსელთან სამუშაო მოდულების ნაკრები, რომლებიც გადაწერილია Carbon-გაფართოებისათვის.
Mac OS X მხარს უჭერს შემდეგ ქსელურ გარემოს:
Ethernet-10/100Base-T;
Ethernet-1000Base-T;
Jumbo Frame;
თანმიმდევრული გადაცემა;
უსადენო გადაცემა.
Mac OS X მხარს უჭერს შემდეგ ქსელურ პროტოკოლებს:
TCP/IP, UDP/IP;
PPP;
PAP;
HTTP;
FTR;
DNS;
SLP;
DHCP и BOOTP;
LDAP;
NTP.
ახალი ქსელური ტექნოლოგიების დასამატებლად, ბირთვის სავალდებულო ხელახალი კომპილაციის გარშე, გათვალისწინებულია ბირთვის ქსელური გაფართოებების მექანიზმი — Network Kernel Extensions. ეს მექანიზმი საშუალებას იძლევა დავამატოთ არა მარტო ცალკეული ქსელური მოდულები, არამედ ახალი პროტოკოლების სრული ნაკრებებიც, რომლებიც დინამიურად იტვირთება ბირთვში, ანდა იტვირთება ბირთვიდან საჭიროების მიხედვით.
Mac OS X-ის კიდევ ერთი მიმზიდველი თვისება არის ის, რომ Apache ვებ-სერვერი შედის Mac OS X-ში, როგორც საოპერაციო სისტემის შემადგენელი ნაწილი. ამიტომ საკმაოდ ადვილია საკუთარი კომპიუტერიდან ვებ-სერვერის შექმნა.
სერვერის აქტივაციისათვის საჭიროა სისტემური პარამეტრებში გაზიარების ჩანართზე გადასვლა და ვებ-სერვერის ჩართვა ერთი ღილაკის გამოყენებით. მეტი არაფერი საჭირო არ არის.
MAC OS X-ის ფაილური სისტემები
Mac OS X-ს შეუძლია იმუშაოს სხვადასხვა ფაილურ სისტემებთან. ამისათვის გამოიყენება BSD-ს გაფართოებები და მექანიზმი, რომელსაც ჰქვია ვირტუალური ფაილური სისტემა (Virtual File System, VFS). სხვადასხვა ფაილური სისტემების მხარდაჭერა ითვალისწინებს ზოგიერთი ახალი ფუნქციას, რომლებიც არ იყო წინა ვერსიებში. კონკრეტულად:
წვდომის უფლება მოხდნად მატარებლებზე, რომელიც დაფუძნებულია უნიკალურ საიდენტიფიკაციო ნომერზე (ID), რომლებიც რეგისტრირდება სისტემაში ყველა მიერთებული მოწყობილობისათვის (USB და Firewire მოწყობილობებისათვის);
URL-ზე დაფუძნებული ტომების დამონტაჟება, რაც საშუალებას იძლევა დავამონტაჟოთ ტომები AppleShare- და Web-სერვერებზე;
ფაილების გრძელი სახელები (255 სიმბოლომდე, ან 755 ბაიტი, UTF-8-ის მიხედვით).
Mac OS X-ის მიერ მხარდაჭერილი მატარებლები
სამი სხვადასხვა გარემოს, რომლებშიც ეშვება და მუშაობს აპლიკაციები და აგრეთვე მრავალი სახის მატარებლების არსებობის გამო, Mac OS X-მა მხარი უნდა დაუჭიროს რამოდენიმე ფორმატს.
ფორმატები, რომლებსაც Mac OS X მხარს უჭერს:
• HFS+;
• HFS;
• UFS;
• UDF;
• ISO 9660.
ფაილური სისტემების მრავალი ფორმატი მაგნიტურ დისკებზე ქმნიან გარკვეულ სიძნელეებს დოკუმენტების გაცვლისას ტომებს შორის. მაგალითად, კლასიკური HFS სისტემა მხარს უჭერს კოდირების მხოლოდ ე.წ. MacRoman სისტემას ფაილებისა და საქაღალდეების სახელებში. ფაილური სისტემა HFS+ იყენებს Unicode 2.1 სიმბოლოების კანონიკურ ნაკრებს, UTF-16 ფორმატში, ანუ თანმიმდევრობების სახით. ფაილური სისტემა UFS ასევე მხარს უჭერს Unicode 2.1-ს, მაგრამ UFT-8 ფორმატში. ამიტომ, პრობლემების შემცირების მიზნით, დაბეჯითებით გირჩევთ არ ისარგებლოთ HFS ფაილური სისტემით Mac OS X-ში, მიუხედავად იმისა, რომ ფორმალურად ეს აკრძალული არ არის.
Mac OS X მხარს უჭერს რამდენიმე ქსელურ პროტოკოლს:
AFP-კლიენტი;
NFS-კლიენტი;
WebDAV.
Mac OS X მხარს უჭერს დისკური ქვოტების მექანიზმს. ეს ნიშნავს, რომ ყოველი ლოკალური, ან დაშორებული მომხმარებლისათვის სისტემის ადმინისტრატორს შეუძლია დააწესოს დისკური სივრცის ლიმიტი. ქვოტირება ვრცელდება პრაქტიკულად ყველა ჩამწერ მოწყობილობაზე, სადაც არის ფაილური სისტემა.
HFS და HFS+
HFS და HFS+ ფაილური სისტემების ფაილები ორი ლოგიკური ნაწილისგან შედგება — ორი „შიდა ფაილისაგან“, რომლებსაც ტოტები (forks) ქვია.
რესურსების ტოტი (resource fork) განკუთვნილია ე.წ. რესურსების შესანახად, ანუ ფანჯრების, მენიუების, ხატულების, შრიფტების, ბგერების, სხვადასხვა ცხრილებისა და სხვ. ასევე, რესურსებს განეკუთვნება პროგრამის შესრულებადი კოდი.
მონაცემთა ტოტი (data fork) განკუთვნილია დონამიურად შექმნადი მონაცემების შესანახად. მასში პროგრამებს შეუძლიათ ნებისმიერი რამ ჩაწერონ.
ფაილი-პროგრამა როგორც წესი რესურსებით ფრიად გაჯერებულია და მონაცემების ტოტი თითქმის ცარიელი აქვს. ფაილი-დოკუმენტი პირიქითაა: ძირიტადი ინფორმაცია მონაცემებში ინახება, ხოლო რესურსები მინიმალურია.
ფაილების სტრუქტურა რამოდენიმე ტოტით ზოგადად საკმაოდ მოსახერხებელია, მაგრამ ზოგიერთ შემთხვევაში პრობლემებს ქმნის. მათგან მთავარი არის ის, რომ მონაცმეების გადაცემისას არა-Macintosh ქსელებში რესურსების ტოტი ხშირად ვერ აღიქმება და არ იგზავნება. ან იგზავნება არასწორად. ეს კიდევ ფაილის დაზიანების ტოლფასია.
რათა ასე არ მოხდეს, საჭიროა გარკვეული ზომების მიღება: ჯერ იქმნება „ჩვეულებრივი“ ფაილი, რომელშიც Mac-ფაილის ორივე ტოტი განთავსდება სპეციალურ ფორმატში, BinBex. ასეთი ფაილი გადაიგზავნება კომპიუტერული ქსელით დანაკარგების გარეშე. ფაილის მიღებისას ის გაიხსნება. — „ჩვეულებრივი“ ფაილიდან მიიღება HFS, ან HFS+ ფაილი ორი ტოტით. ეს საკმაოდ პრობლემურია და მოუხერხებელი მომხმარებელტა დიდი ოდენობისათვის. ამიტომ Apple ამჟამად დეველოპერებს სთავაზობს არ გამოიყენონ HFS და HFS+ ფაილების ტოტები, არამედ შექმნან ცალკეული რესურსების ფაილები, სადაც ყველა საჭირო რესურსი განთავსეულია მხოლოდ მონაცემთა ტოტში.
რესურსებისა და მონაცემების ტოტების გარდა ყოველი ფაილი შეიცავს დამატებით თვისებებს, რომლებსაც Finder-ის ატრიბუტები ქვია. ატრიბუტები გამოიცნობა და მუშავდება Fainder-ის მიერ ამ ფაილის შესახებ ინფორმაციის გამოსახვისას, ანდა როცა ხდება ფაილის გახსნა, ან ბეჭდვა.
Mac OS X-ში შემცირებულია ატრიბუტების რაოდენობა, რომლებსაც ამუშვებს Finder. ეს ატრიბუტებია:
პაკეტის ბიტი (bundle bit);
უჩინარობის ბიტი (invisible bit);
ფაილის ტიპის და შემქმნელი ფაილის კოდი (type & creator);
ფაილის მორგებული ხატულა (custom icon).
ატრიბუტები, რომლებიც აღარ არის მხარდაჭერილი Finder-ის მიერ:
ხატულის ადგილი სამუშაო დაფაზე;
ფაილის შესახებ ინფორმაციის გამოსახვის ფორმა (view);
ჭდე (label).
პრინციპში, ყველაზე მნიშვნელოვანი და სპეციფიური ატრიბუტები არის ფაილის შემქმნელი (creator) და ფაილის (type) ტიპი. მათი საშუალებით Finder ახერხებს მიიღოს სწორი გადაწყვეყილება ფაილის გახსნისას.
ფაილ-დოკუმენტის გახსნისას უნდა გადაწყდეს საკამოდ რთული ამოცანა. თავიდან Finder ამოწმებს შემქმნელი პროგრამის კოდს. თუ ამ კომპიუტერში უკვე არის საჭირო პროგრამა, ის გაეშვება და ხსნის მოცემულ ფაილს.
თუ კომპიუტერში არ არის პროგრამა, რომელშიც შეიქმნა დოკუმენტი, მაშნ მოწმდება ფაილის ტიპის კოდი. თუ არის რამდნეიმე პროგრამა, რომლებსაც შუძლიათ ამ ტიპის ფაილებთან მუშაობა, ეშვება ერთ-ერთი მათგანი. მაგალითად, უბრალო ტექსტური ფაილის გახსნა შეუძლია ბევრ ტესქტურ რედაქტორს. გრაფიკულ ფაილებთან რამდენიმე პროგრამა მუშაობს და ა.შ.
თუ კომპიუტერში არა არის არცერთი ფაილი, რომელიც სისტემისთვის ცნობილია, როგორც ამ ტიპის ფაილთან მომუშავე, ამ შემთხვევაში საშუალება გეძლევათ ტქვენით აირჩიოთ საჭირო პროგრამა. თუ მომხმარებლის მიერ პროგრამამ გახსნა ფაილი, სისტემა დაიმახსოვრებს მას და შემდეგ ჯერზე დამოუკიდებლად გაუშვებს.
ფაილის ტიპის შესახებ ინფორმაციის შენახვას ფაილის შიგნით ერთი დიდი უპირატესობა აქვს: სახელის გადარქმევა ვერ შეცვლის მის ტიპს, ანუ ფაილის არსი არ იქნება დამოკიდებული მის სახელზე.
გაგრძელება იქნება…