Você está na página 1de 5

FACULDADE PROFESSOR MIGUEL ÂNGELO DA SILVA

SANTOS

SISTEMAS DE INFORMAÇÃO

ELTON JOHN ROBAINA DA SILVA

Estudo Dirigido
SISTEMAS OPERACIONAIS I

MACAÉ
2019
ELTON JOHN ROBAINA DA SILVA

ESTUDO DIRIGIDO - ESPECIFICAÇÃO DE CONCORRÊNCIA POR THREAD EM


C/C++

Trabalho apresentado a o curso de

Sistemas da Informação

da Faculdade Professor Miguel Ângelo da Silva Santos

disciplina Sistemas Operacinais I.

Prof: Irineu de Azevedo Lima Neto

Macaé
2019

2
Estudo dirigido - especificação de concorrência por thread em C/C+
+Tarefa

A linguagem em foi criada entre 1969 e 1973 por Dennis Ritchie e


posteriormente se tornou uma das linguagens mais populares do mundo, influenciando
diretamente ou indiretamente outras linguagens famosas como, por exemplo, C++ e
Java.

Atualmente essa linguagem é mais conhecida como C/C++ devido suas


atualizações, possuindo, por exemplo, a programação orientada à objetos. Embora a
linguagem C/C++ diversas vantagens, ela não contém nenhum suporte interno para
aplicativos multithread. Em vez disso, depende inteiramente do sistema operacional
para fornecer esse recurso.

De um modo geral é possível dizer que um processo é basicamente um


agrupador de recursos (código e dados) e possui uma identidade, enquanto os threads
são criados no contexto de um processo e compartilham o mesmo espaço de
endereçamento. Os threads possuem mecanismos para gerenciar seu contexto de
execução, porem não são independentes como os processos.

Para que um programa possa ser desenhando para executar múltiplos threads
dentro de um processo é necessário um modelo que suporte a criação e manipulação
de tarefas cuja execução possa ser intercalada ou executada em paralelo.

No intuito de padronizar a utilização de threads em diversos sistemas o IEEE


estabeleceu o padrão POSIX threads (IEEE_1003.1c), ou Pthreads. Esse padrão
define mais de 60 funções para criar e gerenciar threads. A necessidade de se criar
um padrão para o uso de threads é que historicamente cada desenvolvedor de
hardware implementou suas versões proprietárias de threads, o que dificultava a
portabilidade de programas com threads.

Em C é possível utilizar a biblioteca pthread.h que fornece funções que seguem


o padrão POSIX. Esses recursos são utilizados nas principais funções para criação e
gerenciamento de threads.

O POSIX Threads ou Pthreads fornece API disponível em muitos sistemas


POSIX semelhantes ao Unix, como FreeBSD, NetBSD, GNU / Linux, Mac OS X e
Solaris. Porem também é possível uma implementação da pthread.h para Windows
chamada pthreads-win32, mas não possui todas as funções originais.

3
Para usar a biblioteca é necessário importar a biblioteca pthread.h que pode
ser feito utilizando: #include <pthread.h>.

As subrotinas que compõem a API Pthreads podem ser dividias em quatro


grupos principais:

1. Gerenciamento de thread: Grupo responsável por criar, remover, definir


atributos e entre outros;
2. Mutexes: Rotinas que lidam com exclusão mutua, as funções mutex
permitem criar, destruir, bloquear e desbloquear mutexes. Eles são
complementados por funções de atributo mutex que definem ou
modificam atributos associados a mutexes.
3. Variáveis de condição: Rotinas que endereçam comunicações entre
threads que compartilham um mutex. Baseado em condições
especificadas pelo programador. Este grupo inclui funções para criar,
destruir, aguardar e sinalizar com base nos valores das variáveis
especificadas.
4. Sincronização: Rotinas de gerenciamento de bloqueios e barreiras de
leitura e escrita.

A convenção define que todos os identificadores na


biblioteca “pthread.h” começam com “pthread_” .
Ao compilar um código em C é necessário adicionar o parâmetro -lpthread no
comando: gcc codigo.c -o codigo –lpthread.

Contudo é importante salientar que a utilização e thread, seja em qualquer


linguagem, possui questões voltadas ao compartilhamento de recursos e
sincronização de operações. Essas características devem ser tratadas corretamente
para evitar erro de execução de um programa.

4
Bibliografia:

C++ Multithreading. Disponível em:


<https://www.tutorialspoint.com/cplusplus/cpp_multithreading.htm>. Acesso em: 23
out. 2019.

C (pthreads). 2019. Disponível em:


<http://cocic.cm.utfpr.edu.br/progconcorrente/doku.php?id=c_pthreads>. Acesso em:
23 out. 2019.

GARCIA, Fernando Deluno. Threads POSIX. 2017. Disponível em:


<https://www.embarcados.com.br/threads-posix/>. Acesso em: 23 out. 2019.

ROCHA, Ricardo. Programação Paralela e Distribuida: Programação em Memória


Partilhada por Pthreads. 2010. Disponível em:
<https://www.dcc.fc.up.pt/~ricroc/aulas/0910/ppd/apontamentos/pthreads-pb.pdf>.
Acesso em: 23 out. 2019.

Você também pode gostar