Dlaczego system plików Linux jest zaprojektowany jako pojedyncze drzewo katalogów?


91

Czy ktoś może wyjaśnić, dlaczego Linux jest zaprojektowany jako jedno drzewo katalogów?

Podczas gdy w systemie Windows możemy mieć wiele dysków takich jak C:\i D:\, w systemie Unix jest jeden katalog główny. Czy jest jakiś konkretny powód?


14
@terdon - Myślę, że pyta o posiadanie jednego katalogu głównego (/) vs. styl DOS (C: \ D: \).
jordanm

27
W Linuksie możesz (i zwykle masz) wiele napędów. W rzeczywistości, podstawowa zasada jest taka sama, C:a D:są punkty mocowania w systemie Windows, jak również. Odpowiednikiem systemu Windows /jest to My Computer, że wszystko jest zamontowane pod tym.
terdon

61
Wydaje mi się, że bardziej trafnym pytaniem byłoby „dlaczego system operacyjny NIE miałby jednego katalogu głównego”? (Odpowiedzią dla DOS / Windows byłby błąd projektu / brak planowania na przyszłość / niepotrzebne założenie)
JoelFan

21
Windows wybrał ten dziwny system ze względu na wcześniejszy MS-DOS, a MS-DOS podążył za wczesnym precedensem ustanowionym przez CP / M. MS-DOS był systemem opartym na napędzie dyskietek (A: i B: początkowo, czasami na przykład na jednym systemie napędowym, A: i B: były tym samym dyskiem, ale dwoma różnymi dyskami logicznymi do celów operacji wymiany / kopiowania) . Jak większość ludzi uszkodzonych przez komputery MS-DOS, OP uważa, że /w Linuksie jest to samo co C: w MSDOS / Windows, kiedy tak naprawdę nie jest to to samo.
Warren P,

25
Właściwie C:, D:a materiał jest po prostu zgodność z DOS i Win32; Windows NT ma wewnętrznie nieco UNIX-podobnego obiektu hierarchii były litery dysków (i ogólnie rzeczy Win32) to tylko symboliczne linki do „prawdziwych” obiektach ( c:\file.txtw rzeczywistości \??\c:\file.txt, ze \??\c:jest dowiązaniem do np \device\harddisk0\partition1). Patrz np. Tutaj
Matteo Italia,

Odpowiedzi:


192

Ponieważ system plików Unix wyprzedza Windows o wiele lat, można ponownie sformułować pytanie: „Dlaczego Windows używa osobnego oznaczenia dla każdego urządzenia?”.

Hierarchiczny system plików ma tę zaletę, że każdy plik lub katalog można znaleźć jako element podrzędny katalogu głównego. Jeśli musisz przenieść dane na nowe urządzenie lub urządzenie sieciowe, lokalizacja w systemie plików może pozostać taka sama, a aplikacja nie zobaczy różnicy.

Załóżmy, że masz system, w którym system operacyjny jest statyczny i istnieje aplikacja, która ma wysokie wymagania we / wy. Możesz zamontować / usr tylko do odczytu i umieścić / opt (jeśli aplikacja tam mieszka) na dyskach SSD. Hierarchia systemu plików nie zmienia się. W systemie Windows jest to o wiele trudniejsze, szczególnie w przypadku aplikacji, które domagają się życia pod C: \ Program Files \


27
I na to (retoryczne) pytanie ma odpowiedź: tradycja. Po prostu inna tradycja niż Unix. Windows pobiera to z DOS, który pobiera go z CP / M-80, który podążał za wspólnym wzorem wielu systemów operacyjnych minikomputerów i komputerów mainframe. Nazwy dysków właśnie zostały skrócone z DISK0:lub SY:do A:.
RBerteig,

6
@RBerteig - może tradycja, szczególnie w przypadku Windows, ale Rob Pike przedstawia dość przekonujący argument za schematami nazewnictwa w stylu uniksowym w The Hideous Name, pdos.csail.mit.edu/~rsc/pike85hideous.pdf
Bruce Ediger

13
Wydaje mi się, że od czasu Windows NT można zamontować urządzenie na danej wirtualnej ścieżce w systemie Windows, aby osiągnąć dokładnie to samo, co Unix, chociaż jest to rzadkie na komputerach domowych (nieco częściej na serwerach i wdrożeniach biznesowych). Możesz zdecydować, że chcesz to uznać za potwierdzenie Uniksowej Drogi (TM), jeśli chcesz.
JSB

8
@BruceEdiger Nie zamierzam argumentować, że DOS miał rację. Po prostu wskazując, że istnieje kontekst, dlaczego Windows jest taki, jaki jest, i że nie było to coś, co MS wyciągnęło z kapelusza.
RBerteig,

1
@BruceEdiger: Wow. Niezły papier. Jest to także jeden z niewielu przypadków, w których widziałem, że Pike nie ma wątpliwości co do czegoś. (Mianowicie, że system obsługi nazw ARPANET nie może się skalować. Obecnie nazywamy go DNS i skalował się całkiem dobrze. Podstawowe koncepcje absolutnej przestrzeni hierarycznej z autorytetem i delegacją pozostają całkowicie niezmienione). Trzeba przyznać, że wymarły sieci inne niż IP związane z pocztą.
Kevin Cathcart

87

Wynika to częściowo z powodów historycznych, a częściowo z tego powodu, że ma to większy sens.

Multics

Multics był pierwszym systemem operacyjnym, który wprowadził hierarchiczny system plików, jaki znamy dzisiaj, z katalogami, które mogą zawierać katalogi. Powołując się na „Ogólny cel systemu plików do dodatkowego przechowywania” RC Daley i PG Neumann:

Rozdział 2 artykułu przedstawia hierarchiczną strukturę plików, która pozwala na elastyczne korzystanie z systemu. Ta struktura zawiera wystarczające możliwości, aby zapewnić wszechstronność. (…)

Aby ułatwić zrozumienie, strukturę plików można traktować jako drzewo plików, z których niektóre są katalogami. Oznacza to, z jednym wyjątkiem, że każdy plik (np. Każdy katalog) znajduje się bezpośrednio wskazywany przez dokładnie jedną gałąź w dokładnie jednym katalogu. Wyjątkiem jest katalog główny lub katalog główny w katalogu głównym drzewa. Chociaż nie jest to wyraźnie wskazane w żadnym katalogu, katalog główny jest domyślnie wskazywany przez fikcyjną gałąź znaną systemowi plików. (…)

W dowolnym momencie uważa się, że użytkownik działa w jednym katalogu, zwanym jego katalogiem roboczym. Może uzyskać dostęp do pliku wskazanego przez pozycję w swoim katalogu roboczym, po prostu podając nazwę pozycji. Więcej niż jeden użytkownik może mieć jednocześnie ten sam katalog roboczy.

Podobnie jak w wielu innych aspektach, Multics szukało elastyczności. Użytkownicy mogą pracować w poddrzewie systemu plików i zignorować resztę, nadal korzystając z katalogów, aby uporządkować swoje pliki. Katalogi były również używane do kontroli dostępu - atrybut READ pozwalał użytkownikom na listę plików w katalogu, a atrybut EXECUTE pozwalał użytkownikom na dostęp do plików w tym katalogu (podobnie jak wiele innych funkcji, żył w Uniksie).

Multics przestrzegał także zasady posiadania pojedynczej puli pamięci. Artykuł nie porusza tego aspektu. Pojedyncza pula pamięci pasowała do ówczesnego sprzętu: nie było żadnych wymiennych urządzeń pamięci, a przynajmniej takich, na których użytkownicy by się przejmowali. Multics miał oddzielną pulę pamięci kopii zapasowych, ale była ona przezroczysta dla użytkowników.

Unix

Unix czerpał wiele inspiracji z Multics, ale dążył do uproszczenia, podczas gdy Multics do elastyczności.

Pojedynczy hierarchiczny system plików dobrze pasował do systemu Unix. Podobnie jak w przypadku Multics, pule pamięci zwykle nie były istotne dla użytkowników. Były jednak urządzenia wymienne i Unix udostępnił je użytkownikom za pomocą poleceń mounti umount(zarezerwowanych dla „superużytkownika”, tj. Administratora). W „Systemie podziału czasu UNIX” Dennis Ritchie i Ken Thompson wyjaśniają:

Chociaż katalog główny systemu plików jest zawsze przechowywany na tym samym urządzeniu, nie jest konieczne, aby cała hierarchia systemu plików znajdowała się na tym urządzeniu. Istnieje żądanie podłączenia systemu z dwoma argumentami: nazwa istniejącego zwykłego pliku i nazwa specjalnego pliku, którego powiązany wolumin pamięci (np. Pakiet dyskowy) powinien mieć strukturę niezależnego systemu plików zawierającego własną hierarchię katalogów . Efektem montowania jest spowodowanie, że odniesienia do dotychczasowego zwykłego pliku będą się odnosić do katalogu głównego systemu plików na wymiennym woluminie. W efekcie mount zamienia liść drzewa hierarchii (zwykły plik) na zupełnie nowe poddrzewo (hierarchia przechowywana na wymiennym woluminie). Po zamontowaniu praktycznie nie ma rozróżnienia między plikami na wymiennym woluminie a plikami w stałym systemie plików. Na przykład w naszej instalacji katalog główny znajduje się na małej partycji jednego z naszych dysków, podczas gdy drugi dysk, który zawiera pliki użytkownika, jest montowany według sekwencji inicjalizacji systemu. System plików montowany jest generowany przez zapis na odpowiednim pliku specjalnym. Dostępny jest program narzędziowy do tworzenia pustego systemu plików lub można po prostu skopiować istniejący system plików.

Hierarchiczny system plików ma również tę zaletę, że koncentruje złożoność zarządzania wieloma urządzeniami pamięci masowej w jądrze. Oznaczało to, że jądro było bardziej złożone, ale dzięki temu wszystkie aplikacje były prostsze. Ponieważ jądro musi dbać o urządzenia sprzętowe, ale większość aplikacji nie, jest to bardziej naturalny projekt.

Windows

Windows śledzi swoje pochodzenie z powrotem do dwóch linii: VMS , system operacyjny pierwotnie zaprojektowany dla minikomputera VAX oraz CP / M , system operacyjny zaprojektowany dla wczesnych mikrokomputerów Intel.

VMS miał rozproszony hierarchiczny system plików, Files-11 . W Files-11 pełna ścieżka do pliku zawiera nazwę węzła, oznaczenie konta w tym węźle, nazwę urządzenia, ścieżkę do drzewa katalogów, nazwę pliku, typ pliku i numer wersji. VMS miał potężną funkcję logicznej nazwy umożliwiającą definiowanie skrótów do określonych katalogów, więc użytkownicy rzadko musieliby dbać o „rzeczywistą” lokalizację katalogu.

CP / M został zaprojektowany dla komputerów z 64kB pamięci RAM i dyskietką, więc poszedł za prostotę. Nie było katalogów, ale odwołanie do pliku może zawierać wskazanie dysku ( A:lub B:).

Kiedy MS-DOS 2.0 wprowadził katalogi, zrobił to ze składnią kompatybilną z MS-DOS 1, który sam był zgodny z CP / M. Tak więc ścieżki zostały zrootowane na dysku o nazwie jednoliterowej. (Również znak ukośnika /został użyty w VMS i CP / M do uruchomienia opcji wiersza poleceń, więc inny znak musiał zostać użyty jako separator katalogu. Dlatego DOS i później Windows używają ukośnika odwrotnego, chociaż niektóre komponenty wewnętrzne również obsługują ukośnik ).

Windows zachował zgodność z DOS i podejściem VMS, więc zachowywał pojęcie liter dysku, nawet gdy stały się mniej istotne. Dzisiaj pod maską Windows używa ścieżek UNC ( pierwotnie opracowanych przez Microsoft i IBM dla OS / 2 , pokrewnych przodków). Chociaż jest to zarezerwowane dla zaawansowanych użytkowników (prawdopodobnie ze względu na wagę historii), system Windows pozwala na montowanie przez punkty ponownej analizy .


3
Chociaż nie jest to zachowanie domyślne, w systemach plików NTFS system Windows może również zamontować całą pamięć w jednym katalogu głównym: technet.microsoft.com/en-us/library/cc753321.aspx howtogeek.com/98195/… serverfault.com/questions / 24400 /…
gerlos

3
Wydaje się, że istotną częścią jest to, że MS-DOS 1.0 był oparty na dyskietce. W takim systemie (a) ważna była znajomość dysku fizycznego, na którym znajdowały się twoje pliki, oraz (b) A:i B:była przyzwoitą konwencją umożliwiającą rozróżnienie stacji dyskietek, jeśli posiadasz dwie z nich. Gdy dodano obsługę dysków twardych w MS-DOS 2.0, C:oznaczenie dysku pozwoliło na kompatybilność wsteczną, traktując HD jako jedną DUŻĄ dyskietkę.
user1024,

5
W rzeczywistości początkowo CP / M został zaprojektowany do pracy w 16 , a nie 64 KB pamięci RAM. Wielkość 64 KB prawdopodobnie pozwoli aplikacjom trochę odetchnąć; podczas gdy procesor poleceń (CCP) został nadpisany i w razie potrzeby załadowany ponownie, BIOS i BDOS były zawsze rezydentne w pamięci. Tak, stąd pochodzi BIOS - IBM nie wymyślił tego terminu! Patrz Wikipedia CP / M: Model sprzętowy i komponenty systemu operacyjnego . Pamiętaj, że 16 KB to tylko około trzy gęsto zapisane strony (70 linii × 80 znaków / linia × 3 strony = 16800 bajtów).
CVn

36

Nie ma obaw dotyczących bezpieczeństwa związanych z posiadaniem jednego drzewa katalogów.

Faceci, którzy zaprojektowali Unix, mieli spore doświadczenie z systemami operacyjnymi, które wymagały od użytkowników, aby wiedzieć, jakie urządzenie fizyczne zawiera dane zasoby. Ponieważ celem systemu operacyjnego jest stworzenie abstrakcyjnej maszyny na prawdziwym sprzęcie, pomyśleli, że o wiele łatwiej jest zrezygnować z adresowania zasobów według ich fizycznej lokalizacji i postanowili umieścić wszystko w jednym drzewie nazw.

To tylko jedna część geniuszu stojącego za projektem Uniksa .


28

Zauważ, że nazwy liter dysków z MS-DOS, które zachowują się we współczesnym systemie Windows, są tutaj czerwonym śledziem. Nazwy liter dysków nie są najlepszą reprezentacją struktury systemu plików, która ma wiele katalogów głównych. Są słomkowym wdrożeniem takiego systemu.

Prawidłowo zaimplementowany system plików, który obsługuje wiele katalogów głównych, umożliwia dowolne nazewnictwo woluminów, takich jak dvdrom:/path/to/file.avi. Takie jak system pozbyłby się śmiesznych problemów z interfejsem użytkownika, które nękają system Windows. Na przykład, jeśli podłączysz urządzenie takie jak kamera, interfejs użytkownika Eksploratora Windows sprawi, że uwierzysz, że istnieje urządzenie o nazwie Kamera (lub cokolwiek innego) i że masz ścieżkę podobną do tej Computer\Camera\DCIM\.... Jeśli jednak wytniesz i wkleisz tekstową wersję tej ścieżki w Eksploratorze, to tak naprawdę nie działa, ponieważ niektóre składniki nazwy ścieżki to fikcja interfejsu użytkownika, nieznana systemowi operacyjnemu. W prawidłowo wdrożonym systemie z wieloma źródłami byłoby dobrze: byłobycamera:\DCIM\...ścieżka rozpoznawana jednolicie na każdym poziomie w systemie. Co więcej, jeśli przeniesiesz stary dysk twardy ze starego komputera, nie utkniesz z jakąś nazwą litery dysku F:, ale raczej będziesz mógł nazwać go tak, jak chcesz old-disk:.

Tak więc, jeśli Unix miałby wiele katalogów głównych w strukturze systemu plików, byłoby to robione w taki sposób, a nie w MS-DOS i Windows z jednuliterowymi nazwami dysków. Innymi słowy, porównajmy tylko schemat Unixa z dobrym projektem z wieloma rootami.

Dlaczego więc Unix nie ma rozsądnej implementacji z wieloma rootami, na korzyść rozsądnej implementacji z jednym rootem? To chyba tylko dla uproszczenia. Punkty montowania zapewniają wszystkie funkcje dostępu do woluminów poprzez nazwy. Nie ma potrzeby rozszerzania przestrzeni nazw o dodatkową składnię prefiksu.

Z matematycznego punktu widzenia każdy rozłączny wykres drzewa („las”) może zostać dołączony przez dodanie węzła głównego i uczynienie z niego elementów rozłącznych.

Co więcej, jest bardziej elastyczny, że woluminy nie muszą znajdować się na poziomie głównym. Ponieważ nie ma specjalnej składni oznaczającej głośność (jest to tylko ścieżka), punkty montowania mogą znajdować się w dowolnym miejscu. Jeśli wprowadzą w trzech starych dysków na komputerze, można mieć je jako /old-disk/one, /old-disk/twoitd Można organizować dyski jednak chcesz, sposób organizowania plików i katalogów.

Można pisać aplikacje, które zależą od ścieżek, a ważność ścieżek można zachować podczas ponownej konfiguracji urządzeń pamięci masowej. Na przykład aplikacje mogą korzystać ze znanych ścieżek, takich jak /var/logi /var/lib. Od Ciebie zależy, czy /var/logi /var/libna tym samym woluminie dyskowym, czy na oddzielnym. Możesz migrować system do nowej topologii pamięci, zachowując ścieżki.

Punkty montowania są dobrym pomysłem, dlatego system Windows ma je od około 2000 roku.

Punkty montowania woluminów są odporne na zmiany systemowe, które występują, gdy urządzenia są dodawane lub usuwane z komputera. Microsoft Technet


6
Być może przypadkiem „dobry projekt z wieloma rootami ” przypomina bardzo stary system AmigaDOS , który dopuszczał dowolne nazwy woluminów, w tym woluminy „przypisane”, które odnosiły się do określonego katalogu w innym wolumenie. Możesz nawet (z odpowiednim oprogramowaniem ) mieć „wirtualne” woluminy, takie jak, powiedzmy, FTP:wolumin, który umożliwił ci dostęp do plików na dowolnym serwerze FTP ze ścieżką podobną do FTP:hostname/path/to/file.
Ilmari Karonen

3
To naprawdę nie jest dobra odpowiedź, ponieważ wydaje się bardzo subiektywna. To całkiem jawne bashowanie w Windowsie.
Rig

3
@Rig Chociaż może to być prawda, system Windows zasługuje na dokładną krytykę za to, że nadal ma te nazwy liter dysków, datowane na MS-DOS. Jest to system plików z wieloma rootami, który zna większość użytkowników, ale tak naprawdę nie możemy go używać do celów porównania z jednym rootem, ponieważ jest to przykład takiego systemu.
Kaz.

3
@Kaz Nadal uważam, że ta odpowiedź jest bardziej grzeczna. Windows różni system plików, ale nie czyni go złym, okropnym ani zbrodnią przeciwko ludzkości. Nie lubisz tego, jak masz prawo. Microsoft nawet nie wymyślił tego schematu, pożyczył go z popularnego systemu dnia, ale musi go zachować, aby zapewnić rozsądną konserwację za pomocą starszego kodu.
Rig

1
@Rig Sure; nie jest bardziej okropne niż, powiedzmy, zdobycie następnego obiadu za pomocą krzemiennego grotu. Flintowe groty były w rzeczywistości w czasach świetności . Ach, ale ups, nie możemy tak naprawdę powiedzieć o systemie DOS i sterować literami, czy możemy ... tyle analogii.
Kaz.

13

Zarówno * nix, jak i Windows montują dyski. W systemie Windows są one automatycznie montowane w punktach montowania, które domyślnie mają rosnącą kolejność alfabetyczną. Te wartości domyślne to:

  • A:i B:=> dyskietki
  • C: => pierwsza partycja pierwszego dysku twardego
  • D: => następna partycja lub następny dysk twardy lub napęd CD / DVD, jeśli nie ma innych partycji.

Każdy z tych punktów montowania jest katalogiem.

W * nix o punktach montowania decyduje użytkownik. Na przykład mam jedną partycję zamontowaną jako /, a drugą jako /home. Tak, /hometo osobny napęd, byłoby odpowiednikiem powiedzenia E:na Windows.

W obu przypadkach, Windows i * nix, punkty montowania są osobnymi katalogami. Jedyna różnica polega na tym, że w * nix te osobne katalogi są podkatalogami /, C:podczas gdy w Windows każdy punkt montowania jest montowany bezpośrednio pod /, My Computerpowiedzmy , pod .

Z punktu widzenia użytkownika główną zaletą jest to, że mocowania są całkowicie przezroczyste. Nie muszę wiedzieć, że katalog /homeznajduje się na osobnej partycji. Mogę po prostu użyć go jako normalnego katalogu. Zamiast tego, w DOS, musiałbym jawnie nazwać to nazwą punktu montowania, powiedzmyE:\home

Napędy zewnętrzne są montowane w prawie taki sam sposób w obu systemach. Powiedz D:dla Windows i /mnt/cdromLinux. Każdy z nich jest katalogiem, naprawdę nie widzę różnicy. Po włożeniu dysku CD-ROM do napędu w systemie Windows dysk jest montowany D:tak jak w systemie Linux.


3
Z ciekawości wiesz, co by się stało, gdyby ktoś chciał utworzyć 27 dysków w systemie Windows? Jak Windows nazwałby 27. dyskiem? : D
Joseph R.

2
Hahaha. Wygląda na to, że Windows jest zbyt nudny, aby to zrobić.
Joseph R.

3
Drobny nitpick: litery dysków w systemie Windows domyślnie są sortowane w kolejności rosnącej, ale mogą być i często są zmieniane ich nazwy.
RBerteig,

3
@terdon: po prostu zamontuje dysk w katalogu - dokładnie tak, jak w systemach operacyjnych POSIX.
Matteo Italia,

3
@JosephR: W pewnym momencie - nie jestem pewien, kiedy, ale prawdopodobnie NT - Windows zyskał możliwość montowania dysków w katalogach, podobnie jak Unix. Domyślnie nikt tak naprawdę tego nie robi (co mnie zaskakuje: przy częstotliwości ponownych instalacji nuke-and-bruków, pomyślałbym, że coś analogicznego do umieszczenia / home na osobnym tomie stałoby się teraz popularne). Jeśli jednak zabraknie liter / cyfr / symboli dysku, należy to zrobić, aby dodać więcej dysków do systemu.
Spooniest,

10

Zgadzam się z powyższymi odpowiedziami, zwłaszcza odpowiedzią Douga O'Neala, ale myślę, że wszyscy coś pomijają, podobnie jak wyraźne punkty montowania urządzeń, takie jak MS-DOS „C:” lub „A:”.

Rob Pike napisał The Hideous Name o składni nazw, ale Russ Cox sprowadził to :

Przestrzenie nazw ... są najpotężniejsze, gdy można dodać nową semantykę bez dodawania nowej składni.

Jedna przestrzeń nazw, w której urządzenia mogą być dowolnie montowane, pozwala na naprawdę elastyczne operacje. Regularnie używam /mnt/sdb1i /mnt/cdromtymczasowo umieszczam nieużywany dysk lub dysk CD w całym systemie plików. Często zdarza się, że katalogi domowe znajdują się na serwerze NFS, więc bez względu na to, na jakiej maszynie się logujesz, $HOMEwszędzie to samo .

Sprowadza się to do tego: posiadanie specjalnej składni dla specjalnych rzeczy nakłada określone ograniczenia na to, co możesz zrobić. Jeśli możesz zamontować tylko nieużywany dysk, dysk CD lub DVD lub sieciowy system plików / „share” na „E:” lub „W:” lub czymkolwiek, masz znacznie mniejszą elastyczność.


1
Tak naprawdę nie potrzebujesz do tego dowiązań symbolicznych. Możesz bezpośrednio zamontować partycję (lub pamięć sieciową lub cokolwiek) na dowolnej ścieżce, takiej jak / usr / local - chociaż zawsze mnie to denerwuje, gdy znajdę sieć, w której / usr / local wskazuje na połączenie sieciowe. Tak, istnieją i istnieje ku temu powód: / usr / local to jedno ze standardowych miejsc, w których administrator umieszcza rzeczy nie od dystrybutora systemu operacyjnego.
Christopher Creutzig

@Christopher Creutzig - uzgodniony, symboliczny link nie jest konieczny w moim przykładzie, chciałem tylko przedstawić inny przykład, w jaki sposób elastyczny schemat nazewnictwa może dla Ciebie działać. Być może nie jest to najlepszy przykład.
Bruce Ediger,

Przy okazji, spójrz na głupią sieć. proto://specifichost.domain.tld/topleveldir/middle/specificdoc.html.
Kaz

2
@Christopher Creutzig - Ustawiłem / usr / local jako dysk sieciowy w kilku miejscach. „lokalny” oznacza zatem lokalny w witrynie, a nie w komputerze.
doneal24,

3
@Kaz, myślę, że proto://biznes jest pragmatyczną koniecznością. Nie można oczekiwać, że każde oprogramowanie będzie wiedzieć o wszystkich dostępnych schematach URI. Dlatego pomocne może być określenie, kiedy kończy się identyfikator schematu, a reszta identyfikatora URI zaczyna się.
Adrian Ratnapala

5

To niemądre. System Windows ma również jeden punkt hierarchii. Ale jest ukryty i niestandardowy. Jak większość rzeczy Windows.

W tym przypadku jest to koncepcja „Mój komputer”. Jest to odpowiednik root (/) w Uniksie. Pamiętaj, że root to koncepcja, która istnieje w jądrze. lubisz to czy nie. Podobnie jak Windows traktuje „Mój komputer”. oczywiście możesz zamontować partycję na rootie w Uniksie i tak właśnie robi większość ludzi. I wiele rzeczy będzie patrzeć na określoną ścieżkę dla rzeczy (np. / Etc /), ale nie jesteś przez to ograniczony. Jak najbardziej, zamontuj dyski w / C: /. nie jest to zabronione w Unixie.

C: \ nie jest katalogiem głównym w systemie Windows, jest punktem podłączenia jednej partycji. Które MUSZĄ znajdować się na najwyższym poziomie „Mój komputer”. Będąc w Uniksie, możesz zamontować partycję pod dowolnym innym drzewem. Tak więc linux może mieć C: zamontowany, /podczas gdy D: zamontowany /mnt/d/... lub nawet zainstalowany, /ale jest to trudne i zależy od tego, jak zachowują się dwa systemy plików podczas montowania na już zamontowanej ścieżce.

Możesz uzyskać dokładnie to samo, co masz w przypadku systemu Windows, „zmuszając” się do przestrzegania tych samych ograniczeń, które narzucają ci okna.

/ (treat this as "My Computer")
/c/ (mount your first data partition here)
/d/ (mount your second data partition here)

Następnie musisz przekazać opcje montowania w opcjach rozruchu. ponieważ nie będziesz mieć / etc / ... ale to także symuluje ograniczenia, jakie narzuca Windows, ponieważ to robi.


4
Windows ma jedną hierarchię pod maską, a nawet ma punkty montowania, ale domyślnie ich nie używa.
Gilles

1
@Gilles nie jestem pewien, czy rozumiem. W jaki sposób dołączanie każdego sterownika do węzła głównego „Mój komputer” nie używa go domyślnie?
gcb

5
To tylko prezentacja GUI. Ścieżki plików nie używają My Computer.
Gilles

3
My Computerjest węzłem głównym hierarchii powłoki. zawiera dyski, jeśli mają literę dysku , ale także panel sterowania i dowolny podłączony system Windows Phone. Hierarchia powłoki używa ścieżek PIDL zamiast ścieżek.
MSalters

4
@ gcb: chodzi o to, że hierarchia powłoki nie jest bezpośrednio użyteczna w „normalnych” aplikacjach. Nie można wywoływać CreateFileprzekazywania „Mój komputer” lub innych folderów powłoki; jest to abstrakcja rozumiana tylko przez kod związany z powłoką, wszystkie wywołania jądra (a zatem 90% aplikacji, ponieważ zarządzanie plikami w większości języków jest realizowane za pomocą interfejsów API plików jądra) nic o tym nie wiedzą. Foldery powłoki są użyteczne tylko wtedy, gdy programy używają „standardowych okien dialogowych” (które nie rozumieją przestrzeni nazw powłoki) i tylko wtedy, gdy wybrane pliki są bezpośrednio mapowane na „prawdziwą” (= zrozumiałą dla jądra) ścieżkę.
Matteo Italia,

5

Powód, dla którego Windows ma litery dysku, prawdopodobnie sięga jeszcze dalej niż Microsoft i DOS. Przypisywanie liter do dysków wymiennych było powszechne w systemach IBM, więc Microsoft mógł po prostu działać zgodnie z instrukcjami IBM, kopiując CP / M. I początkowo DOS i tak nie miał katalogów.

Gdy MS-DOS działał na komputerach z jednym lub dwoma dyskami wymiennymi i bez stałych nośników, tak naprawdę nie potrzebowałeś systemu plików z katalogami. Na jednym, a może na dwóch 180-kilobajtowych dyskach nigdy nie było wystarczająco dużo plików, aby mieć problemy z ich organizacją.

https://en.wikipedia.org/wiki/Drive_letter_assignment


1
W najlepszym wypadku jest to niedokładne. CP / M wyprzedził dowolny DOS Microsoft / IBM-PC o kilka lat (uważam, że pierwotnym pomysłem IBM było użycie CP / M na ich „PC”, ponieważ był to dość dobrze ustalony de facto przemysłowy standard w tym czasie, pomimo fakt, że różne systemy CP / M mogą być niekompatybilne) i nie ma wątpliwości, że IBM-PC DOS był w dużej mierze oparty na 86-DOS, który z kolei był zasadniczo klonem CP / M kompatybilnym z kodem źródłowym .
CVn

4

W rzeczywistości Linux oparty jest na Uniksie (lub jest Uniksem, patrz dyskusja ), a Unix pochodzi ze środowiska mainframe, gdzie używanie wielu urządzeń było dość oczywiste. Montowanie urządzeń w obrębie jednego drzewa katalogów zapewnia maksymalną elastyczność i nie ogranicza liczby urządzeń, do których system operacyjny może uzyskać dostęp.

Z drugiej strony litery DOS dla napędów to dobry projekt na komputer z 1 lub 2 stacjami dyskietek i pojedynczym dyskiem. Duża dyskietka 5,25 'to zawsze A :, mała 3,5' to zawsze B :, a napęd dyskowy to zawsze C :. Zawsze wiesz, czy skopiujesz plik na dyskietkę lub gdzieś na dysk. Nie potrzebujesz żadnej elastyczności, jeśli nie możesz fizycznie podłączyć więcej niż 2 stacji dyskietek i 2 (lub 4) dysków twardych.

Projekt DOS był bardziej przyjazny dla użytkownika końcowego, podczas gdy projekt Uniksa jest przyjazny dla administratora. Teraz litery dysków są obciążeniem dla systemu Windows, użytkownicy bardziej polegają na automatycznym otwieraniu okna eksploratora z wymienną zawartością dysku niż znajomością jego litery ... Ubuntu robi to samo.


1

Właściwie to nie prawda. Windows używa innego schematu ścieżek (cóż, nie tego samego)

„Litery jednostek” to tylko coś, co łatwo zapamiętać, ścieżki, dyski i partycje.

Ścieżki ARC definiują ścieżkę do pliku w systemie Windows (ale są widoczne dla użytkownika tylko podczas rozruchu):

http://support.microsoft.com/kb/102873

https://serverfault.com/questions/5910/how-do-i-determine-the-arc-path-for-a-particular-drive-letter-in-windows

W systemie Windows NT nie ma związku między dyskami, partycjami i literami jednostek: Możesz „umieścić” cały wolumin w folderze (np .: c: \ myseconddisk może być całym dyskiem fizycznym!)


1
Ścieżki ARC służą wyłącznie do uruchamiania, w celu zapewnienia zgodności z niektórymi pamięciami ROM, gdy NT został przeniesiony do Alpha i MIPS. Podczas działania systemu używa ścieżek UNC.
ninjalj

0

Dwie rzeczy, na które chciałbym zwrócić uwagę -

  1. Dyski twarde w systemie Linux są tak naprawdę przypisane do liter / nazw, takich jak / dev / sdb1. Można je jednak zamontować w dowolnym miejscu, do którego można uzyskać dostęp ze struktury single / root
  2. Najczęstszym powodem, dla którego ludzie (w tym ja w przeszłości) mieli osobne dyski w systemie Windows, było posiadanie miejsca do przechowywania dokumentów, muzyki, programów itp., Aby gdy Windows nieuchronnie wymagał ponownej instalacji lub wymiany, czy to uaktualnienia, czy wirusa awaria systemu plików, nadal był dostęp do tych plików. Nie mam tego problemu w systemie Linux - system plików jest znacznie bardziej niezawodny, system operacyjny nie pęka, chyba że przez jakieś bezpośrednie działanie lub pomyłkę z mojej strony (och, przełomowe repozytorium, spróbujmy!), I aktualizacje są o DUŻO prostsze. I w rzadkim przypadku musiałem zainstalować ponownie, ponieważ całe oprogramowanie było dostępne za pośrednictwem repozytoriów lub ppa, które dodałem (i mogłem z łatwością skopiować mój katalog domowy z dysku na żywo),

2
W pierwszej kolejności łączysz dyski twarde i systemy plików. Jeśli podłączysz / dev / sdb1 w pewnym momencie systemu plików, możesz uzyskać dostęp do plików na dysku. Jeśli otworzysz / dev / sdb1 bezpośrednio, zobaczysz surowe bloki dysku. Zasadniczo niezbyt przydatne, szczególnie jeśli używasz zaszyfrowanych systemów plików.
doneal24,

Próbowałem powiązać to w sposób zrozumiały dla użytkowników systemu Windows. C: nie jest też dyskiem twardym w systemie Windows, ale wszyscy tak to
nazywają

1. Nadal możesz przechowywać swoje pliki bez liter. 2. W systemach POSIX dysk twardy może być podzielony na partycje jako całość bez tablicy partycji, a pendrive może mieć tablicę partycji. Nawet Haz zamazujemy FS w pliku zamiast teczki, którą Bóg wie tylko, kto wymyślił imię.
Behrooz,

0

Jeśli spojrzysz w przeszłość, zobaczysz również, że Unix zaczął się w czasie 8 ścieżkowych systemów taśm dla audio i 9 ścieżkowych systemów danych IBM (8 ścieżek / 8 bitów dla danych, jeden dla parzystości). Technicznie bardzo podobnie.

W tym czasie informacje o lokalizacji plików były przechowywane w częściach informacji na taśmie oraz w przód i wstecz zdefiniowane podczas odczytywania danych z taśmy (jak plik, z pozycją początkową i sygnaturą końcową); wyjaśnia również, dlaczego nie miałeś tylko jednego FAT na początku dysku - miałeś wiele, aby przyspieszyć wyszukiwanie. A jeśli miałeś wiele napędów, były one połączone w / dev i poprzez adres pliku przeniesionego między urządzeniami.

Wierzę, że możesz mieć pogląd, że zaczął się po prostu wcześniej i że decyzja za obszarem MS Dos (CP / M) i późniejszym Windows NT jest po prostu związana z literami dysków mainframe VM zamiast z pojedynczym punktem wejścia, ponieważ w tym czasie wyglądała bardziej współczesne, dzisiejsze ilości danych nie istniały i nie sądzili, że ostatecznie nie będziesz mieć wystarczającej liczby liter dysku lub że będzie zbyt zagracony.

Przyporządkowanie napędu 9-ścieżkowego i litery napędu

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.