Konfiguracja sprzętu i oprogramowania

Napiszmy jądro! Tworzymy najprostsze działające jądro systemu operacyjnego. Rdzeń semantyczny - jak poprawnie komponować? Stwórz rdzeń semantyczny

Rozwój jądra jest słusznie uważany za trudne zadanie, ale każdy może napisać najprostsze jądro. Aby dotknąć magii hakowania jądra, wystarczy przestrzegać pewnych konwencji i opanować asembler. W tym artykule podpowiemy, jak to zrobić.


Witaj świecie!

Napiszmy jądro, które będzie uruchamiane przez GRUB na systemach kompatybilnych z x86. Nasze pierwsze jądro wyświetli komunikat na ekranie i na tym się zatrzyma.

Jak uruchamiają się maszyny x86

Zanim zastanowimy się, jak napisać jądro, zobaczmy, jak komputer uruchamia się i przekazuje kontrolę do jądra. Większość rejestrów procesorów x86 ma określone wartości po uruchomieniu. Rejestr - wskaźnik instrukcji (EIP) zawiera adres instrukcji do wykonania przez procesor. Jego zakodowana na stałe wartość to 0xFFFFFFF0. Oznacza to, że procesor x86 zawsze rozpocznie wykonywanie od adresu fizycznego 0xFFFFFFF0. To ostatnie 16 bajtów 32-bitowej przestrzeni adresowej. Ten adres jest nazywany wektorem resetowania.

Mapa pamięci zawarta w chipsecie stwierdza, że ​​adres 0xFFFFFFF0 odnosi się do określonej części BIOS-u, a nie do Baran. Jednak BIOS kopiuje się do pamięci RAM, aby uzyskać więcej szybki dostęp- proces ten nazywa się „cieniem” (cieniem), tworzeniem kopia w tle. Tak więc adres 0xFFFFFFF0 będzie zawierał tylko instrukcję skoku do miejsca w pamięci, do którego BIOS się skopiował.

Tak więc BIOS zaczyna działać. Najpierw szuka urządzeń, które można uruchomić w kolejności określonej w ustawieniach. Sprawdza nośniki pod kątem obecności „magicznej liczby”, która je wyróżnia dyski rozruchowe od zwykłych: jeśli bajty 511 i 512 w pierwszym sektorze to 0xAA55, to dysk jest bootowalny.

Gdy tylko BIOS znajdzie urządzenie rozruchowe, skopiuje zawartość pierwszego sektora do pamięci RAM, zaczynając od adresu 0x7C00, a następnie przeniesie wykonanie na ten adres i rozpocznie wykonywanie właśnie załadowanego kodu. Ten kod nazywa się bootloaderem.

Program ładujący ładuje jądro pod adresem fizycznym 0x100000. To on jest używany przez większość popularnych jąder dla x86.

Wszystkie procesory zgodne z architekturą x86 rozpoczynają pracę w prymitywnym trybie 16-bitowym zwanym „trybem rzeczywistym”. Program ładujący GRUB przełącza procesor w 32-bitowy tryb chroniony, ustawiając dolny bit rejestru CR0 na jeden. Dlatego jądro zaczyna się uruchamiać już w 32-bitowym trybie chronionym.

Zauważ, że GRUB w przypadku jądra Linuksa wybiera odpowiedni protokół startowy i ładuje do niego jądro tryb rzeczywisty. Same jądra systemu Linux przełączają się w tryb chroniony.

Czego potrzebujemy

  • Komputer kompatybilny z x86 (oczywiście)
  • Linuks,
  • asembler NASM,
  • ld (łącznik GNU)
  • żarcie.

Punkt wejścia w asemblerze

Oczywiście chcielibyśmy napisać wszystko w C, ale nie da rady całkowicie zrezygnować z asemblera. Napiszemy mały plik w asemblerze x86, który będzie punktem wyjścia dla naszego jądra. Wszystko, co zrobi asembler, to wywoła funkcję zewnętrzną, którą napiszemy w C, a następnie zatrzyma działanie programu.

Jak sprawić, by kod asemblera był punktem wyjścia dla naszego jądra? Używamy skryptu dla linkera (linkera), który łączy pliki obiektowe i tworzy final Plik wykonywalny jądra (wyjaśnię to bardziej szczegółowo poniżej). W tym skrypcie bezpośrednio wskażemy, że chcemy, aby nasz plik binarny był ładowany pod adresem 0x100000. Jest to adres, jak już pisałem, pod którym bootloader spodziewa się zobaczyć punkt wejścia do jądra.

Oto kod asemblera.

kernel.asm
bity 32 sekcja .text global start extern kmain start: cli mov esp, przestrzeń stosu wywołanie kmmain hlt sekcja .bss resb 8192 przestrzeń stosu:

Pierwsza instrukcja bitów 32 nie jest asemblerem x86, ale dyrektywą NASM nakazującą wygenerowanie kodu dla procesora, który będzie działał w trybie 32-bitowym. Nie jest to wymagane w naszym przykładzie, ale dobrą praktyką jest wyraźne określenie tego.

Druga linia rozpoczyna sekcję tekstową, zwaną także sekcją kodu. Cały nasz kod trafi tutaj.

global to kolejna dyrektywa NASM, która deklaruje, że symbole w naszym kodzie są globalne. Pozwoli to linkerowi znaleźć symbol startu, który jest naszym punktem wejścia.

kmmain to funkcja, która zostanie zdefiniowana w naszym pliku kernel.c. extern deklaruje, że funkcja jest zadeklarowana gdzie indziej.

Następnie pojawia się funkcja start, która wywołuje kmmain i zatrzymuje procesor instrukcją hlt. Przerwania mogą obudzić procesor po hlt , więc najpierw wyłączamy przerwania za pomocą instrukcji cli (wyczyść przerwania).

Idealnie powinniśmy przydzielić trochę pamięci dla stosu i wskazać na niego wskaźnik stosu (esp). Wygląda na to, że GRUB i tak robi to za nas, aw tym momencie wskaźnik stosu jest już ustawiony. Jednak na wszelki wypadek przydzielmy trochę pamięci w sekcji BSS i skierujmy wskaźnik stosu na jego początek. Korzystamy z instrukcji resb - rezerwuje ona pamięć podaną w bajtach. Następnie pozostawiana jest etykieta wskazująca krawędź zarezerwowanego fragmentu pamięci. Zaraz przed wywołaniem kmmain wskaźnik stosu (esp) jest kierowany do tego obszaru przez instrukcję mov.

Jądro w C

W pliku kernel.asm wywołaliśmy funkcję kmmain(). Tak więc w kodzie C wykonanie rozpocznie się od tego miejsca.

jądro.c
void kmmain(void) ( const char *str = "moje pierwsze jądro"; char *vidptr = (char*)0xb8000; unsigned int i = 0; unsigned int j = 0; while(j< 80 * 25 * 2) { vidptr[j] = " "; vidptr = 0x07; j = j + 2; } j = 0; while(str[j] != "\0") { vidptr[i] = str[j]; vidptr = 0x07; ++j; i = i + 2; } return; }

Wszystko, co nasze jądro zrobi, to wyczyści ekran i wypisze ciąg mojego pierwszego jądra.

Przede wszystkim tworzymy wskaźnik vidptr, który wskazuje na adres 0xb8000. W trybie chronionym jest to początek pamięci wideo. Pamięć ekranów tekstowych to tylko część przestrzeni adresowej. Dla ekranu I/O przeznaczony jest obszar pamięci, który zaczyna się od adresu 0xb8000 - mieści 25 linii po 80 znaków ASCII.

Każdy znak w pamięci tekstowej jest reprezentowany przez 16 bitów (2 bajty), a nie 8 bitów (1 bajt), do których jesteśmy przyzwyczajeni. Pierwszy bajt to kod znaku w ASCII, a drugi to bajt atrybutu. Jest to definicja formatu znaku, w tym jego koloru.

Aby wydrukować znak s w kolorze zielonym na czarnym, musimy umieścić s w pierwszym bajcie pamięci wideo, a wartość 0x02 w drugim bajcie. 0 oznacza tutaj czarne tło, a 2 oznacza zielone. Użyjemy jasnoszarego koloru, jego kod to 0x07.

W pierwszej pętli while program wypełnia wszystkie 25 wierszy po 80 znaków pustymi znakami z atrybutem 0x07. Spowoduje to wyczyszczenie ekranu.

W drugiej pętli while znaki zakończonego znakiem null łańcucha mojego pierwszego jądra są zapisywane w pamięci wideo, a każdy znak otrzymuje bajt atrybutu równy 0x07. Powinno to skutkować wyjściem ciągu.

Układ

Teraz musimy skompilować kernel.asm do pliku obiektowego za pomocą NASM, a następnie użyć GCC do skompilowania kernel.c do innego pliku obiektowego. Naszym zadaniem jest połączenie tych obiektów w wykonywalne jądro odpowiednie do załadowania. W tym celu należy napisać skrypt dla linkera (ld), który przekażemy jako argument.

link.ld
OUTPUT_FORMAT(elf32-i386) ENTRY(start) SEKCJE ( . = 0x100000; .text: ( *(.text) ) .data: ( *(.data) ) .bss: ( *(.bss) ) )

Tutaj najpierw ustawiamy format (OUTPUT_FORMAT) naszego pliku wykonywalnego na 32-bitowy format ELF (Executable and Linkable Format), standardowy format binarny dla obrazów systemu x86 Unix.

ENTRY przyjmuje jeden argument. Określa nazwę symbolu, który będzie służył jako punkt wejścia pliku wykonywalnego.

SEKCJE to dla nas najważniejsza część. Tutaj definiujemy układ naszego pliku wykonywalnego. Możemy określić, w jaki sposób różne sekcje zostaną połączone i gdzie każda z nich zostanie umieszczona.

W nawiasy klamrowe, które następują po wyrażeniu SECTIONS, kropka oznacza licznik lokalizacji. Jest automatycznie inicjalizowany na 0x0 na początku bloku SECTIONS, ale można go zmienić, przypisując nową wartość.

Wcześniej pisałem już, że kod jądra powinien zaczynać się od 0x100000. Dlatego przypisujemy wartość 0x100000 do licznika pozycji.

Spójrz na line.text: ( *(.text) ) . Gwiazdka tutaj określa maskę pasującą do dowolnej nazwy pliku. W związku z tym wyrażenie *(.text) oznacza wszystkie wejściowe sekcje .text we wszystkich plikach wejściowych.

W rezultacie linker scali wszystkie sekcje tekstowe wszystkich plików obiektowych w sekcję tekstową pliku wykonywalnego i umieści ją pod adresem określonym w liczniku pozycji. Sekcja kodu naszego pliku wykonywalnego rozpocznie się od 0x100000.

Gdy konsolidator wyrenderuje sekcję tekstową, wartość licznika pozycji wyniesie 0x100000 plus rozmiar sekcji tekstowej. Podobnie sekcje data i bss zostaną scalone i umieszczone pod adresem podanym przez licznik pozycji.

GRUB i multiboot

Teraz wszystkie nasze pliki są gotowe do zbudowania jądra. Ale ponieważ będziemy uruchamiać jądro za pomocą GRUB , pozostał jeszcze jeden krok.

Istnieje standard uruchamiania różnych jąder x86 za pomocą programu ładującego. Nazywa się to „specyfikacją wielu systemów operacyjnych”. GRUB załaduje tylko pasujące jądra.

Zgodnie z tą specyfikacją jądro może zawierać nagłówek (nagłówek Multiboot) w pierwszych 8 kilobajtach. Ten nagłówek powinien zawierać trzy pola:

  • magia- zawiera „magiczną” liczbę 0x1BADB002, po której identyfikowany jest nagłówek;
  • flagi- to pole nie jest dla nas ważne, możesz zostawić zero;
  • suma kontrolna- suma kontrolna, powinna dać zero, jeśli zostanie dodana do pól magii i flag.

Nasz plik kernel.asm będzie teraz wyglądał tak.

kernel.asm
bity 32 sekcja .text ;specyfikacja multiboot align 4 dd 0x1BADB002 ;magic dd 0x00 ;flagi dd - (0x1BADB002 + 0x00) ;sumy kontrolne global start extern kmain start: cli mov esp, przestrzeń_stosu wywołanie kmain hlt sekcja .bss resb 8192 przestrzeń stosu:

Instrukcja dd określa 4-bajtowe podwójne słowo.

Montaż rdzenia

Wszystko jest więc gotowe do utworzenia pliku obiektowego z kernel.asm i kernel.c i połączenia ich za pomocą naszego skryptu. Piszemy w konsoli:

$ nasm -f elf32 kernel.asm -o kasm.o

Za pomocą tego polecenia asembler utworzy plik kasm.o w formacie ELF-32-bitowym. Teraz kolej na GCC:

$ gcc -m32 -c kernel.c -o kc.o

Opcja -c określa, że ​​plik nie musi być dowiązany po kompilacji. Zrobimy to sami:

$ ld -m elf_i386 -T link.ld -o kernel kasm.o kc.o

To polecenie uruchomi linker z naszym skryptem i wygeneruje plik wykonywalny o nazwie kernel .

OSTRZEŻENIE

Hakowanie jądra najlepiej przeprowadzać na maszynie wirtualnej. Aby uruchomić jądro w QEMU zamiast GRUB, użyj polecenia qemu-system-i386 -jądro jądra.

Konfigurowanie GRUB i uruchamianie jądra

GRUB wymaga, aby nazwa pliku jądra była zgodna z konwencją kernel-<версия>. Więc zmień nazwę pliku - ja nazwę mój kernel-701 .

Teraz umieszczamy jądro w katalogu /boot. Będzie to wymagało uprawnień administratora.

W pliku konfiguracyjnym GRUB grub.cfg musisz dodać coś takiego:

Tytuł myKernel root (hd0,0) kernel /boot/kernel-701 ro

Nie zapomnij usunąć dyrektywy ukrytego menu, jeśli jest obecna.

GRUB 2

Aby uruchomić jądro, które stworzyliśmy w GRUB 2, które jest domyślnie dostarczane w nowych dystrybucjach, twoja konfiguracja powinna wyglądać tak:

Pozycja menu „kernel 701” ( set root="hd0,msdos1" multiboot /boot/kernel-701 ro )

Podziękowania dla Rubena Laguany za ten dodatek.

Uruchom ponownie komputer i powinieneś zobaczyć swoje jądro na liście! Wybierając go, zobaczysz tę samą linię.



To jest twój rdzeń!

Pisanie jądra z obsługą klawiatury i ekranu

Zakończyliśmy pracę nad minimalnym jądrem, które uruchamia się przez GRUB, działa w trybie chronionym i wyświetla jedną linię na ekranie. Czas ją rozszerzyć i dodać sterownik klawiatury, który odczyta znaki z klawiatury i wyświetli je na ekranie.

Będziemy komunikować się z urządzeniami I/O poprzez porty I/O. Zasadniczo są to po prostu adresy na szynie we/wy. Do operacji odczytu i zapisu w nich istnieją specjalne instrukcje procesora.

Praca z portami: odczyt i wyjście

read_port: mov edx, in al, dx ret write_port: mov edx, mov al, out dx, al ret

Dostęp do portów I/O uzyskuje się za pomocą instrukcji wejścia i wyjścia, które są częścią zestawu x86.

W read_port numer portu jest przekazywany jako argument. Gdy kompilator wywołuje funkcję, odkłada wszystkie argumenty na stos. Argument jest kopiowany do rejestru edx za pomocą wskaźnika stosu. Rejestr dx to dolne 16 bitów rejestru edx. Instrukcja in odczytuje numer portu podany w dx i umieszcza wynik w al . Rejestr al to 8 niższych bitów rejestru eax. Być może pamiętasz z kursu na studiach, że zwracane wartości funkcji są przekazywane przez rejestr eax. Więc read_port pozwala nam czytać z portów I/O.

Funkcja write_port działa w podobny sposób. Przyjmujemy dwa argumenty: numer portu oraz dane do zapisania. Instrukcja out zapisuje dane do portu.

Przerywa

Teraz, zanim wrócimy do pisania sterownika, musimy zrozumieć, skąd procesor wie, że urządzenie wykonało operację.

Najprostszym rozwiązaniem jest sondowanie urządzeń - ciągłe sprawdzanie ich statusu w kółku. Jest to z oczywistych względów nieefektywne i niepraktyczne. Więc tutaj w grę wchodzą przerwania. Przerwanie to sygnał wysyłany do procesora przez urządzenie lub program, który wskazuje, że wystąpiło zdarzenie. Używając przerwań, możemy uniknąć konieczności odpytywania urządzeń i będziemy reagować tylko na interesujące nas zdarzenia.

Za przerwania w architekturze x86 odpowiada układ o nazwie Programmable Interrupt Controller (PIC). Obsługuje przerwania i trasy sprzętowe i zamienia je na odpowiednie przerwania systemowe.

Kiedy użytkownik robi coś z urządzeniem, do układu PIC wysyłany jest impuls zwany żądaniem przerwania (IRQ). PIC tłumaczy odebrane przerwanie na przerwanie systemowe i wysyła wiadomość do procesora, że ​​nadszedł czas, aby zatrzymać to, co robi. Dalsza obsługa przerwań jest zadaniem jądra.

Bez PIC musielibyśmy sondować wszystkie urządzenia obecne w systemie, aby sprawdzić, czy wystąpiło zdarzenie z udziałem któregokolwiek z nich.

Zobaczmy, jak to działa w przypadku klawiatury. Klawiatura zawiesza się na portach 0x60 i 0x64. Port 0x60 wysyła dane (po naciśnięciu przycisku), a port 0x64 wysyła stan. Musimy jednak wiedzieć, kiedy dokładnie czytać te porty.

Przerwania są tutaj bardzo przydatne. Gdy przycisk jest wciśnięty, klawiatura wysyła sygnał PIC na linii przerwań IRQ1. sklepy PIC wartość przesunięcia, zapisany podczas jego inicjalizacji. Dodaje numer linii wejściowej do tego wypełnienia, aby utworzyć wektor przerwań. Następnie procesor wyszukuje strukturę danych zwaną tablicą deskryptorów przerwań (IDT), aby nadać funkcji obsługi przerwań adres odpowiadający jej numerowi.

Kod pod tym adresem jest następnie wykonywany i obsługuje przerwanie.

Ustawianie IDT

struct IDT_entry( unsigned short int offset_lowerbits; unsigned short int selektor; unsigned char zero; unsigned char type_attr; unsigned short int offset_higherbits; ); struct IDT_entry IDT; void idt_init(void) ( unsigned long keyboard_address; unsigned long idt_address; unsigned long idt_ptr; keyboard_address = (unsigned long)keyboard_handler; IDT.offset_lowerbits = keyboard_address & 0xffff; IDT.selector = 0x08; /* KERNEL_CODE_SEGMENT_OFFSET */ IDT.zero = 0 ;IDT.type_attr = 0x8e; /* INTERRUPT_GATE */ IDT.offset_higherbits = (adres_klawiatury i 0xffff0000) >> 16; write_port(0x20, 0x11); write_port(0xA0, 0x11); write_port(0x21, 0x20); write_port(0xA1, 0x28); write_port(0x21, 0x00); write_port(0xA1, 0x00); write_port(0x21, 0x01); write_port(0xA1, 0x01); write_port(0x21, 0xff); write_port(0xA1, 0xff); idt_address = (długi bez znaku )IDT ; idt_ptr = (sizeof (struct IDT_entry) * IDT_SIZE) + ((idt_address & 0xffff)<< 16); idt_ptr = idt_address >> 16; load_idt(idt_ptr); )

IDT to tablica zawierająca struktury IDT_entry. Później porozmawiamy o powiązaniu przerwania klawiaturowego z procedurą obsługi, ale teraz zobaczmy, jak działa PIC.

Nowoczesne systemy x86 mają dwa chipy PIC, każdy z ośmioma liniami wejściowymi. Nazwijmy je PIC1 i PIC2. PIC1 odbiera od IRQ0 do IRQ7, a PIC2 odbiera od IRQ8 do IRQ15. PIC1 używa portu 0x20 dla poleceń i 0x21 dla danych, podczas gdy PIC2 używa portu 0xA0 dla poleceń i 0xA1 dla danych.

Oba PIC są inicjowane za pomocą ośmiobitowych słów zwanych „słowami polecenia inicjalizacji” (ICW).

W trybie chronionym oba PIC muszą najpierw wydać polecenie inicjalizacji ICW1 (0x11). Mówi PIC, aby poczekał, aż trzy kolejne początkowe słowa dotrą do portu danych.

Te polecenia wyślą PIC:

  • wektor przesunięcia (ICW2),
  • jakie są relacje master/slave między PIC (ICW3),
  • dodatkowe informacje o środowisku (ICW4).

Drugie polecenie inicjalizacji (ICW2) jest również wysyłane na wejście każdego PIC. Przypisuje offset , czyli wartość, do której dodajemy numer linii, aby uzyskać numer przerwania.

PIC umożliwiają kaskadowanie ich wyjść do wejść innych. Odbywa się to za pomocą ICW3, a każdy bit reprezentuje stan kaskadowy dla odpowiedniego przerwania IRQ. Na razie nie będziemy używać przekierowania kaskadowego i ustawimy je na zero.

ICW4 określa dodatkowe parametry środowiska. Musimy tylko zdefiniować dolny bit, aby PIC wiedziały, że działamy w trybie 80x86.

Ta dama! PIC są teraz zainicjowane.

Każdy PIC ma wewnętrzny ośmiobitowy rejestr zwany rejestrem masek przerwań (IMR). Przechowuje mapę bitową linii IRQ, które idą do PIC. Jeśli bit jest ustawiony, PIC ignoruje żądanie. Oznacza to, że możemy włączyć lub wyłączyć określoną linię IRQ, ustawiając odpowiednią wartość na 0 lub 1.

Odczyt z portu danych zwraca wartość w rejestrze IMR, a zapis zmienia wielkość liter. W naszym kodzie po inicjalizacji PIC ustawiamy wszystkie bity na jeden, co dezaktywuje wszystkie linie IRQ. Później aktywujemy linie odpowiadające przerwaniom klawiaturowym. Ale najpierw wyłączmy to!

Jeśli linie IRQ działają, nasze PIC mogą odbierać sygnały na IRQ i konwertować je na numer przerwania poprzez dodanie przesunięcia. Musimy wypełnić IDT w taki sposób, aby numer przerwania, który przyszedł z klawiatury, zgadzał się z adresem funkcji obsługi, którą napiszemy.

Z jakim numerem przerwania musimy powiązać program obsługi klawiatury w IDT?

Klawiatura wykorzystuje IRQ1. To jest linia wejściowa 1 i jest obsługiwana przez PIC1. Zainicjowaliśmy PIC1 z przesunięciem 0x20 (patrz ICW2). Aby uzyskać numer przerwania, dodaj 1 i 0x20, aby uzyskać 0x21. Oznacza to, że adres procedury obsługi klawiatury zostanie powiązany w IDT z przerwaniem 0x21.

Zadanie polega na wypełnieniu IDT dla przerwania 0x21. Zmapujemy to przerwanie do funkcji keyboard_handler, którą zapiszemy w pliku asemblera.

Każdy wpis w IDT składa się z 64 bitów. We wpisie odpowiadającym przerwaniu nie zapisujemy adresu całej funkcji obsługi. Zamiast tego podzieliliśmy go na dwie części po 16 bitów. Niższe bity są przechowywane w pierwszych 16 bitach rekordu IDT, a górne 16 bitów jest przechowywanych w ostatnich 16 bitach rekordu. Wszystko to ma na celu kompatybilność z procesorami 286. Jak widać, Intel robi te liczby regularnie i to w wielu, wielu miejscach!

W rekordzie IDT pozostaje nam jeszcze zarejestrować typ, oznaczający w taki sposób, że wszystko to jest zrobione po to, aby złapać przerwanie. Musimy również ustawić przesunięcie segmentu kodu jądra. GRUB definiuje dla nas GDT. Każdy wpis GDT ma długość 8 bajtów, gdzie deskryptor kodu jądra jest drugim segmentem, więc jego przesunięcie wynosi 0x08 (szczegóły nie zmieszczą się w tym artykule). Bramka przerwania jest reprezentowana jako 0x8e. Pozostałe 8 bitów w środku jest wypełnionych zerami. W ten sposób wypełnimy wpis IDT odpowiadający przerwaniu klawiaturowemu.

Po zakończeniu mapowania IDT musimy powiedzieć procesorowi, gdzie znajduje się IDT. Aby to zrobić, istnieje instrukcja asemblera, która zajmuje jeden operand. Są wskaźnikiem do uchwytu do struktury opisującej IDT.

Nie ma problemów z deskryptorem. Zawiera rozmiar IDT w bajtach i jego adres. Użyłem tablicy, aby była bardziej zwarta. Podobnie możesz wypełnić deskryptor strukturą.

W zmiennej idr_ptr mamy wskaźnik, który przekazujemy do instrukcji lidt w funkcji load_idt().

Load_idt: mov edx, lidt sti ret

Dodatkowo, funkcja load_idt() zwraca przerwanie podczas korzystania z instrukcji sti.

Po wypełnieniu i załadowaniu IDT możemy uzyskać dostęp do IRQ klawiatury za pomocą maski przerwania, o której mówiliśmy wcześniej.

Void kb_init(void) ( write_port(0x21 , 0xFD); )

0xFD to 11111101 - włącz tylko IRQ1 (klawiatura).

Funkcja - obsługa przerwań klawiaturowych

Udało nam się więc zmapować przerwania klawiaturowe do funkcji keyboard_handler, tworząc wpis IDT dla przerwania 0x21. Ta funkcja będzie wywoływana za każdym razem, gdy klikniesz przycisk.

Keyboard_handler: zadzwoń do keyboard_handler_main iretd

Ta funkcja wywołuje inną funkcję napisaną w C i zwraca sterowanie za pomocą instrukcji z klasy iret. Moglibyśmy tutaj napisać całą naszą procedurę obsługi, ale o wiele łatwiej jest pisać w C, więc przejdźmy tam. Instrukcje iret/iretd powinny być używane zamiast ret, gdy sterowanie powraca z funkcji obsługi przerwań do przerwanego programu. Ta klasa instrukcji podnosi rejestr flagowy, który jest umieszczany na stosie, gdy wywoływane jest przerwanie.

Void keyboard_handler_main(void) ( unsigned char status; char keycode; /* Zapis EOI */ write_port(0x20, 0x20); status = read_port(KEYBOARD_STATUS_PORT); /* Bit stanu niskiego zostanie ustawiony, jeśli bufor nie jest pusty */ if ( status & 0x01) (kod_klucza = read_port(KEYBOARD_DATA_PORT); if(keycode< 0) return; vidptr = keyboard_map; vidptr = 0x07; } }

Tutaj najpierw podajemy sygnał EOI (End Of Interrupt), zapisując go do portu poleceń PIC. Tylko wtedy PIC zezwoli na dalsze żądania przerwań. Musimy odczytać dwa porty: port danych 0x60 i port poleceń (inaczej port statusu) 0x64.

Przede wszystkim odczytujemy port 0x64, aby uzyskać status. Jeśli dolny bit stanu wynosi zero, to bufor jest pusty i nie ma danych do odczytania. W innych przypadkach możemy odczytać port danych 0x60. Poda nam kod wciśniętego klawisza. Każdy kod odpowiada jednemu przyciskowi. Używamy prostej tablicy znaków zdefiniowanej w pliku keyboard_map.h do mapowania kodów na odpowiednie znaki. Znak jest następnie drukowany na ekranie przy użyciu tej samej techniki, której użyliśmy w pierwszej wersji jądra.

Aby zachować prostotę kodu, przetwarzam tutaj tylko małe litery od a do z i cyfry od 0 do 9. Możesz łatwo dodawać znaki specjalne, Alt, Shift i Zamek pokrywy. Możesz dowiedzieć się, czy klawisz został naciśnięty lub zwolniony z wyjścia portu poleceń i podjąć odpowiednią akcję. W ten sam sposób możesz powiązać dowolne skróty klawiaturowe funkcje specjalne jak wyłączenie.

Teraz możesz zbudować jądro, uruchomić je na prawdziwej maszynie lub na emulatorze (QEMU) w taki sam sposób, jak w części pierwszej.

Same żądania można podzielić na trzy grupy:

  1. Żądania podstawowe ogólnie scharakteryzuj witrynę. Np. dla mojej strony: zarobki w domu, zarobki w internecie, praca w internecie.
  2. Podstawowe prośby zawarte są w rdzeniu semantycznym i warto za ich pomocą promować serwis. Np.: zarobki w internecie bez inwestycji, praca w internecie dla mam.
  3. Zapytania pomocnicze lub asocjacyjne, tj. podobne w znaczeniu do głównych. Na przykład, kto pracować na urlopie macierzyńskim, praca w niepełnym wymiarze godzin dla mamy na urlopie macierzyńskim.

Rdzeń semantyczny tworzymy własnymi rękami online

wordstat.yandex.ru bardzo niedrogi sposób stworzyć S.A. Ta witryna pokazuje, ile razy w miesiącu użytkownicy wprowadzają określoną frazę (kluczowe zapytanie) do wyszukiwania.

Praca jest dość prosta - w polu głównym wpisz podstawowe zapytanie, które będzie charakteryzowało witrynę jako całość lub żądaną stronę / sekcję witryny. Na przykład zarabianie pieniędzy w Internecie.

Po lewej stronie otrzymasz listę próśb podstawowych (zarabianie w internecie bez inwestycji) oraz pomocniczych (zarabianie w internecie, dodatkowy dochód).

Pamiętaj, że te liczby pokazują, ile razy się spotkaliście dana prośba, ale nie konkretnie w tej formie. Na przykład ludzie szukali nie „zarabiania bez inwestycji”, ale „zarabiania w Internecie bez inwestycji”, „zarabiania bez inwestycji” itp.

Aby zrozumieć, ile razy ludzie szukali określonej frazy, musisz ująć ją w cudzysłów i postawić na początku wykrzyknik: „!zarobek bez inwestycji”. Wartość stała się kilka razy mniejsza, ale teraz już wiesz dokładna częstotliwość, tj. ile osób szuka tego konkretnego wyrażenia.

Podobnie wybór słowa kluczowe dla Google (Google.Adwords) i Rambler (Rambler.Adstat). Reszta wyszukiwarek jest zbyt mało istotna, aby dobierać dla nich zapytania.

Ale musisz przyznać, że ręczne wybranie wszystkich tych żądań jest bardzo trudne, ponure i długie. Dlatego lepiej jest korzystać z programów.

Tworzymy rdzeń semantyczny: programy

  1. Na Górny panel kliknij koło zębate i przejdź do ustawień. Istnieje wiele rzeczy, które możesz tutaj dostosować, ale na razie przejdź do ostatnia zakładka Yandex.Direct;
  2. Wprowadź swoją nazwę użytkownika i hasło Yandex (utwórz dodatkowe pole, ponieważ można je zbanować);
  3. Kliknij Utwórz nowy projekt, nazwij i zapisz;
  4. Kliknij „Zbiór wsadowy słów z lewej kolumny Yandex Wordstat”;
  5. Wprowadź podstawowe żądanie i kilka głównych, a następnie kliknij Rozpocznij zbieranie;
  6. Przejrzyj SERP i zaznacz wszystkie, które nie działają dla Ciebie, a następnie kliknij kliknij prawym przyciskiem myszy mysz i usuń zaznaczone linie;
  7. Kliknij „Zbierz częstotliwości z usługi Yandex.Wordstat” - Zbierz częstotliwości „!”.
  8. Skoncentruj się na kolumnie „Częstotliwość”!” - Jest to określona liczba zapytań o tę konkretną frazę (miesięcznie). Możesz filtrować w porządku rosnącym i natychmiast usuwać wszystkie zwarcia o częstotliwości poniżej 30 - to tylko 1 żądanie dziennie.
  9. Eksportuj dane do Excela - kliknij odpowiednią ikonę na górnym pasku.

program płatny(około 1700 rubli). Współpracują z nim profesjonalni SEOwcy. Jeśli chcesz tylko kupić SL na małego bloga i to wszystko, nie warto płacić takich pieniędzy za program, lepiej skorzystać ze Slovoeba. Najczęściej kupują go doświadczeni blogerzy posiadający wiele serwisów lub webwriterzy zajmujący się artykułami SEO.

Praca z programem jest bardzo prosta:

  1. Rozpocznij nowy projekt;
  2. Wybierz region Rosja + WNP (lub inny);
  3. Wprowadź wyszukiwane hasło i kliknij przycisk Yandex.Wordstat (przycisk 1 podświetlony na zielono);
  4. Przejrzyj opcje i wybierz odpowiednie;
  5. Przekaż odpowiednie żądania do podświetlonych na ekranie na zielono przycisków 2 i 3;
  6. Zdobądź odpowiednie klucze.

Sam program jest dość łatwy w użyciu + w Internecie są instrukcje. Możesz kupić i używać, jeśli chcesz.

Rdzeń semantyczny komponujemy własnymi rękami

Wybierz odpowiednie słowa kluczowe, korzystając z powyższych metod. Nie powinieneś od razu wpisywać 2000, możesz ograniczyć się do 200 żądań, a następnie rozwijać. Usiądź i pomyśl, jakich kluczy możesz użyć i wymyślić pełna lista. Musisz wpisać klucze dla pierwszej strony i dla kilku kolejnych artykułów.

Wyeliminuj słowa i zapytania, których nie planujesz przesuwać. Często spotykam się z prośbami typu „praca w domu Perm” lub w innych miastach, więc od razu je odrzucam. Oceń od razu - co ludzie chcą dostać za tę prośbę i czy możesz to dać?

Usuń wysoce konkurencyjne zapytania, dla których nie uda Ci się przebić do TOP10. W razie wątpliwości sprawdź poziom konkurencji na stronie Mutagen. Cóż, lub ręcznie oceń problem - popularne zapytania są natychmiast widoczne.

Rozpowszechniaj zapytania w witrynie. Zapytania o średniej częstotliwości trafiają na stronę główną, grupują zapytania o niskiej częstotliwości według ich znaczenia i wykorzystują je w artykułach lub sekcjach. Używaj ich jak słowa kluczowe w artykułach (1 główny o średniej częstotliwości, kilka o niskiej częstotliwości w artykule i podtytułach oraz rozcieńczone pomocniczymi w tekście). Wprowadź średnio 1-2 klucze na 2000 znaków, nie częściej.

Niektórzy ludzie nie tworzą SA i nadal odnoszą sukcesy. Ale lepiej wiedzieć, jak skomponować rdzeń semantyczny własnymi rękami, programy do selekcji słów zrobią to prawie automatycznie (słowa). A wtedy będzie ci znacznie łatwiej opracowywać i pisać artykuły.

Pozdrowienia dla moich drogich czytelników!

Jestem pewien, że wielu z Was nie tylko słyszało, ale nawet nie zdaje sobie sprawy, że istnieje coś takiego jak rdzeń semantyczny! A o co pytasz? Spróbuję ci to wytłumaczyć w prostych słowach. Rdzeń semantyczny to zestaw słów kluczowych, fraz, prostych zdań, fraz itp., które wyszukiwarka (dalej PS) wyświetla po wprowadzeniu zapytania w wierszu przeglądarki.

Do czego służy rdzeń semantyczny? Semantyczny rdzeń witryny jest podstawą promocji i promocji, jest niezbędny do wewnętrznej optymalizacji. Bez rdzeń semantyczny promocja Twojego projektu (strony internetowej) nie będzie skuteczna. Im bardziej kompetentnie skomponowany jest semantyczny rdzeń witryny, tym mniej pieniędzy będziesz potrzebować na jej skuteczną promocję. Nic nie jest jeszcze jasne, prawda? Nie martw się, zrobię co w mojej mocy, aby to rozbić najlepiej jak potrafię. Przeczytaj uważnie i zrozum wszystko!

Jak zrobić rdzeń semantyczny!

Pierwszą rzeczą, którą musisz zrobić po podjęciu decyzji co do tematu bloga, jest stworzenie rdzenia semantycznego. Aby to zrobić, musisz wziąć notatnik i długopis i zapisać wszystkie słowa, frazy, zdania, które charakteryzują temat Twojego bloga. Każde słowo, fraza lub zdanie to tak naprawdę przyszłe nagłówki Twoich postów, a im więcej słów wymyślisz, tym większy wybór będziesz mieć przy pisaniu artykułów w przyszłości.

A zrobienie dość solidnej listy (200-300 słów) zajmie ci dużo czasu. Dlatego dla wygody użyjemy usługi specjalne, takie jak Yandex wordstat, Google adwords, Rambler adstat, znacznie ułatwią nam zadanie, kiedy. Oczywiście można było zrezygnować tylko z Yandex i Google. to giganci w wyszukiwaniu słów kluczowych w porównaniu do Ramblera, ale statystyki pokazują, że 5-6% ludzi nadal używa Ramblera jako wyszukiwarki, więc nie zaniedbujmy tego.

Aby znacznie ułatwić Ci opanowanie materiału, pokażę wszystko na konkretnych przykładach. Zgadzam się, teoria jest dobra, ale jeśli chodzi o praktykę, wiele osób zaczyna mieć problemy. Dlatego wspólnie skomponujemy rdzeń semantyczny, abyś w przyszłości mógł bez problemu przenieść zdobytą wiedzę i doświadczenie na tematykę swojego bloga. Załóżmy, że motyw Twojego bloga to „Photoshop » i wszystko co z tym związane. Dlatego, jak napisano powyżej, musisz wymyślić i zapisać w zeszycie jak najwięcej słów, zwrotów, zwrotów, wyrażeń - możesz je nazwać, jak chcesz. Oto słowa, które scharakteryzowałem tematem bloga o Photoshopie. Oczywiście nie wymienię całej listy słów, ale tylko część, abyś zrozumiał sam sens kompilacji rdzenia semantycznego:

Pędzle Photoshopa
pędzle do photoshopa
pędzle photoshopa
pędzle photoshopa
efekty photoshopa
efekty photoshopa
efekt fotoelektryczny
rysunki w photoshopie
rysunki w photoshopie
kolaż
kolaż zdjęć
fotomontaż
ramki na zdjęcia
projekt fotografii

Lista została sporządzona. Cóż, zacznijmy. Zrobię rezerwację od razu, Twoja lista może się znacznie różnić od mojej i powinna być dużo większa. Skompilowałem tę listę słów dla przejrzystości, abyś mógł uchwycić samą istotę tego, jak skomponować rdzeń semantyczny.

Statystyki słów kluczowych Yandex wordstat

Po utworzeniu listy należy usunąć wszystkie słowa, których nie potrzebujemy, za które na pewno nie będziemy promować naszego bloga. Na przykład nie będę wyprzedzał takimi słowami jak (pędzle photoshop torrent, pędzle do makijażu photoshop), te zwroty w ogóle nie są dla mnie jasne, odfiltrowujemy też podobne zwroty jak (pędzle photoshop za darmo i darmowe pędzle photoshop) . Myślę, że rozumiesz znaczenie doboru słów kluczowych.

Następnie widzisz, że w Yandex wordstat są dwie kolumny. Kolumna po lewej pokazuje, czego ludzie szukali, wpisując w polu wyszukiwania, w naszym przypadku frazę „pędzle Photoshop”. Prawa kolumna pokazuje, czego jeszcze szukali ludzie, gdy szukali frazy „pędzle Photoshop”. Radzę nie ignorować prawej kolumny, ale wybrać z niej wszystkie słowa, które są odpowiednie dla twojego tematu.

Dobra, załatwione, przejdźmy dalej. Inny bardzo ważny punkt, jak widać w wynikach wyszukiwania hasła „pędzle do programu Photoshop” widzimy ogromną liczbę 61134 zapytań! Ale to nie znaczy, że fraza „pędzle Photoshopa” była wpisywana tyle razy w miesiącu w polu wyszukiwania Yandex. Yandex wordstat jest zaprojektowany w taki sposób, że jeśli wprowadzimy frazę „pędzle do Photoshopa”, poda nam liczbę żądań, co będzie oznaczać, ile razy ludzie szukali dowolnych form słów (pędzle do Photoshopa, pędzle do Photoshopa a, cysta b photoshop itp.), frazy (zdania) (darmowe pędzle Photoshop, pobierz pędzle Photoshop za darmo itp.), w których występuje fraza „pędzle Photoshop”. Myślę, że to też jest zrozumiałe.

Aby Yandex wordstat podał nam (względnie) dokładną liczbę żądań, istnieją operatory specjalne, takie jak ("", "!"). Jeśli wpiszesz frazę „pędzle photoshop” w cudzysłów, zobaczysz zupełnie inną liczbę, która pokazuje, ile razy ludzie szukali frazy „pędzle photoshop” w różnych formach słownych (pędzle photoshop a itp.).

Podczas wprowadzania frazy „!pędzle!do!Photoshopa” w cudzysłowie i z wykrzyknik otrzymamy dokładną liczbę próśb o „!pędzle!do!Photoshopa” w obecnej postaci, tj. bez deklinacji, form wyrazów i zwrotów. Myślę, że zrozumiałeś znaczenie, przeżułeś je najlepiej, jak potrafiłeś.

Tak więc, po utworzeniu imponującej listy w programie Excel, musisz zastosować operator „!” do każdego słowa (frazy). Kiedy skończysz, będziesz mieć listę z dokładną liczbą żądań / miesięcznie, którą trzeba będzie ponownie dostosować.

Ale o tym później, po przyjrzeniu się dwóm innym systemom badania słów kluczowych (Google adwords i Rambler adstat). Ponieważ po ich rozważeniu lista słów kluczowych zostanie znacznie uzupełniona.

Wybór słów kluczowych Google Adwords

Google adwords służy również do wybierania słów kluczowych, jest to usługa podobna do Yandex wordstat. Idźmy tak dalej. Naszym oczom ukaże się okno wyboru słów kluczowych Google AdWords. W ten sam sposób wpisujemy w wierszu wyszukiwania pierwszą frazę z naszej listy „pędzli Photoshop”. Pamiętaj, że w Google adwords nie ma operatorów, ale wystarczy zaznaczyć pole obok słowa [Ścisłe] w kolumnie Typy dopasowań. Jak widać ilość zapytań/miesięcznie w Google adwords znacznie różni się od Yandex wordstat. Sugeruje to, że coraz więcej osób nadal korzysta z wyszukiwarki Yandex. Ale jeśli przejrzysz całą listę, możesz znaleźć te słowa kluczowe, których Yandex wordstat w ogóle nie pokazuje.

Również w Google adwords można dowiedzieć się wielu ciekawych rzeczy (np. orientacyjny koszt kliknięcia), które również należy wziąć pod uwagę przy doborze słów kluczowych. W jaki sposób więcej cena za kliknięcie — bardziej konkurencyjne żądanie. Nie będę się tu szczegółowo rozwodził, zasada wyboru słów kluczowych jest podobna do Yandex wordstat i przy odrobinie kopania sam możesz to rozgryźć. Pójść dalej.

Statystyki wyszukiwanych haseł Rambler adstat

Jak wspomniałem powyżej, Rambler adstat jest znacznie gorszy od dwóch poprzednich serwisów, ale nadal można z niego uzyskać trochę informacji. Idźmy dalej w ten sam sposób iw ten sam sposób wpiszmy pierwszą frazę z naszej listy „pędzli photoshopowych” w wyszukiwarkę. Myślę, że tutaj również nie warto szczegółowo się rozwodzić. Powtarzam jeszcze raz zasada doboru słów kluczowych dla wszystkich trzech systemów jest podobna.

Zapoznaliśmy się z trzema usługami doboru słów kluczowych. W rezultacie masz ogromną listę utworzoną ze wszystkich trzech usług, w której dokonałeś już wyboru tych żądań, dla których nie planujesz awansować, oraz wniosków o duplikaty. Pisałem już o tym powyżej. Ale to dopiero połowa drogi do kompilacji rdzenia semantycznego. Twoje mózgi prawdopodobnie już się gotują, ale w rzeczywistości, jeśli zagłębisz się w to i zrozumiesz, nie ma tu nic skomplikowanego. Uwierz mi, lepiej raz poprawnie skompilować rdzeń semantyczny, niż później wszystko poprawiać. A naprawienie tego jest znacznie trudniejsze niż robienie wszystkiego od zera. Więc bądź cierpliwy i idź dalej.

Żądania HF, MF i LF lub HFW, MFW i LFW

Podczas kompilowania rdzenia semantycznego istnieją również takie koncepcje, jak zapytania o wysokiej, średniej i niskiej częstotliwości, lub są one również nazywane zapytaniami o wysokiej, średniej i niskiej częstotliwości, mogą być również zapytania o wysokiej częstotliwości , żądania średniej i niskiej częstotliwości. Są to zapytania, które ludzie wprowadzają do wyszukiwarek. Im więcej osób wpisze to samo zapytanie w pole wyszukiwania, tym wyższa częstotliwość zapytania (zapytanie HF), tak samo w przypadku zapytań o średniej i niskiej częstotliwości. Mam nadzieję, że to też jest jasne.

Teraz pamiętaj o jednym bardzo ważnym punkcie. Na etap początkowy rozwój bloga, powinien być promowany tylko przez zapytania o niskiej częstotliwości, czasami używane są również zapytania o średnim zasięgu, będzie to zależeć od konkurencji zapytania. W przypadku wniosków RF raczej nie będziesz w stanie, po prostu nie masz na to wystarczających środków. Nie bój się dotrzeć do TOP przy zapytaniach o niskiej częstotliwości, jest to możliwe bez inwestowania środków. Najprawdopodobniej masz pytanie, jakie żądania są uważane za prośby o wysokiej częstotliwości, prośby o średnim zakresie i prośby o niskiej częstotliwości?

Tutaj myślę, że nikt nie może dać dokładnej odpowiedzi! Inaczej będzie w przypadku blogów o różnej tematyce. Są bardzo popularne tematy, w których dokładna liczba zapytań („!”) sięga 20 tysięcy wyświetleń / miesięcznie lub więcej (na przykład „!lekcje Photoshopa”), i są mniej popularne, w których dokładna żądań nie osiąga nawet 2000 wyświetleń/miesięcznie (na przykład „!Lekcje angielskiego”).

W tym przypadku trzymam się prostej formuły, którą sam sobie obliczyłem, zademonstruję to na przykładzie „!Lekcje Photoshopa”:

VK, SK i NK zapytania VKZ, SKZ i NKZ

Oprócz wniosków HF, MF i LF istnieje jeszcze jedna kategoria. Są to żądania wysoce konkurencyjne (VC), średnio konkurencyjne (SC) i niskokonkurencyjne (NC), można również znaleźć VKZ, SKZ i NKZ. W takim przypadku będziemy musieli określić konkurencyjność tych żądań, dla których planujemy przejść do TOP, ale będzie o tym osobny post na temat „”. . Tymczasem załóżmy, że żądania HF to żądania VC, MF – SC i LF – NC. W większości przypadków ta formuła działa, ale są wyjątki, kiedy na przykład żądania o niskiej częstotliwości są wysoce konkurencyjne (VC) i odwrotnie, żądania o wysokiej częstotliwości są NC. Wszystko zależy od tematyki bloga.

Schemat kompilacji rdzenia semantycznego

Dla jasności spójrzmy na schematyczny przykład rdzenia semantycznego. Coś takiego powinno wyglądać jak standardowy schemat rdzenia semantycznego.

Ale nie powinieneś mocno przywiązywać się do tego schematu, ponieważ. gdy będziesz blogować, może się to dla ciebie zmienić. Na początkowym etapie możesz mieć, powiedzmy, tylko cztery nagłówki, z których każdy zawiera po trzy zapytania o niskiej częstotliwości, az czasem wszystko może się zmienić.

Większość z was nic nie zrozumie, zwłaszcza ci, którzy po raz pierwszy mają do czynienia z rdzeniem semantycznym. W porządku, ja też na początku nie rozumiałem wielu rzeczy, dopóki nie przestudiowałem tematu bardzo dobrze. Nie chcę powiedzieć, że jestem profesjonalistą w tym temacie, ale wiele się nauczyłem. I zgodnie z obietnicą przeanalizujmy wszystko na konkretnym przykładzie i zgodnie z naszym tematem.

Od razu chcę powiedzieć, że nie jestem ekspertem od „photoshopa”, po prostu ten temat przyszedł mi do głowy podczas pisania posta. Dlatego wybrałem zapytania zgodnie ze znaczeniem. Dobra, oto schemat rdzenia semantycznego, który wymyśliłem na temat „Photoshop”. Powinieneś skończyć z czymś podobnym do:

Typy żądań

Wszystkie zapytania (nasze słowa kluczowe) można podzielić na trzy kategorie:

  • Żądania podstawowe- to są pytania, które w jednym lub dwóch słowach można zadać ogólna definicja Twój zasób lub jego część. Podstawowe zapytania, które w większości obejmują ogólny temat Twojego bloga, najlepiej pozostawić na stronie głównej. W naszym przypadku są to: lekcje Photoshopa, efekty Photoshopa, jak zrobić kolaż zdjęć.
    Zapytania podstawowe, mniej obejmujące ogólną tematykę Twojego bloga, ale najdokładniej charakteryzujące jakąś jego część, zaleca się stosować jako osobne nagłówki Twojego bloga. W naszym przypadku są to: pędzle Photoshop, ramki Photoshop, szablony Photoshop, projektowanie zdjęć.
  • Podstawowe prośby- są to zapytania, które trafnie określają tematykę Twojego projektu i są w stanie przekazać czytelnikowi przydatne informacje, nauczyć go tego, czego chce, czy odpowiedzieć na często zadawane pytanie JAK ??? Oznacza to, że w naszym przypadku jest to: jak dodać pędzle w Photoshopie, jak zrobić szablon w Photoshopie, jak zrobić kolaż zdjęć w Photoshopie itp. W rzeczywistości głównymi zapytaniami powinny być nagłówki naszych przyszłych artykułów.
  • Dodatkowe (pomocnicze) zapytania lub są one również nazywane asocjacyjnymi- to są zapytania, które ludzie wpisywali również w pasku wyszukiwania przeglądarki podczas wyszukiwania głównego zapytania. Tych. to frazy kluczowe, które są częścią głównego zapytania. Będą niejako uzupełnieniem głównego żądania i będą słowami kluczowymi podczas promowania go na TOP. Na przykład: photoshop dla początkujących online, photoshop do usuwania efektu czerwonych oczu, kolaż kilku zdjęć. Myślę, że jest to zrozumiałe.

Strategia kompilacji rdzenia semantycznego

Teraz musimy podzielić całą listę na strony. Tych. musisz wybrać podstawowe zapytania ze wszystkich słów kluczowych, które będą nagłówkami Twojego bloga i zrobić osobne zakładki w Excelu. Następnie wybierz związane z nimi zapytania główne i pomocnicze i umieść je wg różne strony w utworzonym przez siebie dokumencie Excela (tj. według nagłówków). Oto, co mam:

Tak jak pisałem powyżej: na początkowym etapie warto wypromować swojego bloga pod zapytania LF lub NC. A co zrobić z żądaniami MF (SC) i HF (VC), pytasz? Wyjaśniam.

Jest mało prawdopodobne, że będziesz w stanie przenieść żądania HF (VC), więc możesz je usunąć, ale zaleca się pozostawienie jednego lub dwóch żądań HF (VC) dla strona główna. Zrobię rezerwację od razu: nie musisz spieszyć się z zapytaniem o największej częstotliwości, takim jak „photoshop”, które ma dokładną liczbę wyświetleń / miesiąc to 163384. Na przykład chcesz uczyć ludzi, jak pracować w Photoshopie za pomocą Twojego bloga. Weźmy więc za podstawę zapytanie o wysokiej częstotliwości - „Lekcje Photoshopa”, które ma dokładną liczbę wyświetleń / miesięcznie - 7110. To zapytanie bardziej charakteryzuje Twój temat i łatwiej będzie Ci się po nim poruszać.

Ale zapytania midrange (SC) można umieścić na osobnej stronie w programie Excel. W miarę jak Twój blog będzie zyskiwał na popularności w oczach PS, oni (prośby MF (Wielka Brytania)) będą stopniowo zyskiwać na popularności.

Wiem, że początkujący teraz w ogóle nie rozumieją, o czym mówię, radzę przeczytać artykuł na ten temat, po przestudiowaniu którego wszystko stanie się dla ciebie jasne.

Wniosek

To w zasadzie tyle, to wszystko. Oczywiście są programy, które Ci w tym pomogą kompilacja rdzenia semantycznego zarówno płatnych (Key Kollektor), jak i bezpłatnych (Slovoeb, Slovoder), ale o nich nie będę pisać w tym poście. Może kiedyś napiszę o nich osobny artykuł. Ale wybiorą dla Ciebie tylko słowa kluczowe, a Ty będziesz musiał samodzielnie rozproszyć je w kategorie i posty.

A jak komponujesz rdzeń semantyczny? A może w ogóle jej nie komponujesz? Z jakich programów i usług korzystasz podczas kompilacji? Chętnie usłyszę wasze odpowiedzi w komentarzach!

I na koniec obejrzyj ciekawy film.

Semantycznym rdzeniem serwisu jest lista zapytań, dla których planujesz wypromować serwis w wyszukiwarkach. Żądania z rdzenia semantycznego są pogrupowane według stron witryny. Gotowa semantyka witryny obejmuje żądania dotyczące każdej strony witryny, która będzie promowana.

Podstawowe zasady kompilacji rdzenia semantycznego

  1. Tylko jedna strona jest promowana na żądanie. Niedozwolone jest, aby dwie lub więcej stron w witrynie odpowiadały jednemu żądaniu - w przeciwnym razie wyszukiwarki mogą wyświetlić niewłaściwą stronę dla promowanego żądania.
  2. Strona musi odpowiedzieć na żądanie użytkownika. Przykładowo, jeśli zapytanie zawiera słowo „ceny” – promowana strona powinna zawierać ceny produktu. Jeśli promujesz stronę na żądanie "kalkulator casco" - strona powinna zawierać formularz do obliczenia kosztu ubezpieczenia kadłuba.
  3. Rdzeń semantyczny powinien zawierać wysoki, średni i niska częstotliwość upraszanie. Konieczne jest znalezienie maksymalnej liczby odpowiednich wniosków, w przeciwnym razie nie uzyskasz pełnego zwrotu z promocji.
  4. Podczas grupowania żądań w jednej grupie należy uwzględnić zgłoszenia, dla których realne jest wypromowanie jednej strony. W tym celu sprawdź, czy w wynikach wyszukiwania znajdują się strony, które znajdują się w TOP-10 dla wybranych przez Ciebie zapytań. Jeśli nie ma takich stron, zgłoszenia należy podzielić na różne grupy.
  5. Sprawdź wpływ „Spectrum” w Yandex. Może się okazać, że dla Twojego tematu Spectrum zostawiło nie 10 miejsc w TOP, a tylko 1 lub 2 – konkurencja o nie zaostrza się. Zdarzają się również prośby, dla których konieczne jest wyświetlanie artykułów informacyjnych w TOP, ale strona z informacjami handlowymi nie będzie działać.
  6. Uwaga, reklama i czarownicy! W tematach konkurencyjnych wyniki wyszukiwania mogą zawierać wiele reklam Yandex.Direct i czarowników, które bardzo przesuwają wyniki wyszukiwania w dół i zmniejszają zwrot z bycia w TOP. Przykład takiej prośby: „kup bilety lotnicze” (spójrz na zrzut ekranu poniżej i spróbuj znaleźć wyniki organiczne na ekranie).

Ile zapytań powinien zawierać rdzeń semantyczny?

Maksymalna możliwa liczba - najlepiej wszystkie zapytania, które są w Twoim temacie i są dla Ciebie odpowiednie (to znaczy, że Twoja witryna faktycznie może odpowiedzieć na te zapytania).

Z reguły małe i średnie witryny mają rdzeń semantyczny składający się z kilkuset do tysięcy zapytań. Duże projekty mogą być promowane przez dziesiątki i setki tysięcy zapytań.

Na przykład nasz blog o promocji strony internetowej, strona otrzymuje kliknięcia z wyszukiwarek dla ponad 2000 różnych żądań miesięcznie.

Przykład prostego rdzenia semantycznego dla bloga SEO

Ten przykład ma charakter edukacyjny i odzwierciedla istotę ugrupowania, ale nie jest prawdziwym zalążkiem żadnego projektu.

Jak można złożyć rdzeń semantyczny?

  1. Kopiuj od konkurencji. W takim przypadku wybierane są 2-3 konkurencyjne strony i przechodzimy specjalne programy wypompowywane są informacje, dla których żądania ich strony znajdują się w TOP-10. Na przykład możesz uzyskać takie informacje za darmo za pośrednictwem usługi Seopult.ru. Jako strony konkurencji możesz wybrać najpopularniejsze strony tematyczne lub strony firm, których zasięg jest jak najbardziej zbliżony do Twojego projektu.
    Plusy metody: oszczędność czasu na tworzeniu rdzenia semantycznego, względna prostota i bezpłatnie.
    Wady metody: duża liczba zapytań „śmieciowych”, otrzymane dane będą wymagały filtrowania i dalszego przetwarzania, istnieje ryzyko powielania błędów konkurencji. Semantyka nie spowoduje utraty żądań, których z jakiegoś powodu konkurenci nie wybrali lub nie znaleźli.
  2. Promuj zapytania blisko TOP. Promocja strony na zapytania, dla których pozycje są bliskie TOP. Ta metoda nadaje się tylko do starych witryn, które były wcześniej promowane. Poprzez systemy z p. 1 zbierane są informacje o tym, jakie zapytania projekt znajduje się w TOP-30 i te zapytania są włączane do rdzenia semantycznego.
    Zalety metody: oszczędność czasu i budżetu klienta. Szybszy zwrot z promocji.
    Wady metody: takie podejście pozwala zebrać minimalną liczbę żądań. W przyszłości rdzeń semantyczny musi zostać rozszerzony. Nie ma gwarancji, że wszystkie otrzymane żądania będą skuteczne dla firmy klienta.
  3. Utwórz rdzeń semantyczny od podstaw. Semantyka tworzona jest na podstawie głęboka analiza zapytania mogące wyszukiwać promowane towary, usługi lub informacje.
    Zalety metody: kolekcja maksymalny numer prośby o najskuteczniejszą promocję.
    Wady metody: długie i drogie.

Etapy kompilacji rdzenia semantycznego witryny od podstaw

  1. Analiza projektu. W ramach analizy konieczne jest pełna lista usługi, kategorie towarów lub rodzaje informacji udostępnianych na stronie internetowej klienta. Na tym etapie analizowany jest również potencjalny klient firmy. Na przykład, jeśli firma chce sprzedawać towary w segmencie premium, nie ma sensu oferować próśb o promocję ze słowem „tanio”. Optymalne jest zapisanie wszystkiego na arkuszu, a jeszcze lepiej - tworzenie tabel w Excelu.
  2. Burza mózgów. Na tym etapie zespół projektowy opracowuje listę zapytań, które w opinii członków zespołu mogą wyszukać każdy produkt, usługę lub rodzaj informacji na stronie klienta. Możesz zaangażować klienta i osoby z zewnątrz, które nie są związane z SEO w burzę mózgów i zadać im pytania, w jaki sposób będą szukać tej lub innej informacji w sieci - jakie zapytania zadać itp. Ludzie są bardzo różni i czasami szukają informacji na takie prośby - na które żaden specjalista się nie domyśli! Warto przestudiować teksty na stronie klienta i konkurencji – z reguły zawierają one części zapytań, różne nazwy tych samych produktów – czyli właściwie wszystkie kombinacje słów i fraz, które mogą być wyszukane przez wyszukiwarki.
  3. Pompowanie zapytań wyszukiwania z innych źródeł na końcu artykułu zostaną podane linki do najbardziej przydatne programy by rozwiązać ten problem):
    • Statystyki zapytań w Yandex i Google;
    • Sugestie wyszukiwania w wyszukiwarkach;
    • Statystyki odwiedzin witryny z wyszukiwarek (jeśli witryna ma ruch);
    • Kluczowe zapytania od konkurencji;
    • Baza danych Pastukhov - zawiera około 800 milionów zapytań zadawanych przez użytkowników wyszukiwarek. Baza jest na bieżąco aktualizowana i uzupełniana. Płatny.
  4. Żądaj filtrowania, usuwania duplikatów i „pustych” fraz. Na tym etapie łączone są listy wniosków otrzymanych z różnych źródeł. Duplikaty i „puste” zgłoszenia są usuwane z tej listy. Frazy są uważane za frazy, jeśli są wpisane w cudzysłów w systemach statystyk wyszukiwarek z zerową częstotliwością. Przeczytaj więcej o określaniu częstotliwości żądań.
  5. Żądania grupowania. Na tym etapie spośród wszystkich zgłoszeń wybierane są grupy, według których promowane będą poszczególne sekcje i strony serwisu. Jeśli Twoja witryna nie ma odpowiednich stron do promocji dla określonych grup zapytań, takie strony muszą zostać utworzone.
  6. pomyśl jeszcze raz. Czasami warto po stworzeniu rdzenia semantycznego odpocząć 1-2 dni i wrócić do tego zagadnienia ponownie – spojrzeć świeżym spojrzeniem na wszystkie zebrane informacje. Czasami pojawiają się nowe pomysły, jak inaczej ludzie szukają informacji przez wyszukiwarki - i okazuje się, że rozszerzają semantyczny rdzeń.

Semantyczne testy rdzenia

Po wybraniu rdzenia semantycznego witryny warto go przetestować. Można to zrobić przeprowadzając testową kampanię reklamową w systemie reklamy kontekstowej. Jest to kosztowne, ale pozwoli określić najskuteczniejsze zapytania i ewentualnie wyeliminować te, które nie przynoszą dużej sprzedaży.

Więcej o testowaniu rdzenia semantycznego przeczytasz w artykule pięć powodów, dla których warto kupić reklamę kontekstową.

Rozwój semantyki strony internetowej

Zebrawszy raz rdzeń semantyczny, nie sposób pozostawić go bez zmian. Pojawiają się nowe produkty, pojawiają się nowe prośby, a stare tracą na znaczeniu. Dlatego przynajmniej raz na pół roku lub rok konieczna jest aktualizacja rdzenia semantycznego i powiązanie nowych zapytań z promocją oraz wykluczenie z promocji starych, które straciły na aktualności.

W komentarzach możesz zadawać pytania, jak stworzyć rdzeń semantyczny - w miarę możliwości pomożemy i odpowiemy.

Przydatne strony i usługi do wyboru rdzenia semantycznego:

  • Wordstat.yandex.ru - narzędzie do przeglądania statystyk zapytań w Yandex;
  • Rush-analytics.ru - usługa umożliwia zbieranie dużych jąder na podstawie danych Yandex.Wordstat oraz zbieranie sugestii wyszukiwania w Yandex i Google. Dają niezły bonus przy rejestracji w systemie.
  • Topvisor.ru - usługa umożliwia automatyczne grupowanie zapytań z rdzenia semantycznego. Możesz ustawić precyzję grupowania, która wpływa na liczbę żądań w jednej grupie.
  • Advse.ru to narzędzie, które pozwala zobaczyć, jakie zapytania wyświetlają konkurenci reklama kontekstowa(w przypadku tych samych próśb możesz przejść dalej)
  • Bazy danych Pastuchowa - ogromna baza zapytań do wyszukiwarka Yandex w momencie pisania tego tekstu składał się z 800 milionów żądań.
  • Seopult.ru to narzędzie, które pozwala za darmo zobaczyć pozycje Twojej witryny lub konkurencji w wynikach wyszukiwania. Aby przeglądać pozycje należy zarejestrować się w systemie, stworzyć projekt i przejść do etapu wyboru słów kluczowych.

Semantycznym rdzeniem witryny jest Pełen zestaw słowa kluczowe odpowiadające tematowi zasobu internetowego, dzięki którym użytkownicy mogą go znaleźć w wyszukiwarce.


Więcej filmów na naszym kanale - naucz się marketingu internetowego z SEMANTICA

Na przykład postać baśniowa Baba Jaga będzie miała następujący rdzeń semantyczny: Baba Jaga, Baba Jaga z bajek, Baba Jaga z rosyjskich bajek, kobieta z bajkowym moździerzem, kobieta z moździerzem i miotłą, zło czarodziejka, kobieca chata, udka z kurczaka itp.

Dlaczego witryna potrzebuje rdzenia semantycznego

Przed rozpoczęciem pracy nad promocją musisz znaleźć wszystkie klucze, według których docelowi użytkownicy mogą jej szukać. W oparciu o semantykę kompilowana jest struktura, rozdzielane są klucze, metatagi, tytuły dokumentów, określane są opisy obrazów, a także opracowywana jest lista zakotwiczeń do pracy z masą referencyjną.

Kompilując semantykę, musisz rozwiązać główny problem: określić, jakie informacje należy opublikować, aby przyciągnąć potencjalnego klienta.

Sporządzenie listy kluczy rozwiązuje inne ważne zadanie: dla każdej wyszukiwanej frazy definiujesz odpowiednią stronę, która może w pełni odpowiedzieć na pytanie użytkownika.

Problem ten rozwiązuje się na dwa sposoby:

  • Tworzysz strukturę witryny w oparciu o rdzeń semantyczny.
  • Dystrybuujesz wybrane terminy zgodnie z gotową strukturą zasobu.

Rodzaje kluczowych zapytań (KZ) według liczby wyświetleń

  • LF - niska częstotliwość. Do 100 wyświetleń miesięcznie.
  • MF - średni zasięg. Od 101 do 1000 wyświetleń.
  • HF - wysoka częstotliwość. Ponad 1000 wyświetleń.

Według statystyk 60-80% wszystkich fraz i słów to LF. Praca z nimi jest tańsza i łatwiejsza. Dlatego musisz zrobić jak najbardziej obszerny rdzeń fraz, który będzie stale uzupełniany o nowe niskie częstotliwości. HF i MF również nie powinny być ignorowane, ale główny nacisk należy położyć na poszerzenie listy głośników niskotonowych.

Rodzaje zwarć według rodzaju wyszukiwania

  • Informacje są potrzebne podczas wyszukiwania informacji. „Jak smażyć ziemniaki” czy „ile gwiazd na niebie”.
  • Transakcyjne służą do wykonania akcji. „Zamów puchowy szalik”, „pobierz piosenki Wysockiego”
  • Nawigacyjne służą do wyszukiwania związanego z konkretną firmą lub linkiem do strony. „Breadmaker MVideo” lub „smartfony Svyaznoy”.
  • Inne - rozszerzona lista, według której nie można zrozumieć ostatecznego celu poszukiwań. Np. zapytanie "ciasto napoleońskie" - być może ktoś szuka przepisu na jego przygotowanie, a może chce kupić ciasto.

Jak komponować semantykę

Konieczne jest podkreślenie głównych warunków Twojej firmy i potrzeb użytkowników. Na przykład klienci pralni są zainteresowani praniem i sprzątaniem.

Następnie należy zdefiniować ogony i specyfikację (więcej niż 2 słowa na zapytanie), które użytkownicy dodają do głównych terminów. Zwiększy to zasięg. grupa docelowa oraz zmniejszyć częstotliwość terminów (pranie koców, pranie kurtek itp.).

Ręczne zbieranie rdzenia semantycznego

Yandex Wordstat

  • Wybierz region zasobu internetowego.
  • Wprowadź hasło. Serwis poda liczbę zapytań z tym słowem kluczowym w ciągu ostatniego miesiąca oraz listę „pokrewnych” haseł, które zainteresowały odwiedzających. Pamiętaj, że jeśli wpiszesz np. „kup okna”, otrzymasz wyniki dla dokładnego wystąpienia słowa kluczowego. Jeśli wejdziesz dany klucz bez cytatów otrzymasz ogólne wyniki, a prośby typu „kup okna w Woroneżu” i „kup plastikowe okna” również zostaną odzwierciedlone na tym rysunku. Aby zawęzić i udoskonalić wskaźnik, możesz użyć operatora „!”, który jest umieszczony przed każdym słowem: !buy!windows. Otrzymasz liczbę pokazującą dokładny wynik dla każdego słowa. Otrzymasz listę typu: kup okna plastikowe, kup i zamów okna, a słowa "kup" i "okna" będą wyświetlane bez zmian. Aby uzyskać bezwzględny wskaźnik dla zapytania „kup okna”, należy zastosować następujący schemat: wpisać w cudzysłowie „!kup! okna”. Otrzymasz najdokładniejsze dane.
  • Zbierz słowa z lewej kolumny i przeanalizuj każde z nich. Napisz początkową semantykę. Zwróć uwagę na prawą kolumnę zawierającą skróty wprowadzane przez użytkowników przed lub po wyszukaniu słów z lewej kolumny. Znajdziesz wiele innych zwrotów, których potrzebujesz.
  • Kliknij kartę Historia żądań. Na wykresie możesz przeanalizować sezonowość, popularność fraz w każdym miesiącu. Dobre wyniki uzyskuje się, pracując z sugestiami wyszukiwania Yandex. Każde zwarcie jest wprowadzane do pola wyszukiwania, a semantyka jest rozszerzana na podstawie podpowiedzi.

Harmonogram Google KZ

  • Wprowadź główne zapytanie RF.
  • Wybierz opcję Uzyskaj opcje.
  • Wybierz najbardziej odpowiednie opcje.
  • Powtórz tę czynność z każdą wybraną frazą.

Badanie stron konkurencji

Użyj tej metody jako dodatkowej metody określenia prawidłowego wyboru konkretnego zwarcia. Pomogą Ci w tym narzędzia BuzzSumo, Searchmetrics, SEMRush, Advse.

Programy do kompilacji rdzenia semantycznego

Rozważ niektóre z najpopularniejszych usług.

  • Kolekcjoner kluczy. Jeśli kompilujesz bardzo obszerną semantykę, nie możesz obejść się bez tego narzędzia. Program wybiera semantykę, odwołując się do Yandex Wordstat, zbiera sugestie wyszukiwania ta wyszukiwarka, filtruje CV ze słowami stopowanymi, bardzo niską częstotliwością, duplikatami, określa sezonowość fraz, bada statystyki liczników i sieci społecznościowych, dobiera odpowiednie strony do każdego zapytania.
  • SlovoEB. Darmowa usługa przez Kolekcjonera Kluczy. Narzędzie wybiera słowa kluczowe, grupuje je i analizuje.
  • Wszystkie osoby przesyłające. Pomaga wybrać zwarcie, pokazuje konkurencyjne strony.
  • Klucz SO. Analizuje widoczność zasobu internetowego, jego konkurentów i pomaga w kompilacji BR.

Co wziąć pod uwagę przy wyborze słów kluczowych

  • Wskaźniki częstotliwości.
  • Większość zwarć powinna być LF, reszta - MF i HF.
  • Strony związane z wyszukiwaniem.
  • Zawodnicy w TOP.
  • Konkurs frazeologiczny.
  • Przewidywana liczba kliknięć.
  • Sezonowość i geozależność.
  • KZ z błędami.
  • klucze asocjacyjne.

Poprawny rdzeń semantyczny

Przede wszystkim konieczne jest zdefiniowanie pojęć „słowa kluczowe”, „klucze”, „słowa kluczowe lub wyszukiwane hasła' to słowa lub wyrażenia, które potencjalni klienci swoją witrynę w poszukiwaniu niezbędnych informacji.

Sporządź następujące listy: kategorie towarów lub usług (zwane dalej TU), nazwy TU, ich marki, ogony handlowe („kup”, „zamów” itp.), synonimy, transliteracja odpowiednio po łacinie (lub odpowiednio po rosyjsku) ), żargon fachowy („klawiatura” - „klawiatura” itp.), specyfikacje, słowa z możliwymi literówkami i błędami („Orenburg” zamiast „Orenburg” itp.), odniesienia do obszaru (miasto, ulice itp.).

Podczas pracy z listami kieruj się krótkimi listami z umowy promocyjnej, strukturą zasobu internetowego, informacjami, cennikami, witrynami konkurencji, wcześniejszymi doświadczeniami SEO.

Przystąp do doboru semantyki mieszając wybrane w poprzednim kroku frazy, metodą ręczną lub korzystając z usług.

Wygeneruj listę słów stop i usuń nieodpowiednie zwarcia.

Grupuj CV według odpowiednich stron. Dla każdego klucza wybierana jest najodpowiedniejsza strona lub a nowy dokument. Pożądany ta praca przeprowadzić ręcznie. W przypadku dużych projektów są płatne usługi jak Rush Analytics.

Przejdź od największego do najmniejszego. Najpierw rozłóż tony wysokie na stronach. Następnie zrób to samo ze środkiem. Basy można dodawać do stron z rozłożonymi na nich sopranami i basami, a także wybierać dla nich poszczególne strony.
Po przeanalizowaniu pierwszych wyników prac widać, że:

  • promowana strona nie jest widoczna dla wszystkich zadeklarowanych słów kluczowych;
  • według KZ nie są wydawane dokumenty, które uznałeś za istotne;
  • przeszkadza niewłaściwa struktura zasobu sieciowego;
  • w przypadku niektórych życiorysów odpowiednich jest kilka stron internetowych;
  • brak odpowiednich stron.

Podczas grupowania zwarć pracuj ze wszystkimi możliwymi sekcjami w zasobie internetowym, wypełnij każdą stronę przydatna informacja, nie twórz zduplikowanego tekstu.

Typowe błędy podczas pracy ze zwarciem

  • wybrano tylko oczywistą semantykę, bez form wyrazów, synonimów itp.;
  • optymalizator rozmieścił zbyt wiele CV na jednej stronie;
  • te same zwarcia są rozmieszczone na różnych stronach.

Jednocześnie pogarsza się ranking, witryna może zostać ukarana za spamowanie, a jeśli zasób sieciowy ma niewłaściwą strukturę, bardzo trudno będzie go wypromować.

Nie ma znaczenia, jak wybierzesz semantykę. Przy odpowiednim podejściu uzyskasz odpowiednie SEO, które jest niezbędne do skutecznej promocji strony.

Podobał Ci się artykuł? Podziel się z przyjaciółmi!
Czy ten artykuł był pomocny?
tak
Nie
Dziękuję za opinię!
Coś poszło nie tak i Twój głos nie został policzony.
Dziękuję Ci. Twoja wiadomość została wysłana
Znalazłeś błąd w tekście?
Wybierz, kliknij Ctrl+Enter i naprawimy to!