Introdução de um programa no sistema, mostrando a interação com o sistema
This presentation is the property of its rightful owner.
Sponsored Links
1 / 22

Introdução de um programa no sistema, mostrando a interação com o sistema PowerPoint PPT Presentation


  • 35 Views
  • Uploaded on
  • Presentation posted in: General

Introdução de um programa no sistema, mostrando a interação com o sistema (programa 1.1). Utilização do compilador/ligador (cc – gcc). /* * Mostra Hello World 3 vezes */ #include <stdio.h> #include <string.h> #include <sys/types.h> #include <stdlib.h> #include <unistd.h>

Download Presentation

Introdução de um programa no sistema, mostrando a interação com o sistema

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Introdu o de um programa no sistema mostrando a intera o com o sistema

Introdução de um programa no sistema, mostrando a interação com o sistema

(programa 1.1). Utilização do compilador/ligador (cc – gcc).

/*

* Mostra Hello World 3 vezes

*/

#include <stdio.h>

#include <string.h>

#include <sys/types.h>

#include <stdlib.h>

#include <unistd.h>

char cptr = “Hello World\n”; /* Static */

char buffer1[25];

main(void) {

void showit( char * );/* protótipo de função */

int i = 0;/* variável automática */

strcpy( buffer1, “Uma demonstração\n”);/* função de biblioteca */

write( 1, buffer1, strlen(buffer1)+1 );/* chamada de sistema */

for ( ; i < 3; ++i )

showit(cptr);/* chamada de função */

}

void

showit( char *p) {

char *buffer2;

if ( (buffer2=(char *) malloc((unsigned) (strlen(p)+1))) != NULL) {

strcpy( buffer2, p);/* copia string */

printf(“%s”,buffer2);/* mostra string */

free( buffer2 );/* libera espaço */

} else {

printf(“erro de alocação.\n”);

exit(1);

}

}


Introdu o de um programa no sistema mostrando a intera o com o sistema

http://www.linux.org/

http://unixhelp.ed.ac.uk/

http://www.cs.cf.ac.uk/Dave/C/CE.html

http://www.strath.ac.uk/IT/Docs/Ccourse/

http://www.dca.fee.unicamp.br/~ricarte/ProgSist/node122.html

http://www.softpanorama.org/Internals/unix_system_calls_links.shtml

http://www.cplusplus.com/doc/tutorial/

http://www.intap.net/~drw/cpp/


Introdu o de um programa no sistema mostrando a intera o com o sistema

O Unix utiliza dois conjuntos de identificadores de usuário, real e efetivo.

Os identificadores reais UID e GID encontram-se no arquivo de password na entrada referente a cada usuário (campos 4 e 5). O segundo conjunto é o efetivo EUID e EGID.

O sistema utiliza o real para identificar o usuário para coisas como: contabilidade e envio de e-mail, enquanto que o efetivo é usado para determinar que permissões (acesso a arquivos) adicionais devem ser garantidas ao processo, quando o usuário deste processo precisa acessar/modificar arquivos privilegiados (arquivo de password).

Para isto o Unix oferece um conjunto de permissões adicionais (SUID, SGID) que podem ser especificadas pelo dono do arquivo. Estas indicações fazem com que o SO, quando executar o programa, permita ao processo os mesmos privilégios do dono/grupo do programa. Ou seja, o EUID para o processo é aquele indicado para o dono do arquivo.


Introdu o de um programa no sistema mostrando a intera o com o sistema

Arquivos

O sistema também prove um conjunto de informações referentes ao sistema de arquivos e aos arquivos propriamente ditos.

No caso do sistema de arquivos, associado a cada arquivo aberto existe um valor inteiro (apontador do descritor) usado pelo sistema como índice de uma tabela de descritores de arquivos (64 entradas) que esta localizada na u-area.

Esta tabela (por processo) faz referência a uma tabela de arquivos do sistema (global) que por sua vez referencia a uma tabela de i-nodes do sistema (figura ).

Referente a informações sobre os arquivos, existem algumas chamadas de sistema que são usadas com este propósito (stat, lstat, fstat). Neste caso, dado um nome de arquivo path a função stat retorna uma estrutura de informações sobre o mesmo.


Introdu o de um programa no sistema mostrando a intera o com o sistema

struct stat {

mode_tst_mode;/* tipo e modo (permissões) */

ino_tst_ino;/* i-node */

dev_tst_dev;/* numero do dispositivo */

dev_tst_rdev;/* dispositivo arquivos especiais */

nlink_tst_nlink;/* numero de links */

uid_tst_uid;/* UID do dono */

gid_tst_gid;/* GID do dono */

off_tst_size;/* tamanho em bytes */

time_tst_atime;/* ultimo acesso */

time_tst_mtime;/* ultima modificação */

time_tst_ctime;/* ultima mudança de estado */

longst_blksize;/* melhor tamanho de bloco */

longst_blocks;/* blocos (512b) alocados */

};


Introdu o de um programa no sistema mostrando a intera o com o sistema

Com respeito as permissões de acesso aos arquivos existem também chamadas de sistema (chmod, fchmod) que permitem mudar o modo de acesso. A função chmod utiliza o arquivo especificado e a função fchmod utiliza um arquivo já aberto. A mudança de modo de acesso é permitida se o EUID do processo for igual ao dono do arquivo ou se o processo tem permissões de super-usuário.


Introdu o de um programa no sistema mostrando a intera o com o sistema

Outras funções de biblioteca permitem ao programa modificar outros atributos dos arquivos (umask, getcwd, chdir, fchdir). A função umask atribui ao processo uma máscara de criação de arquivos. A função getcwd retorna caminho do diretório corrente, para isto é necessário um parâmetro buff que vai conter o nome. As funções chdir e fchdir são usadas para mudar o diretório corrente para um especificado.


Introdu o de um programa no sistema mostrando a intera o com o sistema

Recurso 

É possível obter informações sobre os limites de um processo no que diz respeito a recursos. No caso da obtenção desta informação via interface de usuário existe um comando limit que mostra os limites do sistema ( limit –h) ou processo corrente (limit). Estas informações também podem ser usadas por um processo no ambiente de programação através de chamada de sistema e funções de biblioteca (ulimit, getrlimit, setrlimit).


Introdu o de um programa no sistema mostrando a intera o com o sistema

Linha de Comando

Parte do ambiente de processamento para os processos são valores passados para o processo na função main. Estes valores podem vir da linha de comando ou pela chamada de sistema exec. Os valores são armazenados/referenciados por um array de apontadores conhecido como argv. O número de elementos neste array é informado por um valor inteiro referenciado por argc. É possível para o programa verificar o conteúdo da linha de comando através de uma função de biblioteca (getopt).


Introdu o de um programa no sistema mostrando a intera o com o sistema

Variáveis do ambiente

Cada processo também tem acesso a uma lista de variáveis de ambiente que também são armazenadas/referenciadas por um array de caracteres. O acesso a estas variáveis via programa é feito através de um ponteiro externo environ ( extern char **environ). Algumas funções de biblioteca estão disponíveis para manipular estas variáveis (getenv, putenv).


  • Login