Estes brasileiros querem salvar nossos computadores do caos quântico

Nos últimos meses, muitos cientistas reforçaram que a computação quântica baterà à nossa porta. Com ela, você deve saber, muita coisa será redefinida — inclusive a internet. Dentre as várias mudanças, a mais preocupante é a que se refere à criptografia. Do dia para noite, dizem, nossas comunicações seguras podem ficar escancaradas a quem tiver em mãos um computador quântico.

Com isso em vista, a agência de padronização dos Estados Unidos, o NIST (National Institute of Standards and Technology) — equivalente à brasileira ABNT —, abriu chamada pública para envio de novos padrões de criptografia. É a chamada busca pela criptografia pós-quântica. Um dos motivos para o evento foi o aumento da preocupação gerado pelo anúncio de que a NSA (Agência Segurança Nacional dos EUA) estaria trabalhando na criptografia resistente a ataques quânticos e que todos deveriam fazer o mesmo.

Segundo o documento divulgado pelo NIST, os algoritmos de chave privada mais comuns — em que a mesma senha é utilizada para cifrar e decifrar a mensagem — terão sua eficiência reduzida pela metade. Já os padrões de criptografia de chave pública — aquele em que a mensagem é cifrada utilizando uma chave pública e decifrada utilizando uma chave privada — não oferecerão mais segurança nenhuma.

Para o doutor em Ciências da Computação, Diego Aranha, a chamada feita pelo NIST é extremamente relevante, já que os padrões aprovados pela agência acabam sendo adotados em todo o mundo. “Isso é algo que acontece pelo menos desde a década de 1990, quando o padrão de Curvas Elípticas foi amplamente difundido”, disse ao Motherboard Brasil.

Aranha é um dos brasileiros que contribuirá com processo de seleção dos novos padrões de criptografia pós-quântica. Ele e outros professores de sua equipe, do Laboratório de Segurança da Informação e Criptografia da Unicamp — o Lasca —, vão trabalhar no teste da eficiência e dados de desempenho dos novos algoritmos. “Vamos analisar, por exemplo, quantos segundos e energia vou precisar para fazer uma operação”, afirma. “Entender se é possível proteger essa implementação de alguém que consegue monitorar o consumo de energia para ver se ele varia com o tempo e se isso revela alguma informação secreta.”

Paulo Barreto, pesquisador da Universidade de Washington Tacoma, nos EUA, também enviou algoritmos criptográficos para chamada do NIST. Ele afirma que desenvolvimento dos novos padrões foi bastante impulsionado pela declaração da NSA, mas não é de hoje que existe o ímpeto no campo de pesquisa. “Há pelo menos 10 anos atrás é conhecido o algoritmo de Schor para quebrar algoritmos clássicos.”

Apesar do que o nome sugere, afirma Barreto, a criptografia quântica não utiliza poder computacional quântico. “Não têm nada de quântica, na verdade. É só o nome que pegou mesmo”, diz. “É uma criptografia totalmente convencional, em princípio dá pra rodar no notebook, nos celulares, qualquer aparelho totalmente clássico.”

O fator nada quântico não a torna menos importante ou sofisticada. Segundo Barreto, os algoritmos convencionais têm natureza algébrica — como o cálculo de elipses e a fatoração de números primos — enquanto as novas propostas de padrão se baseiam em outros problemas matemáticos. “Existem algumas propostas que se baseiam nesses modelos antigos, mas estas já foram quebradas logo de cara, então acho que não é bem por aí que a gente precisa procurar novas soluções criptográficas”, comentou.

Ele está à frente do desenvolvimento de uma das propostas de algoritmos de chave pública, o Code-based Algorithm for Key Encapsulation(CAKE). Diferentemente do atual padrão, o problema computacional aqui é baseado em análise combinatória, ou seja quais são as formas possíveis de organizar uma informação. “Computadores quânticos são bons para fazer álgebra, mas não são bons para fazer análise combinatória. Estes problemas continuam difíceis mesmo para eles.”

Esta proposta de algoritmo pertence aos chamados algoritmos code-based (baseados em código, tradução livre). “São corretores de erro”, diz Barreto. “Uma informação corrompida têm alguns bits no meio do caminho que estão errados, então o problema é: corrija esses erros.”

Segundo a explicação de Barreto, este é um problema considerado intratável desde 1962, embora existam vários artigos de pesquisa envolvidos sobre o assunto de códigos corretores de erro. “Pouco progrediu nesses 55 anos”, afirma.

Chave simétrica, chave pública

Enquanto a situação é mais complicada com os algoritmos de chave pública, os de chave simétrica estão um pouco mais seguros. É que eles normalmente se baseiam em propriedades estatísticas. “Então existe um problema computacional associado à dificuldade de você quebrar esses algoritmos que um computador quântico não consegue tratar eficientemente”, esclarece Barreto.

O problema a qual eles se refere é conhecido como o Problema da Satisfatibilidade de Circuitos Booleanos, ou CSAT. “Ele foi o primeiro problema que há 50 anos gerou a questão de ‘P vs nP’, ele é um problema chamado ‘nP completo'”, observou o Barreto. O problema de ‘P vs nP’ é considerado um dos maiores questões não resolvidas na Ciências da Computação.

De forma resumida, problemas de complexidade P podem ser resolvidos por um computador em um tempo razoável, enquanto problemas do tipo nP demoram um tempo absurdo para ser resolvidos, tornando a solução praticamente inviável. Apesar de uma urgência menor, ainda é um problema. “Trabalhos mais recentes que foram publicados depois da chamada do NIST e que mostram que alguns algoritmos simétricos são suscetíveis a computadores quânticos”, diz Barreto

Problemas de prazo

Se a confiabilidade do concurso e a existência de possíveis soluções deixaram de ser quetões, o fator tempo é o que mais preocupa no momento. Em uma palestra realizada em 2016 o físico Michele Mosca, da Universidade de Waterloo, nos EUA, apresentou um dos principais problemas relacionados à adoção da criptografia pós-quântica. Em seu “teorema”, descreve que, se o tempo de desenvolvimento somado ao tempo de implementação dos novos padrões forem maiores do que o tempo do surgimento de computadores quânticos potentes, isso significará um tempo totalmente desprotegido.

“Se a gente demorou quinze anos nessa mudança de padrão, então não é provável que consigamos mudar a criptografia do mundo em três anos pra resistir a computação quântica”

Apesar do alerta, ainda há muita especulação na jogada. “É um momento favorável para você conseguir financiamento para pesquisas nessa área, então há quem diga que este prazo é de 10 anos. Já os mais conservadores apostam em 20 ou 30 anos”, observou Diego Aranha.

cronograma divulgado pelo NIST prevê que serão aceitas submissões de algoritmos até o próximo mês de novembro deste ano. A partir desta data, começarão as fases de testes que devem durar entre 3 e 5 anos e, então, haverá a definição dos padrões para implementação, que deve tomar mais dois anos. Após esse intervalo de 5 a 7 anos, começará a adoção dos novos padrões de criptografia por parte de empresas e desenvolvedores. E isso não costuma ser rápido.

Segundo observou Aranha, foram cerca de quinze anos desde a padronização do algoritmo de curvas elípticas até a sua adoção completa no lugar do padrão de algoritmo de chave pública anterior, o RSA. Naquela época, porém, não havia ganho de segurança nessa migração. A justificativa se dava na eficiência do novo padrão. Logo, não era emergencial. “Se a gente demorou quinze anos nessa mudança de padrão, então não é provável que consigamos mudar a criptografia do mundo em três anos pra resistir a computação quântica”, afirma Aranha

Já para Paulo Barreto, o tempo do desenvolvimento não chega a estar folgado. É, diz, adequado. Apesar disso, não é fácil ficar tranquilo. Como aponta Aranha: “Esses novos computadores não precisam nem estar disponíveis no mercado, basta estar no subsolo de uma agência de inteligência que a gente já tem um problemão.”

Fonte: https://www.vice.com/pt_br/article/bjveev/estes-brasileiros-querem-salvar-nossos-computadores-do-caos-quantico

Anúncios

Introdução sobre HTML5 Web Workers e multi threads com javascript

Trabalhar de forma assíncrona e paralela nos demanda cada dia mais na construção de aplicativos web com maior facilidade e performance. A especificação de Web Workers (link em inglês) define uma API para geração de scripts de segundo plano no seu aplicativo da web. O Web Workers permite executar tarefas como disparar scripts de longa…

via Introdução sobre HTML5 Web Workers e multi threads com javascript — Código Simples .NET

A herança de exclusão na história do Brasil

Leonardo Boff

O processo de colonização de ontem e de recolonização atual, imposta pelos países centrais, está tendo o seguinte efeito: a produção, a consolidação e o aprofundamento de nossa dependência e a fragilidade de nossa democracia, sempre ameaçada por algum golpe das elites endinheiradas, quando se dão conta da ascensão das classes populares vistas como ameaça aos altos níveis de sua alta acumulação. Assim foi com o golpe de 2017 atrás do qual estavam e estão os donos do dinheiro.

Há que reconhecer que continuamos periferia de países centrais que desde o século XVI nos mantém a eles atrelados. O Brasil não se sustenta, autonomamente, de pé. Ele jaz, injustamente, “deitado eternamente em berço esplêndido”. A maioria da população é composta de sobreviventes de uma grande tribulação histórica de submetimento e de marginalização.

A Casa grande e a Senzala constituem os gonzos teóricos articuladores de todo o edifício social. A maioria…

Ver o post original 596 mais palavras

Jetson TX2 – Plaquinha da Nvidia voltada para inteligência artificial

Não é um drone, um robô pequeno ou uma câmera com reconhecimento facial. Mas pode ser: a Nvidia está lançando o Jetson TX2, um computadorzinho que lembra o Raspberry Pi, mas que oferece o grande diferencial de ser focado em inteligência artificial. O dispositivo pode ser empregado em diversos tipos de projetos que precisam de alguma sofisticação, portanto.

Para tanto, o Nvidia Jetson TX2 sai de fábrica uma combinação bastante respeitável de recursos que, por sinal, representa uma grande evolução em relação ao Jetson TX1 (anunciado no final de 2015): processador de 64 bits com dois núcleos Cortex-A57 e outros dois Nvidia Denver 2, GPU de 1,3 GHz com arquitetura Pascal de 256 núcleos, 8 GB de RAM e 32 GB para armazenamento interno.

No aspecto da conectividade, o dispositivo vem com Wi-Fi 802.11ac e Bluetooth 4.1, além de suportar portas USB 2.0, USB 3.0, HDMI 2.0, Gigabit Ethernet, entre outros padrões.

Segundo a Nvidia, o Jetson TX2 tem praticamente o dobro da potência do Jetson TX1. E isso tudo vem acompanhado de mais eficiência no consumo de energia: são 7,5 W contra 10 W da geração anterior.

Com tamanho poder de fogo, essa plaquinha de 50 x 87 mm pode ser empregada em projetos de automação industrial, câmeras inteligentes, drones para filmagens profissionais, sistemas de monitoramento auxiliados por sensores e por aí vai. A Nvidia destaca que o Jetson TX2 consegue, por exemplo, decodificar imagens de duas câmeras trabalhando com 4K e 60 frames por segundo.

Na apresentação do produto, a Nvidia ressaltou que o Jetson TX2 pode atingir a taxa de 1,5 teraflop. De modo geral, a ideia é permitir que o equipamento baseado na placa execute tarefas de inteligência artificial, redes neurais, reconhecimento de voz e afins in loco, ou seja, sem depender exclusivamente de servidores externos ou serviços nas nuvens.

Não é por acaso que a Nvidia também anunciou o JetPack 3.0, um SDK para desenvolvimento de aplicações de inteligência artificial que traz suporte aos drivers gráficos mais recentes e a APIs para redes neurais, como TensorRT 1.0 e cuDNN 5.1.

É lógico que tudo isso faz o Jetson TX2 ser bem mais caro que outras plaquinhas que encontramos por aí: o kit do dispositivo entrou em pré-venda nos Estados Unidos pelo preço de US$ 599. As entregas começam neste mês.

AZURE – Coloque suas Plataformas e Serviços no cloud

A quem se destina este livro?

Este livro é destinado principalmente aos desenvolvedores familiarizados com a plataforma .NET e aos que querem aprender autilizar a plataforma de computação em nuvem Microsoft Azure.Não se preocupe caso você ainda não tenha muita experiência, isso se adquire com prática e, com algum tempo de estudo, você já conseguirá publicar seus aplicativos web no Azure e usufruir dos serviços integrados que ele oferece.Os códigos foram escritos em C# utilizando a versão 2.5 doSDK. Programadores Java, PHP, Node.js, Python e Ruby poderão usufruir destes exemplos, dado que todas essas linguagens possuem SDK para Azure, disponível gratuitamente para download em

Azure-Coloque-Suas-Plataformas-E-Servicos-No-Cloud
LINK PARA DOWNLOAD: Clique Aqui
Senha: AZURE

JQUERY – Desenvolva Interfaces para Múltiplos Dispositivos

Esta obra tem como objetivo abordar o uso da biblioteca jQuery Mobile, que é amplamente utilizada para o desenvolvimento de websites que são visualizados em um dispositivo móvel, geralmente um celular ou tablet. Apesar de termos ferramentas para o
desenvolvimento nativo, como Android e iOs, existem sites e sistemas que devem ser visualizados no browser, e este livro aborda esse processo como criar sistemas para serem exibidos no navegador.
Como biblioteca escolhemos o jQuery Mobile que possui recursos suficientes para a criação de sistemas, além de ser mantido pela mesma equipe que contribuiu com um dos maiores avanços na web nos dias de hoje, que é o jQuery.
O livro possui como principal público-alvo os desenvolvedores que desejam criar websites e aplicações para dispositivos mobile, utilizando as linguagens HTML e JavaScript para o desenvolvimento.
Como pré-requisitos, o leitor deve conhecer um pouco de HTML, CSS e JavaScript. Alguns programas também serão utilizados ao longo desta obra, como o Node e o npm, então é
necessário que você tenha um pouco de conhecimento no console do Windows/Linux/Mac.

jquery-desenvolva-telas

LINK PARA DOWNLOAD: Clique aqui

Senha: JQUERY

Inteligência Artificial – Stuart Russell, Peter Norvig; tradução Regina Célia Simille.

A inteligência artificial (IA) é um grande campo, e este é um grande livro. Tentamos explorar toda a extensão do assunto, que abrange lógica, probabilidade e matemática do contínuo, além de percepção, raciocínio, aprendizado, ação e, ainda, tudo o que se refere à eletrônica, desde dispositivos microeletrônicos até robôs para exploração planetária. O livro também é grande porque nos aprofundamos na apresentação de resultados. O subtítulo deste livro é “Uma Abordagem Moderna”. O significado pretendido dessa frase um tanto vazia é que tentamos sintetizar o que hoje é conhecido numa estrutura comum, em vez de tentarmos explicar cada subcampo da IA em seu próprio contexto histórico. Pedimos desculpas àqueles que trabalham em subcampos, que, como resultado, receberam menos reconhecimento do que deveriam.

inteligencia-artificial-3-edicao

Novidades desta edição

Esta edição capturou as mudanças em IA que tiveram lugar desde a última edição em 2003. Houve aplicações importantes de tecnologia de IA, tais como a implantação generalizada da prática de reconhecimento de fala, tradução automática, veículos autônomos e robótica de uso doméstico. Houve marcos em algoritmos, como a solução do jogo de damas, e um significativo progresso teórico, particularmente em áreas como a do raciocínio probabilístico, aprendizado de máquina e visão computacional. Mais importante, do nosso ponto de vista, é a evolução contínua na maneira como pensamos sobre essa área e, dessa forma, como organizamos este livro. As principais mudanças foram as seguintes: • Colocamos mais ênfase em ambientes parcialmente observáveis e não determinísticos, especialmente nas configurações não probabilísticas de pesquisa e planejamento. Os conceitos de estado de crença (um conjunto de mundos possíveis) e estimação de estado (manutenção do estado de crença) foram introduzidos nesta versão; mais adiante, adicionamos probabilidades. • Além de discutir os tipos de ambientes e tipos de agentes, agora cobrimos com mais profundidade os tipos de representações que um agente pode utilizar. Distinguimos entre representações atômicas (em que cada estado do mundo é tratado como uma caixa-preta), representações fatoradas (em que um estado é um conjunto de atributos/pares de valor) e representações estruturadas (em que o mundo consiste em objetos e relações entre eles). • Nossa cobertura do planejamento aprofundou-se sobre o planejamento contingente em ambientes parcialmente observáveis, incluindo uma nova abordagem para o planejamento hierárquico. • Adicionamos um novo material de modelos probabilísticos de primeira ordem, incluindo modelos de universo aberto para casos de incerteza quanto à existência de objetos. • Reescrevemos totalmente o capítulo introdutório de aprendizado de máquina, salientando uma variedade ampla de aprendizagem mais moderna de algoritmos, colocando-os em um patamar teórico mais consistente. • Expandimos a cobertura de pesquisa na Web e de extração de informações e de técnicas de aprendizado a partir de conjuntos de dados muito grandes. • 20% das citações desta edição são de trabalhos publicados depois de 2003. • Estimamos que 20% do material é novo. Os 80% restantes refletem trabalhos mais antigos, mas foram amplamente reescritos para apresentar uma imagem mais unificada da área.

LINK PARA O LIVRO: CLIQUE AQUI.

Senha: TURING

O Malware DNSChanger está de volta

O Malware DNSChanger retorna com variante, veja:

Marcus Fábio Fontenelle

O malware que massivamente atacou a Internet em 2012 está de volta. A informação é da empresa Proofpoint, que após investigações encontrou uma variante do malware DNSChanger associada a um exploit chamado Stegano, que faz uso de imagens em banners de publicidade para obter acesso remoto ao computador, permitindo que a variante do DNSChanger identifique roteadores que possuam vulnerabilidades que possam ser exploradas.

Segundo a Proofpoint há mais de 160 modelos de roteadores listados nessa nova variante do DNSChanger. Alguns modelos são listados a seguir:

  • D-Link DSL-2740R
  • NetGear WNDR3400v3 (e provavelmente outros modelos desta série)
  • Netgear R6200
  • COMTREND ADSL Router CT-5367 C01_R12
  • Pirelli ADSL2 / 2 + Wireless Router P.DGA4001N

A Proofpoint informa em seu site que o ataque não está mais ativo, mas que provavelmente essa metodologia será utilizada para explorar falhas semelhantes. Maiores detalhe sobre o comportamento do DNSChanger poderão ser encontradas no artigo publicado pela Proofpoint.

As medidas básicas preventivas para…

Ver o post original 29 mais palavras

Os melhores lançamentos da Disney podem ser suas ferramentas de código aberto

Quem já conferiu o repositório da empresa no GitHub sabe bem. Lá estão disponíveis diversas ferramentas e bibliotecas open source

É comum associarmos a Disney ao Mickey Mouse, às animações e aos parques de diversões. Mas você seria capaz de associar a empresa como grande produtora de software de fonte aberta, encorajando contribuições de seus desenvolvedores e lançando software próprio?

Pois bem, a empresa, que tanto já nos ensinou sobre Customer Experience, há anos vem construindo um caminho relevante em relação ao mundo open source. Basta lembrar de vários projetos que envolvam imagens, como o formato de arquivo OpenEXR, desenvolvido pela subsidiária Industrial Light and Magic. Mas há também bons resultados menos centrados no campo da imagem, incluindo o Munki, um conjunto de ferramentas para ajudar os administradores do MacOS X a gerenciar instalações e remoções de software.

O repositório no GitHub destaca o Programa de Código Aberto da Disney, através do qual a empresa encoraja os desenvolvedores a explorar vários projetos open source (14, no total), incluindo o Universal Scene Description (USD), que a Disney considera como o núcleo do pipeline de gráficos 3D da Pixar. A empresa usa USD em cada aplicação para criação e renderização em 3D, incluindo a Pixar Presto. Segundo a própria Disney, o USD é seu primeiro software disponível publicamente, através de uma única API. A intenção é que a Pixar evolua o USD para servir como uma linguagem comum para a definição e edição de dados 3D.

No GitHub estão disponíveis ferramentas, bibliotecas e softwares usados pelos animadores e programadores da Disney em diferentes animações e filmes da Pixar Animation Studios, Marvel Studios, LucasFilm, Walt Disney Animation Studios, Disney Interactive Studios e Walt Disney Animation Television.

Outro projeto de destaque é o Partio, uma biblioteca C ++ para trabalhar com formatos de partículas 3D, incluindo GEO, BGEO e PTC. Está disponível através de uma API Python e ferramentas de linha de comando. O Partio destina-se a fornecer uma interface unificada semelhante a bibliotecas de imagens para facilitar o tratamento de arquivos de partícula, uma parte importante do trabalho de efeitos especiais, porque eles permitem informações de forma livre no espaço 3D. Infelizmente, não há um formato padrão para partículas semelhantes ao Wavefront .obj. “A maioria dos sistemas de animação tem seus próprios formatos de partículas, proprietários “, diz a documentação para o projeto.

Há ainda o projeto Dragonchain, orientado a simplificar a integração de aplicativos em um Blockchain. Desenvolvido pela Disney em Seattle este ano, a Dragonchain tem como objetivo proteger negócios que envolvam uma forma independente da moeda, interoperável. Especula-se que venha a ser usada para possibilitar programas de pontos/recompensas baseados em criptomoedas como o Bitcoin. Não há uma aplicação clara e definitiva para as possibilidades de DRAGONchain ainda. A Disney lançou o protocolo blockchain com uma licença de código aberto em Apache 2 modificado.

A linguagem Ruby também recebe um aceno da Disney, com ruby-jss, anteriormente conhecido como jss-api-gem. Este projeto, também da Pixar, oferece um módulo JAMF Server Software (JSS) para trabalhar com Casper Suite do JAMF Software para gerenciar Macs. O conjunto será renomeado como JAMF Pro. “O módulo abstrai os objetos da API como classes Ruby, que interagem para permitir uma automação mais simples das tarefas relacionadas à Casper”, de acordo com a documentação do projeto.

Também em relação à animação, o projeto OpenSubdiv oferece uma API para integração em ferramentas de desenvolvimento de conteúdo digital de terceiros. A tecnologia GPU em OpenSubdiv foi desenvolvido pela Pixar e Microsoft.

Além disso, faz já algum tempo que a Disney abriu o código da SeExpr, uma linguagem de expressão simples usada para controle artístico e personalização de software. “Nós o usamos para síntese de geometria procedural, síntese de imagem, controle de simulação, e muito mais”, afirma a documentação. Desenvolvedores têm usado a linguagem para prototipagem rápida, por exemplo.

Fonte: http://cio.com.br/tecnologia/2016/11/27/os-melhores-lancamentos-da-disney-podem-ser-suas-ferramentas-de-codigo-aberto/

Algas Biodiesel: óleo de algas

algae-based-biofuel-green-1

Uma das formas mais recentes e mais inovadoras de combustíveis alternativos no desenvolvimento hoje é de biocombustíveis de algas base. As algas são um dos organismos mais rápido crescimento e mais adaptáveis do planeta e os pesquisadores estão desenvolvendo maneiras de usar algas para capturar CO2 da atmosfera e aos combustíveis de saída que possam atender nossas necessidades de energia. Os proponentes esperam que a produção em larga escala de combustíveis de algas com base pode diminuir drasticamente a nossa dependência do petróleo bruto, assim como de captura de quantidades imensas de CO2 no processo. Obviamente, isso CO2 será lançado novamente uma vez que o combustível é queimado, mas o sistema representa um ciclo que é muito mais sustentável do que a praticada atualmente.

algae-based-biofuel-green-1

O processo de produção de algas é realmente muito simples. As algas são cultivadas em sistemas ou-lagoa aberta ou fechada-lagoa. Uma vez que as algas foram colhidas, os lipídios (óleos) são extraídos a partir das paredes das células das algas. Existem diferentes maneiras de extrair óleo das algas. A imprensa de óleo é o método mais simples, o mais popular porque ele extrai até 75% do óleo das algas sendo pressionado.

Outro processo é chamado de método de solvente hexano. Neste método, o solvente é combinado com hexano combinada com as algas pressionado, o qual, em seguida, extrai-se a 95% de óleo de algas. Em primeiro lugar, a imprensa aperta o óleo. Em seguida, as algas restante é misturado com hexano, filtrado, e limpo de modo a assegurar que nenhum produto químico é deixado no óleo.

Um terceiro processo é conhecido como o método de fluidos supercríticos. Este método extrai-se a 100% do óleo a partir de algas. O dióxido de carbono se comporta como o fluido supercrítico, quando uma substância é pressurizado e aqueceu-se a mudar a sua composição em um líquido, bem como um gás. O dióxido de carbono é então misturado com as algas. Uma vez combinados, o dióxido de carbono se transforma em óleo a algas. O equipamento adicional e trabalho necessário neste método faz com que seja uma opção menos popular.

Uma vez que o óleo foi extraído das células de algas, é refinado usando cadeias de ácidos gordos de um processo chamado de transesterificação. Neste processo, um catalisador tal como o hidróxido de sódio é misturada com um álcool tal como metanol. Isso cria um combustível biodiesel combinado com glicerol. A mistura é então refinada para remover o glicerol, deixando o produto final: o biodiesel algas.

Algas pesquisadores de biodiesel estão usando um processo estudado em química orgânica chamada transestrerification para descobrir formas eficientes de produzir combustível biodiesel de algas. Na transesterificação, um álcool e um composto de éster são misturados, e através da reacção resultante, um tipo diferente de álcool e um éster diferente é criado. Um éster de sa tipo especial de compostos químicos em que um ácido teve um dos seus grupos hidroxilo substituídos por uma molécula de oxigénio. Neste processo, o óleo que vem a partir da alga é alterada em biodiesel por meio de uma reacção química específica.

Cultivo de algas para biodiesel Uso

A maneira mais natural de cultivo de algas para a produção de biodiesel é através do crescimento-lagoa aberta. Usando lagoas, as algas podem crescer em áreas quentes e ensolarados do mundo, a fim de produzir uma quantidade máxima de algas. Open-lagoas fornecer o método menos invasivo do crescimento de algas, no entanto, ele tem inúmeras desvantagens. Mau tempo e contaminação a partir de estirpes de bactérias ou outros organismos podem prejudicar o crescimento de algas. Além disso, a água, as algas crescem na necessidades para ser mantido a uma determinada temperatura, o que pode ser difícil de manter.

/ Produção de ciclo fechado crescimento vertical tem sido desenvolvido para a produção de algas mais rápido e mais eficiente do que os tanques abertos de crescimento. Com crescimento vertical, as algas são colocados em sacos de plástico transparentes, de modo que eles são expostos à luz solar em dois lados. Os sacos são empilhados e protegido contra a chuva por tampas. Com a exposição extra sol, a taxa de produtividade das algas é aumentada, aumentando a produção de óleo bem. Além disso, as algas são protegidos da contaminação.

plantas biorreatores Closed-tanque são utilizados para aumentar as taxas de produção de petróleo ainda mais. Estas plantas crescem algas em ambientes fechados dentro de grandes tambores, redondas que pode crescer algas em condições ideais. As algas são manipulados para crescer a níveis máximos e pode ser colhida a cada dia. Isso produz uma saída elevada de algas, que produz grandes quantidades de óleo para biodiesel. plantas biorreatores fechados podem ser estrategicamente colocadas perto das plantas de energia para capturar o excesso de dióxido de carbono que poderiam poluir o ar.

Os investigadores estão a experimentar um processo chamado de fermentação onde as algas são cultivadas em recipientes fechados e açúcar alimentados, a fim de promover o crescimento. Neste método, todos os erros são eliminados, porque os produtores têm a capacidade de controlar todos os factores ambientais. Algas biodiesel pode ser produzido em qualquer lugar do mundo através de fermentação. No entanto, os pesquisadores estão tentando encontrar uma maneira de obter açúcar suficiente sem criar problemas.

Os prós e contras de biodiesel de algas

Tudo soa tão ideal: um material plantlike crescido, espremido, quimicamente alterado, e misturado em um biodiesel limpo, eficiente. No entanto, os críticos do biodiesel de algas têm encontrado muitas contras.

Em primeiro lugar,-lagoa aberta crescimento é um processo muito arriscado. Não só a temperatura da água tem que ser mais exato, o dióxido de carbono tem de ser bombeado para os tanques, a criação de um elevado risco de contaminação.Labs biodiesel são actualmente resolver este problema através da utilização do sistema de bioreactor fechado, a fim de contrariar esses problemas.

Nenhum teste real foi feito em biodiesel de algas e da sua eficácia com os carros reais. As empresas estão fazendo negócios com grandes companhias de petróleo para testar e produzir as algas, no entanto, é tudo ainda em fase de testes.Há apenas um carro de biodiesel de algas nas ruas: a Mercedes Benz E320. A empresa usou algas biodiesel para abastecer o carro e conduzi-lo nas ruas de Park City, Utah. Não há estatísticas foram liberados em consumo de combustível do carro ou que tipo de emissões que produziu.

Sob condições óptimas, as algas podem ser cultivadas em grandes quantidades, quase ilimitada,.Metade da composição de algas, em peso, é o óleo de lípido. As algas podem ser convertidos em petróleo, refinados em biodiesel e ter seu material restante vendido como ração animal de alta proteína. As algas são uma cultura não-alimentar que remove grandes quantidades de dióxido de carbono do ar, e que também cresce extremamente rápido. As algas crescem na água, portanto, ele não usa terras valiosas para o crescimento. As algas são uma cultura densa de alta energia que necessita de uma grande fonte de dióxido de carbono para crescer. Assim, as algas podem ser configurados perto concessionárias de energia elétrica que procuram reduzir suas emissões de carbono. Algas fósforo captura e nitrogênio de instalações de tratamento de águas residuais. Se os desenvolvedores podem obter todas as dobras funcionou, algas tem o potencial de mudar a maneira de produzir petróleo e lidar com as emissões de CO2 com um único organismo alta energia.

Máquina criada por suecos purifica 600 litros de água por hora

A falta de água é um dos maiores problemas enfrentados pelo mundo nas últimas décadas. A escassez do recurso mais importante do Planeta Azul é responsável, inclusive, pela sede de mais de 1 bilhão de pessoas e a morte de milhares todos os anos. Isso sem falar em desastres naturais, como o de Mariana (Minas Gerais), ocorrido em novembro de 2015, que desperdiçam milhões de litros de água de uma só vez.

Com o objetivo de criar uma solução para o problema que assola um número cada vez maior de pessoas, um casal de empreendedores suecos decidiu criar um kit de purificação que promete revolucionar a relação da sociedade com o consumo de água.

Trata-se de um sistema movido à base de energia solar e luz ultravioleta, capaz de filtrar e depurar até 600 litros de água por hora – equivalente a uma média de consumo de 80 pessoas por dia. Durante o processo, o equipamento elimina bactérias patogênicas, vírus, amebas e parasitas, inclusive bactérias resistentes ao nosso cloro, tudo isso de maneira sustentável.

A principal ideia do Green Water, nome dado à invenção, é tornar prático e acessível o tratamento e consumo de água para os mais diferentes cenários. Desta forma, a máquina é extremamente funcional para regiões onde o saneamento básico é precário – continente africano, por exemplo. Além disso, o equipamento é portátil, o que facilita ainda mais o seu transporte.

Em abril deste ano, a Ruanda, uma das nações mais pobres do planeta, foi o primeiro país a receber o equipamento para uma série de testes (realizados com sucesso). A próxima etapa da equipe é adaptar o Green Water para o tipo de água e principais características do país. A ideia é de que nos próximos dias, pelo menos 25 unidades sejam instaladas em escolas, hospitais, centros comunitários e outros pontos de acesso aos ruandeses.

Pensando no Brasil, que aos poucos tem se recuperado de uma intensa crise hídrica, o Green Water se apresenta como uma solução ainda mais efetiva para a população. Inclusive, os suecos afirmam que o país está no cronograma de testes da empresa, com o objetivo de analisar o desempenho da máquina em situações reais (comunidades carentes, indústrias etc.).

Para saber mais informações sobre a iniciativa, acesse o link.

Os estudantes querem um outro Brasil e um outro tipo de política — Leonardo Boff

Seria ingênuo pensar que o movimento dos estudantes ocupando escolas e universidades se esgota na crítica de um dos mais vergonhosos projetos já havidos, da reforma do ensino médio ou no protesto contra a PEC 241 da Câmara e agora PEC 55 do Senado, PEC da brutalização contra os mais vulneráveis da nação. O que […]

via Os estudantes querem um outro Brasil e um outro tipo de política — Leonardo Boff

362 Livros de Escritores Sul-americanos

Gracias a la difusión de la Biblioteca Virtual Miguel de Cervantes, la Biblioteca Digital de Uruguay, la Biblioteca de la Universidad de Chile, entre otras instituciones públicas, puedes acceder hoy a una importante variedad de escritos en formato PDF:

Gabriel García Márquez, Mario Benedetti, Jorge Luis Borges, Julio Cortázar, Isabel Allende, Mario Vargas Llosa, César Moro, Ernesto Sábato, Gabriela Mistral, Nataniel Aguirre, Jorge Icaza, Eduardo Galeano, entre otros forman parte de esta invaluable colección.

 

Para acceder al material basta con seguir los enlaces incluidos después de cada título, en donde inmediatamente tendrás acceso al libro virtual para leer desde el navegador o descargar en cualquier dispositivo. ¡Es muy fácil!

Estos 362 libros gratis en PDF de escritores sudamericanos fueron reunidos por el portal oyejuanjo, en donde también puedes encontrar otro tipo de lecturas…¡disfruta!

Escritores de Argentina

70 libros gratis en PDF sobre Jorge Luis Borges (leer aquí)
El túnel – Ernesto Sábato (leer aquí)
La resistencia – Ernesto Sábato (leer aquí)
Antes del Fin – Ernesto Sábato (leer aquí)
Sobre héroes y tumbas – Ernesto Sábato (leer aquí)
30 audiolibros gratuitos de Julio Cortázar (leer aquí)
75 libros en PDF sobre Julio Cortázar (leer aquí)
Compilación de Poemas de Alfonsina Storni (leer aquí)
Manuscritos y material valioso de Alfonsina Storni (leer aquí)
Subjetividad Femenina y experiencia moderna en la escritura de Alfonsina Storni (leer aquí)
El imaginario eròtico femenino en Delmira Agustini y Alfonsina Storni (leer aquí)
La poesía de Alfonsina Storni (leer aquí)
Te puede interesar: Bibliotecas virtuales de universidades argentinas (leer aquí)

Escritores de Brasil

Sombras de libertad : una aproximación a la literatura brasileña / Francisco José López Alfonso (leer aquí)
Capitães da areia – Jorge Amado (leer aquí)
Memórias póstumas de Brás Cubas – Machado de Assis (leer aquí)
O Guaraní – José de Alencar (leer aquí)
História de dois amores – Carlos Drummond de Andrade (leer aquí)
A escrava Isaura – Bernardo Gruimarães (leer aquí)
Memórias de um Sargento de Milícias – Manuel Antônio de Almeida (leer aquí)
A paixão segundo G.H. – Clarice Lispector (leer aquí)
Grande sertão: veredas – Guimarães Rosa (leer aquí)
Triste fim de Policarpo Quaresma – Lima Barreto (leer aquí)
Macunaíma – Mario de Andrade (leer aquí)
Gabriela, Cravo e Canela – Jorge Amado (leer aquí)
Espumas Flutuantes – Castro Alves (leer aquí)
Dom Casmurro – Machado de Assis (leer aquí)

Escritores de Bolivia

Juan de la Rosa: Memorias del último soldado de la Independencia – Nataniel Aguirre (leer aquí)
Raza de Bronce – Alcides Arguedas (leer aquí)
El ensayo enfermo: Alcides Arguedas y la radiología (leer aquí)
La poesía de Óscar Cerruto (leer aquí)
El Círculo – Óscar Cerruto (leer aquí)
Óscar Cerruto: teoría del cuento en “Ifigenia, el zorzal y la muerte” – Gloria Pinto (leer aquí)

 

 

Escritores de Chile

35 libros gratis en PDF sobre Pablo Neruda (leer aquí)
La inocencia de Isabel Allende / por Carlos Franz (leer aquí)
La Isla Bajo El Mar – Isabel Allende (leer aquí)
El Juego de Ripper – Isabel Allende (leer aquí)
Paula – Isabel Allende (leer aquí)
La casa de los espíritus – Isabel Allende (leer aquí)
10 libros gratis en PDF sobre Gabriela Mistral (leer aquí)
Te puede interesar: Bibliotecas virtuales de universidades chilenas (leer aquí)

Escritores de Colombia

17 libros gratis sobre Gabriel García Márquez (leer aquí)
Cantos populares de mi tierra – Candelario Obeso (leer aquí)
Candelario Obeso. Una apuesta pedagógica, estética y social (leer aquí)
Cuentos pintados – Rafael Pombo (leer aquí)
Cuentos morales para niños formales- Rafael Pombo (leer aquí)
18 poemas de Rafael Pombo (leer aquí)
La Vorágine –  José Eustasio Rivera (leer aquí)
María –  Jorge Isaacs (leer aquí)

Escritores de Ecuador

Huasipungo – Jorge Icaza (leer aquí)
El cosmopolita. Tomo primero / por Juan Montalvo (leer aquí)
Capítulos que se le olvidaron a Cervantes – Juan Montalvo (leer aquí)
Cumandá – Juan León Mera (leer aquí)
Novelitas ecuatorianas / Juan León Mera (leer aquí)
Medardo Ángel Silva: Un raro de la lírica modernista ecuatoriana (leer aquí)
El cholo que se vengó – Demetrio Aguilera Malta (leer aquí)
Demetrio Aguilera-Malta: Los que se van: inicios y retornos (leer aquí)
El tigre – Demetrio Aguilera Malta (leer aquí)
El espacio en el ciclo de novelas aregüeñas de Gabriel Casaccia (leer aquí)

Escritores de Paraguay

Breve diccionario de la literatura paraguaya (leer aquí)
Hustoria y mito en Yo, el Supremo de Augusto Roa Bastos (leer aquí)
Innovaciones estructurales en la poética de Elsa Wiezell (leer aquí)

Escritores de Perú

Conversación en La Catedral – Mario Vargas Llosa (leer aquí)
César Vallejo: crítica y contracrítica / José Pascual Buxó (leer aquí)
La Fiesta del Chivo – Mario Vargas Llosa (leer aquí)
La verdad de las mentiras – Mario Vargas Llosa (leer aquí)
Poesía completa de César Vallejo (leer aquí)

El espacio en la obra de Alfredo Bryce Echenique (leer aquí)

La lectura simbólica de la vida exagerada de Bryce Echenique (leer aquí)
La conciencia social andina en la obra de José María Arguedas (leer aquí)
El zorro de arriba y el zorro de abajo – José María Arguedas (leer aquí)
Duelo de caballeros – Ciro Alegría (leer aquí)
La recepción crítica de la novelística de Ciro Alegría: una aproximación (leer aquí)
Los cuentos de Ribeyro – Biblioteca Virtual Miguel de Cervantes (leer aquí)
Doblaje – Los cuentos de Ribeyro (leer aquí)
César Moro: La poética del ritual y la escritura mítica de la modernidad (leer aquí)
César Vallejo y César Moro: Bajo la lluvia parisina (leer aquí)

Escritores de Uruguay

30 audiolibros gratis de Mario Benedetti (leer aquí)
La tregua – Mario Benedetti (leer aquí)
Cuentos de amor, de Locura y de Muerte – Horacio Quiroga (leer aquí)
Cuentos de Horacio Quiroga – Horacio Quiroga (leer aquí)

Cuentos de la selva – Horacio Quiroga (leer aquí)
Ejes conceptuales del pensamiento de Horacio Quiroga / Luis Martul Tobío y Kathleen N. March (leer aquí)
10 libros gratis en PDF de Eduardo Galeano (leer aquí)

Escritores de Venezuela

José Rafael Pocaterra ante la condición humana (leer aquí)
La rebelión – Rómulo Gallegos (leer aquí)
Pobre negro – Rómulo Gallegos (leer aquí)
La hora menguada – Rómulo Gallegos (leer aquí)
Doña Bárbara – Rómulo Gallegos (leer aquí)
La lluvia – Arturo Uslar Pietri (leer aquí)
El memorialismo discursivo en Ifìgenia de Teresa de la Parra (leer aquí)
La Sociedad venezolana en una novela de Arturo Uslar Pietri (leer aquí)
La tienda de los muñecos y otros textos – Julio Garmendia (leer aquí)
Un regalo para Julia – Francisco Massiani (leer aquí)
Lágrimas de Cocodrilo – Eduardo Liendo (leer aquí)

Teiid – JBOSS

A missão do projeto Teiid Tooling é fornecer suporte para o desenvolvimento e gerenciamento de artefatos de tempo de execução Teiid.

  • Usuários-alvo incluem arquitetos de dados, analysists de dados e desenvolvedores que precisam:
    • Definir metadados de tempo de execução para simplificar seus dados federados, complexos e multi-formatados
    • Validar e testar seus metadados através da implantação de artefatos e consultas de dados simples
    • Fornecem utilitários para expor seus dados para aplicativos upstream via API padrão e serviços

teiid-tooling-banner-1180px

http://teiiddesigner.jboss.org/

Falta ao Facebook nova tag do Google que verifica autenticidade de notícias

O Google anunciou na última quinta-feira (13) que irá introduzir uma nova tag que verifica a legitimidade da informação veiculada através do Google News, para que não haja boatos rolando em seus trending topics. Agora é a vez do Facebook fazer sua lição de casa e levar mais a sério a apuração das notícias que aparecem em sua timeline.

Quer queira, quer não, a rede social hoje assume o papel de grande mídia, veiculando um número gigantesco de notícias para uma base de usuários maior ainda. Claro, elas aparecem no meio de fotos pessoais, vídeos, atualização de status e publicidades, mas é o lugar em que quase metade dos adultos acessam suas notícias.

Com esse escopo, é responsabilidade do Facebook veicular conteúdo legítimo e não rumores, boatos ou teorias da conspiração. Desde que seus editores foram demitidos, em um esforço para parecer imparcial – agora são algoritmos que informam o que há de mais quente no site -, há uma enxurrada de histórias falsas atingindo grande parte de seu público, de acordo com relatórios do Washington Post nessa semana.

O Facebook afirmou em setembro que iria lançar uma tecnologia para combater histórias falsas em seus trending topics, mas até agora nada. A rede precisa dar mais atenção a esse assunto. Seus esforços não estão sendo suficientes para combater a falta de legitimidade nas notícias, que o quanto mais estão visíveis, mais possuem chances de serem virais. E se elas se tornarem virais, mais pessoas irão atingir – e sabemos que as pessoas tendem a acreditar sem ir até a página B, conferir.

A questão é que não há diferença entre uma notícia verificada e um post de um blog pessoal: o Facebook apresenta foto, título e um resumo para ambos os casos.

Isso é um problemão. Um problemão que, de novo, merece atenção. Atenção redobrada.

Mesmo ainda que haja um filtro no feed de notícias, nada previne que um amigo comente em uma publicação sua com um post malicioso como se fosse uma verdade absoluta. Não há nenhuma tag ou rótulo que mostre para essa pessoa que o que ela está compartilhando é uma desinformação. Não há nem uma maneira de você desabilitar os comentários de uma publicação.

Claro, é uma tarefa difícil para uma empresa que só quer se concentrar em redes sociais e venda de anúncios, por isso que o Facebook repetidamente proclama que não é uma companhia de mídia.

Mas voltemos ao início desse texto. Quer queira, quer não, a rede social hoje assume o papel de grande mídia, veiculando um número gigantesco de notícias para uma base de usuários maior ainda. E está fazendo um trabalho terrível.

(via TechCrunch)

Fonte: http://conteudo.startse.com.br/mundo/lucas-bicudo/falta-ao-facebook-nova-tag-do-google-que-verifica-autenticidade-de-noticias/

Projeto Controverso de Usina a Carvão na Índia Ameaça o Tigre de Bengala e Patrimônio Mundial da UNESCO

From Segs.com (Brazil):

Um controverso projeto de usina a carvão aumentará os já elevados riscos que ameaçam tanto o tigre de Bengala como a floresta de mangue de Sundarbans – o maior bloco de mangue arbóreo do mundo. Trata-se de uma termelétrica a carvão que deve ser construída perto da cidade de Khulna, ao lado de Sundarbans de mangue – lar do lendário do Tigre de Bengala. Ela não só ameaça este patrimônio da UNESCO e uma das mais icônicas espécie em extinção, como também produzirá eletricidade a um custo 32% maior que o preço médio em Bangladesh, apesar de pesados subsídios dos governos do Bangladesh e Índia.

A controversa usina a carvão está sendo construída pela NTPC, controlada pelo Estado indiano, em conjunto com o Power Development Board Bangladesh (BPDB). Estima-se que o total de subsídios governamentais irá superar os US$ 3 bilhões. Os fundos para a conservação do tigre de Bengala, por outro lado, dificilmente chegam a US$ 45 milhões, apesar de ser considerado o animal nacional de Índia e Bangladesh. Um censo recente feito com câmeras escondidas mostrou que apenas cerca de 100 tigres permanecem em Sundarbans – confirmando a tendência decrescente que mantém a espécie classificada como ameaçada de extinção pelo IUCN desde 2010.

Além do Tigre de Bengala, os Sundarbans – palavra que pode ser traduzida como “bela floresta” na língua Bengali – é o lar de outras 8 espécies ameaçadas de extinção. Com cerca de 10.000 quilômetros quadrados, eles abrigam crocodilos, veados, cobras, 150 espécies de peixes, 42 espécies de mamíferos, 35 répteis, 8 espécies de anfíbios e 270 espécies de plantas. Todos serão profundamente afetados pelo projeto da termelétrica, que ficará localizada na planície do Ganges a sudoeste de Bangladesh e a apenas 14 kms ao norte da floresta de mangue de Sundarbans.

A construção de uma central elétrica a carvão maciço perto das Sundarbans iria causar um desastre nesta área ecologicamente sensível com uma biodiversidade única. O carvão importado para abastecer a fábrica sairia de Akram Point, que está localizado dentro das Sundarbans, onde seria feita a transferência para barcaças cobertas menores para que o carvão seja então levado até o Rio Passur até o site do projeto Rampal, perfazendo um total de 400-500 viagens de barca por ano diretamente através do Sundarbans. Esse processo exigiria a dragagem e alargamento de um trecho de 36 quilômetros do rio Passur para tornar o rio navegável entre Akram Point e a termelétrica.

O projeto contradiz os princípios de desenvolvimento sustentável pelo contínuo financiamento subsidiado pelo governo de usinas elétricas movidas a carvão, especialmente quando alternativas de baixo carbono estão disponíveis e são economicamente competitivas. As termelétricas a carvão estão entre as principais causas das mudanças climaticas, que já estão ameaçando as Sundarbans.

“Acreditamos que Bangladesh seria melhor atendida com o reforço de sua segurança energética por meio da diversificação do sistema, aproveitando a missão solar, muito bem sucedida da Índia. Isso promoveria as exportações indianas e fortaleceria o ambicioso programa ‘Make-in India’ do Governo, ao mesmo tempo em que apoiaria o programa de energia renovável de Bangladesh. Seria muito mais rápido para a Bharat Heavy Electricals Limited instalar uma série de usinas de energia solar em em Bangladesh ao invés de investir em uma tecnologia ultrapassada e poluidora”, analisa Jai Sharda, Managing Partner, Equitorials e autor do relatório “Risky and Over Subsidised A Financial Analysis of the Rampal Power Plant“, lançado pelo Instituto de Economia da Energia e Análise financeira (IEEFA). De acordo com este relatório, o projeto Bangladesh-Índia Maitree pode efetivamente acabar em uma confusão financeira. O projeto expõe investidores, contribuintes e consumidores a um alto risco e um potencial de ativos ociosos. “Nós examinamos o projeto de energia de carvão Rampal segundo parâmetros tais como financiamento, investimento, custo de produção, fornecimento de combustível, bem como risco devido a eventos climáticos extremos. O projeto falha em todas as frentes, além de expor os investidores a um risco significativo “, sintetiza Jai Sharda.

Projeto controverso de usina a carvão na Índia ameaça oTigre de Bengala e patrimônio mundial da UNESCO

 

Link: http://ieefa.org/projeto-controverso-de-usina-carvao-na-india-ameaca-o-tigre-de-bengala-e-patrimonio-mundial-da-unesco/

Processos e Threads

       Processo é geralmente entendido como um programa em execução porém, na realidade, trata-se de uma estrutura mais complexa que contém, além do programa no seu formato executável, todas as informações necessárias (contexto) à execução e ao controle da execução do mesmo, como por exemplo: o contador de programa, pilhas, registradores e área de dados. O programa é uma entidade passiva, que pode ser visto como o conteúdo de um arquivo em disco, enquanto que o processo é uma entidade ativa, possuindo um contador de programa (PC), que especifica a próxima instrução a ser executada, e um conjunto de recursos a ele alocados. Nos sistemas operacionais mais antigos, cada processo possuía um único fluxo de controle, ou seja, as instruções são executadas sequencialmente, uma de cada vez. Já nos sistemas mais modernos, um processo pode, por sua vez, dar início a um ou mais subprocessos, que são executados em paralelo ou de forma concorrente com o processo pai e, para todos os efeitos, apresentam as mesmas características e particularidades de um processo qualquer, no tocante a contexto e fluxo de controle. Threads, por outro lado, representam uma nova concepção na forma de um processo paralelizar a execução de partes do seu código. Os threads, conceitualmente, se assemelham a subprocessos porém, diferentemente destes, não possuem identidade própria e, portanto, não são independentes. Cada thread possui seu próprio contador de programa, sua pilha e seus registradores porém compartilham todos o mesmo espaço de endereçamento, isto é, como se fossem uma única entidade . Nos sistemas tradicionais, cada processo tem seu próprio contexto e apenas um fluxo de controle – são do tipo single thread. Freqüentemente, no entanto, é desejado ter-se múltiplos fluxos de controle que compartilhem do mesmo espaço de endereçamento e sejam executados de forma paralela (no caso de multiprocessamento) ou de forma concorrente (no caso de monoprocessamento), como se fossem processos separados. Threads satisfazem estes requisitos, pois compartilham do mesmo espaço de endereçamento com o processo pai e com os demais threads, e podem ser executados de forma concorrente ou paralela (fig. VIII.1). O esquema de threads, no entanto, só pode ser utilizado quando for especificamente suportado pelo sistema operacional ou quando da existência de um gerenciador de threads. Os threads não são tão independentes como os processos e os subprocessos, uma vez que compartilham de um mesmo espaço de endereçamento e, por conseguinte, compartilham das mesmas variáveis globais, dos mesmos arquivos, das mesmas tabelas, etc. Uma vez que todo thread pode acessar todo o espaço virtual de endereçamento do processo pai e dos demais threads, ele pode “ler e escrever” em qualquer local, mesmo na pilha dos outros threads – o que significa que não há qualquer forma de proteção de acesso entre os threads. Os threads compartilham a UCP da mesma forma que os processos o fazem, isto é, podem criar outros threads e podem ficar suspensos aguardando (em block waiting) pelo término de uma operação qualquer (system call). Comparativamente, o contexto de um thread e de um processo é constituído por:

thread-e-processo

 

processo-y-com-3-subprocessos-e-processo-x-com-3-threads

                                            Figura 2: Processo Y com 3 subprocessos e Processo X com 3 Threads

Cabe ao sistema operacional a incumbência de prestar todo o suporte, os recursos e a proteção que forem necessários à execução eficiente e eficaz dos processos que forem submetidos. Para isto, o SO precisa:

a) Ser capaz de alternar a execução dos vários processos submetidos de forma a maximizar o uso da UCP e ao mesmo tempo garantir um tempo de resposta razoável a cada processo;

b) Distribuir os recursos

VIII.2 – Contexto de um Processo

   O ambiente necessário a execução de um processo é formado pelos contextos de hardware e de software. O contexto de hardware é fundamental para que os processos possam se revezar no controle (utilização) da UCP, podendo ser interrompidos pelo SO e, posteriormente, reinicializados do ponto onde haviam parado sem qualquer solução de continuidade, isto é, como se nada tivesse ocorrido. A operação que possibilita tal revezamento é chamada de troca de contexto (context switch) e consiste basicamente em salvar o conteúdo dos registradores e carregá-los com os valores referentes ao processo que esteja ganhando o controle da UCP. O contexto de software especifica características do processo que influem na execução do mesmo, tais como: o número máximo de arquivos abertos, o tamanho do buffer para operações de E/S, etc. O Sistema Operacional cria para cada processo uma estrutura chamada PCB – Process Control Block, onde ele mantém todas as informações de contexto (hardware e software) do processo. O conteúdo e a estrutura do PCB variam de sistema para sistema, sendo que no exemplo mostrado na figura VIII.2 a seguir, ele consiste do estado do processo, da sua identificação, do registrador PC, dos demais registradores da UCP, de informações de escalonamento, de informações de memória, de informações de contabilização e de informações de entrada e saída.

process-control-block

                                                         Figura VIII.2 – Exemplo de PCB – Process Control Block

      VIII.3 – Estados de um Processo O procedimento de execução de um processo tem início com a criação do mesmo, carga do mesmo em memória, para que de lá possa ser escalado para tomar o controle da UCP e realizar seu processamento e, finalmente, terminado, quando da sua conclusão. Quando em memória, o processo pode estar num dos três estados seguintes: em execução, em espera pela ocorrência de um evento previamente solicitado por ele mesmo ou, no estado de pronto para execução. Estados estes representados na figura VIII.3.

        Um processo para poder ser escalado para execução precisa estar no estado de pronto (ready). Um processo em execução pode perder o controle da UCP de forma voluntária (quando ele próprio realiza uma operação de E/S) ou de forma involuntária (quando por algum critério gerencial o próprio sistema operacional retoma o controle da UCP). Um processo em estado de espera fica nesta situação até que sua pendência seja satisfeita e de lá passa para o estado de pronto.

estados-de-um-processo

      Quando um processo em execução solicita um recurso que não está disponível no momento (como por exemplo a alocação de um arquivo ou de um periférico) ou cuja obtenção seja operacionalizada fora da UCP (como por exemplo leitura de registros em disco – DMA), ele automáticamente perde o controle da UCP e passa do estado de execução para o de espera.

O processo estando no estado de espera passa para o estado de pronto para execução assim que tiver sua solicitação de recurso atendida pelo sistema. No estado de pronto ele está em condições de reiniciar sua execução e fica aguardando apenas chegar sua vez de retomar o controle da UCP.

Nos sistemas preemptivos, isto é, que admitem interromper a execução de um processo toda vez que seu tempo (quantum) permitido para alocação da UCP expirar, pode ocorrer que um processo saia da UCP não para o estado de espera mas direto para o estado de pronto. Vê-se assim que um processo pode mudar de estado face um evento originado por ele próprio (eventos voluntários) ou pelo sistema (eventos involuntários).

Estados de Execução de um Processo

Dentro do estado de execução, para fins de proteção do sistema como um todo, são adotados níveis de prioridade que definem o que o processo está ou não autorizado a fazer. É a forma utilizada para evitar que processos dos usuários venham a danificar áreas do sistema operacional ou mesmo áreas reservadas a outros processos.

Diversas são as estratégias de definição destes níveis de prioridade. A estratégia básica consiste na definição de dois estados, um supervisor e outro usuário. Sistemas mais complexos como o OS/2 por exemplo, adotam 4 níveis: 0 – kernel (supervisor), 1 – sistema de arquivos, comunicação entre processos e acionadores de dispositivos de E/S, 2 – subsistema de E/S e 3 – usuário.

Um processo somente passa de um nível superior para um inferior com autorização do sistema operacional, que assim garante a integridade operacional.

VIII.4 – Sincronização de Processos

O compartilhamento de recursos entre processos pode gerar situações indesejáveis de inconsistência no acesso aos dados e de indisponibilidade no acesso aos recursos, a ponto de comprometer o sistema como um todo. A solução para estes casos é garantir a exclusão mútua, isto é, apenas um processo tem autorização para acessar o recurso de cada vez. O trecho do programa onde é feito o acesso ao recurso compartilhado é denominado região crítica e os mecanismos que implementam a exclusão mútua utilizam um protocolo de acesso à região crítica. Toda vez que um processo for executar sua região crítica, ele é obrigado a passar por um controle de entrada e outro de saída.

VIII.4.1 – Problemas de Sincronização Surgem a partir das tentativas de implementar a exclusão mútua. a) velocidade de execução dos processos A velocidade de execução dos processos pode interferir na operacionalização da exclusão mútua. No caso de um chaveamento simples entre dois processos, digamos A e B, sendo que o processo A consome um tempo de processamento bem mais longo que o processo B, pode levar a situação em que B se veja impossibilitado de entrar em sua região crítica por estar bloqueado pela execução do processo A fora da sua região crítica (fig. VIII.4).

regiao-critica

Figura VIII.4 – Prog B impedido de acessar sua região crítica porque Prog A detém o controle da UCP em longo processamento fora da sua região crítica.

Observe na figura que o programa “B” passa pela sua região crítica e em seguida libera o acesso ao programa “A”. Caso o programa “B” retorne ao ponto de entrada de sua região crítica antes que o programa “A” passe por sua região crítica e libere o acesso ao programa “B”, este ficará bloqueado embora o programa “A” não esteja usando sua região crítica.

b) “Starvation”

    É a situação onde um processo nunca consegue executar sua região crítica e, em conseqüência, nunca consegue acessar o recurso compartilhado. Este problema ocorre quando 2 ou mais processos estão na lista de espera por um recurso compartilhado. No momento em que o recurso é liberado, o sistema precisa determinar qual dos processos em espera deve ganhar acesso ao recurso. Esta escolha pode ser:

· aleatória – um processo pode nunca ser escolhido e sofrer starvation;

· por prioridade – um processo pode novamente permanecer indefinidamente na fila de espera face a constante chegada de processos de maior prioridade;

· fila tipo FIFO – evita starvation porém pode prejudicar o desempenho de programas com maior prioridade de execução.

c) Sincronização Condicional É quando um recurso compartilhado não se encontra pronto para ser utilizado e, nesse caso, o processo precisa ser mantido em estado de espera até o recurso ficar pronto. Este tipo de sincronização aparece em qualquer operação onde existam processos gerando serviços e processos consumindo estes mesmos serviços.

Um exemplo clássico deste tipo de sincronização é o da gravação de um buffer por um processo e leitura por outro. Ambos os processos envolvidos devem ser sincronizados de forma a não tentarem gravar um buffer cheio ou ler um buffer vazio.

VIII.4.2 – Soluções de Hardware

a) desabilitação de interrupções

Como a mudança de contexto só pode ser realizada através do uso de interrupção, se um processo desabilitar suas interrupções internas ao entrar na sua região crítica, ele garantirá a exclusão mútua porque não poderá ser interrompido pelo sistema.

Este mecanismo no entanto, não é dos mais convenientes por vários motivos, sendo que os principais são:

   · O processo não tornar a habilitar suas interrupções ao sair da região crítica, permanecerá com o controle da UCP até que ele a deixe por um evento voluntário.

  · O processo entrar em loop dentro da região crítica e, novamente, ninguém o interromperá. Desabilitar interrupções é uma solução interessante porém face ao potencial de efeitos colaterais que possam surgir, é normalmente adotado apenas pelas rotinas do sistema operacional.

b) Instrução test-and-set

É uma instrução atômica – indivisível e que não pode ser interrompida pela UCP – que testa e seta uma variável global que serve de senha de acesso a uma região crítica.

test-and-set(X,Y)

X <- Y

Y <- TRUE

end

ex. de utilização:

repeat pode_a:= True;

while (pode_a) do test-and-set(pode_a,bloqueio);

:

região crítica

:

bloqueio:= False;

until (pode_a)

VIII.4.3 – Soluções de Software

Três fatores fundamentais para a solução dos problemas de sincronização devem ser considerados:

1. o número de processos concorrentes e o tempo de execução dos mesmos devem ser irrelevante;

2. um processo fora de sua região crítica não deve impedir que outros processos entrem em suas próprias regiões críticas;

3. um processo não pode permanecer indefinidamente esperando para entrar na sua região crítica (starvation);

As soluções inicialmente implementadas para resolver o problema de exclusão mútua sofriam da síndrome do “busy waiting”, ou seja, o processo permanecia em loop checando a liberação do acesso à região crítica e, portanto consumindo cilcos de UCP. As soluções mais atuais adotam primitivas que permitem que um processo seja colocado em estado de espera e reativado apenas quando o recurso estiver disponível. Nesta linha foram introduzidos os semáforos e os monitores.

a) Semáforo Consiste em uma variável inteira, não negativa, que só pode ser manipulada por duas instruções atômicas: down e up. Cada semáforo é associado a um único recurso compartilhado e seu significado é:

          0(zero) – inexistência de recurso disponível;

>0(maior que zero) – disponibilidade de recurso. Um processo para entrar em sua região crítica precisa antes decrementar o conteúdo do semáforo (down), que só é permitido se ele for “>0” e ao sair incrementa-o (up), liberando o recurso para os demais processos.

Up e Down são atômicas e geralmente implementadas como system calls. Quando o processo executa um down em um semáforo vazio, ele automaticamente é colocado em estado de espera (sleeping) e é automaticamente reativado quando algum outro processo liberar (up) aquele recurso.

exemplo, semáforo para o caso do produtor-consumidor

#define N 100                                         /* define o tamanho do buffer */

typedef int semaphore;                  /* semáforos serão um tipo especial de inteiros */

semaphore mutex = 1;            /* controla o acesso a região crítica */

semaphore empty = N;  /* controla a quantidade de buffer disponível */

semaphore full = 0; /* controla a quantidade de buffer em uso */

void produtor(void)

{

 int item;

   while (TRUE) { /* loop infinito */

     produce_item(&item); /* produz alguma coisa para colocar no buffer */

     down(&empty); /* verifica se há buffer disponível */

     down(mutex); /* testa entrada na região crítica */

     enter_item(item); /* coloca dado no buffer */

  up(&mutex); /* libera o recurso */

  up(&full); /* indica colocação de dado no buffer */

    }

}

void consumidor (void)

{ int item;

while (TRUE) {

down(&full); /* verifica existência de dado no buffer */

down(&mutex); /* testa entrada na região crítica */

remove_item(&item); /* pega dado do buffer *

/ up(&mutex); /* libera o recurso */

up(&empty); /* acusa retirada de um dado do buffer */

consume_item(item); /* consome o dado */

}

}

b) Monitor

O uso de semáforos exige muito cuidado do programador pois qualquer engano pode levar a problemas de sincronização imprevisíveis e difíceis de reproduzir, face à execução concorrente dos processos. Monitores são mecanismos de alto nível implementados pelo próprio compilador. Para isto basta especificar todas as regiões críticas em forma de procedimentos do monitor, e o compilador se encarregará de implementar a exclusão mútua.

VIII.4.4 – Deadlock É conseqüência do compartilhamento exclusivo e ocorre sempre que um ou mais processos estiverem esperando por um evento (recurso) que jamais ocorrerá. Caracteriza-se por uma espera circular onde dois ou mais processos aguardam pela liberação de recursos para que possam continuar suas tarefas. Exemplo, o processo “A”, da figura VIII.5, detém o recurso X e espera pelo recurso Y, por outro lado, o processo “B” detém o recurso Y e espera pelo X.

deadlock

Figura VIII.6 – Esquema representativo de um Deadlock

a) condições para ocorrência de deadlock

· cada recurso só pode estar alocado a um único processo em um determinado instante (exclusão mútua);

· um processo, além dos recursos já alocados, pode ficar na espera por outros;

· um recurso não pode ser retirado de um processo porque outros processos o estão desejando (não-preempção);

· um processo pode aguardar por um recurso que esteja alocado a outro processo e viceversa (espera circular).

Dois procedimentos podem ser implementados para tratamento de deadlocks: previnir sua ocorrência ou, detetar sua ocorrência.

a.1) prevenção de deadlocks

     Constitui-se de ações a serem tomadas com o objetivo de previnir a ocorrência de uma ou mais situações que possam levar ao surgimento de um de deadlock. Algumas possibilidades são:

· estabelecer o critério de que todos os recursos sejam previamente alocados, antes do processo ganhar acesso à UCP; · admitir a prática da preempção, isto é, o sistema ter a possibilidade de retirar um recurso alocado para um processo e dar para outro processo;

· forçar que um processo não aloque mais do que um recurso de cada vez. Qualquer que seja a estratégia de prevenção adotada, ela é sempre muito onerosa, uma vez que precisa ser executada a todo instante.

A estratégia mais comum e menos onerosa é detectar a ocorrência de um deadlock e, uma vez detectado, executar rotinas de resolução do problema.

a.2) Detecção de Deadlocks

Geralmente os algoritmos que implementam este mecanismo verificam a existência de uma “espera circular”, percorrendo toda a estrutura de alocação sempre que um processo não pode ser imediatamente atendido. Após o deadlock ser detectado, as ações de correção mais comuns são: · eliminar um ou mais processos envolvidos; · liberar acumulativamente alguns dos recursos já alocados pelos processos envolvidos até que a espera circular se desfaça.

VIII.5 Escalonamento de Processos

Os principais objetivos do escalonamento (scheduling) de processos são:

· manter a UCP ocupada a maior parte do tempo;

· balancear a utilização do processador pelos processos em execução;

· maximizar o throughput (capacidade de atendimento a processos) do sistema; e

· garantir tempos de resposta razoáveis aos usuários interativos. Para atender tais objetivos, muitas vezes conflitantes, os SOs precisam levar em considera- ção:

· as características dos processos em execução (batch, interativo, tempo-real, CPUbounded, IO_bounded);

· a disponibilidade de recursos; · as características da instalação. O escalonamento dos processos é realizado por um módulo do sistema operacional conhecido como dispatcher (scheduler). Existem diversos algoritmos utilizados para tal finalidade e cada um apresenta características próprias favorecendo um ou outro critério para a escolha do próximo processo a receber o controle da UCP. Os critérios geralmente considerados incluem os seguintes parâmetros ou medidas de eficiência:

· utilização da UCP – o desejado é manter a UCP p mais ocupada possível. O grau de utilização da UCP varia de 0 (idle) a 100%. Geralmente a ocupação da UCP gira no entorno dos 40% para sistemas com carga moderada e aproximadamente 90% para os com carga pesada.

· throughput – medida que representa o número de processos concluídos por unidade de tempo (ex. 10 processos/segundo).

· turnaround time – mede o tempo total gasto na execução de um processo, desde o momento em que ele é submetido até o instante em que é concluído.

· waiting time – mede apenas o tempo em que o processo fica aguardando por execução na fila de processos prontos (ready queue).

· response time – mede o tempo decorrido entre a submissão do processo e o instante em que o mesmo gera a primeira resposta ao usuário. Existem basicamente dois tipos de algoritmos para escalonamento de processos: os do tipo preemptivo e os do tipo não-preemptivo.

VIII.5.1 – Algoritmos Não-Preemptivos

Nesse tipo de escalonamento, quando um processo ganha o direito de utilizar a UCP, nenhum outro processo ou mesmo o próprio SO pode lhe tirar esse recurso. Ele manterá o uso da UCP até que, voluntariamente, a deixe.

Dentro do contexto dos algoritmos não-preemptivos, diferentes estratégias podem ser implementadas, tais como: o escalonamento FIFO e o shortest_job_first.

a) Escalonamento FIFO É de implementação e operação bastante simples, necessitando apenas da manutenção de um fila, onde os processos que passam para o estado de pronto entram no final da mesma e são escalados para execução quando atingem o seu topo.

As maiores restrições relativas a esta estratégia são:

· incapacidade de prever o instante inicial de execução de um processo;

· possibilidade de ocorrência de processos CPU_bound de menor importância prejudicarem o processamento de processos IO_bound mais prioritários;

Esta estratégia não é eficiente para sistemas de tempo compartilhado e muito menos para sistemas em tempo real.

b) Escalonamento Shortest_Job_First

Associa a cada processo uma estimativa do seu tempo de execução e favorece aqueles de menor tempo, escalando-os prioritariamente. A restrição maior deste algoritmo está na determinação da estimativa do tempo necessário para execução de um determinado processo. Tarefa fácil para processos (sistemas) já em regime de produção mas extremamente difícil para aqueles ainda em fase de desenvolvimento.

VIII.5.2 – Algoritmos Preemptivos

Um algoritmo de escalonamento é considerado preemptivo quando pode interromper um processo em execução, tirar-lhe o controle da UCP e repassá-la para outro processo que estiver na fila de espera. A estratégia preemptiva permite que o sistema dê atenção imediata a processos mais prioritários, bem como o compartilhamento do processador de forma mais uniforme. É importante lembrar que a troca de um processo na UCP implica, necessariamente, na troca de contexto (context switching), o que representa um overhead introduzido pelos algoritmos preemptivos não existente na estratégia não-preemptiva. Para que isto não se torne um problema crítico, os parâmetros de quantum ou time slice adotados para os processos em execução precisam ser cuidadosamente estabelecidos. Os principais algoritmos deste genero incluem: o round_robin, o por prioridade, o por múltiplas filas e o por múltiplas filas com realimentação. a) Escalonamento Round_Robin É um escalonamento circular, bastante similar ao FIFO, porém com a adoção de um limite de tempo (quantum ou time_slice) permitido aos processos para uso contínuo da UCP. A definição deste quantum é um parâmetro de gerência da operação, sendo que se deve levar em consideração a disponibilidade de recursos (MP e processador), o tipo e o número de processos em execução. Um tamanho razoável para este quantum pode oscilar, por exemplo, entre 100 e 300ms. b) Escalonamento Baseado em Prioridade O escalonamento leva em consideração o nível de prioridade estabelecido para os processos. É importante observar que contrariamente ao que possa ser inicialmente imaginado, os processos do tipo IO_bound devem, em princípio, receber uma prioridade mais alta, a fim de compensar o excessivo tempo gasto no estado de espera. O nível de prioridade é uma característica do processo e pode ser dos tipos estática ou dinâmica. Na prioridade dinâmica, ela pode ser constantemente ajustada em função do tipo de processo e da carga corrente do sistema. c) Escalonamento por Múltiplas Filas Como os diversos processos em execução geralmente possuem características de processamento distintas, é difícil imaginar que um único mecanismo de escalonamento seja igualmente adequado a todos. Uma boa política seria a de classificar os processos em função do tipo de processamento realizado, e aplicar a cada grupo um mecanismo distinto de escalonamento. O escalonamento por múltiplas filas implementa diversas filas de processos no estado de pronto (ready), e a cada fila pode ser estabelecido um mecanismo de escalonamento diferente. Cada fila possui uma prioridade associada, que estabelece uma relação de prioridade entre elas e o sistema, a partir disto, somente escala processos de uma fila quando todas as outras de maior prioridade estiverem vazias. d) Escalonamento por Múltiplas Filas com Realimentação Estratégia que visa reduzir a penalidade imposta pelo método anterior aos processos classificados em filas de mais baixa prioridade. Visa também atenuar “injustiças” que podem se materializar no método por múltiplas filas pelo fato de um processo alterar seu comportamento no decorrer do seu processamento.

Nesta estratégia de escalonamento, o sistema tenta identificar dinamicamente o comportamento de cada processo durante seu período de execução, e ajustar também dinamicamente, a prioridade e o mecanismo de escalonamento associado a cada um. A figura abaixo mostra um esquema com “m” filas e diferentes estratégias. Um processo ao ser inicializado (startado) é colocado no final da fila correspondente ao seu nível de prioridade. Sua progressão dentro da fila segue a estratégia de escalonamento ali adotada e, após ter sido escalado e concluído sua etapa de processamento, ele volta para o fianl da fila imediatamente inferior, caso sua perda da UCP tenha ocorrido por preempção ou no final da fila imediatamente superior, caso a perda da UCP tenha ocorrido voluntariamente para espera da ocorrência de algum evento externo.

Racismo nos states – parte 2: Rubin Carter, 16º Round

Conhecido como “Hurricane” (furacão, em inglês), Carter teve sua incrível carreira interrompida aos 29 anos, quando foi preso injustamente – em 1966, ele e seu amigo, John Artis foram condenados pelo assassinato de três pessoas em Nova Jérsei, nos Estados Unidos. Carter, considerado um ícone da luta contra o racismo no país, teve sua sentença anulada e foi solto apenas 19 anos depois, após provar inocência (o amigo havia sido liberado quatro anos antes). O juiz que concedeu sua liberdade afirmou que a condenação se deu “com base no racismo e não na razão, assim como na ocultação da verdade”. A história de Rubin Carter foi tema de um clássico da música e ganhou também uma versão cinematográfica no fim da década de 90.

Talentoso em cima do ringue, Carter colecionou 27 vitórias (dezenove por nocaute) em 40 lutas na categoria dos peso-médio. Em artigo dedicado ao atleta neste domingo, o jornal americano New York Times o classificou como um lutador “feroz, carismático, que agradava a multidão, com sua famosa cabeça raspada, cavanhaque, olhar carrancudo e gancho de esquerda devastador”. Desde sua libertação, em 1985, ele organizou diversas campanhas contra o preconceito. Com o auxílio do amigo John Artis, Carter fundou, em Toronto, a Innocence International, organização sem fins lucrativos dedicada ao apoio a presos inocentes.

O boxeador serviu de inspiração para a canção Hurricane, sucesso de Bob Dylan, lançado em 1975. A música, que permaneceu entre as mais tocadas do ano seguinte, serviu como crítica ao preconceito e à violência policial. Em 1999, o filme biográfico Hurricane: o Furacão, dirigido por Norman Jewison e estrelado por Denzel Washington, aumentou ainda mais o mito em torno do ex-pugilista. Enquanto esteve preso, o próprio atleta escreveu o livro O 16º Round, no qual narrou sua trajetória dentro e fora dos ringues.

Blog AglioEoliO

O filme Hurricane, o Furacão, mostra o lado realmente “ficticio” da justiça nos EUA durante a década de 60, em relação à segregação racial: Rubin Carter, boxeador negro no auge da carreira, foi acusado e condenado falsamente por triplo assassinato em 1966, por estar perto da cena do crime e ser confundido como assassino por uma testemunha.

Foi a julgamento em 1967 num tribunal sulista de brancos racistas e condenado à prisão perpétua, junto de seu amigo John Artis, em plena rebelião racial em Newark. Com a anulação deste primeiro julgamento pela inconsistência dos depoimentos, os dois voltariam a ser julgados e condenados logo depois. Para a acusação atrair o interesse da opinião publica e comoção do juri, a “cereja emcima do bolo” foi a afirmação de uma suposta vingança pelo assassinato de negros em um bar próximo ao local do crime, horas antes.

Assim como no caso de

Ver o post original 86 mais palavras