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 .
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
- Linux Kernel Space Definition
- Gå in i användarläge på Wayback -maskinen (arkiverad 26 mars 2016)