ფაილური სისტემის სტრუქტურა
Mac OS X მრავალმომხმარებლიანი სისტემაა. ეს ნიშნავს, რომ წვდომა სისტემის რესურსებზე მკაცრად პერსონალიზებულია. ყოველი მომხმარებლისათვის სისტემა ქმნის ანგარიშს, რომელშიც მითითებულია მისი სახელი (სრული, ან შემოკლებული) და პაროლი. შემოკლებული სახელი წარმოადგენს მომხმარებლის სარეგისტრაციო სახელს.
მუშაობის დაწყების წინ ყოველმა მომხმარებელმა უნდა გაიაროს სისტემაში შესვლის პროცედურა (login), ანუ უნდა მიუთითოს სახელი (Name) და პაროლი (Password). სისტემა შეადარებს შეტანილ ინფორმაციას მასთან არსებულ მონაცემებთან. თუ ისინი არ ემთხვევა, წვდომა კომპიუტერის რესურსებზე არ მოხდება.
სისტემურ პარამეტრებში შეგვიძლია ავირჩიოთ პერსონალური მონაცემების შეტანის საურველი ვარიანტი: ან მომხმარებლის სახელი შეგვყავს ხელით, ან ვირჩევთ სისტემაში დარეგისტრირებული მომხმარებლების სიიდან. სახელის ხელით შეტანისას შესაძლებელია როგორც სრული, ასევე შემოკლებული სახელის მითითება.
სიატემაში შესვლის მცდელობები შეზღუდული არ არის.
არსებობს მთავარი მომხმარებელი — სისტემის ადმინსტრატორი, რომელიც თვალყურს ადევნებს წესრიგს. მხოლოდ სისტემის ადმინისტრატორს და სხვა არავის სეუძლია შექმნას და წაშალოს მომხმარებლების ანგარიშები. ადმინისტრატორს შეუძლია დააწესოს ესა თუ ის შეზღუდვები სისტემის რესურსებზე წვდომაზე, თუმცა Mac OS X-ის იდეოლოგიას მინიმუმამდე აქვს დაყვანილი ასეთი ოპერაციების საჭიროება.
მრავალმომხმარებლიან სისტემაში წვდომა სისტემის სხვადასხვა რესურსებზე არაერთგვაროვანი ხდება. რესურსების ნაწილი მომხმარებლების დიდ ნაწილს სჭირდება, მაგალითად აპლიკაციები. წვდომა მათთან გახსნილი უნდა იყოს ყველასთვის. ზოგიერთი რესურსი კრიტიკულად მნიშვნელოვანია უშუალოდ სისტემის მუშაობისათვის, ამიტომ სასურველია მათთან წვდომის შეზღუდვა ჩვეულებრივი მომხმარებლებისათვის. ზიარი რესურსების გარდა, ყოველ მომხმარებელს სურს შეინახოს და გამოიყენოს ზოგიერთი რესურსი პირადად, რათა სხვა მომხმარებლებს არ ჰქონდეთ წვდომა მასზე, მაგალითად, ელფოსტის წერილებზე.
ამიტომ Mac OS X გაცილებით მკაცრად ეკიდება ფაილების განთავსებას ფაილურ სისტემაში. პრაქტიკულად ყოველ ფაილს აქვს წინასწარ გამოყოფილი ადგილი. სხვადასხვა ტიპისა და დანიშნულების ფაილებისათვის განკუთვნილია სხვადსხვა სტანდარტული ადგილები. რეკომენდებული არ არის ფაილების შენახვა რაგინდარა ადგილას და საჭიორების გარეშე მათი გადაადგილება და სახელის გადარქმევა. სისტემური ფაილების ადგილის შეცვლამ, ანდა სახელის გადარქმევამ შესაძლოა სისტემის სრული ან ნაწილობრივი დაზიანება გამოიწვიოს. Finder-ის მუშაობის ალგორითმი გათვლილია ინფორმაციის განთავსების გარკვეულ წესრიგზე.
დომენები
„უფლებათა სფეროების“ განაწილების და წესრიგსი დამყარების მიზნით Mac OS X-ში შემოტანილია ფაილური სისტემის დომენის, ან უბრალოდ დომენის მცნება.
დომენი (domain) — ფაილური სისტემის გარკვეული ადგილია, რომელსაც მკაფიოდ, წინასწარ განსაზღვრული სტრუქტურა გააჩნია, რაც აადვილებს დომენების ძებნას და მათთან მუშაობას. დომენები განსხვავდება შიგთავსით — კონკრეტული ფაილებით, რომლებიც გარკვეულ ადგილებში ინახება და მათთან წვდომის ხარისხით. სულ არსებობს ოთხი სახის დომენი: User, Local, Network, System.
User (მომხმარებელი). იმ მომხმარებლის დომენი, რომელიც ამჟამად არის შემოსული სისტემაში. ამ სტრუქტურის ზედა დონის საქაღალდეს მომხმარებლის საშინაო საქაღალდე ეწოდება. მომხმარებლის საშინაო საქაღალდე შეიძლება როგორც ჩატვირთვად დისკზე იყოს, ისევე ქსელის სხვა კომპიუტერშიც. მომხმარებელი თვითონ წყვეტს, რა და როგორ შეინახოს თავის დომენში.
Local (ლოკალური). პროგრამების, დოკუმენტებისა და სხვა რესურსების დომენი, რომლებიც არაკრიტიკულია სისტემის მუშაობისათვის, მაგრამ მათზე წვდომა ამ კომპიუტერის ყველა მომხმარებელს უნდა ჰქონდეს. სისტემის ადმინისტრატორს შეუძლია ამ დომენში ელემენტების დამატება ანდა მოდიფიცირება. დომენი ყოველთვის განთავსებულია ჩატვირთვად დისკზე.
Network (ქსელი). პროგრამების, დოკუმენტებისა და სხვა რესურსების დომენი, რომლებზეც წვდომა ლოკალური ქსელის ყველა მომხმარებელს უნდა ჰქონდეს. როგორც წესი, ამ დომენის რესურსები განთავსებულია ქსელის ერთ-ერთ სერვერზე და მათ მუშაობას ქსელის ადმინისტრატორი განსაზღვრავს.
System (სისტემა). სისტემური პროგრამული უზრუნველყოფის დომენი. ყოველთვის განთავსებულია ჩატვირთვად დისკზე. შეიცავს პროგრამებს, რომლებიც კრიკტიკულად მნიშვნელოვანია მთლიანად სისტემის მუშაობისათვის. მომხმარებელს არ შეუძლია ამ დომენის შიგთავსის დამატება, წაშლა ან ცვლილება. მხოლოდ მთავარ ადმინისტრატორს root-ს აქვს განსაკუთრებული უფლება ამ ქმედებებზე.
უნდა გვახსოვდეს, რომ თუ Mac OS მუშაობს მრავალმომხმარებლიან რეჟიმში, Users საქაღალდეში ავტომატურად იქმნება საშინაო საქაღალდე ყოველი მომხმარებლისათვის.
Mac OS X ძალიან მკაცრად ეკიდება ფაილების განთავსებას ფაილურ სტრუქტურაში. საქაღალდე Library — ფაილური დომენების ყველაზე თვალსაჩინო ნაწილია. სხვა საქაღალდეებისაგან განსხვავებით, Library არის ყველა დომენში. როგორც წესი, მასში განთასებულია დამატებითი რესურსები, რომლებსაც პროგრამები იყენებენ, მაგრამ კრიტიკული მნიშვნელობა არ გააჩნიათ, ასეთია შრიფტები და მოწყობილობების ფერთა პროფილები. პროგრამების კ���იტიკულად მნიშვნელოვანი რესურსები უშუალოდ პროგრამებში უნდა იყოს განთავსებული.
Library საქაღალდის სტრუქტურა ერთნაირია ყველა დომენისათვის, თუმცა მისი ყველა ელემენტი არ არის სავალდებულო.
ობიექტების პარამეტრები
ფაილური სისტემის ყოველი ობიექტი ხასიათდება მთელი რიგი პარამეტრებით. ამ პარამეტრების ნახვისა და ცვლილებისათვის განკუთვნილია სპეციალური პროგრამა — Inspector.
Inspector — Finder-ის ანალოგიური ბრძანების, Get Info, არსებითად გაფართოებული ვერსიაა. ინფორმაცია, რომელსაც Inspector წარმოაჩენს, კარგად სტრუქტურირებულია ჩამოშლადი მენიუების სახით. მონაცემთა ნაკრები, რომელიც Inspector-ში ჩანს, დამოკიდებულია ობიექტის ტიპზე. ძირითადი ტიპები არის: ტომი (volume), საქაღალდე (folder), პროგრამა (application), დოკუმენტი (document), ბმული (alias). ზოგიერთი პარამეტრი სავალდებულოა ყველა ტიპის ობიექტისათვის (მაგალითად, ობიექტის სახელი, მისი ტიპი, ზომა და ა.შ.), ხოლო ზოგიერთი მხოლოდ კონკრეტული ტიპის ობიექტებს ახასიათებს.
Mac OS -ის ფაილების სახელების გაფართოებები
კლასიკური Mac OS საშუალებას იძლევა ვიმუშავოთ დოკუმენტებთან, რომლებიც არა მხოლოდ მაკში შეიქმნა, არამედ Windows-შიც, ხოლო Mac OS X ასევე საშუალებას გვაძლევს UNIX-სისტემებში შემქნილ ფაილებთან მუშაობაზე. ასეთი ფაილები არ შეიცავენ სპეციალურ შიდა ატრიბუტებს, ხოლო ფაილის ტიპი განისაზღვრება ეგრეთ წოდებული ფაილის სახელის გაფართოებით.
გაფართოება — დამატებითი სიმბოლოების ნაკრებია, რომლებიც განთავსებულია ფაილის სახელის ბოლოში და გამოყოფილია წერილით.
ვინაიდან ძალიან ბევრი პროგრამა არსებობს და შესაბამისად ასევე ბევრი გაფართოება, Finder-მა ყოველთვის არ იცის, რომელი პროგრამაა საჭირო ამ კონკრეტულ დოკუმენტთან სამუშაოდ.
კლასიკური მაკის მართვის პანელი File Exchange ამ პრობლემას წყვეტს შმდეგნაირად: ნებისმიერი სახის დოკუმენტისათვის, ანდა ნებისმიერი სახის გაფართოებისათვის შესაძლებელია პროგრამის მითითება, რომელიც შემდგომში გახსნის ამ ტიპის ფაილს.
ფაილების სახელების გაფართოებების გამოყენებას ფაილის ტიპის მისათითებლად სერიოზული ნაკლი აქვს: თუ დოკუმენტის სახელი შეიცვალა გაფართოებასთან ერთად (ხანდახან ეს ხდება შემთხვევითაც), ინფორმაცია მისი ტიპის შესახებ იკარგება. ხანდახან ხერხდება დოკუმენტის საწყისი ტიპის გამოჩნობა მისი კონტექსტიდან გამომდინარე. მაგრამ საბოლოოდ ყოველთვის ვერ ხერხდება ფაილის ტიპის აღდგენა.
რასაკვირველია, ფაილის ტიპისა და პროგრამის აღწერისათვის type და creator სპეციალური შიდა ატრიბუტების გამოყენება იდეოლოგიურად უფრო სწორია და მოსახერხებელიც. მაგრამ სამწუხაროდ, ასეთი მიდგომა ეფლის გარდა სხვა კომპანიების მიერ არ გამოიყენება. ფაილების გაფართოების გამოყენება გაცილებით ცუდი გადაწყვეტილებაა, მაგრამ ძალიან ფართოდ გავრცელებული
Mac OS X თავიდანვე შემუშავდა როგორც სისტემა, რომელსაც ეფექტურად შეუძლია მუშაობა გეტეროგენულ სივრცეში. ამიტომაც Mac OS X-ის Finder თავიდანვე გამიზნული იყო ფაილების HFS და HFS+ შიდა ატრიბუტების მხარდასაჭერად. Apple დაბეჯითებით ურჩევს დეველოპერებს გამოიყენონ გაფართოებები როგორც ფაილის სავალდებულო ნაწილი. Macintosh-ების მომხმარებელთა უმრავლესობამ დიდი სიხარულით ვერ მიიღო ეს სიახლე. ამიტომ Mac OS X 10.1 ვერსიიდან დაწყებული, Apple-მა გადაწყვიტა კომპრომისზე წასულიყო — ყოველი ფაილის სტრუქტურაში დაემატა დამატებითი ბიტი, ეგრეთ წოდებული ფაილის გაფართოების დამალვის ალამი (File extension hidden flag). თუ ალამი ჩართულია, ფაილის გაფართოება არ გამოჩნდება და პირიქით. საერთო პრინციპი, რომელიც ჩაიდო ამ ალამთან მუშაობის ალგორითმში, მოკლედ შემდეგნაირად შეიძლება ჩამოვაყალიბოთ: „ხედავ იმას, რაც აკრიფე“ (what you see is what youtype), ანუ ფაილის სახელი, რომელიც Finder-ში ჩანს, შეესაბამება სახელს, რომელიც მინიჭებულია ფაილის შენახვის დიალოგურ სარკმელში, ანდა უშუალოდ Finder-ში ფაილის შექმნისას: თუ მომხმარებელმა ფაილს მიანიჭა სახელი გაფართოებით — ის მას ასევე დაინახავს, ხოლო თუ სახელი გაფართოების გარეშე შეიქმნა, შემდგომშიც ის მის გარეშე დარჩება. სხვა კომპიუტერიდან ფაილის მიღებისას გაფართოების დალამვის ალამი არ ყენდება, ანუ Finder მას სრულად აჩვენებს.
თუ მომხმარებელს მოუნდება ფაილის გაფართოების შეცვლა — სისტემა აუცილებლად გააფრთხილებს ამ ცვლილების შედეგებზე.
გამოყენებითი პროგრამების მხარდაჭერა
ახალ საოპერაციო სისტემაზე გადასვლა ნიშნავს არა მარტო გადასვლას ახალ პრინციპებზე, სტრუქტურაზე, სისტემის მოწყობაზე. ეს აგრეთვე არის რადიკალური ცვლილება გამოყენებითი პროგრამების შქმნის საკითხშიც. ერთი მხრივ — ეს ახალი შესაძლებლობებია, რომლებიც მოაქვს ახალ სისტემას, ხოლო მეორე მხრივ — უკვე არსებული პროგრამების უზარმაზარი ოდენობა, რომელიც მაკის წინა ვერსიისთვის დაიწერა თავის დროზე. ორი სისტემა — ძველი და ახალი — არსებობის ორი სივრცე, ორი სრულიად სხვადასხვანაირი სამყარო. ამიტომ, Mac OS X-ის სტრუქტურაში გათვალისწინებულია სპეციალური ლოგიკური დონე — სხვადასხვა სახის გამოყენებითი პროგრამების მხარდაჭერის ფენა.
Mac OS X მხარს უჭერს სამივე ტიპის გამოყენებითი პროგრამების მუშაობას და ქმნის შესაბამის სივრცეს ამ ტიპის პროგრამებისათვის:
- ძველი პროგრამებისათვის, რომლებიც დაწერილია Mac OS 8 და Mac OS 9-სათვის. ამ სივრცეს Classic ეწოდება;
- ძველი პროგრამებისათვის, რომლებიც გადაკეთდა Mac OS X-ში სამუშაოდ. ამ სივრცეს Carbon ეწოდება;
- პროგრამებისათვის, რომლებიც სპეციალურად Mac OS X-სთვის დაიწერა. ამ სივრცეს Cocoa ეწოდება.
შეიძლება ითქვას, რომ სწორედ Cocoa გარდაქმნის Mac OS X-ს მომავლის საოპერაციო სისტემად. Cocoa — დეველოპინგის წორედ ის სივრცეა, რომელიც ჯერ კიდევ NeXT-ისთვის შეიმუშავეს, განთქმული იყო კოდის რამდენიმე სტრიქონით ამოცანების გადაწყვეტით.
ბიბლიოთეკებს ამ თვისებას პროგრამირების საოცარი ენა Objective-C სძენს. არის კიდევ Cocoa და Java. რაიმე ამის მსგავსის დაწერა C++-ზე იქნებ და შესაძლებელია, მაგრამ ამას ძალიან ბევრი დრო დასჭირდებოდა და ისე ვერასდროს იმუშვებდა. და აქ საქმე სულაც არ არის იმაში, რომ Objective-C-ს აშკარა უპირატესობა გააჩნია, არამედ იმაში, რომ C++-სათვის არ არის დამახასიათებელი ის კონსტრუქციები და ექანიზმები, რომლებზეც არის აგებული Cocoa.
ამ კონსტრუქციებისა და მექანიზმების წყალობით, აგრეთვე Interface Builder (IB)-დან ინტეგრაციით, პროგრამების შექმნის სტრატეგია დიდად განსხვავდება ზოგადად მიღებული წესებისაგან. IB-ში დეველოპერი არა მარტო განათავსებს ინტერფეისის ელემენტებს, არამედ ამყარებს კავშირებს მათ შორის, ხშირად კოდის დაწერის გარეშეც.
ტრადიციულ სისტემებში კოდი, რომელიც უზრუნველყოფს ინტერფეისს, ართულებს პროგრამის მოდიფიკაციას. Cocoa-ში ინტერფეისის ცვლილებები ხშირად არ საჭიროებს საწყისი კოდის გადამუშავებას.
Cocoa-ში გაცილებით იშვიათად ხდება საჭირო საბიბლიოთეკო კლასების შტამომავლობითი გამოყენება: ამ უკანასკნელთა ქცევა შეიძლება ძალიან ფართო სპექტრში შეიცვალოს სხვა საშტატო მეთოდებით. კატეგორიების, Obj-C-ის ერთ-ერთი მექანიზმით ნებისმიერი კლასი, თუნდაც საკვანძო, შეიძლება გაფართოვდეს. ბიზნესის სკოლები გვასაწვლიან კიდევ ერთ მეთოდს — დელეგირებას, რომლის დროსაც ხელმძღვანელი პირი მოვალეოების ნაწილს ხელქვეითებს გადასცემს. Cocoa-ში ეს პროიცესი სრულყოფილაბამდეა მისული. ბიბლიოთეკების მრავალი კლასი დელეგატებს სთავაზობენ მეთოდების ნაკრებებს, რომელთა გდასხვაფრება შეუძლიათ ამ უკანასკნელთ. დელეგატი შეიძლება გახდეს ნებისმეირი ობიექტი. საჭირო დროს საბიბლიოთეკო კლასის ობიექტი თავიდან ცდილობს გამოიძახოს დელეგატი კლასის მეთოდები, ხოლო თუ საჭირო მეთოდი არ არსებობს, ან დელეგატი არ არის მიერთებული, იყენებს ჩადგმულ ვარიანტს.
Cocoa-ს ძალა ცხადზე ცხადია. მაგრამ ამ ბიბლიოეკების რეალური ძალა ჯერ კიდევ NeXT-იდან მოყოლებული — სხვა ტექნოლოგიების მარტივ წვდომაშია. NeXT-ის დროს ეს იყო Display PostScript და BSD. Mac OS X-ში სნადარტული, აუცილებლად არსებული ბიბლიოთეკების ოდენობა რამდენჯერმე მეტია.
გამოხატვის ხერხების ოდენობა ბევრია. მაგალითად, ერთი და იგივე ქმედება ფაილზე შეიძლება მოხდეს როგორც BSD, ასევე Carbon და Cocoa-ს საშუალებით. ამის გარდა, ასევე არსებობს Java და სხვა ენების სტანდარტული ბიბლიოთეკები.
Mac OS X მრავალფეროვანია, მაგრამ მასში არ არის არცერთი მნიშვნელოვანი Cocoa-პროგრამა, რომელიც არ იყენებს Carbon-ს ძალიან ხშირად Cocoa-პროგრამები იყენებენ UNIX-ის მსგავსი სისტემების ბიბლიოთეკებს იეყენებენ. Cocoa — ყველაზე ბუნებრივი გზა არის Mac OS X-ის სიმდიდრებთან წვდომაში.
Cocoa შემქნის და გაშვების გარემო — ეს მხოლოდ პირველია თანასწორთა შორის. იგივე დონზეა Carbon, Java SDK, Classic და BSD.
Mac OS X უზრუნველყოფს პრაქტიკულად ყველა ტიპის მონაცემთა კოპირებას და ჩასმას პროგრამებს შორის, რომლებიც სხვადასხვა სივრცეებში მუშაობენ.
მკცარად რომ ვთქვათ, Mac OS X ქმნის გაფართოების კიდევ ორ ტიპს:
Java-სთან სამუშაოდ
BSD-სთან სამუშაოდ.
გაგრძელება იქნება…