Budowa - płyta główna, procesor, pamięć, karty, ... :: Rozwiązania serwerowe :: Wprowadzenie do systemów operacyjnych

Komputery

Komputer jest elektronicznym urządzeniem służącym do przetwarzania informacji. Działanie jego opiera się na przetwarzaniu ciągu rozkazów (wraz z argumentami którymi są przetwarzane dane). W przypadku dominującej obecnie architektury von Neumanna (w odróżnieniu od harwardzkiej stosowanej bardzo często w mikrokontrolerach) zarówno ciąg instrukcji (program) jak i dane przechowywane są w wspólnej pamięci.

Głównym parametrem klasyfikującym systemy komputerowe jest architektura procesora. Determinuje ona m.in. zestaw obsługiwanych instrukcji i wielkość przestrzeni adresowej, w związku z tym programy kompilowane do kodu maszynowego w celu uruchomienia na innej, niekompatybilnej architekturze wymagają rekompilacji. Do najistotniejszych obecnie grup architektur należy zaliczyć:

W ramach poszczególnych grup często zachowywana jest zgodność wsteczna (jest tak np. w przypadku rodziny x86), ale nie zawsze musi tak być. Należy zwrócić uwagę na różnice pomiędzy poszczególnymi wersjami architektury w ramach rodziny (rozszerzenia zestawu instrukcji), bitowość (32 lub 64 bity), warianty big-endian/little-endian (szczególnie dla MIPS i ARM), stosowanie koprocesorów (np. jednostką zmiennoprzecinkową VFP w ARM). Zobacz także: Debian Multiarch Tuples

Budowa - płyta główna, procesor, pamięć, karty, ...

Płyta główna zawiera podstawowe elementy urządzenia (w tym wypadku komputera), umożliwia też komunikację wszystkim pozostałym podzespołom i modułom. Klasyczny, ogólny (generyczny) schemat blokowy płytywy głównej zawiera 4 główne elementy:

Z kolejnymi generacjami procesorów zmianie ulegały technologie wykonywania poszczególnych połączeń a także sam schemat (w wielu współczesnych konstrukcjach mostek północny nie występuje - pamięć podłączana jest bezpośrednio do procesora, a szybkie szyny systemewe do mostka południowego lub także bezpośrednio do procesora). Ogólnie zauważalne jest także odchodzenie od klasycznych magistral na rzecz łączy typu punkt-punkt (ew. magistral hub-owanych) oraz odchodznie od interfejsów równoległych na rzecz szeregowych. Aktualnie najistotniejszymi interfejsami są:

Nadal można spotkać się z (wymierającymi już) interfejsami takimi jak: PCI IEEE 1394 (FireWire), RS232 (port szeregowy COM), PS/2, LPT (port równoległy), ATA (IDE, PATA, ATAPI, EIDE). Natomiast wśród historycznych interfejsów należy wspomnieć o: ISA (EISA, VESA Local Bus), PCI-X (poprawiona, szybsza, 64 bitowa, kompatybilna wstecz wersja PCI), PCMCIA (pierwotnie "PC Card 16" - magistrala ISA, później "CardBus" - magistrala PCI), AGP, SCSI. Zobacz także: porównanie prędkości różnych interfejsów.

Wiele z współczesnych (podobnnie jak i historycznych) interfejsów posiada różne warianty zarówno pod względem generacji / prędkości (typowo kompatybilnych wstecznie) jak i pod względem wykonania mechanicznego (zewnętrzne/wewnętrze, o różnym stopniu miniaturyzacji - w wielu wypadkach jest ich aż za wiele). Istnieją także złącza obsługujące kilka różnych interfejsów w ramach jednego gniazda - np. M.2 (w zależności od wariantu różne zestawy: PCIe, SATA, USB, DisplayPort, PCM/I²S, I²C/SMBus, SIM), SATA Express (SATA + PCIe), eSATAp (SATA + USB), ExpressCard (PCIe + USB), Thunderbolt (PCIe / DisplayPort).

Kontrolery poszczególnych interfejsów pamięci masowych, interfejsów zewnętrznych, a także inne układy (kontrolery macierzy dyskowych RAID, dźwiękowe, karty sieciowe, karty graficzne, ...) mogą być w postaci osobnych modułów (kart rozszerzeń) lub mogą być zintegrowane z płytą główną. W tym drugim przypadku często przynajmniej część ich funkcjonalności zawarta jest w mostku południowym, jednak mogą też być umieszczone w postaci osobnych układów podłączonych do jakiejś szyny obsługiwanej przez któryś z mostków lub procesor, albo nawet zintegrowane z procesorem (jak ma to niekiedy miejsce w przypadku GPU). Praktycznie wszystkie współczesne płyty główne posiadają zintegrowane karty sieciowe Ethernet oraz układy dźwiękowe HD (obsługujące wysokiej jakości dźwięk przestrzenny 7.1). Płyta też zawsze zawiera m.in. podstarzały już Basic Input/Output System (BIOS) lub nowszy jego zamiennik UEFI odpowiedzialny za start urządzenia, zegar czasu rzeczywistego, kontroler przerwań (informuje w rozsądny sposób - bez konieczności ciągłego odpytywania procesor o wydarzeniach w systemie - naciśnięcie klawisza, sygnały z urządzeń - np. koniec jakiejś operacji ...)

Zobacz w Sieci: Komputer i Sieci na Wydziale Fizyki UW (archive.org), Hardware Bookkopia lokalna, AV info, Podstawowe komponenty komputera.

Inne elementy systemu komputerowego

Oprócz opisanych powyżej fundamentalnych składników systemu komputerowego oraz najistotniejszych interfejsów w skład systemu wchodzą inne urządzenia takie jak:

Uwagi końcowe

Osiągnięto chyba już osiągnięto kres podnoszenia zegara na rzecz tworzenia systemów wielordzeniowych. Standardem stała się także zgodna z x86 64-bitowa architektura procesorów opracowana przez AMD (AMD64). Istotny jest też wzrost pamięci podręcznej, która będąc znacznie szybsza od RAMu (i tak dużo szybszego od dysków twardych) przechowuje najbardziej obecnie potrzebne dane i rozkazy (do ustalenia które używane są różne rodzaje kolejek - idealnie byłoby usuwać to co najdłużej będzie niepotrzebne, ale tak się nie da - nie znamy przyszłości), tym samym przyspieszając przetwarzanie. Na rynku komputerowym jakoś nie mogą przebić się napędy blue-ray. Należy niestety stwierdzić iż obecnie brakuje naprawdę wielkopojemnych (rzędu 40% wilkości przeciętnego współczesnego dysku twardego) naśników wymiennych, co rodzi spore problemy/niedogodności przy archiwizacji danych.

Więcej bardziej konkretnych (prędkości, etc.) informacji o poszczególnych interfejsach znaleźć można np. w Wikipedii. Warto zapoznać się także m.in. z dokumentacją układu umożliwiającego konwersję sygnału VGA (składowe RGB) na sygnał Composite video lub S-Video - AD725. Zobacz także: Jack plug, Registered jack, Modular connector, Bluetooth, IrDA, S/PDIF / TOSLINK; systemy emisji sygnału telewizyjnego, IEC_169-2; Kategoria:Sprzęt_komputerowy, Kategoria:Komputery, Kategoria:Magistrale, Kategoria:Pamięci_komputerowe, Kategoria:Nośniki_danych (Kategoria:Dyski_optyczne, Kategoria:Dyski_magnetyczne).

Rozwiązania serwerowe

Komputery używane w profesjonalnych zastosowaniach pod względem koncepcyjnym często nie różnią się znacznie od zwykłych PCtów. Cechuje je jednak:

Urządzenia (komputery, szpręt sieciowy, macierze dyskowe, itd.) montowane są w szafach lub stojakach rackowych o zestandaryzowanych wymiarach (wysokość urządzeń określana jest w U, rozstaw stelaży 19" szerokość szafy 60 lub 80 cm, różne głębokości - do 120 cm).

Redundancja i Hot plugging

Wiele komponentów montowanych jest nadmiarowo - np. instalowane i podłączane są dwa niezależne zasilacze z których każdy jest w stanie zasilić cały system, podobnie z wentylatorami. Stosowane są macierze dyskowe RAID budowane z dysków wewnętrznych celem zapewnienia odporności na awarię conajmniej jednego z dysków. Niezależnie kablowane są dwa interfejsy sieciowe w celu budowy redundantnej sieci (odpornej np. na awarię jednego ze switchy). Możliwa jest wymiana zasilaczy, wentylatorów, dysków twardych, kart rozszerzeń PCIe, itd. w trakcie normalnej pracy systemu.

Zarządzanie out-of-band

Przy zarządzaniu dziesiątkami, a często nawet setkami serwerów istotne są narzędzia pozwalające robić to zdalnie (i to nie tylko jak SSH na poziomie działającego systemu operacyjnego). Większość serwerów posiada też mniej lub bardziej udane układy zarządzania out-off-band (na ogół jest to mały komputerek działający w oparciu o ARM i linux) umożliwiające dostęp do konsoli szeregowej głównego sytemu (SOL), przekierowanie konsoli graficznej, sterowanie zasilaniem serwera (zdalny restet), itd. Układ ten może używać własnego interfejsu sieciowego lub współdzielić go z głównym systemem. Podstawowe funkcjonalności takiego sposobu zarządzania standaryzuje IPMI, niestety nie starndaryzuje ono (dostępnych w bardziej zaawansowanych rozwiązaniach) KVM over IP (które z koleji na ogół nie stosuje standardowego VNC) i . Zobacz także: IPMI.

Wysoka gęstość

Wśród rozwiązań serwerowych istotne miejsce zajmują serwery kasetowe pozwalające na zwiększenie upakowania systemów komputerowych. Puszka (chassis) w której montowane są serwery oprócz zasilania i chłodzenia zapewnia im także interfejsy komunikacyjne (od tyłu umieszczane są switch lub moduły passthrough, półka zapewnia do kilku nawet różnych interfejsów dla każdego z serwerów). W niektórych przypadkach pozwala także na bezpośrednie montowanie w sobie np. macierzy dyskowych. Sam serwer kasetowy może być wyłącznie nodem obliczeniowym (bez dysku i miejsca na karty rozszereń), bądź nawet pełnoprawnym serwerem z redundantnymi dyskami hotswap i możliwością monatrzu kart rozszerzeń.

Zbliżonym do serwerów kasetowych jest rozwiązanie polegające na umieszczeniu kilku serwerów w wspólnej obudowie z backplane-m PCIe i/lub SAS zapewniającym dostęp do wspólnych modułów I/O lub dysków. W odróżnieniu od serwerów kasetowych rozwiązania te nie zapewniają wspólnego zarządzania, itp.

Pamięci masowe

Omawiając systemy serwerowe nie można pominąć także macierzy dyskowych umożliwiających umieszczanie zestawów dysków (łączonych w celu zwiększenia niezawodności oraz pojemności) w osobnych obudowach i bezpośrednie (DAS) dołączanie ich do kilku serwerów jednocześnie. Taka macierz dyskowa RAID >0 z redundantnym układem zasilania oraz kontrolera, umożliwiająca wymianę wszystkich podzespołów bez wyłączania lub restartu systemu (pełny hot plug), może być bezpośrednio podłączana do np. dwóch serwerów które mogą wzajemnie przejmować swoje funkcje.

Większe macierze mogą bezpośrednio udostępniać zasoby plikowe w ramach NAS lub zasoby blokowe w ramach SAN. Sieci te budowane są w opraciu o sieci FC, IB lub szybkie sieci Ethernet (dla dostępów blokowych protokoły: iSCSI, FCoE, dla plikowych: NFS, SMB).

Warunki środowiskowe

Ze względu na znaczne zurzycie enegii na niewielkiej przestrzeni związane z dużym upakowaniem systyemów serwerowych istotnym aspektem jest chłodzenie systemów serwerowychi. Obecnie odchodzi się od potrzeby zapewnienia do tego celu powietrza o bardzo stabilnych parametrach i dość niskiej temperaturze (kilkanaście stopni cencjusza na wlocie) na rzecz chłodzenia wysokotemperaturowego (około 25 stC na wlocie) lub nawet bezpośredniego chłodzenia wodnego. Polega ono na wprowadzaniu dość ciepłej cieczy bezpośrednio na silnie grzejące się elementy komputera celem ich schłodzenia, dzięki bezpośredniemu odbiorowi ciepła z bardzo gorących elementów takich jak procesor czy też pamięć nie ma potrzeby chłodzenia tej cieczy w inny sposób niż w suchych chłodnicach (współczesne komputery pozwalają na chłodzenie cieczą o temperaturze na wejściu do komputera powyżej 44 stC). Należy jednak pamietac iż nawet w takim wypadku konieczne jest wychłodzenie przy pomocy powietrza pozostałych komponentów komputera. Na koniec należy wspomnieć o specjalnych wykonaniach zarówno serwerów jak i komputerów przenośnych związanych z (mniej przyjaznymi od klimatyzowanej serwerowni) warunkami w których muszą pracować - np.: komputery wojskowe, rugged computer.

Wprowadzenie do systemów operacyjnych

System operacyjny jest oprogramowaniem odpowiedzialnym za zarządzanie zasobami systemu komputerowego (sprzętem, ale nie tylko) oraz uruchomionymi na nim aplikacjami. Do najistotniejszych zadań systemu operacyjnego zalicza się podział czasu procesora i szeregowanie zadań oraz zarządzanie pamięcią - w szczególności obsługa pamięci wirtualnej, najczęściej z wykorzystaniem mechanizmu stronicowania.

Oprócz tego system zajmuje się także zarządzaniem plikami, wejściem/wyjściem (najczęściej jest ono realizowane w oparciu o przerwania (IRQ), ale znane są także modele programowego we/wy polegającego na aktywnym czekaniu), obsługą urządzeń (wejście/wyjście, sterowniki, dostęp), obsługą sieci (stos protokołów sieciowych), itd. Część zadań realizowana jest z minimalnym udziałem procesora (a więc także i systemu) jest to na przykład transfer danych w trybie DMA polegający na tym iż dane kopiowane są całymi blokami bez udziału procesora do/z pamięci (system zajmuje się tylko inicjacją transmisji). Należy tu jednocześnie zaznaczyć iż w przypadku nie stosowania tej technologii dane też kopiowane są pomiędzy dyskiem a procesorem całymi blokami (minimum sektor) gdyż dysk (w odróżnieniu od pamięci operacyjnej) nie jest bezpośrednio dostępny dla procesora.

Współczesne systemy korzystają z co najmniej dwóch poziomów pracy - uprzywilejowanego poziomu "nadzorcy" w którym działa jądro systemu operacyjnego oraz trybu użytkownika (zobacz też tryb rzeczywisty i tryb chroniony). Operacje I/O muszą odbywać się w trybie uprzywilejowanym. Również pamięć posiada obszar chroniony, w którym umieszczany jest m.in. tablica wektorów przerwań (inaczej zmiana adresu w tym wektorze mogłaby doprowadzić do przejęcia systemu w trybie uprzywilejowanym).i

Procesy i szerwegowanie zadań

Istotną rolą systemu operacyjnego w zarządzaniu procesami (obok czynności administracyjnych jak ich tworzenie powielanie, usuwanie, czy też wstrzymywanie itp) jest zapewnienie ochrony pamięci (każdy proces może pisać po swojej i ewentualnie współdzielonej gdy dostał do tego prawo) oraz procesora (przerwanie zegarowe powoduje wywołanie planisty, który ustala jaki proces dostanie następny kwant czasu procesora). Niektóre systemy wyróżniają obok procesów także wątki, które różnią się od nich współdzieloną (między wątkami jednego procesu) pamięcią i zasobami (np. otwartymi plikami). System operacyjny zapewnia także zestaw usług i funkcji (wywołań) systemowych zapewniających pośrednictwo między interfejsem trybu użytkownika a sprzętem.

Istotnym zadaniem systemu operacyjnego jest przeciwdziałaniem tzw. blokadom, czyli sytuacji gdy dwa lub więcej procesów blokują się wzajemnie w oczekiwaniu na zasoby (a ma zasób X, którego potrzebuje b aby zwolnić zasób Y, którego potrzebuje a do zwolnienia X). Realizowane to może być na kilka sposobów:

Planista procesora, czyli fragment systemu odpowiedzialny za przydzielanie procesora procesom, może pracować w trybie z wywłaszczaniem lub bez. W tym pierwszym wypadku proces otrzymuje kwant czasu procesora który może wykorzystać w całości (wtedy przejdzie z stanu wykonywania w stan gotowości) lub z niego wcześniej zrezygnować (gdy np. czeka na I/O, wtedy przejdzie z stanu wykonywania w stan oczekiwania). W drugim przypadku proces wykonuje swój kod do momentu aż sam odda procesor. Forma ta zbliżona jest do wykorzystywanej w szeregowaniu czasu rzeczywistego - proces będzie wywłaszczony tylko przez proces o wyższym priorytecie i będzie to natychmiastowe (przy najbliższym przerwaniu zegarowym) - zobacz priorytety.c. Istnieje wiele algorytmów szeregowania takich jak:

Zarządzanie pamięcią

Drugą podstawową funkcją systemu operacyjnego, wspomnianą na początku, jest zarządzanie pamięcią. Zarządzanie pamięcią polega na odpowiednim mapowaniu adresów logicznych (używanych przez procesy) na adresy fizyczne (używane przez procesor), korzysta ono z wsparcia sprzętowego ze strony procesora. Jest to najczęściej realizowane w oparciu o wspomniany mechanizm stronicowania. Polega to na podziale pamięci dostępnej pamięci fizycznej na jednakowe bloki zwane ramkami oraz podziale pamięci logicznej na jednakowe bloki (o tej całej wielkości co ramki) zwane stronami. Strony które są wykorzystywane przez program są mapowane na dowolne ramki pamięci fizycznej (w przypadku gdy dana strona nie zamapowania - w zależności od okoliczności błąd braku strony lub błąd ochrony strony). Rozwiązuje to problem fragmentacji zewnętrznej, polegającej na braku spójnego obszaru pamięci o żądanej długości pomimo iż łączna ilość wolnej pamięci jest dostateczna, jednak nie rozwiązuje problemu fragmentacji wewnętrznej, polegającej na przydzielaniu zbyt dużych fragmentów pamięci dla procesu (a wręcz można powiedzieć że go pogłębia). Mechanizm ten wymaga trzymania tablicy wolnych ramek, tablicy stron dla każdego procesu (zawierającej przypisania mapowań stron danego procesu na ramki) oraz wykonywania tłumaczenia adresów logicznych (strona + przesunięcie na stronie). Także sama tablica stron procesu procesu może być stronicowania (mamy tablicę która informuje nas że przypisania stron w danym zakresie adresów są przechowywane w jakiejś ramce).

Strony i ramki mogą być współdzielone pomiędzy procesami (np. przy rozgałęzianiu procesu strony są kopiowane dopiero gdy zajdzie taka potrzeba). W przypadku braku miejsca w pamięci fizycznej wybrane strony nieaktywnego aktualnie procesu mogą być umieszczane na dysku (swap). Niekiedy może to powodować szamotanie procesu polegające na zbyt dużej liczbie wymian stron. Zawsze jednak prowadzi to do konieczności ustalania które strony najlepiej jest przenieść na dysk. Optymalne byłoby przenoszenie tych które najdłużej nie będą potrzebne (jednak z oczywistych względów jet to praktycznie nie do zrealizowania). Stosuje się różne algorytmy tego wyboru:

Alternatywną (i mniej wymagającą) wobec stronicowanie metodą zarządzania pamięcią jest segmentacja. W przypadku architektury x86 jest ona zawsze wykorzystywana jednak może być przykryta dużym segmentem na którym wykorzystujemy stronicowaniem. Wspomniany już mechanizm pamięci wirtualnej często rozumiany jest tylko jako stronicowaniem (lub segmentacja) na żądanie. Polega to na tym iż strony mapowane są na ramki dopiero w momencie zapisu do segmentu pamięci należącego do

Zobacz w Sieci: Kurs Pisania OS, Intel 8259, Input/Output Base Address.



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/digital/computers) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2015-10-10 12:17:17 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).