Användarutrymme - User space

En modern dator operativsystem avskiljer oftast virtuellt minne i kärnan utrymme och användarutrymme . Denna separering tjänar främst till att ge minnesskydd och hårdvaruskydd från skadligt eller felaktigt programvarubeteende.

Kärnutrymme är strikt reserverat för att köra en privilegierad operativsystemkärna , kärntillägg och de flesta drivrutiner . Däremot är användarutrymme minnesområdet där applikationsprogramvara och vissa drivrutiner körs.

Översikt

Termen userland (eller användarutrymme) avser all kod som körs utanför operativsystemets kärna. Userland hänvisar vanligtvis till de olika program och bibliotek som operativsystemet använder för att interagera med kärnan: programvara som utför in/ut , manipulerar filsystemobjekt , programvara etc.

Varje användarutrymme process körs normalt i sitt eget virtuellt minne utrymme, och, om inte uttryckligen tillåtet, inte kan få tillgång till minnet av andra processer. Detta är grunden för minneskydd i dagens vanliga operativsystem och en byggsten för separering av privilegier . Ett separat användarläge kan också användas för att bygga effektiva virtuella maskiner - se kraven för virtualisering av Popek och Goldberg . Med tillräckligt många privilegier kan processer be kärnan att mappa en del av en annan process minnesutrymme till sitt eget, vilket är fallet för felsökare . Program kan också begära delade minnesregioner med andra processer, även om andra tekniker också är tillgängliga för att tillåta kommunikation mellan processer .

Olika lager inom Linux, som också visar separation mellan användarlandet och kärnutrymmet
Användarläge Användarprogram bash , LibreOffice , GIMP , Blender , 0 AD , Mozilla Firefox , ...
Systemkomponenter Daemons :
systemd , runit , udevd , polkitd , sshd , smbd ...
Fönsterhanterare :
X11 , Wayland , SurfaceFlinger (Android)
Grafik :
Mesa , AMD Catalyst , ...
Andra bibliotek:
GTK , Qt , EFL , SDL , SFML , FLTK , GNUstep , ...
C standardbibliotek fopen, execv, malloc, memcpy, localtime, pthread_create... (upp till 2000 subrutiner )
glibc mål att vara snabb, MUSL och uClibc mål inbyggda system, Bionic skrivna för Android till, etc. Allt målet vara POSIX / SUS -kompatibel.
Kärnläge Linux -kärna stat, splice, dup, read, open, ioctl, write, mmap, close, exit, Etc. (ca 380 systemanrop)
Linux kernel System Call Interface (SCI, syften att vara POSIX / SUS -kompatibel)
Processchemaläggning
delsystem
IPC
-delsystem
Minneshantering
delsystem
Virtuella filer
delsystem

Delsystem för nätverk
Andra komponenter: ALSA , DRI , evdev , LVM , enhetskartläggare , Linux Network Scheduler , Netfilter
Linux Security Modules : SELinux , TOMOYO , AppArmor , Smack
Hårdvara ( CPU , huvudminne , datalagringsenheter etc.)

Genomförande

Det vanligaste sättet att genomföra en användarläge separat från kernel-läge innebär operativsystem skyddsringar . Skyddsringar implementeras i sin tur med CPU -lägen . Vanligtvis körs kärnutrymsprogram i kärnläge , även kallat övervakarläge ; normala applikationer i användarutrymme körs i användarläge.

Många operativsystem är ett enda adressutrymme operativsystem- de har ett enda adressutrymme för all användarläge-kod. (Kärnlägeskoden kan vara i samma adressutrymme, eller så kan den vara i ett andra adressutrymme). Många andra operativsystem har ett adressutrymme per process, ett separat adressutrymme för varje process i användarläge.

Ett annat tillvägagångssätt i experimentella operativsystem är att ha ett enda adressutrymme för all programvara och förlita sig på ett programmeringsspråks semantik för att säkerställa att godtyckligt minne inte kan nås - applikationer kan helt enkelt inte förvärva några referenser till de objekt som de inte får tillåta tillgång. Detta tillvägagångssätt har implementerats i JXOS , Unununium samt Microsofts forskningsprojekt Singularity .

Se även

Anteckningar

Referenser

externa länkar