Programowanie systemowe mikroprocesorów rodziny x86

Programowanie systemowe mikroprocesorów rodziny x86

3 oceny

Format:

ibuk

RODZAJ DOSTĘPU

 

Dostęp online przez myIBUK

WYBIERZ DŁUGOŚĆ DOSTĘPU

Cena początkowa:

Najniższa cena z 30 dni: 6,92 zł  


6,92

w tym VAT

TA KSIĄŻKA JEST W ABONAMENCIE

Już od 24,90 zł miesięcznie za 5 ebooków!

WYBIERZ SWÓJ ABONAMENT

Książka stanowi podręcznik akademicki wprowadzający w zagadnienia tworzenia oprogramowania systemowego, w tym systemów operacyjnych. Autorzy prezentują praktyczne podejście do omawianego tematu. Do książki dołączona jest płyta CD Istotną wartość stanowi także dołączony kod systemu operacyjnego napisany w języku Asembler oraz lista rozkazów dla programowania procesorów.


Rok wydania2010
Liczba stron674
KategoriaProgramowanie
WydawcaWydawnictwo Naukowe PWN
ISBN-13978-83-01-16383-9
Numer wydania1
Język publikacjipolski
Informacja o sprzedawcyePWN sp. z o.o.

Ciekawe propozycje

Spis treści

  Wprowadzenie    11
  1. Architektura procesorów rodziny x86    17
    1.1. Model procesorów rodziny x86 w trybie rzeczywistym    17
      1.1.1. Rejestry procesora    18
      1.1.2. Segmentacja pamięci w trybie rzeczywistym    19
      1.1.3. Tryby adresowania    22
      1.1.4. Segmenty programowe    24
    1.2. Model procesorów rodziny x86 w trybie chronionym    26
      1.2.1. Segmentacja pamięci w trybie chronionym    28
      1.2.2. Tryby adresowania w-bitowym trybie chronionym    32
    1.3. Obsługa przerwań i wyjątków    34
      1.3.1. Typy przerwań    34
      1.3.2. Obsługa przerwań i wyjątków w trybie rzeczywistym    36
      1.3.3. Obsługa przerwań i wyjątków w trybie chronionym    38
  2. Podstawy programowania procesorów rodziny x86 w trybie rzeczywistym    43
    2.1. Składnia programu    43
      2.1.1. Identyfikatory    43
      2.1.2. Liczby całkowite    44
      2.1.3. Znaki alfanumeryczne i teksty    44
      2.1.4. Format linii programu    44
      2.1.5. Dyrektywy asemblera definiujące dane    45
    2.2. Instrukcje przesłań danych oraz operacje arytmetyczne    47
      2.2.1. Instrukcje przesłań danych    48
      2.2.2. Instrukcje dodawania i odejmowania    50
      2.2.3. Dodawanie i odejmowanie liczb dziesiętnych w kodzie BCD    51
      2.2.4. Instrukcje mnożenia    54
      2.2.5. Instrukcje dzielenia    54
      2.2.6. Mnożenie i dzielenie liczb dziesiętnych w kodzie BCD    55
      2.2.7. Zmiana rozmiaru liczby    56
    2.3. Instrukcje skoków i pętli    57
      2.3.1. Skoki bezwarunkowe bezpośrednie    57
      2.3.2. Skoki bezwarunkowe pośrednie    58
      2.3.3. Instrukcje porównania i skoków warunkowych    59
      2.3.4. Instrukcje pętli    61
    2.4. Operacje logiczne    63
      2.4.1. Instrukcje operacji logicznych    64
      2.4.2. Instrukcje przesunięć    65
    2.5. Reprezentacja danych    66
      2.5.1. Skalarne typy danych    67
      2.5.2. Rekordy i operacje na danych upakowanych    73
      2.5.3. Zbiory    76
      2.5.4. Tablice    78
      2.5.5. Struktury    81
    2.6. Dynamiczne struktury danych    83
      2.6.1. Teksty    83
      2.6.2. Listy    90
    2.7. Stos    96
      2.7.1. Sprzętowe wykorzystanie stosu podczas realizacji instrukcji CALL adres    99
      2.7.2. Podprogramy    101
      2.7.3. Przekazywanie parametrów do podprogramów    102
      2.7.4. Dane lokalne podprogramów    106
    2.8. Programowanie zmiennoprzecinkowej jednostki arytmetycznej    107
      2.8.1. Architektura    107
      2.8.2. Instrukcje przesłań    110
      2.8.3. Instrukcje operacji arytmetycznych    111
      2.8.4. Instrukcje porównania    112
      2.8.5. Instrukcje obliczania wartości niektórych funkcji przestępnych    114
      2.8.6. Instrukcje sterujące    115
      2.8.7. Odwrotna notacja polska (ONP) i jej zastosowanie w obliczeniach numerycznych    116
      2.8.8. Przykładowe programy obliczeń numerycznych    118
    2.9. Makropolecenia    122
      2.9.1. Język makropoleceń    122
      2.9.2. Bloki powtórzeń    123
      2.9.3. Definiowanie i wywoływanie makropoleceń    125
    2.10. Podstawowe operacje we/wy w systemie operacyjnym DOS    130
      2.10.1. Zakończenie programu    130
      2.10.2. Wyprowadzanie tekstu na monitor ekranowy    130
      2.10.3. Wprowadzanie tekstu z klawiatury    132
      2.10.4. Wyprowadzanie liczb na monitor ekranowy    134
      2.10.5. Podstawowe operacje plikowe    135
      2.10.6. Wybrane usługi BIOS-u    146
  3. Przegląd kompilatorów asemblera    156
    3.1. Podstawowa struktura programu    156
    3.2. Sposób kompilacji    162
    3.3. Operacje na zmiennych    163
    3.4. Deklaracje tablic    165
    3.5. Procedury    165
    3.6. Deklaracje i dostęp do struktur danych    167
    3.7. Makropolecenia    172
    3.8. Kompilacja warunkowa    175
  4. Praca procesorów rodziny x86 w trybie chronionym    185
    4.1. Przełączenie procesora do trybu chronionego    186
    4.2. Obsługa przerwań i wyjątków w trybie chronionym    195
    4.3. Wykorzystanie pamięci rozszerzonej w trybie chronionym    197
    4.4. Przełączanie zadań    203
      4.4.1. Pseudonimy deskryptorów    212
      4.4.2. Przełączanie zadań z wykorzystaniem furtki zadania    213
    4.5. Przełączanie zadań inicjowane przerwaniami sprzętowymi    215
      4.5.1. Programowanie kontrolera przerwań w trybie chronionym    215
      4.5.2. Przełączanie zadań inicjowane przerwaniami sprzętowymi nr 0 i 1    217
    4.6. Separacja środowisk operacyjnych poszczególnych procesów oraz lokalne tablice deskryptorów    222
    4.7. Poziomy uprzywilejowania oraz funkcjonowanie systemu ochrony    225
    4.8. Zadania realizowane na różnych poziomach uprzywilejowania    234
    4.9. Wprowadzenie do 32-bitowego trybu chronionego    235
    4.10. Adresowanie w 32-bitowym trybie chronionym    237
    4.11. Obsługa klawiatury w trybie chronionym    238
  5. Stronicowanie pamięci operacyjnej    243
    5.1. Przegląd algorytmów przydziału pamięci    243
      5.1.1. Przydział pamięci oparty na blokach o stałym rozmiarze    244
      5.1.2. Dynamiczny przydział bloków    244
      5.1.3. Przemieszczane bloki pamięci    245
    5.2. Zasada stronicowania pamięci    246
    5.3. Elementy architektury procesorów rodziny x86 odpowiedzialne za stronicowanie    249
      5.3.1. Rejestry sterujące CR0, CR2, CR3, CR4    253
    5.4. Inicjowanie stronicowania    256
    5.5. Stronicowanie a wielozadaniowość    259
    5.6. Realizacja stronicowania dla całego dostępnego obszaru pamięci operacyjnej    265
    5.7. Stronicowanie jednopoziomowe z rozmiarem strony 4 MB    268
    5.8. Stronicowanie o rozszerzonym adresie fizycznym    271
      5.8.1. Stronicowanie z rozszerzonym adresem fizycznym i rozmiarem strony 4 KB (stronicowanie trójstopniowe)    272
      5.8.2. Stronicowanie z rozszerzonym adresem fizycznym i rozmiarem strony 2 MB    274
      5.8.3. PSE-36 – stronicowanie z rozszerzonym adresem fizycznym i rozmiarem strony 4 MB    276
      5.8.4. Analiza programu paging6.asm    277
    5.9. Mechanizm zarządzania przydzielaniem ramek – binarna mapa pamięci    278
  6. Pamięć wirtualna    284
    6.1. Zasada funkcjonowania pamięci wirtualnej    284
    6.2. Obsługa wyjątków nr 11 i 14    287
      6.2.1. Kod błędu dla wyjątku nieobecnego segmentu (nr 11)    287
      6.2.2. Kod błędu dla wyjątku braku strony (nr 14)    289
    6.3. Tablice zapamiętanych stron/segmentów    291
      6.3.1. Tablice zapamiętanych stron    292
      6.3.2. Tablice zapamiętanych segmentów    293
    6.4. Wybrane algorytmy zastępowania stron    294
      6.4.1. Algorytm FIFO    295
      6.4.2. Algorytm LRU    295
      6.4.3. Algorytm dodatkowych bitów odwołań    295
      6.4.4. Algorytm drugiej szansy    295
      6.4.5. Algorytmy rodziny buforowania stron    296
    6.5. Przykładowa implementacja stronicowania na żądanie    296
      6.5.1. Analiza programu paging3.asm    298
  7. Tryb zadań wirtualnych 8086    305
    7.1. Przełączenie procesora w tryb VM86    306
    7.2. Obsługa wyjątków i przerwań sprzętowych w procesie działającym w VM86    308
      7.2.1. Analiza programu v86_0.asm    312
    7.3. Obsługa przerwań maskowalnych w trybie VM86    315
      7.3.1. Analiza programu v86_1.asm    317
    7.4. Obsługa przerwań programowych    320
      7.4.1. Analiza programu v86_2.asm    323
    7.5. Obsługa we/wy w VM86    324
      7.5.1. Analiza programu v86_3.asm    326
  8. Wielozadaniowość    328
    8.1. Podstawowe pojęcia z zakresu wielozadaniowości    328
      8.1.1. Systemy wielozadaniowe przetwarzania wsadowego    328
      8.1.2. Systemy wielozadaniowe z podziałem czasu    331
      8.1.3. Systemy czasu rzeczywistego    331
      8.1.4. Zastosowanie systemów wieloprocesorowych    332
      8.1.5. Rola programu szeregującego    332
    8.2. Przegląd wybranych algorytmów szeregowania zadań    335
      8.2.1. Algorytm cykliczny    337
      8.2.2. Algorytm planowania priorytetowego opartego na zmiennym kwancie czasu    338
      8.2.3. Algorytm postarzania priorytetów    339
      8.2.4. Planowanie priorytetowe z użyciem kolejek wielopoziomowych    341
      8.2.5. Kolejki wielopoziomowe ze sprzężeniem zwrotnym    343
    8.3. Przykładowe implementacje wybranych algorytmów pracy programu szeregującego    344
      8.3.1. Implementacja algorytmu cyklicznego    344
      8.3.2. Analiza programu mult1.asm    346
      8.3.3. Implementacja planowania priorytetowego na zasadzie zmiennego kwantu czasu    354
      8.3.4. Implementacja planowania metodą postarzania priorytetów    358
      8.3.5. Implementacja planowania metodą wielopoziomowych kolejek zadań    363
    8.4. Synchronizacja procesów    373
      8.4.1. Sekcja krytyczna    373
      8.4.2. Synchronizacja procesów za pomocą blokowania przerwań    375
      8.4.3. Zmienne blokujące    376
      8.4.4. Semafory binarne (muteksy)    378
      8.4.5. Przykładowa implementacja semaforów binarnych    379
    8.5. Komunikacja międzyprocesowa    384
      8.5.1. Wymiana komunikatów    385
      8.5.2. Przykładowa implementacja wymiany komunikatów    387
  9. Start systemu    395
    9.1. System plików FAT12    396
      9.1.1. Tablica FAT12 – analiza wpisów i translacja adresów    399
    9.2. Program rozruchowy    403
      9.2.1. Instalacja programu rozruchowego w pierwszym sektorze dyskietki    403
      9.2.2. Implementacja programu rozruchowego    405
  10. Przykładowa realizacja jądra wielozadaniowego systemu operacyjnego – system operacyjny DAMIANIX    423
    10.1. Założenia funkcjonalne    423
    10.2. Zakres projektu    424
    10.3. Struktura systemu operacyjnego    424
    10.4. Funkcjonalność modułów systemu operacyjnego    424
      10.4.1. Moduł inicjalizacji    425
      10.4.2. Moduł pamięci    427
      10.4.3. Moduł wielozadaniowości    429
      10.4.4. Moduł przerwań    432
      10.4.5. Moduł dyskietki    434
      10.4.6. Moduł interpretatora    435
      10.4.7. Moduł systemu plików    436
      10.4.8. Moduł urządzeń    436
      10.4.9. Moduł ekranu    438
      10.4.10. Moduł kolejek    439
      10.4.11. Moduł sterty    439
      10.4.12. Moduł czasomierza    439
      10.4.13. Moduł usług    440
      10.4.14. Moduł wyjątków    440
    10.5. Specyfikacja zewnętrzna    440
      10.5.1. Interfejs z użytkownikiem    440
      10.5.2. Polecenia    442
    10.6. Instalacja systemu operacyjnego z plików źródłowych    445
    10.7. Format programów obsługiwanych przez system    446
    10.8. Mapa pamięci systemu operacyjnego    447
    10.9. Możliwe kierunki rozwoju    448
  Dodatki    449
  A1. Pliki załącznikowe    451
    Plik strukt.txt    451
    Plik gdt.txt    452
    Plik makra.txt    452
    Plik proc.txt    465
    Plik a20.txt    467
    Plik dane.txt    470
    Plik kod.txt    471
    Plik mult.txt    472
    Plik paging.txt    480
    Plik pm_data.txt    481
    Plik pm_exc.txt    481
    Plik pm_idt.txt    485
    Plik proc32.txt    485
    Plik v86.txt    487
  A2. Podstawy trybu chronionego (programy z rozdziału 4)    490
    Program p0.asm    490
    Program task_2.asm    491
    Program task_3.asm    493
    Program task_4.asm    495
    Program task_5.asm    498
    Program task_6.asm    500
    Program task_7.asm    503
    Program task_8.asm    508
    Program task_9.asm    515
    Program task_10.asm    520
    Program pm32bit.asm    524
    Program adr.asm    528
    Program sprzet1.asm    533
  A3. Stronicowanie i pamięć wirtualna (programy z rozdziału 5 i 6)    545
    Program paging1.asm    545
    Program paging2.asm    547
    Program paging3.asm    555
    Program paging4.asm    562
    Program paging5.asm    565
    Program paging6.asm    566
    Program paging7.asm    570
  A4. Tryb wirtualnych zadań 8086 (programy z rozdziału 7)    578
    Program v86_0.asm    578
    Program v86_1.asm    583
    Program v86_2.asm    589
    Program v86_3.asm    594
  A5. Wielozadaniowość (programy z rozdziału 8)    601
    Program mult1.asm    601
    Program mult2.asm    607
    Program mult3.asm    612
    Program mult4.asm    618
    Program mult5.asm    630
    Program mult6.asm    642
  B. Zestaw wybranych rozkazów asemblera dla procesorów x86    655
  Literatura    673
  Skorowidz    674
RozwińZwiń