4.2 Lekcja 1
Certyfikat: |
Linux Essentials |
---|---|
Wersja: |
1.6 |
Temat: |
4 System operacyjny Linux |
Cel nauki: |
4.2 Zrozumienie sprzętu komputerowego |
Lekcja: |
1 z 1 |
Wstęp
Oprogramowanie bez sprzętu to nic innego jak inna forma literatury. Sprzęt przetwarza polecenia opisane przez oprogramowanie i zapewnia mechanizmy przechowywania, a także wejścia i wyjścia. Nawet chmura działa na sprzęcie.
Linux, jako system operacyjny, jest odpowiedzialny między innymi za dostarczanie oprogramowania z interfejsami umożliwiającymi dostęp do sprzętu. Większość szczegółów dotyczących konfiguracji wykracza poza zakres tej lekcji. Jednakże użytkownicy często interesują się wydajnością, pojemnością i innymi czynnikami związanymi ze sprzętem systemowym, ponieważ mają one wpływ na zdolność systemu do odpowiedniej obsługi określonych aplikacji. Ta lekcja dotyczy sprzętu jako samodzielnego urządzenia fizycznego ze standardowymi złączami i interfejsami. Standardy są stosunkowo statyczne, ale kształt sprzętu, jego wydajność i charakterystyka pojemności podlegają ciągłym zmianom. Niezależnie od tego, w jaki sposób zmiana może zmniejszyć fizyczne różnice, koncepcje dotyczące sprzętu opisane w tej lekcji nadal mają zastosowanie.
Note
|
W różnych punktach tej lekcji przykłady wiersza poleceń są używane do zademonstrowania sposobów uzyskiwania dostępu do informacji o sprzęcie. Większość przykładów pochodzi z Raspberry Pi B +, ale powinny mieć zastosowanie do większości systemów. Nie musisz szczegółowo rozumieć każdego z tych poleceń, aby zrozumieć ten materiał. |
Zasilacze
Wszystkie aktywne komponenty systemu komputerowego wymagają do działania energii elektrycznej. Niestety większość źródeł zasilania nie nadaje się do tego w sposób bezpośredni. Sprzęt komputerowy wymaga określonych napięć o stosunkowo wąskich tolerancjach, które nie są dostępne w ściennym gniazdku prądowym.
Zasilacze (Power Supplies) normalizują dostępne źródła energii. Standardowe wymagania dotyczące napięcia pozwalają producentom opracowywać komponenty sprzętowe, które mogą być używane w systemach na całym świecie. Zasilacze do komputerów stacjonarnych zazwyczaj wykorzystują energię ze ściennego gniazdka elektrycznego jako źródło energii. Zasilacze do serwerów są zwykle bardziej wymagające, dlatego często są podłączane do wielu źródeł, aby zapewnić ich dalsze nieprzerwane działanie w przypadku awarii jednego ze źródeł.
Korzystanie z energii elektrycznej powoduje wytwarzanie ciepła. Nadmierne ciepło może spowodować powolne działanie lub awarię elementów systemu. Dlatego większość systemów ma jakiś rodzaj wentylatora, który porusza powietrze, aby zapewnić wydajniejsze chłodzenie. Komponenty, takie jak procesory, często wytwarzają ciepło, którego sam przepływ powietrza nie jest w stanie rozproszyć. Takie gorące elementy mają specjalne “żebra” (tak zwane radiatory), które pomagają odprowadzić wytwarzane przez nie ciepło. Niektóre radiatory mają z kolei własny wentylator, aby zapewnić wystarczający przepływ powietrza.
Płyta główna (Motherboard)
Cały sprzęt w systemie musi być ze sobą połączony. Płyta główna (Motherboard) normalizuje te połączenia za pomocą standardowych złączy i współczynników kształtu. Zapewnia również obsługę konfiguracji i potrzeb elektrycznych tych złączy.
Istnieje wiele konfiguracji płyt głównych, które obsługują różne procesory i systemy pamięci. Mają różne kombinacje znormalizowanych złączy i są przystosowane do różnych rozmiarów obudowy, w której się znajdują. Konfiguracja płyty głównej jest praktycznie niewidoczna dla użytkowników (być może z wyjątkiem możliwości podłączenia określonych urządzeń zewnętrznych). Gdy istnieje potrzeba zidentyfikowania określonych urządzeń, to zwykle administratorzy mają do czynienia z konfiguracją płyty głównej.
Przy pierwszym podłączeniu zasilania należy skonfigurować i zainicjować sprzęt specyficzny dla płyty głównej, zanim system będzie mógł działać. Płyty główne używają programów w pamięci nieulotnej, zwanych oprogramowaniem układowym, do obsługi sprzętu specyficznego dla płyty głównej. Oryginalna forma oprogramowania układowego płyty głównej była znana jako BIOS (Basic Input/Output System). Poza podstawowymi ustawieniami konfiguracyjnymi, BIOS był przede wszystkim odpowiedzialny za identyfikację, ładowanie i przekazywanie operacji do systemu operacyjnego, takiego jak Linux. Wraz z rozwojem sprzętu, oprogramowanie układowe było rozszerzane, aby obsługiwać coraz większe dyski twarde, diagnostykę, interfejsy graficzne, sieci i inne zaawansowane funkcje, niezależnie od załadowanego systemu operacyjnego. Wczesne próby ulepszenia oprogramowania układowego poza podstawowy BIOS były często specyficzne dla producenta płyty głównej. Firma Intel zdefiniowała standard zaawansowanego rozszerzonego interfejsu oprogramowania układowego znany jako EFI (Extensible Firmware Interface), a następnie przekazała EFI do organizacji normalizacyjnej w celu stworzenia zunifikowanego rozszerzalnego interfejsu oprogramowania układowego UEFI (Unified Extensible Firmware Interface). Obecnie większość płyt głównych korzysta z UEFI. BIOS i EFI prawie nigdy nie są widoczne w najnowszych systemach. Niezależnie od tego, większość ludzi nadal odnosi się do oprogramowania układowego płyty głównej jako BIOS.
Istnieje bardzo niewiele ustawień oprogramowania układowego, które są interesujące dla zwykłych użytkowników, więc tylko osoby odpowiedzialne za konfigurację sprzętu systemowego zwykle zajmują się oprogramowaniem układowym i jego ustawieniami. Jedną z niewielu często zmienianych opcji jest włączenie rozszerzeń wirtualizacji dla nowoczesnych procesorów (CPU).
Pamięć systemowa (Memory)
Pamięć systemowa przechowuje dane i kod programu aktualnie uruchomionych aplikacji. Kiedy mówi się o pamięci komputera, większość ludzi ma na myśli pamięć systemową. Innym często używanym terminem określającym pamięć systemową jest akronim RAM (Random Access Memory) lub odmiana tego akronimu. Czasami używane są również odniesienia do fizycznego kształtu lub rozmieszczenia pamięci systemowej, takie jak DIMM, SIMM lub DDR.
Fizycznie pamięć systemowa jest zwykle umieszczana w pojedynczych modułach płytek drukowanych, które są podłączone do płyty głównej. Poszczególne moduły pamięci są obecnie dostępne w rozmiarach od 2 do 64 GB. W przypadku większości standardowych aplikacji, 4 GB to minimalna ilość pamięci systemowej, którą ludzie powinni wziąć pod uwagę w przypadku zakupu lub instalacji. W przypadku indywidualnych stacji roboczych 16 GB jest zwykle więcej niż wystarczające. Jednakże nawet 16 GB może być niewystarczające dla użytkowników korzystających z gier, filmów lub zaawansowanych aplikacji audio. Serwery często wymagają 128 lub nawet 256 GB pamięci, aby efektywnie obsługiwać programy użytkowników.
W większości przypadków Linux pozwala użytkownikom traktować pamięć systemową jako czarną skrzynkę. Aplikacja uruchamia się, a Linux zajmuje się alokacją wymaganej pamięci systemowej. Następnie Linux zwalnia pamięć dla innych aplikacji po zakończeniu działania tej aplikacji. Ale co się dzieje, jeśli aplikacja potrzebuje więcej pamięci systemowej niż jest dostępne? W tym przypadku Linux przenosi nieużywane aplikacje z pamięci systemowej do specjalnego obszaru dysku zwanego przestrzenią wymiany (swap space), a nieużywane aplikacje z przestrzeni wymiany z powrotem do pamięci systemowej, gdy muszą zostać uruchomione.
Systemy bez dedykowanego sprzętu wideo często wykorzystują część pamięci systemowej (na ogół 1 GB) do przechowywania obrazu wideo, co zmniejsza efektywną pamięć systemową. Dedykowany sprzęt wideo ma zwykle własną oddzielną pamięć, która nie jest dostępna jako pamięć systemowa.
Istnieje kilka sposobów uzyskiwania informacji o pamięci systemowej. Zwykle użytkownik interesuje się całkowitą ilością dostępnej i używanej pamięci. Jednym ze źródeł informacji jest uruchomienie polecenia free
z parametrem -m
w celu wyświetlenia wartości w megabajtach:
$ free -m total used free shared buff/cache available Mem: 748 37 51 14 660 645 Swap: 99 0 99
Pierwsza linia określa całkowitą pamięć dostępną dla systemu (total
), pamięć w użyciu (used
) i ilość wolnej pamięci (free
). Druga linia wyświetla informacje dotyczące przestrzeni wymiany (Swap
). Pamięć określona jako pamięć współdzielona
(shared
) i pamięć podręczna
(buff/cache
) jest obecnie używana do innych funkcji systemowych, a ilość wskazana jako dostepna (available
) może zostać wykorzystana na potrzeby aplikacji.
Procesory (Processors)
Słowo “procesor” oznacza, że coś jest przetwarzane. Komputery służą przede wszystkim do przetwarzania sygnałów elektrycznych. Zazwyczaj te sygnały elektryczne są traktowane jako mające jedną z wartości binarnych: 1 lub 0.
Kiedy ludzie mówią o komputerach, często używają terminu “word processor” zamiennie z akronimem “procesor” CPU (Central Processing Unit). Jest to technicznie niepoprawne. Każdy komputer dostępny na rynku ma procesor CPU, który przetwarza polecenia binarne podawane przez oprogramowanie. Jest więc zrozumiałe, że ludzie wymieniają processor zarówno w pierwszym przypadku “procesor”, jak i w drugim przypadku “CPU”. Jednak oprócz procesora CPU, współczesne komputery często mają inne procesory przeznaczone do konkretnych zadań. Być może najbardziej rozpoznawalnym dodatkowym procesorem jest procesor do obróbki grafiki GPU (Graphical Processing Unit). Zatem CPU jest procesorem, ale nie wszystkie “procesory” są CPU.
Dla wielu ludzi architektura procesora CPU wskazuje na instrukcje obsługiwane przez procesor. Chociaż Intel i AMD produkują procesory obsługujące te same instrukcje, warto je rozróżnić według dostawcy ze względu na różnice w opakowaniu, konstrukcji, wydajności i zużyciu energii. Dystrybucje oprogramowania często używają tych oznaczeń do określenia minimalnego zestawu instrukcji wymaganych do działania:
- i386
-
Wskazuje na 32-bitowy zestaw instrukcji skojarzony z procesorem Intel 80386.
- x86
-
Zwykle odnosi się do 32-bitowych zestawów instrukcji powiązanych z następcami 80386, na przykład 80486, 80586 i Pentium.
- x64 / x86-64
-
Wskazuje na procesory obsługujące zarówno instrukcje 32-bitowe, jak i 64-bitowe z rodziny x86.
- AMD
-
Odnosi się do obsługi x86 przez procesory AMD.
- AMD64
-
Odnosi się do obsługi x64 przez procesory AMD.
- ARM
-
Odnosi się do procesora RISC (Reduced Instruction Set Computer). Ten procesor CPU nie jest oparty na zestawie instrukcji x86 i jest powszechnie używany przez urządzenia wbudowane, urządzenia mobilne, tablety i urządzenia zasilane bateriami. Wersja Linuxa dla ARM jest używana przez Raspberry Pi.
Plik /proc/cpuinfo
zawiera szczegółowe informacje o procesorze lub procesorach w systemie. Niestety, wyświetlane szczegóły nie są przyjazne dla zwykłych użytkowników. Bardziej wyrazisty wynik można uzyskać za pomocą polecenia lscpu
. Poniżej pokazano informacje z Raspberry Pi B+:
$ lscpu Architecture: armv7l Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 Model: 4 Model name: ARMv7 Processor rev 4 (v7l) CPU max MHz: 1400.0000 CPU min MHz: 600.0000 BogoMIPS: 38.40 Flags: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
Szeroki wachlarz dostawców, rodzin procesorów i specyfikacji jest mylący dla większości użytkowników. Niezależnie od tego istnieje kilka czynników związanych z CPU i procesorami, które nawet administratorzy i zwykli użytkownicy często muszą brać pod uwagę podczas konfigurowania określonych środowisk operacyjnych:
- Rozmiar bitu (Bit size)
-
W przypadku procesorów liczba ta odnosi się zarówno do rodzimego rozmiaru przetwarzanych danych, jak i do ilości pamięci, do której ma dostęp. Większość nowoczesnych systemów jest 32-bitowa lub 64-bitowa. Jeśli aplikacja wymaga dostępu do więcej niż 4 gigabajtów pamięci, to musi działać na systemie 64-bitowym, ponieważ 4 gigabajty to maksymalny adres, który można przedstawić za pomocą 32 bitów. I chociaż aplikacje 32-bitowe mogą zwykle działać w systemach 64-bitowych, to jednak aplikacje 64-bitowe nie mogą działać w systemach 32-bitowych.
- Częstotliwość zegara (Clock speed)
-
Często podawana w megahercach (MHz) lub gigahercach (GHz) i informuje, jak szybko procesor przetwarza instrukcje. Jednak szybkość procesora to tylko jeden z czynników wpływających na czas odpowiedzi systemu, czas oczekiwania i przepustowość. Nawet aktywny, wielozadaniowy użytkownik rzadko wykorzystuje na ogół więcej niż 2 lub 3 procent mocy procesora zwykłego komputera stacjonarnego. Nie mniej jednak, jeśli często używasz aplikacji wymagających dużej mocy obliczeniowej, na przykład do szyfrowania lub renderowania wideo, to szybkość procesora może mieć znaczący wpływ na przepustowość i czas oczekiwania.
- Pamięć podręczna (Cache)
-
Procesory wymagają do działania ciągłego strumienia zarówno instrukcji, jak i danych. Koszt i zużycie energii wielogigabajtowej pamięci systemowej, dostępna przy taktowaniu procesora byłyby wygórowane. Pamięć podręczna procesora jest zintegrowana z układem procesora, aby zapewnić szybki bufor między CPU a pamięcią systemową. Pamięć podręczna jest podzielona na kilka warstw, powszechnie określanych jako L1, L2, L3, a nawet L4. W przypadku pamięci podręcznej im jest jej więcej, tym lepiej.
- Rdzenie (Cores)
-
Rdzeń odnosi się do pojedynczego procesora. Oprócz rdzenia, którym jest fizyczny procesor CPU, technologia HTT (Hyper-Threading Technology) umożliwia jednemu fizycznemu procesorowi jednoczesne przetwarzanie wielu instrukcji w tym samym czasie, skutecznie działając wirtualnie jako wiele fizycznych procesorów. Zazwyczaj wiele rdzeni fizycznych jest instalowanych jako pojedynczy fizyczny układ procesora. Istnieją jednak płyty główne obsługujące wiele układów procesorów fizycznych. Teoretycznie posiadanie większej liczby rdzeni do zadań przetwarzania zawsze wydawałoby się zapewniać lepszą przepustowość systemu. Niestety, aplikacje desktopowe często wykorzystują tylko 2 lub 3 procent procesorów, więc dodanie większej liczby, głównie bezczynnych procesorów, prawdopodobnie spowoduje tylko minimalną poprawę przepustowości. Więcej rdzeni najlepiej nadaje się do uruchamiania aplikacji, które są napisane tak, aby obsługiwały wiele niezależnych wątków, takich jak renderowanie klatek wideo, renderowanie stron internetowych lub do środowiska maszyn wirtualnych dla wielu użytkowników.
Magazyn danych (Storage)
Urządzenia pamięci masowej służą do przechowywania programów i danych. Dyski twarde HDD (Hard Disk Drives) i dyski półprzewodnikowe SSD (Solid State Drives) to obecnie najpopularniejsze typy urządzeń magazynujących w serwerach i komputerach stacjonarnych. Pamięci USB i urządzenia optyczne, takie jak DVD, są również używane, ale rzadko i na ogół jako urządzenie dodatkowe.
Jak sama nazwa wskazuje, dysk twardy HDD przechowuje informacje na jednym lub kilku sztywnych dyskach fizycznych. Fizyczne dyski to talerze pokryte nośnikiem magnetycznym, aby umożliwić przechowywanie danych. Dyski znajdują się w szczelnej obudowie, ponieważ kurz, małe cząsteczki, a nawet odciski palców mogą wpłynąć negatywnie na zdolność dysku twardego do odczytu i zapisu na nośnikach magnetycznych.
Dyski SSD to znacznie bardziej wyrafinowane warianty pendrive’ów USB o znacznie większej pojemności. Przechowują one informacje w mikroczipach, dzięki czemu dyski ten nie posiadają ruchomych części.
Chociaż technologie bazowe dla dysków HDD i SSD są różne, istnieją ważne czynniki, które można porównać. Pojemność dysków twardych jest oparta na skalowaniu komponentów fizycznych, podczas gdy pojemność dysku SSD zależy od liczby mikroczipów. Koszt jednego gigabajta dysku SSD wynosi od 3 do 10 razy więcej niż koszt jednego gigabajta dla dysku HDD. Aby móc odczytywać lub zapisywać, dysk twardy HDD musi czekać na obrócenie lokalizacji na dysku w określone miejsce, podczas gdy dyski SSD umożliwiają bezpośredni dostęp. Prędkości dostępu do dysków SSD są zwykle od 3 do 5 razy większe niż w przypadku dysków twardych HDD, ponieważ nie mają ruchomych części. Dyski SSD zużywają mniej energii i są bardziej niezawodne niż dyski twarde HDD.
Pojemność dysków twardych HDD i SSD stale rośnie. Obecnie powszechnie dostępne są dyski twarde o pojemności 5 terabajtów i dyski SSD o pojemności 1 terabajta. Niemniej jednak duża pojemność pamięci nie zawsze jest zaletą. W przypadku awarii nośnika danych wszystkie dane na nim zawarte nie są już dostępne. Także tworzenie kopii zapasowych trwa dłużej, jeśli trzeba wykonać kopię zapasową lub zarchiwizować większą ilość informacji. W przypadku aplikacji, które odczytują i zapisują dużo danych, opóźnienie i wydajność mogą być ważniejsze niż pojemność.
Nowoczesne systemy wykorzystują SCSI (Small Computer System Interface) lub SATA (Serial AT Attachment) do łączenia się z nośnikami danych. Te interfejsy są zwykle obsługiwane przez odpowiednie złącza na płycie głównej. Ładowanie początkowe odbywa się z nośnika danych podłączonego do płyty głównej. Ustawienia oprogramowania układowego określają kolejność, w jakiej urządzenia uzyskują dostęp podczas tego początkowego ładowania.
Systemy pamięci masowej znane jako RAID (Redundant Array of Independent Disks) są powszechną implementacją zapobiegającą utracie danych. Macierz RAID składa się z wielu fizycznych urządzeń zawierających zduplikowane kopie informacji. Jeśli jedno urządzenie ulegnie awarii, wszystkie informacje są nadal dostępne. Różne fizyczne konfiguracje RAID są określane jako 0, 1, 5, 6 i 10. Każde oznaczenie oznacza określony rozmiar pamięci, charakterystykę wydajności i opcje przechowywania nadmiarowych danych lub sum kontrolnych potrzebnych do odzyskiwania danych. Oprócz pewnych wysiłków związanych z konfiguracją, użycie RAID jest praktycznie niewidoczne dla użytkownika.
Urządzenia pamięci masowej zwykle odczytują i zapisują dane w blokach bajtów. Można użyć polecenia lsblk
, do wyświetlenia listy urządzeń blokowych dostępnych w systemie. Poniższy przykład został uruchomiony na Raspberry Pi przy użyciu karty SD jako nośnika danych. Szczegóły wyświetlonych wyników są omówione w następnych sekcjach: Partycje oraz Sterowniki:
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk0 179:0 0 29.7G 0 disk +-mmcblk0p1 179:1 0 43.9M 0 part /boot +-mmcblk0p2 179:2 0 29.7G 0 part /
Partycje
Urządzenie pamięci masowej to w rzeczywistości długa sekwencja lokalizacji pamięci z miejscami do przechowywania. Partycjonowanie to mechanizm, który mówi systemowi Linux, czy ma widzieć te lokalizacje pamięci jako pojedynczą sekwencję, czy jako wiele niezależnych sekwencji. Każda partycja jest traktowana jako indywidualne urządzenie. W większości przypadków partycje są tworzone podczas pierwszej konfiguracji systemu. Jeśli konieczna jest zmiana (np. wielkości partycji), to dostępne są narzędzia administracyjne do zarządzania partycjonowaniem urządzeń.
Dlaczego pożądanych jest wiele partycji? Niektóre przykłady korzystania z partycji to zarządzanie dostępną przestrzenią, izolowanie narzutu szyfrowania lub obsługa wielu systemów plików. Partycje umożliwiają posiadanie jednego urządzenia magazynującego, które może być uruchamiane w różnych systemach operacyjnych.
Linux rozpoznaje sekwencję przechowywania surowego dysku. Jednakże tego surowego dysku nie można używać “tak po prostu” - należy je wcześniej sformatować. Formatowanie zapisuje system plików na dysku i przygotowuje go do operacji na plikach. Bez systemu plików dysk nie może być używany do operacji na plikach.
Użytkownicy widzą partycje tak, jakby były pojedynczymi dyskami. Dzięki temu mogą łatwo przeoczyć fakt, że nadal mają do czynienia z jednym fizycznym dyskiem, ale z kilkoma partycjami. W szczególności operacje dysk-dysk, które w rzeczywistości są operacjami między partycjami, nie będą miały oczekiwanej wydajności. Pojedynczy dysk to jeden fizyczny mechanizm z jednym zestawem sprzętu do odczytu / zapisu. Co ważniejsze, nie można używać partycji pojedynczego dysku fizycznego jako projektu odpornego na uszkodzenia. Jeśli cały dysk urządzenie ulegnie fizycznej awarii, wówczas wszystkie partycje także ulegną awarii, więc dane na tym dysku i partycjach mogą być już nie do odzyskania.
Note
|
Logical Volume Manager (LVM) to funkcja oprogramowania, która umożliwia administratorom łączenie poszczególnych dysków i partycji dysków oraz traktowanie ich tak, jakby były pojedynczym dyskiem. |
Urządzenia peryferyjne
Serwery i stacje robocze wymagają do działania połączenia procesora, pamięci systemowej i nośnika danych. Ale te podstawowe komponenty nie są bezpośrednio powiązane ze światem zewnętrznym. Urządzenia peryferyjne to urządzenia, które zapewniają systemowi wejście, wyjście i dostęp do reszty świata rzeczywistego.
Większość płyt głównych ma wbudowane złącza zewnętrzne i obsługę oprogramowania układowego dla popularnych starszych interfejsów urządzeń peryferyjnych, które obsługują takie urządzenia, jak klawiatura, mysz, dźwięk, wideo i sieć. Najnowsze płyty główne zwykle mają złącze Ethernet do nawiązania połączenia sieciowego, złącze HDMI do obsługi podstawowych potrzeb graficznych oraz jedno lub więcej złączy USB (Universal Serial Bus) do większości innych codziennych zastosowań. Istnieje kilka wersji złączy USB o różnych szybkościach i właściwościach fizycznych. Wiele wersji portów USB jest wspólnych na jednej płycie głównej.
Płyty główne mogą również mieć jedno lub więcej gniazd rozszerzeń. Gniazda rozszerzeń umożliwiają użytkownikom dodawanie specjalnych płytek drukowanych zwanych kartami rozszerzeń, które obsługują niestandardowe, starsze i niestandardowe urządzenia peryferyjne. Grafika, dźwięk i interfejsy sieciowe to powszechne karty rozszerzeń. Karty rozszerzeń obsługują również RAID i starsze interfejsy o specjalnym formacie, obejmujące połączenia szeregowe i równoległe.
Konfiguracje SoC (System on a Chip) oferują przewagę nad konfiguracjami z płytami głównymi pod względem mocy, wydajności, miejsca dla danych i niezawodności dzięki połączeniu procesorów, pamięci systemowej, dysku SSD i sprzętu do sterowania urządzeniami peryferyjnymi jako pojedynczego pakietu układów scalonych. Urządzenia peryferyjne obsługiwane przez konfiguracje SoC są ograniczone przez zawarte w pakiecie komponenty. W związku z tym konfiguracje SoC są zwykle przeznaczone do określonych zastosowań. Telefony, tablety i inne urządzenia przenośne są często oparte na technologii SoC.
Niektóre systemy zawierają urządzenia peryferyjne. Laptopy są podobne do stacji roboczych, ale już zawierają domyślne urządzenia peryferyjne (np. wyświetlacz, klawiaturę i mysz). Systemy typu “wszystko w jednym” (“All-In-One”) są podobne do laptopów, ale wymagają urządzeń peryferyjnych myszy i klawiatury. Kontrolery oparte na płycie głównej lub SoC są często dostarczane z wbudowanymi urządzeniami peryferyjnymi odpowiednimi dla określonego zastosowania.
Pliki sterowników i urządzeń
Do tej pory w tej lekcji przedstawiono informacje o procesorach, pamięci, dyskach, partycjonowaniu, formatowaniu i urządzeniach peryferyjnych. Gdyby jednak użytkownicy musieli zagłębiać się w konkretne szczegóły dotyczące każdego z tych urządzeń w swoim systemie, systemy te stałyby się bezużyteczne. Podobnie programiści musieliby zmodyfikować swój kod dla każdego nowego lub zmienionego urządzenia, które obsługują.
Rozwiązanie tego problemu “zajmowania się szczegółami” zapewnia sterownik urządzenia (w skrócie sterownik). Sterowniki urządzeń akceptują standardowy zestaw żądań, a następnie tłumaczą te żądania na odpowiednie działania kontrolne urządzenia. Sterowniki urządzeń umożliwiają Tobie i uruchamianym aplikacjom na odczytywanie danych z pliku /home/carol/stuff
bez martwienia się o to, czy plik ten znajduje się na dysku twardym, dysku SSD, karcie pamięci, zaszyfrowanej pamięci masowej lub innym urządzeniu.
Pliki urządzeń znajdują się w katalogu /dev
i identyfikują urządzenia fizyczne, dostęp do urządzeń oraz obsługiwane sterowniki. Zgodnie z konwencją, w nowoczesnych systemach wykorzystujących urządzenia pamięci masowej SCSI lub SATA, nazwa pliku specyfikacji zwykle zaczyna się od przedrostka sd
. Po przedrostku następuje litera, taka jak a
lub b
, która wskazuje urządzenie fizyczne. Po prefiksie i identyfikatorze urządzenia następuje liczba wskazująca partycję w urządzeniu fizycznym. Dlatego /dev/sda
odnosi się do całego pierwszego nośnika pamięci, podczas gdy /dev/sda3
wskazuje na partycję 3 na pierwszym urządzeniu magazynującym. Plik urządzenia dla każdego typu urządzenia ma konwencję nazewnictwa, która odpowiada urządzeniu. Chociaż wyjaśnienie wszystkich możliwych konwencji nazewnictwa wykracza poza zakres tej lekcji, ale ważne jest, aby zapamiętać, że to właśnie te konwencje mają kluczowe znaczenie, umożliwiając przede wszystkim administrowanie systemem Linux.
Chociaż omówienie zawartości katalogu /dev
wykracza poza zakres tej lekcji, spójrzmy na wpis dotyczący nośnika pamięci. Pliki urządzeń dla kart SD zazwyczaj używają przedrostka mmcblk
:
$ ls -l mmcblk* brw-rw---- 1 root disk 179, 0 Jun 30 01:17 mmcblk0 brw-rw---- 1 root disk 179, 1 Jun 30 01:17 mmcblk0p1 brw-rw---- 1 root disk 179, 2 Jun 30 01:17 mmcblk0p2
Lista szczegółów dla pliku urządzenia różni się od listy szczegółów typowych plików:
-
W przeciwieństwie do pliku lub katalogu, pierwsza litera w polu uprawnień to
b
. Oznacza to, że dane są odczytywane z urządzenia z bloków i zapisywane w urządzeniu w blokach, a nie w pojedynczych znakach. -
Pole rozmiaru składa się z dwóch wartości oddzielonych przecinkiem, a nie z pojedynczej wartości. Pierwsza wartość ogólnie wskazuje konkretny sterownik w jądrze, a druga wartość określa konkretne urządzenie, obsługiwane przez sterownik.
-
Nazwa pliku używa numeru urządzenia fizycznego, więc konwencja nazewnictwa dostosowuje się, określając sufiks partycji jako
p
, po którym następuje cyfra.
Note
|
Każde urządzenie systemowe powinno mieć wpis w katalogu |
Ćwiczenia z przewodnikiem
-
Opisz te terminy:
Procesor
CPU
GPU
-
Jeśli uruchamiasz głównie aplikacje do edycji wideo (działanie wymagające dużej mocy obliczeniowej), to które komponenty i właściwości mają, Twoim zdaniem, największy wpływ na użyteczność systemu:
Rdzenie procesora
Prędkość procesora
Dostępna pamięć systemowa
System przechowywania
Graphical Processing Unit GPU
Wyświetlanie wideo
Żadne z powyższych
-
Jak myślisz, jaka będzie nazwa pliku urządzenia w
/dev
dla partycji 3 trzeciego dysku SATA w systemie?sd3p3
sdcp3
sdc3
Żadne z powyższych
Ćwiczenia eksploracyjne
-
Uruchom komendę
lsblk
w swoim systemie. Zidentyfikuj poniższe parametry. Jeśli nie masz teraz systemu i nie masz jak wpisać polecenialsblk -f
, to prześledź wynik dla systemu Raspberry Pi omówiony w sekcji “Pamięć” i znajdź:$ lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT mmcblk0 +-mmcblk0p1 vfat boot 9304-D9FD /boot +-mmcblk0p2 ext4 rootfs 29075e46-f0d4-44e2-a9e7-55ac02d6e6cc /
-
Rodzaj i liczbę urządzeń
-
Strukturę partycji każdego urządzenia
-
Typ systemu plików i montowania dla każdej partycji
-
Podsumowanie
System to suma jego składników. Różne komponenty w różny sposób wpływają na koszt, wydajność i użyteczność. Chociaż istnieją typowe konfiguracje dla stacji roboczych i serwerów, nie ma jednej najlepszej konfiguracji.
Odpowiedzi do ćwiczeń z przewodnikiem
-
Opisz te terminy:
Procesor
Ogólny termin odnoszący się do każdego typu procesora. Często używany nieprawidłowo jako synonim CPU.
CPU
A Central Processing Unit. Jednostka zapewniająca wsparcie dla zadań obliczeniowych ogólnego przeznaczenia.
GPU
A Graphical Processing Unit. Jednostka graficzna przetwarzająca zoptymalizowana pod kątem obliczeń w celu wyświetlania grafiki.
-
Jeśli uruchamiasz głównie aplikacje do edycji wideo (działanie wymagające dużej mocy obliczeniowej), to które komponenty i właściwości mają, Twoim zdaniem, największy wpływ na użyteczność systemu:
Rdzenie procesora
Tak. Wiele rdzeni obsługuje jednoczesne zadania prezentacji i renderowania wymagane do edycji wideo.
Prędkość procesora
Tak. Renderowanie wideo wymaga znacznej mocy obliczeniowej.
Dostępna pamięć systemowa
Prawdopodobnie. Nieskompresowane wideo użyte podczas edycji jest duże. Systemy wielofunkcyjne często mają 8 gigabajtów pamięci. 16 lub nawet 32 gigabajtów pamięci pozwala systemowi przetwarzać więcej klatek nieskompresowanego wideo, dzięki czemu czynności edycyjne są bardziej wydajne.
System przechowywania
Tak. Pliki wideo są duże. Narzut lokalnych dysków SSD zapewnia bardziej efektywny transfer. Wolniejsze dyski sieciowe mogą przynosić skutki odwrotne do zamierzonych.
Graphical Processing Unit GPU
Nie. GPU wpływa przede wszystkim na wyświetlanie renderowanego wideo.
Wyświetlanie wideo
Nie. Wyświetlanie wideo wpływa przede wszystkim na wygląd renderowanego wideo.
Żadne z powyższych
Nie. Niektóre z tych czynników mają oczywisty wpływ na użyteczność Twojego systemu.
-
Jak myślisz, jaka będzie nazwa pliku urządzenia w
/dev
dla partycji 3 trzeciego dysku SATA w systemie?sd3p3
Niepoprawnie. Dysk 3 powinien być
sdc
zamiastsd3
sdcp3
Niepoprawnie. Partycja 3 powinna być
3
zamiastp3
sdc3
Poprawnie
Żadne z powyższych
Niepoprawnie. Prawidłowa odpowiedź to jedna z powyższych możliwości.
Odpowiedzi do ćwiczeń eksploracyjnych
-
Uruchom komendę
lsblk
w swoim systemie. Zidentyfikuj poniższe parametry. Jeśli nie masz teraz systemu i nie masz jak wpisać polecenialsblk -f
, to prześledź wynik dla systemu Raspberry Pi omówiony w sekcji “Pamięć” i znajdź:$ lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT mmcblk0 +-mmcblk0p1 vfat boot 9304-D9FD /boot +-mmcblk0p2 ext4 rootfs 29075e46-f0d4-44e2-a9e7-55ac02d6e6cc /
Poniższe odpowiedzi opierają się na powyższym przykładzie dla polecenia
lsblk -f
dla systemu Raspberry Pi . Twoje odpowiedzi mogą być inne:- Rodzaj i liczbę urządzeń
-
Jest jedno urządzenie:
mmcblk0
. Wiesz zgodnie z konwencją, żemmcblk
byłaby kartą pamięci SD. - Strukturę partycji każdego urządzenia
-
Są dwie partycje:
mmcblk0p1
orazmmcblk0p2
. - Typ systemu plików i montowania dla każdej partycji
-
Partycja 1 używa systemu plików
vfat
. Służy do uruchamiania systemu i jest montowany jako/boot
. Partycja 2 używa systemu plikówext4
. Jest używany jako podstawowy system plików i jest montowany jako/
.