Portal do Governo Brasileiro

chamadas de sistema

Descrição

As chamadas de sistemas são funções (interfaces) usadas pelos aplicativos para solicitar a execução de algum serviço ao kernel do sistema operacional. Por isso, as chamadas de sistemas são instruções com maior privilégio quando comparadas às outras instruções.

Com as chamadas de sistemas é possível, por exemplo, definir acesso a recursos de baixo nível como alocação de memória, periféricos e arquivos. Além disso, são as chamadas de sistemas que permitem a criação e a finalização de processos.

Quando a execução de uma chamada de sistema é solicitada, o sistema operacional salva todo o contexto do processo (para continuar mais tarde de onde parou), verifica as permissões envolvidas no pedido e autoriza (se for o caso) o processador a executar o serviço solicitado.

Quando o processador termina a execução da chamada de sistema, o sistema operacional retorna o controle para o processo, colocando-o novamente na fila de processos prontos para a execução.

Biblioteca C

No Linux, kernel 3.18, existem quase 400 chamadas de sistemas disponibilizadas na biblioteca C (a biblioteca faz a interface entre o aplicativo e o kernel).

Programação

O programador normalmente não utiliza as chamadas de sistema no seu código. Ele utiliza uma função de biblioteca que é transformada em uma ou mais chamadas de sistema quando o código executável é gerado e há necessidade de pedir um serviço ao kernel. Por exemplo, a função printf( ) da Linguagem C é mapeada na chamada write( ) para escrever em um arquivo. Já a função matemática sqrt( ) não precisa de privilégios especiais para ser executada e não há necessidade de pedir ajuda ao kernel.

O programador pode usar as chamadas de sistema no seu código se, por exemplo, está usando a Linguagem C. Com isto, ele ganha rapidez na compilação do programa (não precisa fazer a conversão), mas diminui a portabilidade do código (o formato das chamadas pode variar com as arquiteturas).

Lista

As chamadas de sistema do Linux podem ser encontradas no arquivo /usr/include/unistd.h ou podem ser obtidas com o comando "man syscalls" (esta página do manual on-line discute as chamadas de sistemas do Linux).

Chamada de SistemaDescrição
_llseek
_newselect
_sysctl
accept
accept4
access( )Verifica as permissões de um processo em relação a um arquivo
acct( ) Habilita/desabilita a monitoração de processos
add_key
adjtimex( )Lê/ajusta o relógio do kernel
alarm( )Especifica um alarme de relógio para o envio de um sinal
bind( )Associa um nome a um soquete
brk( )
sbrk( )
Altera o tamanho do segmento de dados
cacheflush
capget( )
capset( )
Manipula as capacidades dos processos
chdir( )
fchdir( )
Altera o diretório de trabalho do processo
chmod( )Altera as permissões de um arquivo
chown( )
fchown( )
lchown( )
Altera o dono e/ou o grupo de um arquivo
chown32
chroot( )Altera o diretório-raiz do processo
clock_adjtime
clock_getres
clock_gettime( )Informa o tempo de um determinado relógio
clock_nanosleep
clock_settime( )Ajusta o tempo de um determinado relógio
clone( )Cria um processo-filho permitindo compartilhamento de recursos
close( )Fecha um descritor de arquivo
connect
delete_module
dup( )
dup2( )
dup3( )
Duplica um descritor de arquivo
epoll_create
epoll_create1
epoll_ctl
epoll_pwait
epoll_wait
eventfd
eventfd2
execve( )Executa um programa
_exit( )Termina o processo
exit_group
faccessat
fadvise64
fadvise64_64
fallocate
fanotify_init
fanotify_mark
fchmod( )Altera as permissões de um arquivo
fchmodat( )Altera as permissões de um arquivo
fchown32
fchownat
fcntl( )Realiza operações de controle em um descritor de arquivo
fcntl64
fgetxattr
finit_module
flistxattr
flock( )Aplica ou remove um bloqueio a um arquivo
fork( )Cria um processo-filho
fremovexattr
fsetxattr
fstat64
fstatat64
fstatfs( )
statfs( )
Fornece informações sobre um sistema de arquivos
fstatfs64
fsync( )
fdatasync( )
Sincroniza um arquivo com o dispositivo de armazenamento temporário correspondente
ftruncate
ftruncate64
futex
futimesat
get_mempolicy
get_robust_list
get_thread_area
getcpu( )Informa a CPU na qual o processo está executando
getcwd( )Informa o diretório corrente de um processo
getdents
getdents64
getegid
getegid32
geteuid
geteuid32
getgid( )Informa o GID real do processo
getgid32
getgroups( )Informa os GIDs do processo
getgroups32
getitimer( )
setitimer( )
Verfica/altera o valor de um temporizador de intervalo
getpeername
getpagesize( )Informa o tamanho da página de memória
getpgid( )Informa a GID de um processo
getpgrp
getpid( )Fornece o número de identificação do processo (PID)
getppid( )Fornece o número de identificação do processo-pai (PPID)
getpriority( )Fornece a prioridade de execução de um processo
getresgid( )Fornece informações sobre o grupo do processo
getresgid32
getresuid( )Fornece informações sobre o dono do processo
getresuid32
getrlimit( )Informa os limites de uso de um recurso
getrusage
getsid
getsockname
getsockopt
gettid
gettimeofday
getuid( )Informa o UID real do dono do processo
getuid32
getxattr
init_module
inotify_add_watch
inotify_init
inotify_init1
inotify_rm_watch
io_cancel
io_destroy
io_getevents
io_setup
io_submit
ioctl
ioperm
iopl
ioprio_get
ioprio_set
ipc
kcmp
kern_features
kexec_load
keyctl
kill( )Envia um sinal para um processo
lchown32
lgetxattr
link( )Cria um novo nome para um arquivo que já existe
linkat
listen
listxattr
llistxattr
lookup_dcookie
lremovexattr
lseek
lsetxattr
lstat64
madvise
madvise1
mbind
migrate_pages
mincore
mkdir( )Cria um diretório
mkdirat
mknod( )Cria um arquivo comum ou especial
mknodat
mlock
mlockall
mmap
mmap2
modify_ldt
mount( )Monta um sistema de arquivos
move_pages
mprotect
mq_getsetattr
mq_notify
mq_open
mq_timedreceive
mq_timedsend
mq_unlink
mremap
msgctl
msgget
msgrcv
msgsnd
msync
munlock
munlockall
munmap
name_to_handle_at
nanosleep
nice
oldfstat
oldlstat
oldolduname
oldstat
olduname
open( )
creat( )
Abre, possivelmente cria, um arquivo
open_by_handle_at
openat
pause( )Aguarda a chegada de um sinal
pciconfig_iobase
pciconfig_read
pciconfig_write
perf_event_open
personality
perfctr
perfmonctl
pipe
pipe2
pivot_root
poll
ppc_rtas
ppoll
prctl
pread64
preadv
prlimit( )Verifica e altera os limites de uso dos recursos de um processo
process_vm_readv
process_vm_writev
pselect6
ptrace
pwrite64
pwritev
quotactl
read( )Lê um descritor de arquivo
readahead
readdir
readlink
readlinkat
readv
reboot( )Reinicializa o sistema ou habilita/desabilita o comando Ctrl-Alt-Del
recv
recvfrom
recvmsg
recvmmsg
remap_file_pages
removexattr
rename( )Altera o nome ou a localização de um arquivo
renameat
request_key
restart_syscall
rmdir( )Apaga um diretório vazio
rt_sigaction
rt_sigpending
rt_sigprocmask
rt_sigqueueinfo
rt_sigreturn
rt_sigsuspend
rt_sigtimedwait
rt_tgsigqueueinfo
s390_runtime_instr
sched_get_priority_max
sched_get_priority_min
sched_getaffinity
sched_getparam
sched_getscheduler
sched_rr_get_interval
sched_setaffinity
sched_setparam
sched_setscheduler
sched_yield
select
semctl
semget
semop
semtimedop
send
sendfile
sendfile64
sendmmsg
sendmsg
sendto
set_mempolicy
set_robust_list
set_thread_area
set_tid_address
setdomainname
setfsgid
setfsgid32
setfsuid
setfsuid32
setgid
setgid32
setgroups( )Altera a lista dos GIDs do processo
setgroups32
sethostname( )Altera o nome do host
setns
setpgid
setpriority( )Altera a prioridade de execução do processo
setregid
setregid32
setresgid
setresgid32
setresuid
setresuid32
setreuid
setreuid32
setrlimit( )Redefine os limites de uso de um recurso
setsid
setsockopt
settimeofday
setuid
setuid32
setxattr
sgetmask
shmat
shmctl
shmdt
shmget
shutdown
sigaction
sigaltstack
signal( )Define um conjunto de ações para um determinado sinal recebido
signalfd
signalfd4
sigpending
sigprocmask
sigreturn
sigsuspend
socket
socketcall
socketpair
splice
spu_create
spu_run
ssetmask
stat( )
lstat( )
fstat( )
Fornece informações sobre um arquivo
stat64
statfs64
stime
subpage_prot
swapoff
swapon
symlink
symlinkat
sync
sync_file_range
sync_file_range2
syncfs
sysfs
sysinfo
syslog
tee
tgkill
time( )Fornece a quantidade de segundos desde às zero horas de 01/01/1970
timer_create
timer_delete
timer_getoverrun
timer_gettime
timer_settime
timerfd_create
timerfd_gettime
timerfd_settime
times
tkill
truncate
truncate64
ugetrlimit
umask
umount( )
umount2( )
Desmonta um sistema de arquivos
uname( ) Fornece informações sobre o kernel
unlink( )Apaga um nome de arquivo
unlinkat
unshare
uselib
ustat
utime
utimensat
utimes
utrap_install
vfork
vhangup
vm86old
vm86
vmsplice
wait( )
waitpid( )
waitid( )
Espera pela mudança de estado de um processo-filho
write( ) Escreve em um descritor de arquivo
writev

 

  Topo   |   Guia   |   Home