A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Chamadas ao sistema – API do kernel do Linux. 2 Modo, Espaço, Contexto Modo: estado de execução restrita do hardware –Acesso restrito, instruções privilegiadas.

Apresentações semelhantes


Apresentação em tema: "Chamadas ao sistema – API do kernel do Linux. 2 Modo, Espaço, Contexto Modo: estado de execução restrita do hardware –Acesso restrito, instruções privilegiadas."— Transcrição da apresentação:

1 Chamadas ao sistema – API do kernel do Linux

2 2 Modo, Espaço, Contexto Modo: estado de execução restrita do hardware –Acesso restrito, instruções privilegiadas –Modo usuário X modo kernel “arquitetura modo dual”, “modo protegido” –Intel suporta 4 anéis de proteção; 0 kernel, 1 não usado, 2 não usado, 3 usuário

3 3 Modo, Espaço, Contexto Espaço: espaço de endereçamento do kernel (sistema) vs. usuário (processo) –Requer suporte MMU (memória virtual) –“terra do usuário”: espaço de endereçamento do processo; existem vários espaços de endereçamento de usuário –realidade: o kernel é frequentemente mapeado no espaço de processo de usuário

4 4 Modo, Espaço, Contexto Contexto: atividade do kernel em nome de ??? –processo: em nome do processo corrente –sistema: sem relação com o processo corrente (talvez nenhum processo!) exemplo “contexto de interrupções” Bloqueios não são permitidos!

5 5 Modo usuário, contexto do processo CONTEXTO MODO Usuário Kernel ProcessoSistema Espaço Usua. Espaço Kernel usuário

6 6 Modo kernel, contexto processo CONTEXTO MODO Usuário Kernel ProcessoSistema Espaço Usua. Espaço kernel Chamadas ao sistema, exceções “trap to kernel”

7 7 Modo kernel, contexto sistema CONTEXTO MODO User Kernel ProcessoSistema Esp. Usuá?? Espaço kernel Interrupções, tarefas do sistema interrupções

8 8 Modo usuário, contexto sistema? CONTEXTO MODO Usuário Kernel ProcessoSistema Espaço Usuá. Espaço kernel? Não permitido !

9 9 Interrupções e exceções Interrupções – dispositivos assíncronos comunicando com UCP –Exemplo: requisição de serviço, notificação de término –O sistema pode ser interrompido em modo usuário ou kernel –As interrupções são logicamente não relacionadas com o processamento corrente Exceções – notificação síncrona de erro de hardware –Exemplo: divisão-por-zero (AU), endereço ilegal (MMU) –Exceções são causadas por processamento corrente Interrupções de software (traps) –Interrupção simulada síncrona –Permite entrada controlada no modo kernel a partir do usuário

10 10 Entrada e saída do kernel Kernel Dispositivos biblioteca Interface chamadas trap / Tabela de interrupção Tabela de chamadas ao sistema escalonador boot IPI: interrupção interprocessador 80h exceções (traps de erros) interrupção Diálogo do dispositivo trap Faltas de páginas

11 11 Cruzando a barreira do Kernel Mais do que uma chamada à procedimento Menos do que um chaveamento de contexto Custos: –Mecanismo de vetorização –Estabelecimento da pilha de kernel –Validação de parâmetros –Kernel mapeado para espaço do usuário? Atualização de permissões do mapa de páginas

12 12 Chamadas ao sistema vs. chamadas a biblioteca Evolução histórica do # de chamadas –Unix 6e (~50), Solaris 7 (~250) –Linux 2.0 (~160), Linux 2.2 ( ~190), Linux 2.4 (~220) Possibilidades de chamadas ao sistema vs. biblioteca: –Chamada a biblioteca nunca invoca chamada ao sistema –Chamada a biblioteca às vezes invoca chamada ao sistema –Chamada a biblioteca sempre invoca chamada ao sistema –Chamada ao sistema não disponível a partir da bilioteca Pode invocar chamada ao sistema “diretamente” via código assembler “externas” vs. “internas”

13 13 Chamadas ao sistema bloqueantes Chamadas ao sistema podem bloquear no núcleo Chamadas lentas podem bloquear indefinidamente –leituras e escritas em pipes, terminais, dispositivos –Algumas chamadas IPC, pausa, algumas aberturas –E/S de disco não é considerada lenta (eventualmente vai completar) Chamadas ao sistema bloqueantes podem ser interrompidas por um sinal –retorna EINTR Problema: chamadas lentas devem ser envolvidas por um laço

14 14 Chamadas ao sistema bloqueantes Unix BSD introduziu o reinicio automático de chamadas lentas interruptíveis POSIX não especifica semântica Linux –Sem reinício automático por default –Especifica reinício quando setando tratador de sinais (SA_RESTART)

15 15 Chamadas ao sistema (2.2) _exit exit getpriority mlock pipe _llseek fchdir getresgid mlockall poll _newselect fchmod getresuid mmap prctl _sysctl fchown getrlimit modify_ldt pread accept fcntl getrusage mount prof access fdatasync getsid mprotect ptrace acct flock getsockname mpx query_module adjtimex fork getsockopt mremap quotactl afs_syscall fstat gettimeofday msgctl read alarm fstatfs getuid msgget readdir bdflush fsync gtty msgop readlink bind ftruncate idle msgrcv readv break get_kernel_syms init_module msgsnd reboot brk getcontext intro msync recv cacheflush getdents ioctl munlock recvfrom capget getdomainname ioctl_list munlockall recvmsg capset getdtablesize ioperm munmap rename chdir getegid iopl nanosleep rmdir chmod geteuid ipc nfsservctl sbrk chown getgid kill nice sched_get_priority_max chroot getgroups killpg obsolete sched_get_priority_min clone gethostid lchown oldfstat sched_getparam close gethostname link oldlstat sched_getscheduler connect getitimer listen oldolduname sched_rr_get_interval creat getpagesize llseek oldstat sched_setparam create_module getpeername lock olduname sched_setscheduler delete_module getpgid lseek open sched_yield dup getpgrp lstat outb select dup2 getpid mkdir pause semctl execve getppi mknod personality semget

16 16 Chamadas ao sistema (2.2) semop shmat sync send shmctl syscalls sendfile shmdt sysctl sendmsg shmget sysfs sendto shmop sysinfo setcontext shutdown syslog setdomainname sigaction time setegid sigaltstack times seteuid sigblock truncate setfsgid siggetmask umask setfsuid sigmask umount setgid signal uname setgroups sigpause undocumented sethostid sigpending unimplemented sethostname sigprocmask unlink setitimer sigreturn uselib setpgid sigsetmask ustat setpgrp sigsuspend utime setpriority sigvec utimes setregid socket vfork setresgid socketcall vhangup setresuid socketpair vm86 setreuid ssetmask wait setrlimit stat wait3 setsid statfs wait4 setsockopt stime waitpid settimeofday stty write setuid swapoff writev setup swapon sgetmask symlink


Carregar ppt "Chamadas ao sistema – API do kernel do Linux. 2 Modo, Espaço, Contexto Modo: estado de execução restrita do hardware –Acesso restrito, instruções privilegiadas."

Apresentações semelhantes


Anúncios Google