• Nenhum resultado encontrado

Processos no UNIX. Walter Fetter Lages

N/A
N/A
Protected

Academic year: 2021

Share "Processos no UNIX. Walter Fetter Lages"

Copied!
15
0
0

Texto

(1)

Processos no UNIX

Walter Fetter Lages

w.fetter@ieee.org

Universidade Federal do Rio Grande do Sul Escola de Engenharia

Departamento de Engenharia Elétrica

Programa de Pós-Graduação em Engenharia Elétrica ELE00002 Sistemas de Automação

(2)

Introdução

MULTICS Multiplexed Information and Computing Service

UNICS Uniplexed Information and Computing Service

UNIX

System V

BSD=Berkeley Software Distribution

POSIX=Portable Operating System Interface

IEEE 1003.x

IEEE 1003.4 Real-time Extension

(3)

Criação de Processos

pid_t fork(void)

Chamada de sistema clone

Processo pai

Processo filho

Process identifier (pid)

Fork retorna 0 para o filho

Fork retorna pid do filho para o pai

Descritores e privilégios do pai são herdados pelo filho

Locks e sinais não são herdados

vfork() -> não duplica todo o espaço de endereços

(4)

Exemplo

pid=fork();

if(pid < 0) {

/* falha do fork */

}

else if (pid > 0) {

/* codigo do pai */

}

else {

/* codigo do filho */

}

(5)

Identificação de Processos

pid

pid_t getpid(void) pid_t getppid(void)

User id

uid_t getuid(void) uid_t geteuid(void)

Group id

gid_t getgid(void) gid_t getegid(void)

(6)

Notificação de Término

Sinal SIGCHLD enviado para o pai

Notificação assíncrona

pid_t wait(int *staloc)

staloc ponteiro onde é armazenado o status retornado pelo filho ao terminar

pid_t waitpid(pid_t pid,int *staloc, int options)

pid==-1 espera qualquer filho

pid > 0 espera pelo filho com id==pid pid==0 espera por filho com gid==pid

pid < -1 espera por filho com gid==abs(pid)

(7)

Notificação de Término

pid_t waitpid(pid_t pid,int *staloc, int options)

options bitwise OR

WNOHANG Retorna 0 ao invés de bloquear

WUNTRACED Se a implementação suporta job control, retorna o status de término de

qualquer filho especificado por pid.

(8)

Funções exec

int execl(const char *pathname, const char *arg0,...)

int execv(const char *pathname, char *const argv[])

int execle(const char *pathname, const char *arg0,...,

char *const envp[])

int execve(const char *pathname, char *const argv[],

char *const envp[])

int execlp(const char *filename, const char *arg0,...)

int execvp(const char *filename, char *const argv[])

(9)

Relações entre as Funções exec

(10)

Troca de UID e GID

UID

int setuid(uid_t uid)

int setreuid(uid_t ruid, uid_t euid) int seteuid(uid_t uid)

GID

int setgid(gid_t gid)

int setregid(gid_t rgid, gid_t egid) int setegid(gid_t gid)

(11)

Relações entre UIDs

(12)

Grupos de Processos

Cada processo pertence a um grupo de processo e tem um pgid

Cada grupo de processo tem um líder

Para o líder, pgid=pid pid_t getpgrp(void)

int setpgid(pid_t pid,pid_t pgid)

Um processo só pode setar o pgid de sí próprio ou dos seus filhos

(13)

Sessões

Uma sessão é um conjunto de grupos de processos

pid_t setsid(void)

O processo torna-se um líder de uma nova sessão e líder de um novo grupo

Se o processo já for lider de grupo, a chamada retorna erro

Cada sessão pode ter um único terminal controlador

(14)

Processos, Grupos e Sessões

(15)

Referências

[1] W. R. Stevens. Advanced Programming in the UNIX Environment. Addison-Wesley, Reading, MA, 1993.

Referências

Documentos relacionados

Com relação à germinação das sementes armazenadas em câmara fria, aos três meses de armazenamento (Tabela 10), observou-se em sementes tratadas ou não com fungicidas e

O emprego de um estimador robusto em variável que apresente valores discrepantes produz resultados adequados à avaliação e medição da variabilidade espacial de atributos de uma

Para o controle da salivação, gosto muito de usar metáforas, como pedir para o paciente imaginar um ralo dentro de sua boca, por onde a saliva escorre, ou uma torneirinha que vai

Corograpliiu, Col de Estados de Geografia Humana e Regional; Instituto de A lta C ultura; Centro da Estudos Geográficos da Faculdade de Letras de Lisboa.. RODRIGUES,

Quando os dados são analisados categorizando as respostas por tempo de trabalho no SERPRO, é possível observar que os respondentes com menor tempo de trabalho concordam menos que

Com base nos resultados da pesquisa referente à questão sobre a internacionalização de processos de negócios habilitados pela TI com o apoio do BPM para a geração de ganhos para

(2006) a auditoria de sistemas em desenvolvimento deve compreender atividades de revisão e avaliação do processo de desenvolvimento de sistemas de informação em todo o

Embora – e isso torna-se mais claro com a pesquisa finalizada – nem todos estejam dispostos a darem aulas interativas, ceder espaço ao aluno – que busca incessantemente