Présentation des appels système
Courte introduction
Afin d'atteindre cet objectif, le noyau fournit une série de fonctions multi-noyaux avec des fonctions prédéterminées, qui sont présentées aux utilisateurs via un ensemble d'interfaces appelées appels système.
Modernoperatingsystemsusuallyhavemultitaskingfunctions, whichareusuallyimplementedbyprocesses.Sincetheoperatingsystemquicklyswitchesbetweeneachprocess, everythingwilllooklikeithappensatthesametime.Atthesametime, thisalsobringsalotofsecurityproblems.Forexample, aprocesscaneasilymodifythedataintheprocess'smemoryspacetomakeanotherprocessabnormalorachievesomegoals.Therefore, theoperatingsystemmustensurethateachprocesscanbeexecutedsafely.Thesolutiontothisproblemistoaddabaseaddressregisterandalimitregistertotheprocessor.Thecontentsofthesetworegistersusehardwaretolimittheaddressofthememoryaccessedbythememoryaccessinstruction.Inthisway, thecontentsofthesetworegisterscanbewrittentotheaddressrangeallocatedbytheprocesswhenthesystemswitchesprocesses, therebyavoidingmalware.
Afin d'empêcher le programme utilisateur de modifier le contenu du registre d'adresses de base et du registre de limites pour accéder à d'autres espaces mémoire, ces deux registres doivent être accessibles via des instructions spéciales.
De même, pour des raisons de sécurité, certaines instructions d'opération d'E/S sont limitées au seul mode noyau pouvant être exécutées, de sorte que le système d'exploitation doit fournir une interface pour fournir des applications telles que la lecture de données à partir d'un certain emplacement sur le disque.
Lorsque le système d'exploitation reçoit la demande d'appel système, il laisse le processeur entrer en mode noyau pour exécuter des instructions telles que les opérations d'E/S et modifier le contenu du registre d'adresses de base.
PrincipesdesAppelsSystème
Typesetétatsdesprogrammesdanslesystème
Les états du système d'exploitation sont divisés en état de gestion (état principal) et en état cible (état utilisateur).
Le programme utilisateur s'exécute uniquement en mode utilisateur et doit parfois accéder aux fonctions principales du système. À ce stade, l'appel système est utilisé via l'interface d'appel système.
Appel de fonction système
Appel de fonction système : l'utilisateur utilise la « commande de gestion des accès » dans le programme pour appeler l'ensemble de sous-fonctions fourni par le système d'exploitation. Chaque sous-fonction système est appelée une commande d'appel système, également appelée commande généralisée.
Interface d'appel système
L'appel de la fonction système est un service fourni par le système d'exploitation aux programmeurs.
Finalité : faciliter l'utilisation des utilisateurs.
La différence entre l'appel système et l'appel ordinaire
Les appels système sont essentiellement un type d'appel de procédure, mais il s'agit d'un type particulier d'appel de procédure, qui est différent de l'appel de procédure dans le programme utilisateur général.
Statut d'exécution différent
Étatsd'exécutiondifférents.
Les méthodes d'appel sont différentes
Laméthoded'appelestdifférente.L'appelsystèmedoitd'abordentrerdanslecœurdusystèmevialemécanismesoftd'interruption,puispeutêtretransféréauprogrammedetraitementdescommandescorrespondant.
Retour à la question
Revenez à la question.
Exemple : interface d'appel système dans le système d'exploitation Linux
Contrôle de processus
Forkpourcréerunnouveauprocessus
Le cloneestcrééselondesconditionsspécifiéesProcessus enfant
execverunexecutablefile
quitterterminerleprocessus
_quitterimmédiatementterminerleprocessusencours
getdtablesizeTaillemaximalequeleprocessuspeutouvrirNombredefichiers
getpgidpourobtenirlenumérod'identificationdugroupedeprocessusspécifié
définirpgidpourdéfinirlenumérod'identificationdugroupedeprocessusspécifié
getpgrppourobtenirlenumérod'identificationdugroupedeprocessusactuel
setpgrpsdéfinitlenumérodulogodugroupedeprocessusactuel
getpidsobtientlenumérod'identificationduprocessus
getppidsobtientlenumérod'identificationduprocessusparent
getpriorityobtientlaprioritédeplanification
setprioritydéfinitlaprioritédeplanification
modifier_ldlitetécritlatablededescriptionlocaleduprocessus
nanosleependortleprocessuspendantuneduréespécifiée
nicemodifielaprioritéduprocessusdepartagedutempsNiveau
pausepoursuspendreleprocessusetattendrelesignal
personnalitépourdéfinirledomained'exécutionduprocessus
prctlpoureffectuerdesopérationsspécifiquessurleprocessus
ptraceprocessussuivi
sched_get_priority_max pour obtenir la limite supérieure de la priorité statique
sched_get_priority_minpourobtenirlalimiteinférieuredelaprioritéstatique
sched_getparampourobtenirlesparamètresdeplanificationduprocessus
sched_getschedulerpourobtenirlastratégiedeplanificationduprocessusspécifié
sched_rr_get_intervalObtenir la durée de tranche de temps du processus en temps réel planifié par l'algorithme RR
sched_setparamDéfinirlesparamètresdeplanificationduprocessus
sched_setschedulerDéfinirlastratégieetlesparamètresdeplanificationduprocessusspécifié
Le processus sched_yield prend l'initiative d'abandonner le processeur et attend la fin de la file d'attente de planification.
vfork crée un processus enfant pour l'exécution de nouveaux programmes, souvent avec execve, etc.
attendrela finduprocessusfils
attendre3voirattendre
waitpidpourattendrequeleprocessusenfantspécifiésetermine
wait4seewaitpid
capgetgetsprocesspermissions
capsetsprocesspermissions
obtientidobtientlenumérod'identificationdelaréunion
définit les identifiants définit le numéro d'identification de la réunion
opérations de lecture et d'écriture de fichiers
fcntlFilecontrol
ouvrirouvrirfichier
créercréerunnouveaufichier
fermerfermerfichierdescriptionmot
lirefichier
écrireécrirefichier
readvreaddatafromfiletobufferarray
writevwritedatainbufferarraytofile
preadrandomfileLire
pwriterécriture aléatoire dans un fichier
lseekmovefilepointer
_llseekmovefilepointerin64-bitaddressspace
dupcopyDescriptiondufichierouvert
dup2Copiezladescriptiondufichierselonlesconditionsspécifiées
flockfichierajouter/déverrouiller
pollI/Omultipleconversion
tronquertronquelefichier
tronquervoirtronquer
umaskdéfinitlemasqued'autorisationdefichier
fsync écrit la partie du fichier en mémoire sur le disque
p>Fonctionnement du système de fichiers
Accessdeterminesfileaccessibility
chdirchangerépertoiredetravailactuel
fchdirseechdir
chmodchangefilemode
fchmodseechmod
chownchange de propriétaire de fichier ou de groupe d'utilisateurs
fchownseechown
lchownSeechown
chrootchangerépertoireracine
statfetchfilestatusinformation
lstatseestat
fstatseestat
statfsgetfilesysteminformation
fstatfsseestatfs
readdirreaddirectoryentries
getdentsreaddirectoryentries
mkdircreateDirectory
mknodcreateinode
rmdirdeletedirectory
renommerfichierrenommer
liencréerlien
lien symboliqueCréerun lien symbolique
dissociersupprimerlien
lirelienlirelavaleurduliensymbolique
monter le système de fichiers d'installation
umountremovefilesystem
ustatgetfilesysteminformation
utimechangefileaccessmodificationtime
utimesSeeutime
quotactlcontroldiskquota
controle du système
ioctlI/Ofonctiondecommandegénérale
_sysctlread/writesystemparameters
acctenableordisableprocessaccounting
getrlimit pour obtenir la limite supérieure des ressources système
définirrlimitpourdéfinirlalimitedupérieuredesressourcessystème
obtenir l'utilisation pour obtenir l'utilisation des ressources système
uselib sélectionne la bibliothèque de fonctions binaires à utiliser
iopermsetportI/Opermission
ioplchangeprocessI/Operationlevel
opération de port de niveau de soufflage
redémarrer
swaponopenswapfileanddevice
swapofffermelefichier d'échangeetl'appareil
bdflushcontrolbdflushdaemon
sysfs prend en charge le type de système de fichiers pris en charge par le noyau
sysinfoobtient des informations système
adjtimex règle l'horloge du système
alarmeréglageprocessusAlarmclock
gettimertogetthetimervalue
régler la minuterie pour régler la valeur de la minuterie
obtenir l'heure du jour pour obtenir l'heure et le fuseau horaire
définir l'heure de la journée pour définir l'heure et le fuseau horaire
stimesetthesystemdateandtime
timegetthesystemtime
foisobtenirletempsd'exécutionduprocessus
unname obtenir le nom du système UNIX actuel, la version et les informations sur l'hôte
vraccrocherraccrocheleterminalactuel
nfsservctlcontrôleledémonNFS
vm86entre en mode simulation8086
create_modulecréeunélémentmodulechargeable
delete_moduledeletesaloadablemoduleitem
init_moduleinitializemodule
query_modulequerymoduleinformation
*get_kernel_symsrécupèrelessymbolesdecorequiontétéremplacésparquery_module
Gestion de la mémoire
brkChangedatasegmentspace
sbrkseebrk
mlockmemorypagelock
munlockmemorypageunlock
mlockallappelleleprocessuspourajoutertouteslespagesmémoireVerrouiller
Déverrouillertouteslespagesmémoireduprocessusd'appelendéverrouillertous
mmapmappingpage de mémoire virtuelle
munmapremovmemorypagemapping
mremappremapvirtualmemorypageMemoryaddress
msync réécrit les données de la mémoire mappée sur le disque
mprotectsetsmemoryimageprotection
getpagesizegetspagesize
syncWritememorybufferdatabacktoharddisk
cacheflushÉcritlecontenudutamponspécifiésurledisque
Réseau
getdomainnameGetdomainname
setdomainnamesetdomainname
gethostidgethostidentificationnumber
sethostidsethostidentificationnumber
obtenir le nom d'hôte obtenir ce nom d'hôte
sethostnamesethostName
Prise de courant
socketcallsocketsystemcall
priseétablirprise
bindbindsockettoport
se connecterconnecter à l'hôte distant
accepterrépondreàlademandedeconnexionsocket
envoyerenvoyerinformationsviasocket
sendtosendUDPinformation
envoyermsgvoirenvoyer
recevoir des informations via le socket
recvfromreceiveUDPinformation
recvmsgseerecv
écouterécoutesocketport
selecttopollmultiplesimultaneousI/Os
shutdownpourfermerlaconnexionsurlaprise
obtientlenomdusocketpourobtenirlenomdusocketlocal
getpeernamepourobtenirlenomdusocketdupartenairedecommunication
getockopttogetportsettings
définit les paramètres de port pour définir les paramètres de port
envoyerfichierpourtransférerdesdonnéesentrefichiersouports
pairedepriseàcréerpourlaprisesansnomconnectée
Gestion des utilisateurs
getuidtoobtainuseridentificationnumber
setuidtosetuseridentificationnumber
getgidtoobtaingroupidentificationnumber
setgidsetgroupidentificationnumber
getegidgeteffectivegroupidentificationnumber
setegidseteffectivegroupidentificationnumber
geteuidgeteffectiveuseridentificationnumber
seteuidsdéfinitlenumérod'identificationutilisateurefficace
setregidsetlenumérod'identificationdegrouperéeleteffectifrespectivement
setreuiddéfinitrespectivementlenumérod'identificationutilisateurréeleteffectif
s'engagerpourobtenirrespectivementlesnumérosd'identificationdegrouperéels,efficacesetsauvegardés
définissezungidpourdéfinirrespectivementlesnumérosd'identificationdegrouperéels,efficacesetenregistrés
obtenez un resuid pour obtenir respectivement les numéros d'identification de groupe réels, les numéros d'identification d'utilisateur valides et enregistrés
setresuiddéfinitrespectivementlesnumérosd'identificationutilisateurréels,validesetenregistrés
setfsgiddéfinitlenumérod'identificationdegroupeutilisélorsdelavérificationdusystèmedefichiers
setfsuiddéfinitlenumérod'identificationutilisateurutilisélorsdelavérificationdusystèmedefichiers
getgroupsobtientlalistedesindicateursdegroupesupplémentaires
setgroupsdéfinitlalistedesindicateursdegroupesupplémentaires
Communication interprocessus
ipcInter-processuscommunicationtotalcontrolcall
sigactiondéfinitlaméthodedetraitementpourlesignalspécifié
sigprocmaskexécutelesignaldansl'ensembledesignauxselonlesparamètresBlocage/déblocageetautresopérations
sigpendingsetupaqueuepourlesignalbloquéspécifié
sigsuspend suspend le processus pour attendre un signal spécifique
signalvoirsignal
killenvoieunsignalàungroupedeprocessusprocesseur
*sigblockajouteunsignalaumasquesignalbloqué,quiaétéremplacéparsigprocmask
*siggetmaskgobtientlemasquedesignalbloquéexistant,aétéremplacéparsigprocmask
*sigsetmaskremplacelemasquedesignalbloquantexistantparlemasquedesignaldonné,aétéremplacéparsigprocmask
*sigmaskconvertitlesignaldonnéenmasque,aétéremplacéparsigprocmask
*sigpausealamêmefonctionquesigsuspendetaétéremplacéparsigsuspend
sigveciestunefonctiondetraitementdusignalconçuepourlacompatibilitéavecBSD,quiestsimilaireàsigaction
ssetmaskANSICsignalprocessingfunction,similartosigaction
message
msgctlmessagecontroloperation
msggetgetmessagequeue
msgsndenvoimessage
msgrcvgetmessage
tuyau
tuyaucréer un tuyau
sémaphore
semctlsémaphorecontrôle
semgetgetasetofsemaphores
opération sémopsémaphore
la memoire partagée
shmctlcontrolsharingMémoire
shmgetgetsharedmemory
shmatconnectmémoirepartagée
shmdtremovessharedmemory