Skip to content

Instantly share code, notes, and snippets.

View maluta's full-sized avatar

Tiago Maluta maluta

View GitHub Profile
@maluta
maluta / bat.py
Last active December 21, 2015 13:08
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
import threading
INTERVALO=1 #segundos
def open_uevent():
@maluta
maluta / quotes.txt
Last active December 19, 2015 12:48
"The hardest thing to learn in life is which bridge to cross and which to burn." ― Bertrand Russell (http://dysonology.wordpress.com/2011/06/21/the-guy-quote-bertrand-russell/)
@maluta
maluta / links.txt
Last active December 19, 2015 08:59
#!/usr/bin/python
import os
diretorios = [ name for name in os.listdir(os.getcwd()) if os.path.isdir(os.path.join(os.getcwd(), name)) ]
for i in diretorios:
print i
java -jar out/host/linux-x86/framework/signapk.jar ANDROID_PATH/device/fsl/iMXT_STD/security/platform.x509.pem ANDROID_PATH/security/platform.pk8 /tmp/GSMobile.apk /tmp/GSMobile-signed.apk
Um monitor é uma ferramenta para compartilhar recursos de forma segura dentro do sistema, qualquer operação de acesso a estruturas-de-dados que não for atômica esta sujeita a problemas que geralmente envolvem perda ou inconsistência da informação. Os monitores também podem carregar uma característica de temporariamente cancelar este acesso exclusivo, com o objetivo de aguardar por alguma condição antes de re-associar o acesso exclusivo e resumir a tarefa. Monitores também tem um mecanismo para sinalizar outras threads que tais condições foram encontradas. Uma técnica interessante para contornar este tipo de situação são as "exclusões mútuas" ou simplesmente "mutex" que temporariamente dão acesso exclusivo a alguma thread, até que alguma condição seja alcançada antes de retornar ao fluxo natural. O Linux implementa o "mutex" semelhante aos semáforos com refinamentos para melhorar o desempenho em alguns casos específicos.
** Semáforo **
Semáforo é um mecanismo amplamente utilizado, efetivo inclusive em sistemas multi-processados que consiste resolver um problema de sincronização da informação, ou seja, proteger o acesso a uma estrutuda-de-dados. Quando uma thread tenta acessar alguma informação, primeiro verifica um um contador que autoriza ou não o acesso. Um semáforo pode ser visto como um objeto composto por:
(1) uma variável integer que é interpretada como um contador (counter)
(2) uma lista de processos em espera
(3) dois métodos atômicos down() e up() que atuam incrementado e decrementado o contador.
Imaginando um caso de uso, um processo invoca o método down() que decrementa o valor [counter] do semáforo, se este novo valor for menor que zero, o processo é adicionado a lista de espera e bloqueado. Quando o método up() for executado, ele incrementará o valor do contador e se o resultado for maior ou igual a zero, ele reativa o processo na lista de espera do semáforo.
http://www.radio.usp.br/programa.php?edicao=080209&id=24
http://wms.emm.usp.br:7070/radiousp_broadcast/toqueoutravez/080209(2).wma
[0, 132, 136, 143, 156, 174, 133, 144, 150, 124, 150, 135, 150, 149, 131, 131, 153, 156, 136, 137, 138, 127, 119, 148, 155, 134, 115, 142, 148, 155, 145, 142, 148, 159, 142, 135, 144, 145, 138, 132, 138, 152, 154, 159, 145, 127, 128, 145, 127, 153, 153, 159, 149, 159, 160, 128, 139, 136, 137, 145, 138]
@maluta
maluta / Foo.scala
Created September 7, 2012 03:10
Create Foo.scala
object Foo {
def main(args: Array[String]) {
print("SC");
}
}