Ogólna charakterystyka i budowa Windows 2000
Cele projektu Windows 2000
Windows 2000 jest ostatnim wcieleniem Windows NT, systemu stworzonego przez Microsoft w celu nawiązania bezpośredniej rywalizacji z OS/2, NetWare i Uniksem na rynkach serweru plików i serwerów małej aplikacji. Jeszcze w fazie beta Windows 2000 nosił nazwę Windows NT 5, ale Microsoft zmienił ją na Windows 2000.
W porównaniu z pierwszymi dniami Windows NT rynek sieciowych systemów operacyjnych uległ całkowitemu przeobrażeniu. OS/2 przestał się liczyć w tej rywalizacji, a NetWare firmy Novell traci znaczenie w bardzo szybkim tempie. Ale mimo zadziwiającego sukcesu Windows NT w walce z komercyjnymi rywalami, on też zaczyna tracić punkty na rynku usług sieciowych i to na rzecz najbardziej niezwykłego rywala: Linuksa. Zaprojektowany przez studenta system przekształcił się w rewolucję przeciw komercyjnemu posiadaniu oprogramowania i bardzo szybko stał się silnym konkurentem Windows NT niemal pod każdym względem.
Aby odnieść sukces w walce z silnymi rywalami jako sieciowy system operacyjny, Microsoft zaprojektował Windows 2000 tak, aby obsługiwał kilka ważnych technologii obliczeniowych. Podstawowe technologie to:
· Wieloprocesowość
· Wielowątkowość
· Ogromne aplikacje
· Niezależność od platformy
· Rozpowszechnione zabezpieczenia
· Kompatybilność wstecz
Wiele funkcji Windows 2000, np. zabezpieczenia dysku oraz łączność z siecią, jest w rzeczywistości funkcjami usług i programów obsługi, które pracują na powierzchni podstawowej architektury.
Wieloprocesowość
Wieloprocesowość dotyczy wykorzystywania więcej niż jednego mikroprocesora w pojedynczym komputerze tzn. wszystkie mikroprocesory korzystają z tej samej magistrali pamięciowej. Funkcjonalność ta pozwala wielu mikroprocesorom opracowywać jeden problem bez przeciążania komunikacji sieciowej. Jest to przydatne w przypadku zadań ograniczonych przez wydajność komputera lub gdy trzeba dostarczyć więcej mocy obliczeniowej mocno obciążonym serwerom aplikacji (np. serwerom WWW, albo bazodanowym). Windows 2000 implementuje wieloprocesowość symetryczną, co oznacza, że wszystkie procesy zostaną naładowane możliwie jak najrówniej.
Wielowątkowość
Wielowątkowość umożliwia jednoczesną pracę więcej niż jednego programu, a także pozwala pojedynczym programom (procesom) mieć więcej niż jeden jednoczesny wątek wykonania.
Duża przestrzeń adresowa
Duże aplikacje, które skutecznie wykorzystują ogromne ilości pamięci, wymagają „płaskiej” albo liniowej przestrzeni adresowej, o rozmiarze 32 bitów (lub 4 GB). Jednak Windows 2000 wykorzystuje górny bit do odseparowania trybu jądra od trybu użytkownika, tak więc w rzeczywistości dla procesów użytkownika dostępne jest tylko 31 bitów (2GB). Windows 2000 jest w tej chwili opracowywany z myślą o nowej serii procesorów Intela, które wykorzystują 64-bitowe długości słowa. Prawdziwa 64-bitowa wersja Windows 2000 pozwoli aplikacją ponownie traktować dużą pamięć jako przestrzeń płaskiej pamięci zamiast dzielenia jej na segmenty 4GB. Nowy interfejs API systemu Windows, Win64, prawdopodobnie szybko zastąpi model oparty na przełączeniu segmentów w przypadku ogromnych aplikacji, dając gwarancję, że przełączanie segmentów nie zdobędzie już powszechnej akceptacji przed wyjściem z użycia.
Niezależność od platformy
Niezależność od platformy pozwala Microsoftowi traktować wszystkie nowe, powstające jak „grzyby po deszczu” maszyny jako potencjalne platformy dla Windows 2000 i nie pozostawać w zależności od żadnego określonego producenta sprzętu. Windows 2000 pracuje na abstrakcyjnej maszynie wirtualnej (warstwa abstrakcji sprzętowej, inaczej HAL), która przekształca próby uzyskania dostępu z Windows 2000 tak, że są one rozumiane przez urządzenia. Funkcja ta pozwala Microsoftowi na szybkie dostosowanie Windows 2000 do dowolnej architektury maszyny przez tworzenie niepowtarzalnej warstwy HAL dla nowej maszyny docelowej, a następnie rekompilowanie Windows 2000 z uwzględnieniem mikroprocesora wykorzystywanego przez tą maszynę. W swoim czasie Microsoft obsługiwał cztery architektury mikroprocesorów dla jądra Windows NT, na którym opiera się Windows 2000:
· MIPS – NT był początkowo opracowany na komputerach MIPS, ale od tego czasu zaprzestano dalszego rozwoju MIPS.
· 32-bitowa architektura Intela – do architektury tej należą przestarzałe procesory 386, 486, Pentium i Pentium Pro.
· Digital Alpha – teraz, kiedy procesor należy do firmy Compaq, jego przyszłość jest niepewna. Hitachi, drugie źródło procesorów Alpha, kontynuował ich rozwój w kierunku początkowo zaproponowanym przez Digital.
· Power PC firmy IBM – dalszych prac nad PowerPC zaprzestano, ponieważ IBM zakończył produkcję stacji roboczych opartych na tym procesorze.
Microsoft zrezygnował z obsługi procesorów MIPS i PowerPC dla Windows 2000 ze względu na brak zapotrzebowania.
Rozpowszechnione zabezpieczenia
Rozpowszechnione zabezpieczenia oznaczają środowisko, w którym jedna aplikacja może mieć gwarancję, że dane, które zawiera, nie zostaną zmodyfikowane przez inną aplikację na tej samej maszynie. Aplikacje pracujące na tym samym urządzeniu nie mogą naruszyć przestrzeni pamięciowej innej aplikacji, co zapobiega zarówno przypadkowym awarią, jak i złośliwemu podkradaniu danych. Mimo wielu doniesień o licznych i skomplikowanych błędach w implementacji zabezpieczeń Windows 2000 sama architektura pozostaje bezpieczna, a Windows 2000 jest nie mniej bezpieczny niż jakikolwiek inny, przeznaczony dla masowego odbiorcy, zaawansowany technicznie system operacyjny. Niestety sprzedawcy (a wśród nich także Microsoft) często popełniają błędy w implementacjach zabezpieczeń usług i aplikacji pracujących na powierzchni bezpiecznego jądra Windows 2000. Wynikiem tego są luki, pozwalające na włamania do maszyny. Architekturze Windows 2000 trzeba przyznać, że zapobiega wielu nieszczęściom, które mogłyby z tego wyniknąć.
Kompatybilność wstecz
Windows 2000 obsługuje kompatybilność wstecz z istniejącymi aplikacjami i standardami. Obsługuje również wiele podsystemów aplikacji, które dostarczają kompatybilność wstecz z wieloma wcześniejszymi systemami Microsoftu i innych producentów.
Architektura Windows 2000
Windows 2000 jest systemem operacyjnym obsługującym wielozadaniowość z wywłaszczeniem, co oznacza, że za jednym razem może wykonywać więcej niż jedną czynność – niezależnie, czy poszczególne procesy zostały napisane z myślą o wzajemnej współpracy.
Rozplanowanie tych różnych procesów leży w gestii jądra, podobnie jak alokacja pamięci i komunikacja z urządzeniami wejścia – wyjścia. Jądro zarządza trzema podstawowymi składnikami komputera: pamięciom, taktowaniem procesora i urządzeniami wejścia – wyjścia.
Fizyczną implementację (jeśli można tak to nazwać) implementację Windows 2000 stanowi seria plików systemowych, które są ładowane podczas procesu uruchamiania. Przykładowo podstawowe usługi jądra zostały zawarte w pliku ntoskrnl.exe, a warstwa abstrakcji sprzętowej danej maszyny znajduje się w pliku o nazwie hal.dll. Każda określona usługa systemu albo program obsługi ma własny plik, powiązany z tą warstwą. Gdy usługa pozostaje w zależności od innej usługi (przykładem niech będzie zależność systemu plików CD cdfs.sys od programu obsługi urządzenia o nazwie cdrom.sys), moduł zależny nie będzie mógł wystartować, jeśli zależny program obsługi nie został uruchomiony odpowiednio wcześniej. Zależność między programami obsługi zostały wykazane w kluczach rejestru, odpowiedzialnych za sterowanie usługami.
Jądro i wszystkie programy obsługi korzystają z tej samej, pojedynczej przestrzeni adresowej pamięci – są chronione przed innymi procesami, ale nie od siebie nawzajem. Ta przestrzeń pamięci procesowej jest nazywana trybem jądra (ang. Kernel mode). Większa część jądra jest niestronicowana, co oznacza, że jest zawsze dostępna w pamięci RAM i nigdy nie zostaje zestronicowana na dysk. Większa część jądra nie może zostać zestronicowana, ponieważ zawiera kod sterujący stronicowaniem i programami obsługi dysku. Jest to zarazem optymalizacja wydajności, ponieważ jądro jest często używane. Programy obsługi oraz usługi obszaru wykonawczego są stronicowane (chyba, że zostaną skonfigurowane w inny sposób), ponieważ korzysta się z nich rzadziej i nie mają decydującego znaczenia dla funkcji stronicowania.
Jądro zostało podzielone na różne składniki:
· Menadżer procesów na żądanie tworzy procesy i wątki. Proces to po prostu niepowtarzalna, wirtualna przestrzeń adresowa., składająca się z jednego lub większej ilości wątków. Wątki są niepowtarzalnymi łańcuchami procesu wykonawczego w obrębie procesu reprezentującego podstawowy, rozplanowany obiekt w Windows 2000. Wątki mają własny stos jądra, stos użytkownika i zmienne środowiskowe. Stos jest obszarem roboczym dostępnym dla wątków, które mogą z niego korzystać w celu szybkiego składowania i pobierania danych podczas wykonywania obliczeń.
· Programy obsługi przerwań działają po wywołaniu przez zdarzenia sprzętowe, takie jak błędy strony albo wywołania urządzeń wejścia – wyjścia. Jądro ustanawia program obsługi przerwań dla każdego możliwego zgłoszenia przerwania. Niektóre przerwania jądro obsługuje samodzielnie, programy obsługi pracują w obrębie przestrzeni jądra obsługują pozostałe.
· Warstwa abstrakcji sprzętowej sprawia, że wszystkie komputery wyglądają tak samo dla Windows 2000 niezależnie, czy opierają się na standardowej, przemysłowej architektórze PC, platformie Advanced RISC Compiuting (ARC) czy innej maszynie. Warstwę HAL dla maszyn innych niż standardowe komputery PC dostarcza producent takich urządzeń.
· Menadżer obiektów dostarcza przestrzeń nazw dla rozmaitych komponentów Windows 2000, takich jak pliki, porty, procesy i wątki – w zasadzie wszystko, czym mógłby interesować się system. Procesy mogą korzystać z Menadżera obiektów, aby dowoływać się do innych obiektów w systemie.
· Menadżer pamięci wirtualnej steruje stronicowaniem pamięci na dysk. Poza typowymi funkcjami obliczeniowymi wszystkie współczesne mikroprocesory zawierają urządzenia zwane Memory Management Unit (MMU), które ma decydujące znaczenie dla systemu operacyjnego obsługującego wielozadaniowość z wywłaszczeniami, a do takich należy zaliczyć Windows 2000.
· Menadżer komunikacji międzyprocesowych dostarcza lokalne wywołanie procedur, polegające na przekazywaniu komunikatów między procesami. Ponieważ procesy nie mogą naruszyć przestrzeni adresowej innych procesów, przekazują informacje, korzystając z tego mechanizmu. Ułatwienie LPC działa na zasadzie interfejsu między trybem jądra, a trybem użytkownika. Działając w zgodzie z usługą zdalnego wywołania procedur, dostarcza abstrakcję niezbędną do połączenia z procesami na zdolnych komputerach w sieci.
· Menadżer wejścia i wyjścia reprezentuje jednolity interfejs, do którego mogą przyłączyć się wszystkie programy obsługi. Menadżer zajmuje się przesyłaniem danych i komunikatów między programami obsługi urządzeń, podobnie, jak mechanizm LPC zajmuje się komunikacją międzyprocesową. Programy obsługi mogą pozostawać w zależności od usług innych programów obsługi przez warstwy, zwane zależnościami. Przykładowo podstawowe programy obsługi, które komunikują się bezpośrednio ze sprzętem, są nazywane programami obsługi urządzeń. Programy obsługi wyższego poziomu np. systemu plików NTFS, w kwestii składowania danych pozostają w zależności od programów obsługi dysku twardego. To uwarstwienie umożliwia wyodrębnienie określonych celów dla programów obsługi. Przykładowo, różne nośniki pamięciowe mogą wykorzystywać ten sam system plików, a wiele systemów pliku może korzystać z tego samego nośnika pamięciowego.
· Menadżer pamięci podręcznej optymalizuj dostęp do plików, wykorzystując RAM do przechowywania często używanych plików. Menadżer pamięci podręcznej działa podobnie jak program obsługi, zajmujący warstwę między programem obsługi systemu plików a procesami na poziomie użytkownika. Gdy użytkownik żąda pliku, który znajduje się w pamięci podręcznej, Menadżer pamięci podręczne zwraca go, zamiast próbować uzyskać dostęp do wolniejszego nośnika pamięciowego. Menadżer pamięci podręcznej blisko współpracuje z Menadżerem pamięci wirtualnej, wykorzystując nie zajmowaną w inny sposób pamięć RAM. Gdy menadżer pamięci wirtualnej potrzebuje pamięci, zwalnia pamięć podręczną przed zestronicowaniem aktywnego procesu na dysk.
· Programy obsługi dostarczają interfejsu urządzeniom wejścia wyjścia przez warstwowy system zależności od bardzo podstawowych programów obsługi.
· Security Refrence Monitor wzmacnia zabezpieczenia, ograniczając dostęp jednych obiektów do innych. Gdy jeden obiekt żąda dostępu do innego, ten pierwszy dostarcza identyfikator zabezpieczeń, który jest sprawdzany przez Security Refrence Monitor pod względem zgodności z kontrolną listą dostępu odnośnego obiektu. Jeśli identyfikator zabezpieczeń danego obiektu nie znajduje się na kontrolnej liście obiektu, d o którego się odwołuje, dostęp jest blokowany. Zabezpieczenia systemu użytkownika w całym systemie Windows 2000 są implementowane za pomocą tego mechanizmu.
· Menadżer Plug and Play steruje programami obsługi urządzeń Plug and Play, wysyłając im polecenia startowania I zatrzymywania, konieczne do obsługi sprzętu wymienianego bez przerywania pracy komputera oraz do wykrywania I instalacji urządzeń.
· Menadżer zasilania działa jako centralny punk sterowania zdarzeniami i komunikatami związanymi z zasilaniem. Jest odpowiedzialny za monitorowanie stanu baterii, za startowanie, zatrzymywanie i pauzowanie zasobów sprzętowych w celu oszczędzenia zasilania, a także za sterowanie hibernacją oraz rezerwowymi funkcjami systemu operacyjnego.
· Interfejs urządzeń graficznych dostarcza interfejsu, przez który grafika jest przedstawiona na ekranie. Dzięki temu składnik Menadżer okien dostarcza obszary wyższego poziomu oparte na zawartości (okna). Przed pojawieniem się Windows NT składnik ten istniał poza jądrem. Został inkorporowany do Windows 2000, aby zmniejszyć obciążenie procesora i poprawić graficzną wydajność systemu operacyjnego.
Wcielenie Windows 2000
Produkt Dostępna pamięć Procesory Obsługa klastrów
Terminal Współdzielona Współdzielone Nie dotyczy
Professional 4 GB 2 Nie dotyczy
Server 4 GB 4 Nie dotyczy
Advenced Server 8 GB 8 2-węzłowa
Datacenter Server 64 GB 32 4-węzłowa
Microsoft oferuje pięć wersji Windows 2000: Windows 2000 Terminal, Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server I Windows 2000 Datacenter Server.
Opcje produktu Microsoft
Windows 2000 Terminal
Windows 2000 Terminal jest środowiskiem klienckim udostępnianym przez Usługi terminalowe Windows 2000 Server. Użytkownikom cienkich klientów oraz klientowi Microsoft Terminal Services oferuje usługi podobne do Windows 2000 Professional.
Windows 2000 Professional
Windows 2000 Professional jest pulpitowym systemem operacyjnym przeznaczonym dla przedsiębiorstw i będzie podstawą następnej generacji domowych systemów operacyjnych, gdy Microsoft zatrzyma opartą na MS – DOS serię Win32 systemów operacyjnych wywodzących się z Windows 95.
Do najważniejszych usług Windows 2000 Professional należy zaliczyć:
· Współdzielenie plików i drukarek, jako fundament sieciowych systemów operacyjnych, pozwala serwerowi funkcjonować na zasadzie ogromnego, współdzielonego dysku twardego, dzięki czemu wiele komputerów – klientów ma dostęp do dużej ilości wspólnej przestrzeni pamięciowej. Użytkownicy mogą współdzielić pliki w obrębie całej organizacji i dysponują platformą dla podstawowych aplikacji, przeznaczonych dla wielu użytkowników. Współdzielenie drukarek przekazuje dokumenty od kilku klientów dla serwera, który ustawia je w kolejce i drukuje pojedynczo po kolei.
· NetMeeting Desktop Sharing pozwala administratorom IT i szkoleniowcom łączyć się z pulpitami użytkowników Windows 2000 Professional i zdalnie nimi sterować, aby rozwiązywać problemy i udzielać wskazówek dotyczących korzystania z oprogramowania. Gdy maszyna jest kontrolowana rozpoznawane jest tylko wejście kontrolującego, a nie wejście obu użytkowników, na co pozwala np. narzędzie Virtual Network Compiuting (VNC). Na dodatek usługa nie pozwala użytkownikowi na „przesyłanie” kontroli nad własnym pulpitem administratorowi. Skutkiem tego niezwykle ciężko jest administrować komputerem znajdującym się wewnątrz sieci przekształcającej adresy, próbując uzyskać dostęp do niego z zewnątrz. Z drugiej strony, usługa jest prawie identyczna z VNC pod względem wydajności i cech. NetMeeting pracuje, wykorzystując protokół telekonferencji wideo H.323, którego nie jest w stanie przekształcić wiele ścian ogniowych. Do zalet usługi należy możliwość przesyłania głosu przez sieć, wykorzystanie aktywnych tablic i inne metody współpracy w czasie rzeczywistym.
· Instalator systemu Windows udostępnia znormalizowany do opisywania instalacji aplikacji. Normalizując format opisu instalacji (plik pakietu instalacyjnego .msi), Microsoft przygotował fundamenty dla zdalnej instalacji i zmiany kontroli. Niestety, Niestety Office 2000 jest obecnie jedynym zestawem aplikacji obsługującym Instalatora systemu Windows. Dopóki wszystkie instalowane aplikacje nie zaczną korzystać z pliku pakietu instalacyjnego .msi, dopóty trzeba będzie tworzyć własne pakiety .msi lub stosować inne metody, aby wykonać zdalną instalację. Dopóki większość twórców aplikacji nie zacznie obsługiwać Instalatora systemu Windows, nie będzie on szczególnie przydatny jako pomoc dla administratora. Windows 2000 towarzyszy narzędzie do tworzenia pakietów .msi o nazwie WinInstall. Działanie programu polega na zapisywaniu migawki „przed” systemu plików i Rejestru danego komputera i porównywaniu jej migawką „po”, wykonaną po zainstalowaniu aplikacji. Program następnie tworzy pakiet instalacyjny, kopiując te pliki i klucze Rejestru, którymi różnią się obie migawki.
· Plug and Play jest zestawem programów obsługi urządzeń, pozwalającym systemowi operacyjnemu zarządzać sprzętem komputerowym, rekonfigurować alokację zasobów sprzętowych i zarządzać zasilaniem. W połączeniu z programami obsługi urządzeń świadomych zarządzania zasilaniem pozwala to na dodawanie i usuwaniu wielu urządzeń peryferyjnych bez wyłączania komputera.
· Udostępnianie połączenia internetowego jest uproszczoną wersją usługi translacji adresów sieciowych, składnika usług Routowanie i dostęp zdalny systemu Windows 2000 Server. Udostępnianie połączenia internetowego oferuje bardzo prosty interfejs, umożliwiający niezaznajomionym z techniką użytkownikom określenie, które z dwóch połączeń sieciowych powinno być współdzielone. Usługa następnie automatycznie konfiguruje NAT, DHCP oraz usługę DNS na tym interfejsie, dzięki czemu połączone z nim komputery mogą zostać ustawione w ten sposób, aby otrzymać adres DHCP korzystać z bezproblemowego połączenia z Internetem używając tylko pojedynczego publicznego adresu IP.
Windows 2000 Server
Windows 2000 Server to główna linia serwerowych systemów operacyjnych Microsoftu, napisana z myślą o dostarczeniu usług plikowych, drukarek, terminalowych, WWW i aplikacji sieciom w małych firmach oraz wielkich przedsiębiorstwach. Windows 2000 Server jest bezpośrednim następcą Windows NT 4 Server, który był najpopularniejszym w historii serwerowym systemem operacyjnym. Jak wiadomo rywalem Windows’a jest Linux. Microsoft zrobił wszystko, aby Windows 2000 Server mógł zrobić wszystko lepiej niż Linux. Lista usług sieciowych dodanych do Windows 2000 jest imponująca: obsługa katalogu LDAP za pomocą Active Directory, DNS zintegrowany z systemem operacyjnym, weryfikacja tożsamości Kerberos, IPSec (którego Linux nie obsługuje), przekształcenie adresu sieciowego i liczne protokoły routujące oraz sesje terminali przeznaczone dla wielu użytkowników.
Windows 2000 Advanced Server
Windows 2000 Advanced Server zawiera wszystko to, co Windows 2000 Server, a nawet trochę więcej: dwa razy tyle procesorów i obsługę większej ilości pamięci, dwuwęzłowy klastering i równoważenie ładunku IP. Gdy mamy problem tak wielki, że Windows 2000 z trudem sobie z nim radzi, to Windows 2000 Advenced Server poradzi sobie z nim znakomicie.
· Usługa klastrowa oparta na technologii klasteringu Wolfpack, an którą Microsoft nabył licencję od firmy Digital, pozwala dwóm serwerom wzajemnie przejmować swoje kopie w przypadku aplikacji napisanych zgodnie ze specyfikacja klasteringu. Komputery klienckie łączą się z usługą klastrową, która jest uruchomiana na jednym z tych serwerów i jeśli jeden z nich ulegnie awarii, wówczas drugi może przejąć jego zadania, a pierwszy serwer będzie wówczas przywracany do użytku. Klastering funkcjonuje, ponieważ oba serwery dysponują informacją o „stanie usługi” w sieci, a więc na obu znajdują się dane, które można przejąć, jeśli jeden z serwerów ulegnie awarii. Ten awaryjny mechanizm daje możliwość wdrażania uaktualnień, gdy jedna maszyna w klastrze zostaje przenieskona do trybu offline, a jej komputery przechodzą do działającej maszyny. Pierwsza maszyna jest wtedy uaktualniana i powraca do trybu online. Następnie druga maszyna jest wyłączana .
· Równoważenie obciążenie sieci TCP/IP jest formą klasteringu „niewymagającego przechowywanie stanu”. Polega on na dzieleniu obciążenia klientów między serwery, ale nie oferuje współdzielenia stanu, tak więc serwery nie mogą się zastępować. Jeśli jeden serwer ulegnie awarii, jego klienci mają możliwość połączenia się z innym serwerem. Jest to świetnym rozwiązaniem w przypadku protokołów nie wymagających przechowywania stanu, takich jak HTTP, w których nie trzeba przechowywać żadnej informacji między jednym a drugim żądaniem klienta. Równoważenie obciążeń umożliwia udostępnianie wielu serwerów, które z perspektywy klientów są jednym, wirtualnym serwerem.
Windows 2000 Datacenter Server
Gdy Windows 2000 Advanced Server nie radzi sobie z obciążeniem kupujemy Windows 2000 Datacenter Server. Dzięki obsłudze czterokrotnie większej liczby procesorów, ośmiokrotnie większej ilości pamięci RAM i 4-węzłowemu klasteringowi aplikacji awaryjnych Windows 2000 Datacenter Server sprawdzi się na sprzęcie potęgą dorównującą mainframe’owi. Data Center Server został zaprojektowany z myślą o udostępnianiu usług publicznych takich jak WWW i multimedia strumieniowe, oraz masywnych aplikacji, takich jak publiczne bazy danych.