Käyttäjätila - User space

Nykyaikainen tietokone käyttöjärjestelmä yleensä erottelee virtuaalimuistin osaksi ydintilamäärän ja käyttäjän tilaa . Ensisijaisesti tämä erottelu suojaa muistia ja suojaa laitteistoa haitalliselta tai virheelliseltä ohjelmistokäyttäytymiseltä.

Ytintila on ehdottomasti varattu etuoikeutetun käyttöjärjestelmän ytimen , ytimen laajennusten ja useimpien laiteajurien käyttämiseen . Sitä vastoin käyttäjätila on muistialue, jolla sovellusohjelmistot ja jotkin ohjaimet suoritetaan.

Yleiskatsaus

Termi userland (tai käyttäjätila) viittaa kaikkeen koodiin, joka toimii käyttöjärjestelmän ytimen ulkopuolella. Userland viittaa yleensä erilaisiin ohjelmiin ja kirjastoihin , joita käyttöjärjestelmä käyttää vuorovaikutuksessa ytimen kanssa: ohjelmisto, joka suorittaa syöttöä/lähtöä , käsittelee tiedostojärjestelmäobjekteja , sovellusohjelmistoja jne.

Jokainen käyttäjä tilaa prosessi toimii normaalisti omalla virtuaalimuistin tilaa, ja, ellei nimenomaisesti sallittu, ei voi käyttää muistia muiden prosessien. Tämä on perusta muistin suojaukselle nykypäivän valtavirran käyttöjärjestelmissä ja rakennuspalikka etuoikeuksien erottamiseen . Erillistä käyttäjätilaa voidaan käyttää myös tehokkaiden virtuaalikoneiden rakentamiseen - katso Popekin ja Goldbergin virtualisointivaatimukset . Prosessit, joilla on riittävästi oikeuksia, voivat pyytää ytimen yhdistämään osan toisen prosessin muistitilasta omaansa, kuten virheenkorjainten tapauksessa . Ohjelmat voivat myös pyytää jaettuja muistialueita muiden prosessien kanssa, vaikka käytettävissä on myös muita tekniikoita prosessien välisen viestinnän mahdollistamiseksi .

Linuxin eri kerrokset, joissa näkyy myös erotus käyttäjämaan ja ytimen välillä
Käyttäjätila Käyttäjäsovellukset bash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ...
Järjestelmän osat Demoneja :
systemd , runit , udevd , polkitd , sshd , smbd ...
Ikkunahallinta :
X11 , Wayland , SurfaceFlinger (Android)
Grafiikka :
Mesa , AMD Catalyst , ...
Muut kirjastot:
GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ...
C -standardikirjasto fopen, execv, malloc, memcpy, localtime, pthread_create... (enintään 2000 aliohjelmia )
glibc tavoitteena on nopea, MUSL ja uClibc tavoite sulautetut järjestelmät, Bionic kirjoitettu Android jne Kaikki pyrkivät olemaan POSIX- / SUS -yhteensopivia.
Ytimen tila Linux -ydin stat, splice, dup, read, open, ioctl, write, mmap, close, exit, Jne (noin 380 systeemikutsuja)
Linux-ydin järjestelmä soittaa Interface (SCI tavoitteena on olla POSIX- / SUS -yhteensopiva)
Prosessien ajoituksen
osajärjestelmä
IPC
-osajärjestelmä
Muistinhallinnan
osajärjestelmä
Virtuaalitiedostojen
alijärjestelmä
Verkko
-osajärjestelmä
Muut komponentit: ALSA , DRI , evdev , LVM , laitekartoitin , Linux Network Scheduler , Netfilter
Linux Security Modules : SELinux , TOMOYO , AppArmor , Smack
Laitteisto ( suoritin , keskusmuisti , tietojen tallennuslaitteet jne.)

Toteutus

Yleisin tapa toteuttaa käyttäjän tila erillään ydintilassa sisältää käyttöjärjestelmän suoja renkaat . Suojarenkaat puolestaan ​​toteutetaan CPU -tiloja käyttäen . Tyypillisesti ytimen avaruusohjelmat toimivat ytintilassa , jota kutsutaan myös valvojatilaksi ; normaalit sovellukset käyttäjätilassa toimivat käyttäjätilassa.

Monet käyttöjärjestelmät ovat yhden osoiteavaruuden käyttöjärjestelmiä- niillä on yksi osoitetila kaikille käyttäjätilakoodeille. (Ytimen moodikoodi voi olla samassa osoitetilassa tai toisessa osoiteavaruudessa). Monilla muilla käyttöjärjestelmillä on prosessikohtainen osoitetila, erillinen osoitetila kullekin käyttäjätilaprosessille.

Toinen kokeellisissa käyttöjärjestelmissä käytetty lähestymistapa on, että kaikilla ohjelmistoilla on yksi osoitetila ja että ohjelmointikielen semantiikka varmistaa, että mielivaltaista muistia ei voida käyttää - sovellukset eivät yksinkertaisesti voi saada mitään viittauksia kohteisiin, joita he eivät saa käyttää pääsy. Tämä lähestymistapa on toteutettu JXOS: ssa , Unununiumissa ja Microsoftin Singularity -tutkimushankkeessa.

Katso myös

Huomautuksia

Viitteet

Ulkoiset linkit