W pierwszej części przedstawimy kolejno: budowę komputera, funkcjonalny model działania komputera, budowę i zadania systemu operacyjnego. Omówimy budowę sieci komputerowej, przedstawimy zalety i metody łączenia komputerów ze sobą. Osobny rozdział poświęciliśmy Internetowi — sieci globalnej, składającej się z wielu mniejszych sieci i łączących komputery na całej Ziemi. Część I kończy rozdział poświęcony prawu i netykiecie (etykiecie internautów).
Pierwszym elektronicznym komputerem był zbudowany przez Johna W. Mauchly w 1945 roku ENIAC. Było to prawdziwe monstrum o wadze 30 ton. Do budowy ENIAC-a użyto około 18 000 lamp elektronowych i dziesiątki tysięcy innych elementów. Podczas pracy pobierał ponad 150 kW mocy, tyle co 1 000 współczesnych komputerów klasy PC. Moc obliczeniowa maszyny wynosiła około 0,2 ms przy dodawaniu (5 000 operacji na sekundę ) — podczas wykonywania bardziej złożonych obliczeń znacznie spadała. Moc obliczeniowa współczesnych komputerów jest co najmniej tysiące razy większa. Porównując pobór prądu przez ENIAC-a i jego możliwości obliczeniowe, można powiedzieć, że nasze domowe komputery PC są prawie milion razy sprawniejsze. Oznacza to, że w przeciągu półwiecza sprawność komputerów wzrosła milion razy. Nie ma innej tak dynamicznej dyscypliny nauki i gospodarki w historii rozwoju ludzkości jak informatyka.
ENIAC pracował w systemie dziesiętnym, co znacznie ograniczało jego możliwości. Po modernizacji w1947 roku według zaleceń von Neumanna, komputer pracował na potrzeby armii amerykańskiej. W październiku 1955 roku maszyna została definitywnie wyłączona. Obecnie niektóre podzespoły ENIAC-a można zobaczyć w Smithsonian Institute w Waszyngtonie. Następnym ważnym krokiem w rozwoju informatyki było wynalezienie w 1947r. tranzystora (John Bardeen, Walter Bratain i Willian Shockley).
Wynalezienie tranzystora i zastosowanie go do budowy komputerów znacznie zmniejszyło rozmiary konstruowanych maszyn i zdecydowanie obniżyło moc pobieranego prądu podczas ich pracy. Ciągle udoskonalana technologia wytwarzania tranzystorów umożliwiła ich masową produkcję, co spowodowało obniżenie kosztów. Komputery stawały się coraz bardziej dostępne. Należy jednak pamiętać, że postęp w komputeryzacji to nie tylko rozwój elektroniki, ale również rozwiązania systemowe. John von Neumann w 1948r. przedstawił nową koncepcję struktury komputera – znacznie różniącą się od ENIAC-a. Pomysł von Neumanna polegał na prostym, choć niezwykle skutecznym rozwiązaniu. Umieścił on program i dane do programu we wspólnej pamięci. Rozwiązanie to, chociaż dzisiaj wydaje się oczywiste, w tamtych czasach było prawdziwie rewolucyjne. Pozwoliło znacznie zwiększyć prędkości obliczeniowe komputerów. Nie wszystko jednak wyglądało tak różowo. Największy problem w ówczesnych czasach mieli konstruktorzy z pamięcią operacyjną budowanych przez siebie maszyn. W pamięci tej miał być przechowywany aktualnie wykonywany program i dane do przetworzenia. Problem ten udało się rozwiązać stosując pamięć magnetyczną, wykorzystując jako nośniki ferrytowe rdzenie. Umożliwiło to firmie IBM zbudowanie komputera IBM 701.
Pierwsze sygnały o możliwościach szybkiego postępu w miniaturyzacji komputerów związane były z zastosowaniem półprzewodników. Tranzystory zaczęły więc wypierać lampy elektronowe. Diody półprzewodnikowe zastąpiły diody lampowe, a więc rozmiary maszyn liczących zmniejszyły się wielokrotnie. Jednakże ciągle komputer był urządzeniem dużym i niezmiernie skomplikowanym w obsłudze. Na szczęście technologia półprzewodników okazała się wyjątkowo sprzyjać rozwojowi komputeryzacji. Zamiast łączyć ze sobą poszczególne elementy półprzewodnikowe na specjalnych płytkach (płytki drukowane), wykorzystano monokryształy krzemu (stosunkowo duże monokryształy jednorodnego półprzewodnika) do produkcji złożonych struktur elektronicznych, składających się z wielu tysięcy półprzewodnikowych elementów. Tak powstał układ scalony. Pierwszą firmą, która zastosowała nową technologię do produkcji komputerów, była amerykańska firma Texas Instrument. W 1961r. wyprodukowała komputer na potrzeby armii. Technologia układów scalonych otworzyła drogę do produkcji stosunkowo tanich , specjalistycznych modułów półprzewodnikowych, za pomocą których można było budować skomplikowane urządzenia elektroniczne znacznie prościej niż w przypadku tranzystorów. Układ scalony, który został zaprojektowany jako podstawowa jednostka obliczeniowa komputera, nazwano procesorem lub mikroprocesorem. W roku 1971 na rynku pojawił się procesor 4004 zawierający 2500 tranzystorów upakowanych w objętość pudełka od zapałek. Od tej pory rozpoczął się prawdziwy wyścig na rynku procesorów.
Dziesięć lat później, w 1981 roku, IBM zaprezentował pierwszy komputer IBM PC — komputer osobisty z systemem operacyjnym MS DOS 1.0.
Współczesne komputery PC składają się z trzech podstawowych elementów:
jednostki centralnej umieszczonej w specjalnej obudowie
niezbędnych do pracy z komputerem: monitora i klawiatury
dodatkowych urządzeń peryferyjnych podłączanych do jednostki centralnej
Najważniejszym elementem współczesnego komputera jest mikroprocesor. Łatwo go znaleźć na płycie głównej, gdyż cechuje się sporymi rozmiarami (w stosunku do innych elementów) oraz najczęściej jest zaopatrzony w duży radiator z tzw. coolerem (wiatraczkiem, który go chłodzi). Mimo, iż jest to jeden układ scalony, jego wewnętrzna struktura jest bardzo skomplikowana. Mikroprocesor posiada tzw. listę rozkazów — przez analogię do języka, którym posługują się ludzie można powiedzieć, że lista rozkazów to słownik wyrazów, które rozumie procesor. Z tych słów — rozkazów można zbudować dowolny program. Język mikroprocesora nazywamy językiem maszynowym, a jego bardziej zrozumiały dla ludzi zapis to asembler.
Niezależnie od producenta i typu, każdy procesor składa się z kilku podstawowych elementów:
jednostki sterującej, której zadaniem jest wykonywanie instrukcji programu i sterowanie przepływem danych
jednostki arytmetyczno logicznej (ALU – ang. Arithmetic logic unit), która zajmuje się realizowaniem prostych operacji matematycznych (dodawaniem i odejmowaniem liczb całkowitych) oraz porównywaniem prostych formatów danych
zestawu rejestrów, które przechowują dane do których wymagany jest bardzo szybki dostęp
interfejsów magistrali zapewniających łączność procesora ze światem zewnętrznym.
Procesor może dodatkowo zawierać pewne dodatkowe elementy:
pamięć cache, w której przechowywane są poprzednie i następne instrukcje, które wykona jednostka sterująca oraz najczęściej używane przez program dane. Pamięć cache dzielimy na cache rozkazów i cache danych. Zwykle mają one rozmiar 32 — 512 KB. Pamięć ta znacznie przyśpiesza działanie programów (łatwo się o tym przekonać poprzez jej wyłączenie – można to uzyskać wybierając w BIOS-ie komputera odpowiednią opcję). Wykorzystuje się tu fakt, że większość programów składa się z cyklicznie wykonywanych stosunkowo niewielkich procedur operujących na niewielkiej ilości danych. Dzięki temu wystarczy raz przesłać do procesora potrzebne informacje z wolnej pamięci zewnętrznej (znajdującej się na płycie głównej), następnie jednostka sterująca pobiera potrzebne dane z bardzo szybkiej pamięci cache. Pamięć ta może znajdować się zarówno w procesorze jak i na płycie głównej. Wyróżniamy różne poziomy pamięci cache: L1, L2 i L3. Obecnie praktycznie wykorzystywane są poziomy L1 i L2.
Elementy sterujące poborem mocy procesora. Umożliwiają one wyłączenie części niepotrzebnych układów i spowolnienie zegara procesora, co zmniejsza pobór prądu. Jest to szczególnie ważne w notebookach dzięki czemu można znacznie przedłużyć czas działania komputera bez ładowania baterii.
Szczególnym rodzajem procesora są tzw. mikroprocesory jednoukładowe. Oprócz wymienionych powyżej elementów zawierają one dodatkowo pamięć RAM i ROM z zapisanym programem oraz porty wejścia-wyjścia. Stanowią one jakby kompletny komputer, który może sterować innymi urządzeniami. Najbliższy mikroprocesor jednoukładowy znajduje się ... 2 cm pod twoimi palcami. Klawiatura to w rzeczywistości kompletny mikrokomputer zajmujący się przetwarzaniem sygnałów powstających przy naciskaniu klawiszy na odpowiednie kody, które są następnie transmitowane do właściwego komputera. Oprócz klawiatury mikroprocesory układowe są stosowane do sterowania różnymi urządzeniami w przemyśle oraz w sprzęcie AGD (kuchenki mikrofalowe, pralki, itd.).
W ostatnich latach szeroko rozpowszechniły się tzw. procesory sygnałowe DSP (ang. Digital Signal Processing). Są one podobne do mikroprocesorów jednoukładowych z bardzo uproszczoną listą rozkazów, dodatkowo zawierają przetwornik analogowo-cyfrowy i cyfrowo-analogowy. Dzięki temu mogą pobierać z zewnątrz jakiś analogowy sygnał, który po przetworzeniu na postać cyfrową jest przekształcany przez program mikroprocesora. Następnie jest z powrotem konwertowany na postać analogową. Procesory DSP znajdują zastosowanie w modemach, odtwarzaczach CD i różnych urządzeniach pomiarowych.
Poniżej opiszemy budowę i działanie procesora.
Wydawać by się mogło, że język maszynowy (i jego symboliczny zapis — asembler) jest najprostszym językiem, którym posługuje się mikroprocesor. W rzeczywistości jest on pewnym rodzajem języka interpretowanego, którego interpreter zapisany jest w tzw. mikrokodzie zawartym w pamięci ROM mikroprocesora. Mikrokod składa się z instrukcji bezpośrednio sterujących różnymi cyfrowymi sygnałami w mikroprocesorze. Nie jest on dostępny dla użytkownika, jest umieszczany w mikroprocesorze podczas jego produkcji1.
Szybkość działania mikroprocesora zależna jest oprócz jego budowy od sprawności mikrokodu. Im więcej „rozumie” on instrukcji tym łatwiej pisać skomplikowane programy w języku asemblera. Z drugiej strony taki nadmiar niepotrzebnych instrukcji, które można zastąpić sekwencjami kolejno wykonywanych prostszych poleceń znacznie zwalnia prędkość interpretacji przez mikrokod. Stało się to podstawą podziału procesorów na dwa podstawowe typy:
procesory RISC (ang. Reduced Instruction Set Computer)
oraz procesory CISC (ang. Complex Instruction Set Computer).
Procesory CISC realizują setki instrukcji, dzięki czemu znacznie łatwiej napisać na nie oprogramowanie. Przykładami tego typu procesorów są procesory Intel Pentium, AMD Athlon, Duron itd. Procesory RISC (np. SPARC, MIPS) realizują kilkadziesiąt podstawowych instrukcji. Dzięki temu działają one znacznie szybciej, chociaż są bardziej kłopotliwe w programowaniu. Niektóre mikroprocesory RISC nie zawierają mikrokodu, a rozkazy są bezpośrednio interpretowane przez logikę procesora.
Tak naprawdę wspomniane procesory Pentium są procesorami RISC, których program emuluje skomplikowaną listę rozkazów procesorów CISC. Umożliwia to zwiększenie szybkości działania procesora, jednocześnie udostępniając zaawansowaną listę rozkazów ułatwiajacą programowanie.
Cechą współczesnych procesorów jest tzw. przetwarzanie potokowe. Ponieważ procesor składa się z kilku niezależnych układów, pewne instrukcje mogą być wykonywane równolegle. Kiedy instrukcja zostanie zdekodowana przez układ kontrolny procesora jej dalszą realizacją zajmuje się inny moduł. W tym czasie jednostka sterująca jest wolna, dzięki przetwarzaniu potokowemu może ona w międzyczasie zająć się interpretacją kolejnej instrukcji. Podobnie w celu zwiększenia mocy obliczeniowej można powielić jednostki ALU. Ponieważ większość operacji matematycznych można przeprowadzać równolegle, w efekcie proces ten zwiększa liniowo moc obliczeniową procesora. Pewnym wyjątkiem są instrukcje warunkowe i skoki. Ponieważ w tym przypadku wykonywanie kolejnych instrukcji zależne jest od wyniku poprzedniej operacji, ich wykonanie jest wstrzymywane do czasu zakończenia realizacji instrukcji warunkowej.
Ponieważ instrukcje warunkowe i skoki stanowią ok. 30% instrukcji programu, aby przyśpieszyć działanie po natrafieniu na takie instrukcje procesor realizuje program tak jakby skok nie miał nastąpić. W momencie kiedy to założenie staje się prawdziwe, kolejnych kilka instrukcji jest już wykonywanych nie generując żadnego opóźnienia. W przypadku konieczności wykonania skoku ich rezultaty są po prostu anulowane, a interpretacja instrukcji odbywa się od początku w nowym miejscu. W niektórych procesorach po natrafieniu na instrukcję warunkową mikroprocesor równolegle realizuje obydwie alternatywy. Wynik operacji porównania decyduje, która alternatywa staje się obowiązującą. Oczywiście ten algorytm znacznie komplikuje budowę procesora, ale dzięki temu szybkość realizacji programu wzrasta wielokrotnie.
W każdym przypadku szybkość procesora jest ograniczana poprzez konieczność pobierania i kolejnego wykonywania instrukcji. Ograniczenie to znane jest jako wąskie gardło von Neumanna. Alternatywą do zwiększania szybkości działania procesora jest łączenie razem wielu procesorów i tworzenie tzw. komputerów równoległych. Ich moc obliczeniowa w pewnych zastosowaniach jest sumą mocy poszczególnych procesorów. Wiele zjawisk fizycznych może być interpretowanych równolegle, np. proces interpretacji obrazu nie wymaga szeregowej analizy poszczególnych pikseli. Tak więc jeśli zastosujemy wiele procesorów, to taka analiza zostanie zakończona o wiele szybciej. Prostszym przykładem może być obliczanie iloczynu kilku zmiennych: y=a1*a2*a3*a4. Jeśli mamy do dyspozycji jeden procesor, to musimy kolejno wykonać 3 mnożenia. W przypadku maszyny dwuprocesorowej wykonujemy co prawda nadal 3 mnożenia, ale dwa z nich możemy wykonywać wównolegle. W pierwszym etapie jednocześnie obliczamy iloczyny b1=a1*a2 i b2=a3*a4, w drugim etapie wykonujemy jedno mnożenie wyników pośrednich b1*b2 uzyskując wynik. W efekcie to samo równanie zostało obliczone o 1/3 szybciej. Jedyną wadą komputerów wieloprocesorowych jest trudność pisania oprogramowania, które mogłoby wykorzystywać ich możliwości.
Po tych kilku generalnych uwagach postaramy się opisać bardziej konkretną realizację mikroprocesora. Każdy procesor zawiera pewien zestaw rejestrów — odpowiedników zmiennych w językach wyższego poziomu. Rejestry służą do przechowywania i manipulacji danymi, przy czym nie rozróżniają ich typów. Każda wartość w rejestrze procesora jest po prostu ciągiem bitów. Ich interpretacja zależna jest od programisty. Oczywiście same rejestry nie wystarczą do prawidłowej realizacji programu. Do poprawnej pracy potrzebne są pewne specjalne typy rejestrów — tzw. rejestry sterujące. Przechowują one informacje dotyczące stanu procesora, adres wykonywanej instrukcji oraz adresy pewnych struktur o specjalnym znaczeniu. Przykładami takich rejestrów jest rejestr FLAGS zawierający znaczniki związane z ostatnio wykonywanymi instrukcjami. Np. po operacji porównania dwóch liczb na podstawie jego stanu można stwierdzić, jakie były wyniki porównania. Kolejnym rejestrem jest rejestr PC (ang. Program Counter) zawierający adres następnej do wykonania instrukcji. Specjalnym rejestrem jest rejestr stosu SP (ang. Stack Pointer). Stos jest strukturą, w której procesor przechowuje różne dane, np. dotyczące adresów podprogramów.
Przedstawiony zestaw rejestrów występuje w każdym procesorze, oprócz niego istnieją także tzw. rejestry danych i adresowe, ale ich omawianie daleko wykracza poza ramy tej książki. Dla uświadomienia sobie, jak w rzeczywistości wygląda praktyczna implementacja przedstawionego powyżej opisu procesora, podajemy schemat bokowy procesora firmy AMD Athlona.
Rys 1.1 schemat bokowy procesora Athlon |
---|
Opisany powyżej zestaw rejestrów wraz z interpretowanymi przez procesor instrukcjami jest wystarczający do realizacji praktycznie każdego zadania. Jednakże dla efektywnego działania procesor musi komunikować się ze światem zewnętrznym, chociażby dla wymiany informacji, wysłania wyników itd. W pierwszych komputerach systemy sprzęgające procesor z pozostałymi elementami komputera były niezwykle proste, ich działanie ograniczało się tylko do prostych elementów sterujących np. dostępem do pamięci. We współczesnych komputerach np. klasy PC za połączenie procesora z resztą odpowiadają wyspecjalizowane układy realizujące funkcje stopniem złożoności podobne do tych jakie realizuje sam procesor.
Funkcją kontrolera systemu jest sterowanie współpracą pomiędzy różnymi urządzeniami (zobacz rysunek 1.2). Przepływem informacji pomiędzy procesorem, pamięcią i tzw. kartami rozszerzeń steruje układ o enigmatycznej nazwie most północny (ang. North bridge). Oprócz przesyłania danych zajmuje się on sterowaniem magistralami PCI i AGP.
Rys 1.2 Zadaniem kontrolera systemu jest koordynacja pracy różnych modułów |
---|
Drugi sterownik to tzw. most południowy (ang. South bridge) zawierający porty szeregowe, równoległe, USB, interfejs do komunikacji z szyną ISA oraz sterowniki twardego dysku i dyskietek. Po otwarciu obudowy swojego komputera powinieneś zabaczyć coś, co przypomina rysunek 1.3. Jako ćwiczenie możesz spróbować odnaleźć w swoim komputerze wszystkie elementy, o których mówiliśmy w tym rozdziale.
Rys 1.3 Rozmieszczenie modułów na płycie głównej |
---|
Do magistrali ISA można podłączyć zarówno 8., jaki i 16. bitowe karty. Karty 8. bitowe wykorzystują pierwsze 62 styki magistrali2, karty 16. bitowe — wszystkie 96 styków. Magistrala ISA była podstawową magistralą komputerów od modelu XT do 486. Dzisiaj coraz mniej urządzeń wykorzystuje tę magistralę, a co za tym idzie coraz częściej nowe modele płyt głównych nie posiadają — lub posiadają tylko jedną — magistralę ISA. Odczyt i zapis danych może odbywać się w jednym z poniższych trybów:
tryb DMA
pojedyńczy tryb wymiany
tryb wymiany na żądanie
blokowy tryb wymiany
Dla celów wyłącznie poglądowych poniżej krótko opiszemy ostatni z wymienionych trybów:
Wymiana danych sterowana jest przez dwa kaskadowo połączone kontrolery DMA (DMAC). Urządzenie DMA zgłasza żądanie wymiany danych poprzez ustawienie "stanu wysokiego" na właściwej linii DRQ (DMA request) magistrali. Kontroler DMAC odpowiada ustawiając na linii AEN (Adress enable) stan wysoki i potwierdza przyjęcie żądania przy użyciu linii DACK (DMA acknowledge). Oznacza to przejęcie kontroli nad magistralą przez urządzenie DMA. Odpowiadając na sygnał DACK dezaktywuje ono sygnał DRQ. Kontroler DMAC umieszcza adres dla transmisji DMA na magistrali adresowej. Rozpoczyna się cykliczna wymiana danych pomiędzy urządzeniem a pamięcią operacyjną komputera. Kiedy wymiana zostanie zakończona kontroler DMAC generuje sygnał T/C (Transmission complet).
Magistrala PCI została zaprojektowana przez firmę Intel. W porównaniu z magistralą ISA cechuje ją duża szybkość pracy i ścisłe dopasowanie do budowy procesora. Maksymalna przepustowość magistrali PCI wynosi 528 MB/s3. Co ciekawe, minimalny transfer poprzez magistrale wynosi 0 Bps — magistrala PCI może działać tak wolno, jak wymaga tego najwolniejsze urządzenie. PCI jest obowiązującym standardem dla producentów sprzętu komputerowego, co oznacza, że urządzenia PCI wykorzystuje te same, ustalone zakresy adresów. W efekcie urządzenia PCI, inaczej niż ISA, nie powodują konfliktów sprzętowych związanych z adresowaniem. W celu zachowania kompabitylności z BIOS-em urządzenie PCI symulują rezerwacje tych samych adresów, co urządzenia ISA. Na przykład karta grafiki PCI VGA nadal sygnalizuje, że jest obecna pod adresem 3C0, rezerwuje obszar transferu danych od adresu A000 do BFFF i używa zakresu adresów BIOS-a od C00 do C7FF. Kolejnym atutem magistrali PCI jest pełna obsługa przez urządzenia PCI standardu plug and play. Konfiguracja urządzeń PCI jest w pełni zautomatyzowana. Adresy i przerwania są przypisywane według fizycznego rozmieszczenia kart na płycie głównej. BIOS nie dopuszcza do błędnego — wywołującego konflikty — skonfigurowania urządzeń PCI.
Szybki port grafiki (ang. Accelerated Graphics Port, AGP) zaprojektowany został jako uzupełnienie — a nie jako następca — magistrali PCI. Udostępnienie karcie grafiki dowolnej ilości pamięci operacyjnej plus bezpośredni transfer danych poprzez niezależną szynę graficzną zaowocowały prawdziwym przełomem w grafice trójwymiarowej. Przykładem wykorzystania możliwości magistrali AGP jest opracowana przez Intel-a technologia DIME (ang. Direct memory execute). Magistrala AGP może pracować w jednym z czterech "stopni przepustowości":
AGP *1 — urzędzenie pracuje z częstotliwością taktowania magistrali, to znaczy z częstotliowością 66 MHz
AGP *2 — transfer danych pomiędzy urządzeniem a pamięcią wywołuje nie tylko narastające, ale również opadające zbocze sygnału zegara 66 MHz. W efekcie dane prezsyłane są potokowo, z przepustowością 528 MB/s
AGP *4 — częstotliwośc taktowania magistrali została zwiększona do 100 MHz. Dzięki dodatkowej demultipleksacji adresów i danych maksymalna przepustowość magistrali wynosi ok. 1 GBps.
System operacyjny, uruchomione programy i przetwarzane dane przechowywane są w pamięci operacyjnej komputera. Jednym z głównych powodów takiego rozwiązania jest wielokrotne przyspieszenie pracy — średni czas dostępu pamięci operacyjnej jest około 1 000 razy krótszy niż czas dostępu do tych samych danych przechowywanych na dysku twardym. Aby zorganizować poszczególne komórki pamięci w sprawnie funkcjonujący układ trzeba je zaadresować.
Najprostszym sposobem zorganizowania pamięci jest jej liniowa organizacacja. Ten sposób określany jest adresowaniem 2D. Do każdej komórki pamięci "podłączone jest" wejście, sygnał wybierania oraz wyjście.
Adresowanie przy użyciu matrycy 3D polega na podziale pamięci na wiersze i kolumny. Dostęp do pojedyńczej komórki możliwy jest poprzez podanie numeru wiersza i kolumny. Do każdej komórki pamięci, oprócz sygnałów wejścia i wyjścia muszą zostać podłączone dwa sygnały wybierania — jeden dla numerów wierszy, drugi dla numerów kolumn.
W zależności od nadanego adresu, komórki pamięci dzielą się na trzy obszary4:
pamięć konwencjonalną lub pamięć DOS, zawierającą "niski" obszar pamięci — komórki o adresach od 0:0000-95 do FFFF oraz od 0:000-0 do A00)
pamięć "górną", zawierającą bloki UMB (ang. Upper memory blocks), pamięć stronocowaną oraz adresy zarezerwowane dla BIOS-u — komórki o adresach od A:000F do FFFF, od E:0000 do E:FFFF, od C:0000-C do C:FFFF
pamięć rozszerzoną (ang. Expand), zawierającą pamięć "wysoką" (ang. HMA — High memory area — komórki o adresach powyżej 10:0000
Pamięć RAM (ang. Random memory access) w latach 80. występowała w 16, 64, lub 1 024 kilobajtowych modułach zawierających 9 lub więcej chipów. Komputery serii 486 współpracowały z 30-pinowymi modułami pamięci SIMM (ang. Single inline memory modules). Komputery klasy Pentium współpracowały z jednym z trzech typów 72-pinowych modułów SIMM: pamięciami Fast Page, EDO lub SDRAM . Pamięci SIMM cechował średni czas dostępu od 70 do 50 ns. Obecnie wykorzystuje się pamięci DIMM (ang. Dual inline memory modules). Podstawową zaletę tych pamięci jest mozliwość pracy zgodnie z taktem zegara systemowego, dzięki czemu średni czas dostępu wynosi 10 ns (dla magistrali systemowej pracującej z częstotliwością 100 MHz), lub 8 ns (dla magistrali systemowej taktowanej czestotliowścią 133 MHz).
Pamięć ROM (ang. Read only memory) jest specjanym modułem zawierającym program inicjujący komputer oraz parametry urządzeń nie obsługiwanych przez BIOS6. Pamięci typu FLASH mogą być wielokrotnie zapisywane bez fizycznego wymontowywania z płyty głównej.
Urządzenia wejścia/wyjścia (ang. input/output system) zapewniają łączność komputera ze światem zewnętrznym. Dwa podstawowe to klawiatura i mysz. W nowoczesnych komputerach są one podłączne przez porty PS/2 (nazwa pochodzi od archaicznej w chwili obecnej konstrukcji komputera wprowadzonej wiele lat temu przez firmę IBM). W starszych komputerach mysz podłączana jest przez porty szeregowe (RS232C), a klawiatura przez specjalny port klawiatury.
Obecnie praktycznie wszystkie powszechnie wykorzystywane urządzenia I/O są zintegrowane z płytą główną (rys. 1.4).
Należą do nich:
port do podłączenia stacji dyskietek (FDD, ang. Floppy disc drive)
dwa porty do podłączenia max. czterech dysków twardych (HDD, ang. Hard disc drive)
dwa porty szeregowe RS232C przez które można podłączyć min. modem lub myszkę
port równoległy, poprzez który zwykle jest podłączana drukarka, czasami skaner lub zewnętrzne napędy dysków, np. ZIP.
port podczerwieni IrDA — aby móc z niego skorzystać, należy się zaopatrzyć w tzw. przetwornik podczerwieni, urządzenie kosztujące kilkadziesiąt złotych, przetwarzające sygnały elektryczne na impulsy światła podczerwonego. Port taki wykorzystywany jest zwykle do łączności z notebookami, palmtopami, a ostatnio także z telefonami komórkowymi.
opcjonalnie ma płycie mogą znajdować się gniazda Line-in, Line-out i Mic służące do podłączenia głośników, mikrofonu, oraz port do podłączenia joysticka lub urządzeń pracujących w standardzie MIDI (np. keyboardy).
dwa lub cztery porty USB (ang. Uniwersal Serial Bus – uniwersalna magistrala szeregowa). Można poprzez nie podłączyć wiele różnych urządzeń m.in. drukarki, skanery, klawiaturę, joysticki itd.
Rys 1.4 Zewnętrzne wyprowadzenia portów |
---|
Dolne wyprowadzenie portu PS/2 przeznaczone jest do podłączania klawiatura za pomoca 6. pinowej wtyczki. Klawiatury starego typu, wyposażone we wtyczkę DIN można podłączyć poprzez przejściówkę DIN - PS/2
Górne wyprowadzenie portu PS/2 przeznaczone jest do podłączania myszy za pomocą 6. pinowej wtyczki.
Port USB powstał jako uniwersalny standard mający zastąpić różnorodne porty komputera jednym, do którego można podłączyć wszystkie urzadzenia — od myszki i klawiatury, poprzez skaner i drukarke, do pamięci masowych i kart sieciowych. Główną zaleta USB jest prostota konstrukcji i łatwość obsługi. Prawie każde urządzenie USB można w dowolnym momencie podłączyć lub odłączyć, bez konieczności restartowania systemu operacyjnego.
Strukturę USB przedstawia pokazana na rys 1.5, siedmiowarstwowa piramida.
Rys 1.5 Struktura urządzeń USB |
---|
Każde urządzenie posiadające wbudowany hub liczone jest jako hub, a nie jako urządzenie.
USB jest szeregowym interfejsem wykorzystującym do komunikacji kabel czterożyłowy. Transmisja odbywa się poprzez polling, tzn. że w danej chwili tylko jedno urządzenie nadaje lub odbiera dane. Pozostałe urządzenia w tym czasie buforują dane gotowe do wysłania. Urządzenia USB mogą pracować w jednym z trzech typów transmisji:
tryb stram-pipes. W tym trybie dane są dzielona na małe, odbierane raz na jednostkę czasu pakiety po 8,16,32 lub 64 bajty. Tryb ten wykorzystują takie urządzenia jak myszka i klawiatura.
tryb bulk. W tym trybie nieregularnie przesyłane są duże ilości danych.
tryb izochroniczny. W tym trybie USB gwarantuje zarówno dostępność pasma jak i regularność przesyłania danych. Tryb ten wykorzystują głównie urządzenia mutlimedialne.
Porty szeregowe COM1 i COM2 przeznaczone są do podłączania modemów, zdalnych terminali, myszki czy komunikacji pomiędzy komputerami. Przesyłanie danych może odbywać się w trybie synchronicznym lub asynchronicznym, a transmisja może być jednokierunkowa (simpleks), odbywać się na zmianę w obu kierunkach (half - dupleks), lub przebiegać jednocześnie w dwóch kierunkach (dupleks).
Port równoległy LPT1 przeznaczony jest do podłączania drukarki, skanera lub łączenia ze sobą dwóch komputerów. Dane przesyłane są w sposób równoległy, tzn. kilka bitów przesyłanych jest jednocześnie.
Monitor to następny ważny element zestawu komputerowego. To na nim wyświetlane są informacje przetworzone przez mikroprocesor. Monitor podłączony jest do karty graficznej znajdującej się w jednostce centralnej.
Monitory monochromatyczne używają jednej barwy. Najczęściej spotykane są monitory czarno-białe, bursztynowe i zielone. Regulując stopień nasycenia barwy, można przedstawić na ekranie złożony obiekt
Monitory kolorowe są obecnie najczęściej używane
Monitor ciekłokrystaliczny wykorzystuje specjalną technologię opartą na zastosowaniu ciekłych kryształów. Dzięki temu monitory te mogą być bardzo płaskie i energooszczędne
Parametry techniczne monitorów związane są z takimi wielkościami jak mierzona w calach przekątna ekranu, rozdzielczość (minimalny rozmiar plamki), częstotliwość odtwarzania obrazu.
Każdy obraz wyświetlony na monitorze składa się z punktów. Odległość pomiędzy środkami sąsiednich punktów nazywa się wielkością plamki. Wielkość plamki zawiera się w przedziale pomiędzy 0,22 a 0,52 mm. Szukaj monitorów o plamce 0,24 mm lub mniejszej.
Częstotliwość odświeżania określa, ile razy na sekundę obraz może zostać odświeżony. Im jest ona wyższa, tym obraz mniej „migocze”. Ustawieniem domyślnym dla większości monitorów jest 60 Hz. Jeżeli jednak nie chcesz męczyć oczu migotaniem obrazu, powinieneś ustawić tę częstotliwość na 75 lub 85 Hz.
Klawiatura komputera jest podstawowym elementem jego budowy. Służy do wprowadzania danych przez użytkownika. Klawiatura komputerów PC zawiera ponad 100 klawiszy, które ułożone są w grupy funkcyjne. Najczęściej stosowanym standardem jest QWERTY.
Pamięci masowe umożliwiają trwałe przechowywanie dużych ilości danych. W przeciwieństwie do pamięci RAM ich zawartość nie ulega skasowaniu po wyłączeniu zasilania.
Pierwotnie jako pamięci masowe wykorzystywano pamięci taśmowe i tzw. streamery. Oferowały one dużą pojemność i bezpieczeństwo przechowywanych danych, jednak ich dużą wadą jest bardzo długi czas dostępu. Aby odczytać interesujący nas plik trzeba przeglądnąć wszystkie dane zapisane przed nim, co może zająć sporo czasu.
W komputerach klasy PC jako pamięci masowe wykorzystuje się dyski twarde pracujące w różnorodnych standardach. Najpopularniejsze i najtańsze są dyski będące różnymi modyfikacjami technologii IDE (EIDE i UDMA). Opcjonalnie po zakupieniu odpowiedniego kontrolera do komputera można podłączyć dyski SCSI oferujące znacznie większą przepustowość i mniejsze obciążenie procesora. Poniżej wyjaśnimy, co znaczą te skróty oraz jak podłączyć komputer z dyskiem.
Szeroko wykorzystywanymi w komputerach PC dyskami są dyski IDE (ang. Integrated drive electronics). Wszystkie inne dyski są zgodne w dół z tym standardem. Oznacza to, że każdy współczesny dysk możemy podłączyć do interfejsu IDE, chociaż w ten sposób nie będziemy mogli wykorzystać wszystkich możliwości współczesnych napędów. Poważnym ograniczeniem standardu IDE jest limit pojemności dysków do około 528 Mb. Związane jest to z niemożliwością zaadresowania większej liczby sektorów dysku. Dla pokonania tego ograniczenia wprowadzono tzw. LBA (ang. Large block addressing) i nowy standard EIDE (ang. Enchanced IDE). Nowy interfejs obsługuje także ulepszone protokoły transmisji, dzięki czemu przyśpieszono transfer danych pomiędzy komputerem a twardym dyskiem.
Najnowszym dodatkiem jest tzw. tryb UDMA (ang. Ultra-DMA), dzięki któremu transfer danych z dysku następuje bezpośrednio do pamięci operacyjnej. Cały proces wymaga znacznie mniejszego zaangażowania ze strony procesora, co dodatkowo zwiększa wydajność systemu. Obecnie na rynku są dostępne trzy standardy interfejsu UDMA: UDMA-2, UDMA-4 i UDMA-5. Transmisja danych odbywa się odpowiednio z maksymalną prędkością 33, 66 i 100 Mb/s. Aby możliwe było wykorzystanie dwóch ostatnich trybów konieczne jest zastosowanie specjalnego kabelka 80-żyłowego. W przeciwnym wypadku może dojść do błędów w transmisji i w konsekwencji do uszkodzenia danych na dysku. Oczywiście oprócz odpowiedniego interfejsu w celu skorzystania z tak wysokich transmisji konieczne jest posiadanie odpowiedniego dysku twardego i pewne „wspomaganie” ze strony systemu operacyjnego. W systemie Windows 9x tryb ultra-DMA włączamy wykonując następujące operacje: Start->Ustawienia->Panel Sterowania->System->Dyski. Czasami z powodu błędów w BIOS-ie i chipsecie płyty głównej włączenie trybu UDMA może spowodować zawieszenie się komputera. W takim przypadku musimy niestety skorzystać ze starszego trybu PIO-4.
Rys 1.6 Ustawiania sterownika dysku twardego w systemie MS Windows |
---|
Podane transfery są maksymalnymi transferami pomiędzy komputerem a dyskiem twardym, podczas normalnego użytkowania uzyskiwane wartości są znacznie mniejsze.
Interfejsem rzadziej stosowanym w komputerach PC jest interfejs SCSI. Umożliwia on podłączenie maksymalnie 7 urządzeń, przy czym niekoniecznie muszą być to pamięci masowe. Poprzez SCSI można podłączyć do komputera także drukarki i skanery. Jednakże urządzenia te są znacznie droższe niż ich odpowiedniki wykorzystujące port równoległy lub USB. Główną zaletą SCSI jest uzyskiwanie wysokiego transferu danych dochodzącego do 160 MB/s oraz możliwość jednoczesnego podłączenia większej liczby urządzeń (do portu IDE można podłączyć najwyżej 2 urządzenia).
W przypadku twardych dysków i niektórych innych typów pamięci masowej (np. CD-ROM) podaje się pewne parametry umożliwiające zorientowanie się co do szybkości urządzenia. Najważniejsze z nich to : czas dostępu, czas zmiany ścieżki, maksymalny transfer danych.
Czas dostępu (ang. Access time) określa, ile czasu (w ms) urządzenie potrzebuje, aby ustawić głowicę nad wybranym sektorem. Czas ten jest powiązany z prędkością obrotową dysku i im jest ona większa, tym czas dostępu staje się krótszy:
Stała w liczniku bierze się z przeliczenia minut na ms.
Podobnie powiązany z prędkością obrotową jest transfer danych, który dodatkowo zależny jest także od gęstości upakowania bitów na jednostkę powierzchni. Dlatego im dysk ma większą pojemność tym transfer jest z reguły większy. Parametrem o dużym znaczeniu jest czas zmiany ścieżki, nad którą znajduje się głowica. Jest on szczególnie ważny w przypadku aplikacji bazodanowych, które intensywnie wykorzystują dyski w trakcie np. indeksowania bazy danych.
Pewnym specyficznym zastosowaniem dysków są tzw. macierze dyskowe RAID (ang. Redundant array of inexpensive disks). Poprzez połączenie ze sobą wielu dysków można znacznie zwiększyć pojemność, a dzięki zastosowaniu pewnych technik, także bezpieczeństwo danych przechowywanych na dyskach. Macierze RAID stosuje się zwykle w systemach komputerowych wymagających dużych pojemności oraz bardzo szybkiego dostępu do danych. Cele te są realizowane poprzez programowy lub sprzętowy układ sterujący wieloma jednocześnie pracującymi dyskami. Obecnie definiuje się 5 tzw. poziomów RAID. Określają one sposób przechowywania danych, dostępu do nich oraz stopnia bezpieczeństwa.
Związane są z tym pojęcia takie jak: mirroring i striping. Mirroring polega na łączeniu ze sobą identycznych dysków, dzięki czemu rośnie niezawodność systemu i szybkość dostępu do danych. Odczyty danych mogą odbywać się jednocześnie na kilku dyskach, dodatkowo w przypadku awarii któregoś z dysków nie dojdzie do utraty danych, gdyż są one także przechowywane na pozostałych dyskach. Wadą mirroringu jest duża utrata pojemności. Striping polega na podziale dysku na ciągłe obszary, w których zapisywane są dane. Mechanizm ten jest wykorzystywany w większości implementacji RAID.
RAID 0 wykorzystuje jednoczesny zapis i odczyt wielu dysków, co znacznie przyśpiesza operacje. Np. przy połączeniu 10 dysków o maksymalnym transferze danych 10 MB/s osiągamy transfer 100 MB/s! Pojemność macierzy RAID równa jest sumie pojemności użytych dysków. Dyski używane do implementacji RAID 0 powinny cechować się podobną pojemnością, gdyż w przeciwnym wypadku dostęp do niektórych obszarów dysku będzie znacznie wolniejszy. RAID 0 nie zwiększa bezpieczeństwa danych na dyskach, a nawet je zmniejsza! Informacje są przechowywane w postaci fragmentów jednocześnie na kilku dyskach, a w przypadku awarii któregoś z nich są praktycznie nie do odtworzenia.
RAID 1 wykorzystuje równolegle połączone dyski. Cechuje się bardzo dużym bezpieczeństwem danych, gdyż awaria nawet N-1 dysków nie powoduje utraty informacji, ponieważ każdy dysk zawiera kopię pozostałych. Do realizacji RAID 1 wymagane jest, aby wszystkie dyski miały taką samą pojemność. Wadami technologii RAID 1 sa: duża utrata pojemności (całkowita pojemność macierzy równa jest jednemu użytemu dyskowi), wolny odczyt danych (z powodu konieczności odczytania i porównania danych ze wszystkich dysków), nieznacznie zwolniony zapis danych.
RAID 4 wykorzystuje połączenie technik RAID 0 i RAID 1. Wymaga połączenia co najmniej 3 dysków. N-1 dysków działa w trybie RAID 0, natomiast jeden dysk przechowuje tzw. parzystość generowaną z dysków pozostałych. W przypadku awarii jednego dysku dane mogą zostać odtworzone na podstawie parzystości, w przypadku awarii dwóch lub więcej dysków wszystkie dane są tracone. Tryb RAID 4 jest rzadko wykorzystywany, ponieważ przy każdej operacji wymagany jest dostęp do dysku przechowującego parzystość co znacznie zwalnia szybkość całego systemu. Wszystkie dyski powinny posiadać taką samą pojemność, pojemność całego systemu wynosi (N-1)*S, gdzie S równa się pojemności najmniejszego dysku, a N liczbie dysków.
RAID 5 jest bardzo podobny do RAID 4, z tym, że parzystość jest przechowywana na każdym z dysków (nie ma wyróżnionego dysku). Powoduje to równomierne rozłożenie obciążenia pomiędzy wszystkie dyski, a co za tym idzie — znaczną poprawę wydajności.
W rozdziale tym wielokrotnie odwoływaliśmy się do takich pojęć jak sektor i ścieżka, związanych z logiczną i fizyczną strukturą dysku. Poniżej zainteresowani znajdą kilka informacji o budowie dysków i sposobach przechowywania na nich informacji.
Informacja na dyskach twardych zapisywana jest podobnie jak na taśmie magnetofonowej pod postacią zmian kierunku linii sił pola magnetycznego. Prąd elektryczny przepływający przez głowicę zapisującą indukuje w niej zmienne pole magnetyczne, które następnie zmienia orientację magnetyczną materiału znajdującego się w postaci cienkiej warstwy na krążku nośnika z tworzywa sztucznego (stąd nazwa dysk). Ponieważ głowica może przesuwać się tylko w jednej płaszczyźnie, stąd też zapis składa się z wielu koncentrycznych okręgów — ścieżek. W celu odczytania zapisanych informacji głowica odczytująca pozycjonowana jest nad interesującą nas ścieżką, a obracający się dysk wywołuje w niej zmiany pola magnetycznego. Współczesne twarde dyski zawierają głowice wykorzystujące tzw. efekt magnetorezystancyjny polegający na zmianie oporu elektrycznego substancji umieszczonej w zewnętrznym polu magnetycznym. Zmiany pola magnetycznego będą modulowały natężenie przepływającego przez głowicę prądu elektrycznego, co elektronika umieszczona na dysku następnie zamieni na postać cyfrową. Efekt ten jest całkowicie odmienny od wykorzystywanego w głowicach magnetofonów kasetowych. W magnetofonie, podobnie jak w głowicy wykorzystywanej w stacji dysków, wykorzystuje się zjawisko indukcji prądu elektrycznego w zmiennym polu magnetycznym. W przypadku umieszczenia dysku twardego lub dyskietki w silnym zewnętrznym polu magnetycznym (np. blisko kolumny lub magnesu) cały zapis ulega skasowaniu. Gęstość zapisu danych zależna jest od wielkości głowicy i zwiększa się wraz z jej miniaturyzacją. Dla zwiększenia pojemności i przyśpieszenia odczytu i zapisu danych dysk twardy może składać się z kilku dysków, tzw. talerzy. Dane na każdym talerzu są odczytywane i zapisywane przez parę głowic, stąd też liczba głowic jest dwukrotnie większa niż liczba talerzy na dysku.
Rys 1.7 Fizyczna budowa dysku twardego |
---|
Zjawiska elektromagnetyczne wykorzystuje się także w napędach dysków optycznych. Głowica zapisująca generuje odpowiednie pole magnetyczne w takt zapisywanych danych. Miejsce, gdzie zostaną one zapisane, wyznaczane jest promieniem lasera, który podgrzewa fragment nośnika magnetycznego do temperatury punktu Curie, co umożliwia zmianę orientacji magnetycznej materiału. Przemagnesowanie nie zachodzi w temperaturze pokojowej, co czyni niewrażliwym tego typu nośniki na zewnętrzne pola magnetyczne. Przy odczycie wykorzystywany jest efekt magnetooptyczny polegający na zmianie płaszczyzny polaryzacji światła spolaryzowanego poprzez domeny magnetyczne. Odpowiedni filtr polaryzacyjny powoduje, że czujnik (fotodioda lub fototranzystor) jest na zmianę oświetlany poprzez światło odbite od powierzchni dysku w efekcie czego powstaje zmienny prąd elektryczny odzwierciedlający dane zapisane na dysku.
Napędami całkowicie opartymi na optyce są napędy CD-ROM i DVD-ROM. Zasada ich działania podobna jest do zasady działania płyty gramofonowej. Na dysku w postaci koncentrycznych ścieżek wypalone są „dziury”. Promień lasera natrafiając na taką „dziurę” odbija się od niej w inny sposób, co jest rejestrowane w postaci zmiany natężenia światła. Ponieważ takie wypalanie może odbywać się tylko raz, wynika z tego, że na płytach CD nie można zmieniać istniejącego zapisu. Aby zapis był możliwy, wprowadzono pewne zmiany w płycie: dodano warstwę polaryzatora oraz zamiast warstwy metalu, w którym tłoczone są zapisane dane wprowadzono warstwę barwnika o zmiennej płaszczyźnie polaryzacji światła. Zapis na takiej płycie możliwy jest dzięki dodatkowemu laserowi zapisującemu, którego impulsy wywołują zmiany w płaszczyźnie polaryzacji światła barwnika. W efekcie nośnik zachowuje się tak, jakbyśmy „wytłoczyli” w nim informację podobnie jak w przypadku zwykłych płyt CD. W przypadku płyt DVD zapis i odczyt jest analogiczny do płyt CD z tym, że odbywa się warstwowo. Warstwy płyty DVD są analogiczne do talerzy twardego dysku. Dostęp do odpowiedniej warstwy następuje poprzez zmianę długości fali lasera. Pomiędzy warstwami znajdują się filtry pochłaniające wszystkie fale z wyjątkiem fali charakterystycznej dla danej warstwy. Umożliwia to znaczne zwiększenie pojemności płyty.
Jak widzimy pojęcie ścieżki związane jest z fizyczną realizacją konstrukcji napędów. Drugim terminem związanym z dyskami są sektory. Wyróżniamy sektory fizyczne i logiczne. Sektor fizyczny związany jest ze sposobem zapisu danych na dysku i nie zależy od systemu operacyjnego. Jest on częścią ścieżki, jedna ścieżka może zawierać do kilkuset sektorów. Zwykle w jednym sektorze fizycznym można zapisać 512 bajtów, dodatkowo zawiera on informacje umożliwiające zorientowanie się sterownikowi dysku, w jakim miejscu znajduje się głowica oraz tzw. sumy kontrolne ECC. Umożliwiają one sprawdzenie, czy w trakcie odczytu nie nastąpił błąd i czy otrzymana informacja jest prawidłowa. Błąd odczytu jest najczęściej spowodowany uszkodzeniem nośnika. Podczas formatowania takie sektory są oznaczane jako błędne (ang. Bad sectors) i nie są wykorzystywane do przechowywania informacji. Dyski twarde mają dodatkowy mechanizm usuwania uszkodzonych sektorów. Zwykle pojemność dysku jest nieco większa niż podaje producent, a ten nadmiar wykorzystywany jest właśnie do przechowywania kopii uszkodzonych sektorów. Elektronika dysku zawiera bufor umożliwiający w przypadku próby odczytu uszkodzonego dysku pobranie informacji z jego kopii umieszczonej w innym obszarze nośnika. Uszkodzone sektory są raportowane systemowi operacyjnemu i użytkownikowi dopiero w przypadku przekroczenia pojemności buforu. Dlatego też wykrycie uszkodzonych sektorów na twardym dysku sugeruje konieczność jego natychmiastowej wymiany na nowy, w przeciwnym wypadku narażamy się na ryzyko utraty danych.
Omówione powyżej ścieżki, sektory i głowice stanowią tzw. strukturę fizyczną dysku określaną przez producenta. Komputer w celu dostępu do danych posługuje się tzw. strukturą logiczną, która czasami może znacznie się różnić od struktury fizycznej.
W przypadku pamięci taśmowych dane — pliki, zapisywane są kolejno, dostęp do nich jest sekwencyjny — to znaczy, że żeby odczytać np. czwarty plik na taśmie trzeba najpierw odczytać poprzednie trzy pliki. Powoduje to znaczne opóźnienia i w efekcie wydłużenie czasu dostępu. Oczywiście na dyskach dane można by zapisywać w sposób analogiczny, jednakże ponieważ w krótkim czasie głowica może znaleźć się nad dowolnym obszarem dysku wprowadzono znacznie bardziej efektywny sposób dostępu do danych. W pierwszym etapie system operacyjny odczytuje tzw. katalog — strukturę, w której umieszczone są podstawowe dane o interesującym nas pliku (to tak jakby spis treści w książce). M.in. umieszczony jest tam adres pierwszego bloku FAT (ang. File Allocation Table) opisu położenia pliku. Cały plik podzielony jest na tzw. jednostki alokacji (sektory logiczne) — fragmenty odpowiadające jednemu wpisowi w tabeli FAT. Wynika stąd, że nawet jeśli nasz plik ma długość jednego bajta to komputer musi na niego zarezerwować całą jednostkę alokacji, czyli od 512 do 65 536 bajtów! Dlatego też wielkość jednostki alokacji jest kompromisem pomiędzy obszarem zajmowanym przez FAT (rośnie w miarę zmniejszania długości jednostki alokacji) a ilością przestrzeni na dysku, marnowanej w wyniku wydłużania jednostki alokacji. Zwykle jednostka alokacji czyli sektor logiczny ma 4 096 bajtów (4 KB). Sektor fizyczny prawie w każdym wypadku ma 512 bajtów, co jest związane ze sposobem, w jaki sterownik dysku zapisuje dane.
Tak więc FAT zawiera łańcuch opisujący położenie fragmentów pliku na dysku. Dzięki temu praktycznie bez opóźnień można uzyskać dostęp do każdego fragmentu pliku.
Przedstawiona struktura logiczna i fizyczna dysku jest praktycznie uniwersalna i z niewielkimi zmianami stosowana we wszystkich pamięciach masowych.
Mogłoby się wydawać, że rozdział ten dla osoby chcącej korzystać z komputera bez wdawania się w niepotrzebne szczegóły jest niepotrzebny. Jednakże czasami „coś jest nie tak”, komputer nie chce poprawnie się uruchomić, wydaje dziwne piski. W takich sytuacjach zastanawiamy się, co można zrobić. Niektórzy z kolei chcą wiedzieć „jak to działa” i co ważniejsze „dlaczego?”. Jeśli chciałbyś się dowiedzieć, co komputer robi od chwili włączenia zasilania do czasu uruchomienia się ulubionego systemu operacyjnego, to ten rozdział jest właśnie dla Ciebie.
BIOS (ang. Basic Input/Output System) jest pierwszym programem, który zaczyna wykonywać procesor po uruchomieniu komputera. Jest to jeden z najbardziej niezmiennych elementów komputera klasy PC. Praktycznie, w czasie ostatnich ponad 20 lat nie uległ on zmianie. BIOS obecny jest w każdym komputerze, zapewniając prawidłową inicjalizację urządzeń znajdujących się na płycie głównej, kart rozszerzeń, dysków i innych komponentów komputera, tak aby możliwy był start systemu. Oprócz tego BIOS stanowi interfejs pomiędzy systemem operacyjnym a różnymi elementami komputera, których dokładna budowa i sterowanie zależne są od producenta płyty. Dlatego też BIOS-u nie można wymieniać pomiędzy różnymi płytami. Jest to bardzo wygodne rozwiązanie, system operacyjny aby wywołać jakąś funkcję zawartą w elektronice płyty głównej zleca to BIOS-owi, nie przejmując się jak konkretnie zadanie zostanie zrealizowane.
Podstawową funkcją BIOS-u jest przeprowadzenie prawidłowego startu komputera. W tym celu znajduje się on w specjalnym rodzaju pamięci, której zawartość w przeciwieństwie do pamięci RAM nie ulega skasowaniu po wyłączeniu zasilania. W nowoczesnych komputerach BIOS jest przechowywany w pamięci EEPROM, w starszych — w pamięciach EPROM lub ROM. Różnica polega na tym, że pamięci EEPROM lub Flash można kasować i ponownie zapisywać nową zawartością, co umożliwia uaktualnienie BIOS-u. Praktycznie wszyscy producenci płyt głównych oferują na swoich stronach internetowych unowocześnienia i poprawki BIOS-u, które ukazały się już po wyprodukowaniu płyty. Generalnie jeśli w komputerze wszystko działa, to nie powinniśmy zmieniać zawartości BIOS-u, gdyż zawsze istnieje możliwość, że po przeprowadzeniu uaktualnienia komputer odmówi współpracy. Więc kiedy warto przeprogramować BIOS ? Zwykle przy każdej wersji BIOS-u producent podaje listę poprawek i zmian jakie zostały wprowadzone. Niektóre starsze BIOS-y nie obsługują różnych urządzeń, które zostały wprowadzone już po ich napisaniu. Tak jest np. z obsługą dysków twardych o dużych pojemnościach (powyżej 32GB lub powyżej 40GB). Jeśli komputer zawiesza się i nie chce wystartować po podłączeniu nowego urządzenia, to po sprawdzeniu poprawności montażu warto spróbować ostatniej deski ratunku — uaktualnienia BIOS-u.
Procesor komputera klasy PC po włączeniu zasilania lub naciśnięciu przycisku RESET rozpoczyna wykonywanie programu od adresu FFFF0h. Pod tym adresem znajduje się właśnie BIOS płyty głównej, który przeprowadza inicjalizację wszystkich komponentów komputera (pamięci, kontrolerów przerwań, kontrolerów dyskietek i twardych dysków). Testowany jest także sam procesor i pozostałe układy wejścia-wyjścia. Sprawdzana jest również tzw. suma kontrolna BIOS, będąca po prostu sumą wszystkich bajtów modulo 65 536. Te wszystkie wymienione czynności to tak zwane POST (ang. Power On Self Test). Po pomyślnym przejściu przez komputer tego etapu inicjowana jest tzw. tablica przerwań oraz struktury danych BIOS. W przypadku napotkania na tym etapie błędu BIOS sygnalizuje taki fakt poprzez serię krótkich dźwięków. Są one specyficzne dla danego producenta płyty i umożliwiają lokalizację usterki. Tak więc kiedy komputer po włączeniu zasilania zaczyna piszczeć – zawsze świadczy to o poważnym błędzie. Najczęściej niemożność poprawnego uruchomienia komputera jest spowodowana uszkodzeniem lub brakiem pamięci RAM lub uszkodzeniem karty graficznej. Płyty główne używane w serwerach zwykle maja rozbudowane układy elektroniczne często sygnalizujące stan komputera na małym wyświetlaczu LCD lub przy pomocy kodów wyświetlanych na diodach LED.
Kolejnym etapem jest przeszukiwanie pamięci w poszukiwaniu tzw. rozszerzeń BIOS-u.
Wiele urządzeń wkładanych w sloty rozszerzające posiada własne BIOS-y umożliwiające lub rozszerzające funkcje BIOS-u płyty głównej. Do takich urządzeń zaliczamy karty graficzne, sterowniki dysków SCSI, niektóre karty sieciowe itd. Po przeprowadzeniu procedury POST program poszukuje właśnie tych dodatkowych BIOS-ów, aby przekazać im sterowanie i przeprowadzić inicjalizację obsługiwanego przez nie sprzętu.
W tym celu przeszukuje pamięć z zakresu C0000 — E0000 aż do napotkania bajtów o wartości 55h i AAh. Ta 16 bitowa liczba stanowi tzw. sygnaturę, po której komputer rozpoznaje, że w tym miejscu znajduje się rozszerzenie BIOS-u. Następny bajt zawiera liczbę 512 bajtowych bloków jakie zawiera dany BIOS. Kolejny bajt to już właściwy program do którego następuje przekazanie sterowania. Po zakończeniu tego programu BIOS poszukuje kolejnych rozszerzeń.
Na tym etapie komputer ma już zainicjowane podstawowe obszary danych (tablice przerwań i struktury danych BIOS) oraz prawidłowo skonfigurowane urządzenia zewnętrzne.
Ostatnią funkcją realizowaną przez BIOS komputera jest załadowanie tzw. boot bloku, 512 bajtowego obszaru, w którym zawarta jest procedura ładowania systemu operacyjnego. Boot blok znajduje się zwykle w pierwszym sektorze dysku twardego lub dyskietki. Urządzenie, z którego zostanie załadowany można wybrać w SetUp-ie — części programu BIOS odpowiedzialnej za ustawienie początkowych parametrów pracy komputera.
Program zawarty w Boot bloku jest zależny od systemu operacyjnego. Zwykle znajduje się on w głównym rekordzie rozruchowym (ang. Master boot record, MBR) pierwszego dysku twardego. Zawarty tam program jest odpowiedzialny za analizę tablicy partycji i przekazanie sterowania do loadera systemu operacyjnego. Jeżeli na dysku twardym lub dyskietce nie ma systemu operacyjnego, proces ładowania jest przerywany z odpowiednim komunikatem błędu. A skąd BIOS wie, że na wskazanym nośniku nie ma systemu? Podobnie jak w przypadku poszukiwania pamięci rozszerzających funkcje BIOS-u, szukana jest odpowiednia sygnatura. Jeśli MBR zawiera odpowiedni loader to w bajtach o adresie 0x1FD i 0x1FE (ostatnie dwa bajty 512-bajtowego sektora) znajdują się wartości 55h i AAh.
BIOS komputera poszukując urządzenia, z którego można uruchomić system operacyjny przeszukuje kolejne urządzenia, aż do napotkania podanych bajtów. Obecnie możemy się spotkać z komputerami, które nie są wyposażone w twarde dyski i stacje dyskietek. Są one zwykle wykorzystywane jako tzw. stacje robocze (ang. Workstations) w systemach sieciowych. W takim przypadku proces startu komputera musi przebiegać w sposób nieco odmienny. Tego typu stacje robocze (nazywane bezdyskowymi klientami — ang. Dicsless clients) wyposażone są w odpowiednie karty sieciowe, w których ROM-ach zawarty jest krótki program realizujący jeden z dwóch prostych protokołów sieciowych — bootd lub tftp. Protokoły te umożliwiają połączenie się z serwerem, na którym zawarty jest cały system operacyjny, a następnie jego zdalne załadowanie.
Wiele urządzeń komputera wymaga dla poprawnej pracy wstępnego skonfigurowania. Procesem tym zajmuje się cześć BIOS-u, tzw. SetUp. W znakomitej większości przypadków możemy się do niego dostać naciskając klawisz Del podczas startu komputera. Powinniśmy zobaczyć ekran wyglądający mniej więcej jak poniżej7:
Jeśli jesteś początkującym użytkownikiem komputera — powinieneś bardzo ostrożnie wprowadzać zmiany w SetUp-ie, szczególnie w sekcji Advanced Chipset Features oraz Frequency/Voltage Control. Nieprawidłowe ustawienie np. napięć zasilających może spowodować nawet uszkodzenie procesora!
Jedynymi funkcjami BIOS-u, które trzeba koniecznie ustawić przy pierwszym starcie komputera, są ustawienia zawarte w sekcji Standard CMOS Features. W razie problemów z ponownym uruchomieniem komputera warto załadować początkowe wartości polecane przez producenta płyty wybierając opcję Load Fail-Safe Defaults. Po wybraniu tej opcji nasz system nie będzie działał z optymalną prędkością ale mamy gwarancję, że się poprawnie uruchomi. W sekcji Standard CMOS Features ustawia się datę i czas systemowy oraz parametry posiadanych twardych dysków.
Jeśli nie znamy dokładnych parametrów posiadanego przez nas twardego dysku warto poszukać opcji HDD autodetect. Jej wybranie spowoduje, że BIOS sam poszuka wszystkich dysków i ustawi ich prawidłowe parametry pracy.
Kolejną rzeczą, jaką powinniśmy zrobić po zakupieniu komputera, jest wybranie urządzenia z którego nastąpi załadowanie systemu operacyjnego (First Boot Device). Opcja ta znajduje się w sekcji Advanced BIOS Features.
Zwykle system znajduje się na partycji dysku oznaczonej jako C. Jeśli jeszcze nie zainstalowaliśmy systemu operacyjnego, warto wybrać opcję CD-ROM. Spowoduje to, że komputer spróbuje załadować system z płyty znajdującej się w czytniku płyt kompaktowych. Jeżeli umieścimy tam płytę instalacyjną np. „MS Windows NT 4.0” komputer automatycznie uruchomi odpowiedni program instalacyjny. W takim wypadku powinniśmy pamiętać żeby zmienić to ustawienie na C only przy pierwszym restarcie komputera. W przeciwnym wypadku niemożliwe będzie ponowne uruchomienie instalowanego systemu operacyjnego.
Przed przystąpieniem do zmian innych parametrów startowych komputera warto zapoznać się z instrukcją obsługi dołączoną do płyty przez producenta. Generalnie lepiej nie zmieniać opcji, których znaczenia nie rozumiemy.
Na koniec pozostaje nam zapisanie wprowadzonych zmian poprzez wybranie opcji SAVE & EXIT SETUP oraz potwierdzenie poprzez naciśnięcie Y. Spowoduje to zapisanie wszystkich danych do małego obszaru pamięci CMOS, której zawartość jest podtrzymywana przez baterię znajdującą się na płycie głównej.
Po poprawnie zakończonej diagnostyce składników komputera (teście POST ang. Power-On Self-Test) przeprowadzonej przez BIOS komputera8 sterowanie komputerem przekazane zostaje zainstalowanemu systemowi operacyjnemu. Proces uruchomienia systemu operacyjnego opiszemy uogólniając etapy uruchamiania systemu Microsoft Windows NT 4.0.
Etap 1 — ustanowienie środowiska pracy systemu operacyjnego. Pierwszy sektor dysku twardego, z którego następuje uruchomienie systemu, zawiera główny rekord rozruchowy (ang. Master Boot Record) oraz tablicę partycji. Informacje te umożliwiają komputerowi wczytanie plików systemowych oraz opisują fizyczne uporządkowanie danych na dysku. Program zawarty w MBR-e lokalizuje na dysku adres początkowy partycji zawierającej system operacyjny i ładuje do pamięci operacyjnej kopię jej sektora rozruchowego. Etap 1 kończy przekazanie sterowania programowi (modułowi ładowania systemu operacyjnego) wczytanemu z sektora rozruchowego.
Aby komputer wczytał MBR ta partycja dysku twardego, na którym znajduje się MBR musi być oznaczona jako "aktywna".
Etap 2 — uruchomienie modułu ładującego. Program ładujący system operacyjny wczytuje i uruchamia zapisane na dysku pliki. W efekcie następuje kompletne załadowanie systemu operacyjnego, co kończy proces wstępnego rozruchu komputera.
Etap 3 — Wybór systemu operacyjnego. Moduł ładujący wczytuje plik z informacjami o zainstalowanych w komputerze systemach operacyjnych oraz definiuje ich położenie na dyskach twardych. W tym momencie użytkownik ma możliwość wyboru uruchamianego systemu.
Etap 4 — Wykrywanie i diagnostyka sprzętu. Uruchamiany jest moduł rozpoznania sprzętu którego zadaniem jest utworzenie listy zainstalowanych urządzeń.
Etap 5 — Wybór konfiguracji. Moduł ładujący umożliwia uruchomienie systemu operacyjnego w kilku trybach. Sposób wywołania poszczególnych trybów zależy od wybranego systemu operacyjnego: może polegać na podaniu dodatkowych parametrów przy wywołaniu systemu operacyjnego lub wyborze pozycji z wyświetlanej na ekranie listy. Specjalne tryby służą z reguły do celów diagnostycznych lub ograniczenia dostępu do komputera.
Etap 6 — Ładowanie jądra systemu. W tym etapie moduł ładowania wczytuje do pamięci plik (lub pliki) zawierające jądro systemu oraz warstwę oddzielenia sprzętu (ang. HAL, Hardware AbstractionLayer).
Etap 7 — Inicjalizacja jądra systemu. Etap kończący fazę uruchamiania systemu operacyjnego. Kontrola nad komputerem zostaje przekazana systemowi operacyjnemu. Podczas inicjalizacji jądra wykonywane są następujące zadania:
inicjalizacja sterowników urządzeń niskiego poziomu, tzn. załadowanych wraz z jądrem systemu
ładowanie i inicjalizacja sterowników pozostałych urządzeń
uruchamianie programów diagnostycznych lub konfiguracyjnych
ładowanie i inicjalizacja usług skonfigurowanych jako uruchamianych automatycznie podczas startu systemu
tworzenie pliku stronicowania9 na dysku twardym
uruchamianie podsystemów systemu operacyjnego (takich jak podsystem zabezpieczeń)
Etap 8 — logowanie. Wyświetlenie okna dialogowego logowania oznacza pomyślne zainicjowanie jądra systemu operacyjnego. Po poprawnym zalogowaniu do systemu uruchamiane jest środowisko użytkownika.
Ostatnio pojawiły się procesory z możliwościa zmiany mikrokodu, tak więc być może w niedalekiej przyszłości będziemy mogli wykonywać upgrade procesora instalując odpowiednie oprogramowanie.↩
Nieliczne karty 8. bitowe wykorzystują dodatkowe przerwania i mają więcej niż 62 styki.↩
64. bitowy transfer poprzez magistralę PCI taktowaną zegarem o częstotliwości 66 MHz.↩
Na cztery, jeżeli uwzględnić pamięć wirtualną.↩
Adresy podane są w notacji segment-offset: każdy adres składa się z dwóch części: pierwsza jest szesnastkową liczbą określającą segment, czyli 64 KB blok pamięci. Druga liczba jest szesnastkową liczbą określającą offset, czyli położenie komórki pamięci w ramach segmentu. Tak więc zapis 0:0h oznacza pierwszy bajt w pierwszych 64 KB, zapis C:8000h — bajt o adresie 8000h znjadujący się w segmencie 0C.↩
Z reguły są tą dyski i sterowniki SCSI i specjalne karty grafiki.↩
W zależności od producenta informacje wyświetlane przez BIOS mogą się nieco różnić.↩
Po zakończeniu testu BIOS-u płyty głównej mogą zostać uruchomione inne systemy BIOS, np. znajdujące się na kartach grafiki lub kontrolerach SCSI.↩
Plik stronicowania słuzy do tymczasowego przechowywania na dysku twardym stron pamięci.↩