background image

Pamięć (część 3) 

 

 

Przedmioty prowadzone w ramach 

Programu Rozwoju WSFiZ w Białymstoku realizowane są w ramach  

Programu Operacyjnego Kapitał Ludzki, Priorytet IV Szkolnictwo wyższe i nauka, Poddziałanie 4.1.1  

Wzmocnienie potencjału dydaktycznego uczelni, współfinansowanego ze środków  

Europejskiego Funduszu Społecznego (POKL.04.01.01-00-030/08) 

9. 

Pamięć (część 3) 

Spis treści 

9.

 

Pamięć (część 3) ....................................................................................................................... 1

 

9.3

 

Pamięci dyskowe ............................................................................................................... 1

 

9.2.3

 

Organizacja fizyczna .................................................................................................. 1

 

9.2.4

 

Organizacja logiczna .................................................................................................. 3

 

 

9.3 

Pamięci dyskowe 

9.2.3  Organizacja fizyczna 

Nośnikiem informacji w pamięciach dyskowych jest warstwa materiału magnetycznego 

naniesiona jedno lub dwustronnie na powierzchnię w kształcie okręgu, którą jest talerz 
aluminiowy w przypadku dysków twardych lub krążek folii poliestrowej w przypadku dysków 
elastycznych. Z tak przygotowanym, obracającym się podłożem współpracuje głowica 
odczytująco-zapisująca. Unosi się ona nad nim na tzw. poduszce powietrznej utworzonej przez 
ruch talerza (dotyczy dysków twardych). W trakcie zapisu kierunek prądu płynącego w 
uzwojeniach głowicy powoduje odpowiednie przemagnesowanie materiału. Przy odczycie, kiedy 
uzwojenie głowicy przesuwa się nad powierzchnią dysku to namagnesowanie powoduje 
zaindukowanie w niej prądu o kierunku zależnym od zwrotu wektora namagnesowania. 
Przypisując jedynkę jednemu kierunkowi prądu, a zero – drugiemu mamy możliwość zapisu, a 
następnie odczytu dowolnego ciągu zero-jedynkowego. Używany jest przy tym nie kod NKB, ale 
specjalny kod (np. RLL(2,7)). Oprócz zwykłej informacji zakodowana jest w nim informacja 
synchronizująca, która przy nierównomiernych obrotach silnika w sposób istotny ułatwia zapis i 
odczyt. Ponadto kod ten minimalizuje liczbę zer i jedynek, a tym samym umożliwia zwiększenie 
gęstości zapisu. Wspomniane zmiany namagnesowania ułożone są wzdłuż współosiowych 
okręgów nazywanych ścieżkami (patrz rysunek 9.19 niżej). Operuje się dwoma parametrami 
związanymi z określeniem pojemności pamięci dyskowych. Są to: gęstość poprzeczna i gęstość 
wzdłużna. Pierwsza z nich (wyrażana w ścieżkach na milimetr) określa jak blisko siebie mogą 
być kolejne ścieżki. Typowe wartości zawierają się między 2 a 10. Druga z nich (wyrażana w 
bitach na milimetr) określa jak długi jest odcinek namagnesowanej powierzchni ścieżki 
odpowiadający jednemu bitowi. Typowa wartość to 200 bitów ma milimetr.  

Aby ocenić, co w praktyce oznaczają podane wielkości obliczmy pojemność dysku twardego, 

którego promień wynosi 100mm, a ścieżki zajmują ¾ jego długości. Przy gęstości poprzecznej 
10/mm mamy 750 ścieżek. Średnia długość ścieżki przy założonym promieniu wynosi około 

background image

Pamięć (część 3) 

 

 

400mm, co przy gęstości wzdłużnej 200b/mm daje 80Kb na ścieżkę. Pojemność całego dysku 
wynosi zatem około 7,5MB.  

Ze względu na postęp technologiczny i wprowadzane na rynek nowe rozwiązania te szacunki 

mogą szybko stać się o nieaktualne. W szczególności warto tu wspomnieć o tzw. bitach 
pionowych. W klasycznych dyskach domeny magnetyczne układają się na powierzchni dysku, a 
odpowiadające im bity nazywane są wtedy poziomymi. Jeżeli domeny ułożyć pionowo w 
stosunku do powierzchni to gęstość zapisu byłaby istotnie większa. Oczywiście rozwiązanie takie 
wymaga nowej konstrukcji głowicy, ze względu na inny kierunek indukowanych prądów. Udało 
się to zrobić i najnowsze dyski o pojemnościach terabajtowych są już w sprzedaży. 

Pamięci dyskowe wykorzystywane są głównie, jako pamięci masowe (określenie to jest 

używane na bardzo pojemne, tanie, przenośne, nieulotne nośniki informacji o możliwie dużych 
prędkościach transmisji). Ponieważ podstawowym parametrem jest pojemność to produkowane 
są dyski wielotalerzowe. Głowic pisząco-czytających jest tyle, ile powierzchni (z każdą 
współpracuje jedna głowica). Mocowane są one we wspólnym uchwycie przesuwnym. W ten 
sposób współpracujące w danej chwili z głowicami ścieżki, które na każdej powierzchni 
numerowane są niezależnie, rosnąco w kierunku od krawędzi do osi mają ten sam numer i tworzą 
tzw. cylinder.  

a) 

 

 

 

 

b) 

 

 

 

 

          indeks początku 

 

 

 

 

 

  ścieżki  

 

    sektor 

 
 

 

 

 

 

 

 

 

 

indeks początku 

 

 

 

 

 

 

 

 

 

       sektora 

 

 

 

 

 

 

 

 

 

 

 
 
 
 
 
 
 

 
 

 

 

c) 

 
 
 
 
 
 
 
 
 

Rysunek 9.19. Pamięć dyskowa; a) układ głowica-nośnik, b) ścieżki z podziałem na sektory, c) pamięć 

wielotalerzowa. 

Powierzchnia o numerze zero pełni specjalną rolę. Między innymi przechowuje się na niej 

informacje o podziale przestrzeni dyskowej na mniejsze części nazywane partycjami (szczegóły 
patrz dalej). Powierzchnię tą nazywa się stroną ukrytą (ang. hidden) dysku. Nazwa bierze się 
stąd, że nie jest ona liczona do raportowanej pojemności dysku. 

background image

Pamięć (część 3) 

 

 

Każdą ścieżkę dzieli się na mniejsze części nazywane sektorami. Jest ich od kilkunastu do 

kilkudziesięciu. Sektory mogą mieć równe długości (ang. hard sector) wyznaczone przez 
zaznaczone trwale na nośniku tzw. otwory indeksowe lub nierówne, zaznaczone przez 
odpowiedni zapis magnetyczny (ang. soft sector). Na rysunku 9.19b (patrz wyżej) pokazano 
podział ścieżki na 8 równych sektorów. Poprzednio policzyliśmy, że ścieżka ma pojemność 
80Kb, stąd wynika, że sektor ma 10Kb. Na jednym talerzu można uzyskać 2∙ 750 = 1500 ścieżek 
(talerz dwustronny) po 8 sektorów każda, co daje 12 000 sektorów. Do zaadresowania tej liczby 
sektorów potrzeba 14 bitów (2

14

 = 16384). Adres rozumiany jako numer sektora nazywany jest 

adresem logicznym. Adres faktyczny, nazywany adresem fizycznym albo CHS (ang. cylinder, 
header, sector), składa się z trzech części: 

- numeru cylindra (tożsamy z numerem ścieżki) – 11 bitów; 
- numeru powierzchni (jest tożsamy z numerem głowicy) – 4 bity; 
- numeru sektora – 3 bity. 

 Adres przykładowej pamięci złożonej z 8 talerzy o 16 powierzchniach wygląda następująco: 

- 11-bitowy numer cylindra (tożsamy z numerem ścieżki); 
- 4-bitowy numer powierzchni (jest tożsamy z numerem głowicy); 
- 3-bitowy numer sektora. 
Odczyt i zapis z/na dysk przebiega w dwóch fazach. W fazie pierwszej podaje się numer 

cylindra, po czym czeka się na spozycjonowanie (ustawienie nad odpowiednią ścieżką) głowic. 
W fazie drugiej podaje się numer powierzchni i sektora. Każdy sektor składa się z nagłówka, w 
którym między innymi zapisany jest adres CHS oraz danych i systemu znaczników 
pozwalających zorientować się, jakiego rodzaju informacja przesuwa się pod głowicą. Szybkość 
działania zależy od obrotów silnika. Np. przy 3000 obr/min jeden obrót trwa 20 ms. Statystycznie 
żądane informacje znajdą się pod głowicą po ½ obrotu, czyli po 10 ms. Szybkość transmisji 
można obliczyć przyjmując, że w czasie jednego obrotu należy przetransmitować całą zawartość 
ścieżki, czyli u nas 80Kb, co daje 4Mb/s.  

9.2.4  Organizacja logiczna 

Logiczna struktura informacji na dysku zależy od przyjętego systemu zapisu plików. Jest ich 

kilka, np. FAT, NTFS czy HPFS. Opisany zostanie FAT.  

Dyski twarde są nośnikami o dużych pojemnościach, stąd założono, że mogą być na nich 

instalowane różne systemy operacyjne. Każdy z nich wymaga instalacji na wydzielonym 
obszarze dysku nazywanym partycją. Partycje są logicznie niezależnymi strukturami na dysku. 
Składają się zawsze z pewnej liczby sąsiednich cylindrów. Są w stanie obsługiwać różne systemy 
plików. Informacja o tym, w jaki sposób dany dysk został podzielony na partycje znajduje się w 
specjalnej strukturze umieszczonej na ukrytej stronie dysku. Struktura ta nazywa się tablicą 
partycji (ang. data partition table) i jest ona częścią innej podstawowej struktury, jaką jest główny 
rekord ładujący (ang. master boot record) zapisywanym zawsze pod fizycznym adresem CHS = 
001. Ponieważ sektory liczymy od jedności to jest to w istocie początkowy sektor zerowej ścieżki 
(czyli najbardziej zewnętrznej tj. najdalej odsuniętej od środka) zerowej strony dysku. W 
głównym rekordzie ładującym znajduje się ponadto program, którego zadaniem jest 
przeglądnięcie tablicy partycji, odnalezienie w niej tzw. partycji aktywnej (zawsze jest taka 
dokładnie jedna) i załadowanie systemu operacyjnego zgodnie z informacjami zapisanymi w 
rekordzie ładującym tej partycji. Struktura tablicy partycji pokazana została na rysunku 9.20 
(patrz niżej)

background image

Pamięć (część 3) 

 

 

W polach opisujących partycję oprócz pól z fizycznym i logicznym adresem początku i 

fizycznym adresem końca oraz rozmiarem partycji znajduje się pole aktywności i pole rodzaju 
partycji. Jak to już powiedziano, tylko jedna partycja na dysku zaznaczona jest jako aktywna i 
własność ta zapisana jest właśnie w polu aktywności. Co się tyczy pola rodzaju, to jest to kod 
liczbowy, pod którym kryją się takie informacje jak: rodzaj systemu operacyjnego, pod który 
projektowana była partycja, jej maksymalny rozmiar, liczba bitów elementów tabeli FAT (patrz 
dalej). 

a) 

 

 

 

 

b) 

 

Program odszukujący i ładujący    

 

 

 

 

 

zawartość pierwszego sektora 

 

 

 

   

 

aktywnej partycji  

 

 

 

 

 

 

Rekord opisu partycji nr 1  

 

   

 

Znacznik aktywności partycji 

Rekord opisu partycji nr 2  

 

   

 

Początek partycji w formacie CHS 

       ....   

 

 

   

 

Rodzaj partycji   

 

 

Rekord opisu partycji nr i   

 

   

 

Koniec partycji w formacie CHS 

 

       ....   

 

 

   

 

Początek partycji: numer logiczny 

 

 

 

   

 

 

 

           pierwszego sektora 

Znacznik końca tablicy  

 

 

 

Rozmiar partycji: liczba sektorów 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    Rysunek 9.20. a) Format głównego rekordu ładującego, b) Format rekordu opisu partycji. 

Struktura opisująca każdą partycję (nie mylić z rekordem opisu partycji) rozpoczyna się od 

rekordu ładującego partycji (ang. partition boot record) i zawsze rozpoczyna się od pierwszego 
sektora początkowej ścieżki początkowej (zerowej) głowicy partycji. Na tej ścieżce zapisane są 
kolejno następujące pola: 

1.  Rekord ładujący; 
2.  Tabela alokacji plików FAT #1; 
3.  Tabela alokacji plików FAT #2; 
4.  Katalog główny 

W rekordzie ładującym zapisany jest program ładujący system operacyjny.  Program taki jest 

poszukiwany w efekcie wykonania procedury BIOSU zwanej Bootstrap Loader, dostępnej także 
jako przerwanie BIOSu INT 13h. Jest ona wywoływana przy każdym starcie lub tzw. resecie 
komputera.  

Tabela alokacji plików (ang. file allocation table) FAT #1 oraz jej kopia FAT #2 zawierają 

informacje o sposobie i miejscu przechowywania plików na dysku w ramach partycji. Zanim 
omówimy strukturę FAT podamy dwie istotne informacje.  

Pierwsza dotyczy pojęcia katalog (również podkatalog albo folder). Katalog grupuje pliki. 

Ułatwia w ten sposób zarządzanie nimi. Fizycznie katalog też jest plikiem (ma nazwę, zajmuje 
miejsce na dysku). Jego elementami są opisy plików należących do tego katalogu. Na opis pliku 
składają się: 

 
 
 

background image

Pamięć (część 3) 

 

 

  Nazwa pliku; 
  Rozszerzenie nazwy pliku; 
  Atrybuty; 
  Czas utworzenia pliku; 
  Data utworzenia pliku; 
 

Numer klastra początkowego; 

  Rozmiar pliku (w bajtach). 

Warto zwrócić uwagę na pole atrybuty będące liczbowym kodem rodzaju pliku. Wśród 

różnych, typowych dla plików atrybutów takich jak: ‘plik archiwalny’, ‘plik tylko do odczytu’ 
czy ‘plik systemowy’ jest również atrybut ‘plik typu katalog’, po którym można rozpoznać, że 
mamy do czynienia właśnie z katalogiem.  

Informacją numer dwa związane jest z polem ‘numer klastra początkowego’. Podstawowym 

fragmentem dysku z punktu widzenia systemu operacyjnego jest tzw. klaster (ang. cluster) 
nazywany również jednostka alokacji plików. Jego wielkość jest zawsze wielokrotnością sektora 
(typowe wartości zawierają się od jednego do kilku – zawsze są to potęgi liczby 2). Klaster jest 
najmniejszą częścią pliku, do której potrafi odwołać się system operacyjny. Dlatego jeżeli plik 
zajmuje tylko część klastra, to jego reszta pozostaje niewykorzystana ponieważ zapis kolejnego 
pliku rozpoczyna się zawsze od nowego klastra. Informacje o tym, które klastry zajmuje dany 
plik znajdują się w tabeli FAT. Wyjątkiem jest pierwszy z zajmowanych przez plik klastrów, 
którego numer zapisany jest opisie pliku znajdującym się w podkatalogu.  Generalnie każdy 
klaster ma odpowiadającą sobie pozycję w tabeli FAT – numer klastra jest jednocześnie 
indeksem jego pozycji w tabeli. System operacyjny potrafi rozróżniać pozycje tabeli FAT 
opisujące wolne klastry od pozycji zajętych. Jeżeli dochodzi do zapisania pliku system poszukuje 
w tabeli FAT pierwszego wolnego miejsca i zapisuje jego numer w opisie pliku znajdującym się 
w podkatalogu. Jeżeli plik nie mieści się w znalezionym klastrze, to system poszukuje kolejnego 
wolnego klastra i po znalezieniu wpisuje jego numer, jako zawartość pozycji odpowiadającej 
pierwszemu klastrowi, w którym zapisano część pliku. Jeżeli i ten klaster nie wystarcza to 
powtarza swoje postępowanie: szuka kolejnego wolnego klastra i po znalezieniu wpisuje jego 
numer, jako zawartość pozycji odpowiadającej poprzednio znalezionemu klastrowi. Za którymś 
razem reszta pliku zostaje zapisana do nowego klastra i wtedy, jako zawartość, wpisuje się do 
niego sygnaturę końca pliku (dwa bajty równe FFFF). W ten sposób w tabeli FAT zapisany jest 
ciąg numerów klastrów, z których poprzedni wskazuje na następny aż do sygnatury końca pliku.  
Rysunek 9.21 (patrz niżej) pokazuje zawartość tabeli FAT z numerami klastrów dla 
przykładowego pliku Dane.txt. Przekreślone prostokąty symbolizują zajętość pozycji 0, 1, 2 i 3.  

Opisana procedura dotyczy również pliku typu katalog, przy czym numer pierwszego klastra 

zapisywany jest w opisie katalogu będącym plikiem w katalogu nadrzędnym. Jak z tego wynika 
pojemność tak zapisywanych katalogów jest ograniczona wyłącznie pojemnością dysku. 

Katalog główny (czyli ciąg opisów zapisanych w nim plików łącznie z podkatalogami) 

zapisany jest zawsze wyłącznie na pierwszej ścieżce partycji i w związku z tym nie podlega 
rozszerzeniu. Wynika z tego, że liczność zapisanych w nim plików jest ograniczona i wynosi 
512. Elementy tabeli FAT mogą być 16 albo 32-bitowe. Przy 16 bitach mamy 2

16

 = 65 536 

klastrów. Dla dysku 4,3 GB daje to klastry o pojemności 64KB. Ze względu na to, że 
statystycznie tracimy ½ niewykorzystanego klastra na plik to może to skutkować sporymi 
stratami niewykorzystanej powierzchni dyskowej. Zastosowanie FATów 32-bitowych zmniejsza 
straty, ale wydłuża FAT. 

background image

Pamięć (część 3) 

 

 

Opis pliku o nazwie Dane.txt w katalogu 

 

 

 

        FAT 

 

      Dane 

 txt 

 

… 

        4   

… 

 

    0 

 

 

 

      1                                       

 

 

 

 

 

 

 

 

 

    3 

 

 

 

 

 

 

 

 

 

    4 

  23 

    

 

 

 

Numer pierwszego  

  

 

 

 

 

    klastry zajęte  

 

        

 

         klastra 

 

 

 

 

 

  … 

     przez inne        

 

 

 

 

 

 

 

 

 

       

        pliki 

 

 

 

 

 

 

     

 

 

  23         59          

 

 

 

 

 

     Znacznik końca 

 

    

 

  … 

 

 

 

 

 

pliku 

 

 

 

 

 

 

    

       59      FFFF 

      

 

 

 

 

 

       

 

 

60 

 

 

 

 

 

 

 

 

 

 

…          … 

 

    Rysunek 9.21. Zapis numerów klastrów przykładowego pliku Dane.txt w tabeli FAT. 

 

 

 

 

 

 

 

 


Document Outline