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.

Slides:



Advertisements
Apresentações semelhantes
TRATAMENTO DE ARQUIVOS EM C
Advertisements

Python: Entrada e Saída
Sistemas Operacionais
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Sistemas operacionais
Processos no Unix e Linux
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Prof. Luis Otavio Alvares
LPG - I: Alocação Dinâmica de Memória - Ponteiros
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
LPG-I: Tipos Complexos - Estruturas
SVCs para Controle de Processos no Unix
SVCs para Controle de Processos no Unix
UNIX.
Universidade de Brasília
Linguagem C Strings.
Slides Prof. Jean SIMÃO Revisão: Prof. João FABRO
Armazenamento de Dados em Arquivos
Fundamentos de Programação 1
Listas Encadeadas.
Revisão da Linguagem C.
exercícios listas encadeadas
Revisão /*======================================================*/
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Curso de Nivelamento LCG
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
PROGRAMAÇÃO ESTRUTURADA II
Linguagem de Programação II Parte VII
Ordenação e Pesquisa de Dados Marco Antonio Montebello Júnior
CADEIA DE CARACTERES (Strings)
Manipulação de Arquivos em C
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Aula Prática 12 Operações com Arquivos Monitoria
Prof. Ricardo Santos PONTEIROS
Permissões e Propriedades de Arquivos
Introdução à Programação Orientada a Objetos com Java Paulo Borba Centro de Informática Universidade Federal de Pernambuco Programação Imperativa (e Ponteiros.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Arquivo.
Técnicas de Desenvolvimento de Programas
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Capítulo V – Comandos de Entrada e Saída 5.1 – Equipamentos de entrada e saída 5.2 – Saída no vídeo-texto 5.3 – Entrada pelo teclado 5.4 – Entrada e saída.
Uso de parâmetros na linha de comando. Parâmetros da função main:
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Usuários e Grupos Usuário: alguém que possui conta, internamente é tratado como um número (UID) que é a identificação do usuário (USER ID). Cada usuário.
Aula Prática 11 Operações com Arquivos Monitoria
Operações com Arquivos Monitoria A estrutura FILE  É como um tipo de dado, mas não é um tipo propriamente dito  Definido no arquivo cabeçalho.
Estruturas de Dados Aula 6: Cadeias de Caracteres
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 10: Interface de Sistemas de Arquivos.
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Profa. Maria Augusta Constante Puget
Ponteiros em C Prof. Kariston Pereira
Shell Script Parte 2.
Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho
Linguaguem de Programação II
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Linguagem de Programação
COMPILADORES 07 Prof. Marcos.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Programação II Arquivos Autoria: Ernani Santos Modificação: Clebson Oliveira Adaptação: Claudia Boeres.
Tipo Abstrato de Dados (TAD) Estrutura de Dados Professor: Rodrigo Alves Sarmento Professor: André Cypriano.
Estrutura de Dados Prof. André Cypriano M. Costa
Sistemas Operacionais Sistemas de Arquivos Prof. José Queiroz - ZEQUE.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
1 Aula 07 Strings Prof. Filipe Mutz. 2 Em nossos programas ainda não vimos como armazenar palavras e textos, e eles são muito importantes! Exemplos: Programas.
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Transcrição da apresentação:

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 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); }

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 , 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.

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.

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 */ };

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.

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.

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).

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).

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).