Systemkald

Et systemkald er en funktion som styresystemet stiller til rådighed.

Det specielle ved systemkald i forhold til almindelige funktioner er, at grænsen til styresystemets kerne overskrides. Af sikkerhedsmæssige grunde kan en sådan funktion ikke kaldes direkte, da et direkte kald vil kunne kompromitere hele systemet. Programmet vil pludselig blive udført med samme privilegier som kernen. I stedet bruges en trap-instruktion, der giver mulighed for at udføre programkode fra en bestemt adresse i ram.

Systemkald
Linux-Kerne, systemkalds, GNU C Library.

I den mest grundlæggende form angiver programmet et nummer på et systemkald og en reference til eventuelle inputdata. Kernen slår systemkaldet op i en tabel, for at finde den adresse, der skal udføres programkode fra. Når systemkaldet er overstået, kopieres eventuelt output tilbage til det kaldende program. Normalt vil systemkald blive brugt via et programbibliotek, som vil klare selve opsætningen, så systemkaldene ligner almindelige funktionskald. Under UNIX hedder dette programbibliotek libc. Et kald til styresystemet via et sådant programbibliotek foregår i følgende trin:

  1. Programmet kalder en funktion i programbiblioteket.
  2. I programbiblioteket kopieres inputdata og de placeres på maskinens stak.
  3. Systemkaldsnummer sættes til den rette værdi.
  4. Der skiftes til privilegeret tilstand (trap).
  5. Kernen bruger systemkaldets nummer som et indeks i en tabel med adresser på de forskellige systemkald.
  6. Det konkrete systemkald udføres.
  7. Der returneres til den kaldende funktion i programbiblioteket, og der skiftes til normal tilstand.
  8. Outputdata behandles og der ryddes op på stakken.

I kernen foregår en meget omhyggelig kontrol af inputdata, så et program ikke kan komme til at overskrive andres data, og det sikres, at output kun fylder den plads, der er afsat. Hvis der skulle være for mange data vil der blive returneret en fejlkode.

Tags:

Funktion (programmering)Kerne (styresystem)RamStyresystem

🔥 Trending searches on Wiki Dansk:

Europamesterskabet i fodbold 2024 (mænd)Mona LisaImmanuel KantFrihedsgudindenColosseumEmma Sehested HøegElvis PresleyPaul HagenTine GøtzscheKommuner i DanmarkKuldioxidHuset på ChristianshavnStellantisOsama bin LadenLars JacobsenFlodhestMarmorkirkenDanmarks håndboldlandshold (herrer)Durup (Skive Kommune)Danmarks statsministerDBU PokalenPernille Rosenkrantz-TheilScarlett JohanssonCarlo AncelottiKim SchumacherNæste folketingsvalgKøbenhavns HovedbanegårdDer brænder en ildWiki CommonsTusind stykkerWatergate-skandalenKombuchaMogens Lykketoft1. majMoody BluesDRTed BundyTaylor SwiftLuxembourgPeter ReichhardtPinseFolketingsvalgJordenNormalsideNikolaj Lie KaasTæt på sandhedenMontmartreStein BaggerTunesienLars Krogh JeppesenMikael PersbrandtGrønlandNicole KidmanJude BellinghamTrekantshandelAnne Marie HelgerRadikale VenstreSocialistisk FolkepartiGaskonstantKæmpeblæksprutteCasper ChristensenFyens StiftstidendeAlmindelig vaskebjørnElefanterMarcel Lychau HansenCaroline WozniackiForsvaretNellikerevolutionenXaviKøbenhavnAarhus UniversitetHelsingørTAXAAndreas OdbjergRomandietJohan Wedell-WedellsborgRufferiLana Rhoades🡆 More