background image

1. Własny system operacyjny

1/34

1

2

3

4

5

Procesor – wybrane 

zagadnienia 

zaawansowane

offset

DS
SS
ES
FS
GS

Rej. Segment.

CS

+

Instrukcja...

16

Szyna 
adresowa

16

20

background image

1. Własny system operacyjny

2/34

1

2

3

4

5

Obsługa szyny adresowej: banki vs segmenty

offset

DS
SS
ES
FS
GS

Rej. Segment.

CS

+

Instrukcja...

16

Szyna 
adresowa

16

20

Szyna 
adresowa

8

offset

Instrukcja...

7

STATUS.RP0

LSb

MSb

1

Banki pamięci, przykład Microchip PIC

Segmenty pamięci, przykład 8086

2 Α 8 7

    1 0 0 5

  

2 Β 8 7 5

+

   

segment:

    offset:

   

adres fizyczny:

   

  0011010 

STATUS.RP0:

   

offset:

   

adres fizyczny:

  10011010 

background image

1. Własny system operacyjny

3/34

1

2

3

4

5

BIOS i start systemu

BIOS – Basic Input/Output System – oprogramowanie wbudowane w chip na płycie 

głównej komputera PC. 

1. Wykonuje procedurę POST – Power-On Self Test, w celu 

inicjalizacji i testowania urządzeń

2. Ładuje system operacyjny (boot OS)

IPL Device – Initial Program Load Device – urządzenie umożliwiające załadowanie 

systemu operacyjnego

BAID – BIOS Aware IPL Device – urządzenie IPL, które do załadowania systemu 

potrzebuje odpowiedniego kodu obsługującego w BIOS.

background image

1. Własny system operacyjny

4/34

1

2

3

4

5

BIOS i start systemu

1. Procesor wykonuje instrukcje zaczynając od 

adresu F000:FFF0 (zazwyczaj jmp)

2. Instrukcje dotyczą procedury POST

3. Po zakończeniu POST wywoływane jest 

przerwanie 19h

4. Przerwanie 19h podejmuje próbę załadowania 

systemu operacyjnego zgodnie z tablicą IPL

5. Jeśli próba się nie powiedzie, wywoływane jest 

przerwanie 18h

6. Przerwanie 18h przekazuje sterowanie do 

przerwania 19h, jeśli IPL Table posiada 
kolejen wpisy, lub wyświetla komunikat o 
błędzie

background image

1. Własny system operacyjny

5/34

1

2

3

4

5

BIOS i start systemu z dyskietki

Procesor pracuje w trybie rzeczywistym x86

Załadowanie 512 bajtów do pamięci pod adresem 0000h:7C00h z dysku z lokalizacji:

head 0, cylinder 0, 

sector 1

http://www.howtodothings.com/computers/a1015-making-your-own-operating-system.html

Każda strona dyskietki FDD ma swoją głowicę (heads 0...1). 
Każda strona składa się z 80 cylindrów, każdy cylinder 
składa się z 18 sektorów. Każdy sektor składa się z 512 
bajtów.

Łączny rozmiar dyskietki:  2 x 80 x 18 x 512 = 1,474,560

background image

1. Własny system operacyjny

6/34

1

2

3

4

5

BIOS i start systemu z dyskietki

LEA SI, 

msg

MOV AH, 0Eh
pisz:

MOV AL, [SI]
CMP AL, 0
JZ done
INT 10h.
INC SI
JMP pisz

done: 

MOV AH, 0
INT 16h
JMP   done

new_line EQU 13, 

10

msg DB ‘moj pierwszy system operacyjny!'

DB  new_line, ‘Nacisnij klawisz', 0

background image

1. Własny system operacyjny

7/34

1

2

3

4

5

DOS – szablon programu

.model small
.386

.data

tekst byte  „czesc”, 0Ah, 0Dh, „$”

.stack 100h

.code

.startup
MOV   dx, offset tekst
MOV    ah, 09h
INT      21h
.exit

end

background image

1. Własny system operacyjny

8/34

1

2

3

4

5

Segmenty i modele pamięci

.model small
.386

dane segment para

tekst byte  „czesc”, 0Ah, 0Dh, „$”

dane ends

moj_stos 

segment stack para

word 10 dup (?)

moj_stos 

ends

program segment para ‘code’

assume cs:program, ds:dane

.startup
MOV   dx, offset tekst
MOV    ah, 09h
INT      21h
.exit

program ends
end

ASSUME segRegister:segLocation [...]

name SEGMENT [align][READONLY]...

.....

name ENDS

background image

1. Własny system operacyjny

9/34

1

2

3

4

5

Budowa pliku .exe

exe_data_start = exe.header_paragraphs * 16L;

http://www.delorie.com/djgpp/doc/exe/

background image

2. Tryb chroniony x86

10/34

1

2

3

4

5

Tryb pracy procesorów x86 (IA-32)

Tryb rzeczywisty – tryb zgodny z najstarszym z rodziny 8086

Tryb chroniony – tryb przeznaczony do pracy „wielozadaniowej” pod kontrolą

systemu operacyjnego. Adresowanie może być w modelu płaskim (bez 
segmentacji), segmentowy (podobnie do trybu rzeczywistego) oraz adresowanie 
logiczne (oparty na tablicy deskryptorów i selektorach).

Tryb SMM (System Management Mode) – tryb zarządzania sprzętem przez system 

operacyjny

IA-32 – Intel Architecture 32 bit.

Tryb wirtualny 8086 – wersja trybu chronionego do wykonywania programów w 

trybie rzeczywistym

background image

2. Tryb chroniony x86

11/34

1

2

3

4

5

Tryb chroniony procesora 80386 - adresowanie

Intel IA-32 Software Developer;s Manual, August 2007

background image

2. Tryb chroniony x86

12/34

1

2

3

4

5

Tryb chroniony procesora 80386 –

adresowanie model płaski

Intel IA-32 Software Developer;s Manual, August 2007

background image

2. Tryb chroniony x86

13/34

1

2

3

4

5

Tryb chroniony procesora 80386 – zmiana zadań

Intel IA-32 Software Developer;s Manual, August 2007

background image

2. Tryb chroniony x86

14/34

1

2

3

4

5

Architektura IA-32

szybkie spojrzenie

Intel IA-32 Software Developer;s Manual, August 2007

background image

2. Tryb chroniony x86

15/34

1

2

3

4

5

Windows – szablon programu

.model    flat, stdcall
option    casemap :none

include   windows.inc
include   user32.inc
include   kernel32.inc

includelib    user32.lib
includelib    kernel32.lib

.data

Tytul_okna   byte „moje okno”, 0
Tekst_w_oknie byte „czesc!”, 0

.code 
start:

invoke MessageBox,  NULL, ADDR Tekst_w_oknie, ADDR Tytul_okna, MB_OK
invoke ExitProcess, NULL

end start

background image

2. Tryb chroniony x86

16/34

1

2

3

4

5

Przerwa na przemyślenia

.model    flat, stdcall
option    casemap :none

include   windows.inc
include   user32.inc
include   kernel32.inc

includelib    user32.lib
includelib    kernel32.lib

.data

Tytul_okna   byte „moje okno”, 0
Tekst_w_oknie byte „czesc!”, 0

.code 
start:

invoke MessageBox,  NULL, ADDR Tekst_w_oknie, ADDR Tytul_okna, MB_OK
invoke ExitProcess, NULL

end start

background image

3. Maszyna stanów procesora

17/34

1

2

3

4

5

Maszyna stanów – procesor x86

Intel IA-32 Software Developer;s Manual, August 2007

background image

3. Maszyna stanów procesora

18/34

1

2

3

4

5

Maszyna stanów –

procesor Renesas 

SH-2

RENESAS, SH7040 Hardware Manual, 2003

background image

19/34

1

2

3

4

5

4. Układ sterujący

Układ sterujący - synteza

G. De Micheli, Synteza i optymalizacja układów cyfrowych, WNT 1998

background image

20/34

1

2

3

4

5

4. Układ sterujący

Układ sterujący – kod wertykalny/horyzontalny

Kodowanie horyzontalne (poziome)

Kodowanie wertykalne (pionowe)

Kodowanie mieszane

background image

21/34

1

2

3

4

5

4. Układ sterujący

Układ sterujący – struktura hierarchiczna

background image

5. System przerwań + DMA

22/34

1

2

3

4

5

Mechanizm przerwań - PIC

Microchip, PIC16F84A datasheet

org 4h

;  - - - - - - - ;czy  TMR0  - - - - - - - -

INI_TMR0_MAIN

bcf    INTCON, T0IF

;  - - - - - - - ;czy  RB  - - - - - - - - -

INI_RB_MAIN

bcf    INTCON, RBIF

;  - - - - - - - - - - - - - - - - - - - - - -

retfie

;koniec obslugi vektora przerwan

1)

Zatrzymywane jest wykonanie programu

2)

Odkładana jest wartość rejestru PC na stos

3)

PC przyjmuje nową wartość 04h

4)

Procedura obsługi przerwania kończy się z instr. 
RETFIE

WYKONANIE PROCEDURY OBSŁUGI 
PRZERWANIA MUSI TRWAĆ KRÓTKO !!!

background image

5. System przerwań + DMA

23/34

1

2

3

4

5

Mechanizm przerwań - podział

Sytuacje wyjątkowe (exception interrupts) – zdarzenia o największym znaczeniu 

dla działania programu. Nie można ich odłożyć na później. Na przykład błąd 
dzielenia przez zero (divide-by-zero exception) lub przerwanie niemaskowalne 
(non-maskable interrupt). 

Maskowalne przerwania sprzętowe (event interrupts) – przerwania pochodzące od 

urządzeń peryferyjnych. Mogą być blokowane i mogą mieć różne priorytety. Na 
przykład przerwanie od układu Timera.

Przerwania programowe (software interrupts) – wywoływane są przez 

umieszczenie w programie instrukcji wywołania przerwania (umieszczane przez 
programistę). Wykorzystywane czasem do zapewnienia wsparcie sprzętowego dla 
priorytetów wykonania pewnych fragmentów kodu lub częściej do implementacji 
funkcji systemowych (np.. BIOS). 

Pułapki (traps) – stosowane do śledzenia wykonania programu w fazie testowania 

(breakpoints). 

background image

5. System przerwań + DMA

24/34

1

2

3

4

5

Mechanizm przerwań - ARM

background image

5. System przerwań + DMA

25/34

1

2

3

4

5

Mechanizm przerwań - PC

background image

5. System przerwań + DMA

26/34

1

2

3

4

5

Mechanizm przerwań – Intel 8259A

background image

5. System przerwań + DMA

27/34

1

2

3

4

5

1) Urządzenie zgłasza chęć przerwania na linii IRx

2) Sprawdzane jest zezwolenie na przerwanie i 

priorytety przerwań

3) Wystawiany jest sygnał na linii INT

4) Procesor odpowiada sygnałem na linii INTA

5) Procesor po raz drugi daje sygnał na INTA, na który 

kontroler wystawia na szynę danych numer 
przerwania

6) Numer przerwania jest dla procesora indeksem w 

tablicy adresów do funkcji obsługi

7) Jeśli kontroler pracuje w trybie automatycznym, sam 

odznacza wykonanie przerwania w rejestrze statusu 
przerwań, w innym przypadku program użytkownika 
musi to zrobić.

Mechanizm przerwań – Intel 8259A

background image

5. System przerwań + DMA

28/34

1

2

3

4

5

DMA - Direct Memory Access, zysk

1)

Procesor odczytuje bajt z portu IO 
i zapamiętuje w akumulatorze

2)

Procesor wpisuje wartość z 
akumulatora do pamięci

1)

Bajt wystawiany jest przez urządzenie 
i wpisywany bezpośrednio do pamieci. 
Szyna adresowa i sterująca 
kontrolowana przez kontroler DMA. 

background image

5. System przerwań + DMA

29/34

1

2

3

4

5

DMA na komputerze PC

1)

Urządzenie per. gdy ma dane do wysłania wystawia sygnał na DREQx (DMA Request)

2)

Układ DMA wystawia żądanie przejęcia szyny na linie HRQ (Hold Request)

3)

Procesor/kontroler szyny odpowiada zezwoleniem na przejęcie szyny na HLDA (Hold Ack)

4)

Układ DMA informuje urządzenie per. o przejęciu kontroli nad szyną na linii DACKx i 
rozpoczyna transmisję (IOR/IOW/MEMR/MEMW/EOP)

background image

5. System przerwań + DMA

30/34

1

2

3

4

5

Tryby pracy kontrolera DMA

„I” (Idle) – tryb spoczynkowy, oczekuje na nadejście żądania transmisji DMA

„S” (Single) – pojedyncze przesłanie. Rejestr adresowy zmniejszany/zwiększany o 

jeden. 

„B” (Block) – transmisja trwa nieprzerwanie aż do zewnętrznego sygnału EOP od 

urządzenia per. Każde przesłanie pomniejsza/powiększa rejestr adresowy o jeden.

„D” (Demand) – podobny do trybu „B”. Pozwala na przerwanie transmisji po 

określonej maksymalnej liczby cykli lub wystąpienia żądania transmisji DMA o 
wyższym priorytecie.

„C” (Cascade) – kontrolery połączone w kaskadę przekazują informację do 

urządzenia Master nie przejmując samodzielnie kontroli na szynie. 

„V” (Verify) – tryb diagnostyczny. Wystawia do urządzenia właściwe sygnały ale nie 

przejmuje kontroli nad szyną. 

background image

5. System przerwań + DMA

31/34

1

2

3

4

5

DMA – połączenie kaskadowe i podłączanie do szyny

background image

5. System przerwań + DMA

32/34

1

2

3

4

5

DTC – Data Transfer Controller, 

przykład Hitachi SH-2

background image

5. System przerwań + DMA

33/34

1

2

3

4

5

Polecana literatura

1) E. Wróbel, Asembler, Helion 2004

Rozdział 1-15

2) G. Syck, Turbo Assembler Biblia użytkownika, LT&P 1996

Rozdział 1-7

3) G. De Micheli, Synteza i optymalizacja układów cyfrowych, WNT 1998

Rozdział 4

6) Intel IA-32 Software Developers Manual, August 2007

4) P. Metzger, Anatomia PC, Helion 2001

Rozdział 6, 7

5) R. Pełka, Mikrokontrolery, architektura, programowanie, zastosowania, WKŁ 2000

Rozdział 2

background image

5. System przerwań + DMA

34/34

1

2

3

4

5

KONIEC

dr inż. Mariusz Kapruziak

mkapruziak@wi.ps.pl

pok. 107, tel. 449 55 44