dlaczego jądro jest mapowane do tej samej przestrzeni adresowej co procesy

To jest pytanie do rozwinięcia: dlaczego mówi się, że jądro znajduje się w przestrzeni adresowej procesu?

To może być głupie pytanie, ale po prostu przyszło mi do głowy. Wszystkie tekst o przestrzeni adresowej procesu i układzie pamięci wirtualnej wspomina, że przestrzeń adresowa procesu ma miejsce zarezerwowane dla jądra. Dla np. w systemach 32 bitowych przestrzeń adresowa procesu wynosi 4GB z czego 1 GB jest zarezerwowane dla jądra w Linuksie (może być inaczej na innych systemach operacyjnych).

Zastanawiam się tylko, dlaczego mówi się, że kernel jest w adresie procesu miejsce, gdy proces nie może bezpośrednio adresować jądra. Dlaczego nie powiedzmy, że jądro ma oddzielną przestrzeń adresową niż proces i dlaczego nie możemy mieć innej tabeli stron dla samego jądra, która jest oddzielić od tabel stron procesów?

Czy Mogę uzyskać wyjaśnienie dotyczące konkretnego systemu operacyjnego linux (debian lub ubuntu).

Author: Community, 2012-10-22

4 answers

Proces "posiada" całą wirtualną przestrzeń adresową, jądro i jego część użytkownika.

Jego niemożność zajrzenia i przebicia kodu jądra i danych nie wynika z różnych przestrzeni adresowych, ale z różnych praw dostępu / uprawnień ustawionych w tabelach stron. Strony jądra są skonfigurowane w taki sposób, że zwykłe aplikacje nie mają do nich dostępu.

Jest jednak zwyczajem, aby odnosić się do dwóch części jednej całości jako przestrzeń jądra i przestrzeń użytkownika i że można bądź zdezorientowany.

 10
Author: Alexey Frunze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-22 14:32:14

Aby odpowiedzieć na inną część pytania-jądro jest mapowane do każdej przestrzeni adresowej procesów częściowo ze względu na wydajność/wydajność(są też inne, jestem pewien). Na większości nowoczesnych urządzeń szybsza jest zmiana poziomu bezpieczeństwa (umożliwiając w ten sposób dostęp do stron, które są w inny sposób chronione, jak wspomniano w odpowiedzi Alexeya) w celu wykonywania wywołań systemowych i innych funkcji dostarczanych przez jądro niż zmiana poziomu bezpieczeństwa i całej mapy pamięci wirtualnej, wraz z wszystkimi powiązanymi spłuczkami pamięci podręcznej TLB i wszystkim innym zaangażowanym w pełny przełącznik kontekstowy. Ponieważ wywołania systemowe mogą być dość częstymi zdarzeniami, projekt, który ewoluował w Linuksie i wielu innych miejscach, polega na próbie zminimalizowania kosztów korzystania z usług jądra, a mapowanie kodu jądra i (przynajmniej niektórych) danych do każdego procesu jest częścią tego.

 23
Author: twalberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-22 14:55:44

Innym ważnym powodem, dla którego mówimy, że jądro znajduje się w przestrzeni adresowej procesu, jest to, że jądro może uzyskać dostęp do kodu użytkownika/danych bieżącego procesu, tj. wirtualnej przestrzeni adresowej 0~3g.

Przepraszam za mój biedny angielski. Nie jestem native speakerem po angielsku.

 6
Author: xiaokaoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-27 14:48:16

Wyobraź sobie, co by się stało, gdyby jądro nie było mapowane w każdym adresie procesu space.It would potrójny błąd, ponieważ powiedzmy, że następuje przerwanie timera, wtedy procesor wywołuje procedurę ISR używając IDT (tablica deskryptorów przerwań).Jeśli jądro nie jest zmapowane, to adres IDT staje się nieprawidłowy, a tym samym potrójny błąd spowoduje.

 4
Author: shrinath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-21 18:05:48