SISTEMAS OPERACIONAIS
-
Os sockets são abstrações das camadas de rede para aplicações que precisam se comunicar com outras aplicações através de redes. Esse artigo tem o objetivo de explicar o funcionamento do sockets em baixo nível e porque eles são tão importantes. -
Todo programa ao ser carregado pelo sistema operacional ganha um espaço de endereçamento. Existe uma área para alocações dinâmicas chamada Heap. Funções desse programa possuem uma pilha de memória (stack). Esse artigo tem o objetivo de mostrar as diferenças na alocação de memória entre essas duas áreas.Heap vs stack
-
As threads são fluxos de execução de um programa. Elas podem ou não compartilhar memória. Nesse artigo iremos ver os fundamentos sobre threads, suas características e limitações. Tudo isso através de um programa de exemplo escrito em C++.O que são e como funcionam as threads
-
Esse artigo tem como objetivo apresentar o problema proposto por Dijkstra sobre sincronização na comunicação entre processos/threads dentro de um Sistema Operacional. Iremos compreender o problema através da analogia a um Jantar de filósofos. Iremos também escrever uma solução do problema em linguagem C++ e discutir o assunto sincronização.O Jantar dos filósofos - Problema de sincronização em Sistemas Operacionais
-
Um sinal de interrupção de software é uma maneira de comunicar informações entre processos sobre estado, sistema ou hardware com outro processo. Nesse artigo iremos entender como o Linux implementa os sinais de modo a garantir uma boa gestão de processos. Exemplos de implementação utilizando os sinais do Linux serão apresentados.Linux Signals - As interrupções de software na gestão de processos em sistemas operacionais
-
Esse artigo tem como objetivo discutir e apresentar as diferenças entre arquivos texto e binário. Quais são as vantagens e desvantagens de usar ambos formatos. Exemplos de aplicações que os utilizam e de código que os manipula serão objeto desse artigo.Diferenças entre arquivos texto e binário
-
Artigo escrito em 1974 por Dennis Ritchie e Ken Thompson apresentando o projeto do sistema operacional UNIX. O trabalho foi publicado pela ACM communication.The UNIX time-sharing system
-
Resumo do artigo escrito por Dennis M. Ritchie contextualizando a evolução do sistema operacional Unix dentro da Bell Labs durante 5 anos. O artigo foi publicado em 1979 em Sydney durante o simpósio de projeto de linguagens e metodologias de programação.The Evolution of the Unix Time-sharing System
-
Artigo apresentado em 1995 na conferência SIGOPS descrevendo uma nova arquitetura de sistemas operacionais chamada ExoKernel. A pesquisa foi desenvolvida pelo laboratório de Ciência da Computação do MIT.Exokernel: an operating system architecture for application-level resource management
-
Resumo do artigo que apresenta o projeto Xen, um hypervisor que gerencia máquinas virtuais sem sacrificar segurança ou performance. O trabalho foi apresentado em 2003 na conferência SOSP da ACM.Xen and the art of virtualization
-
Artigo desenvolvido pela Microsoft e publicado pela ACM no ano de 2004. O trabalho apresenta o sistema operacional Singularity baseado em Micro-Kernel.The Singularity system
-
Artigo apresentado pela universidade de Wisconsin na conferência USENIX HotCloud 2016. O trabalho apresenta o OpenLambda, uma plataforma em computação Serverless que permite pesquisadores rodarem experimentos utilizando funções como serviço.Serverless Computation with OpenLambda
-
Artigo apresentando Lottery, um sistema de escalonamento de recursos baseado em estatística para multiplexar proporcionalmente acesso a recursos. O trabalho foi desenvolvido pelo MIT e publicado pela USENIX na OSDI no ano de 1994Lottery Scheduling: FlexibleProportional-Share Resource Management
-
Artigo publicado em 1992 pela ACM discutindo o Scheduler Activation, um recurso de comunicação entre núcleo e espaço de usuário de modo a maximizar o uso de CPU por threads de aplicações. O trabalho foi desenvolvido pela universidade de Washington.Scheduler activations: effective kernel support for the user-level management of parallelism
-
Artigo publicado em 1997 apresentando o Eraser, uma ferramenta para auxiliar a detecção e depuração de condições de corrida em sistemas paralelos que utilizam threads. O trabalho foi desenvolvido pela universidade de Washington e publicado pela ACM Transactions.Eraser: a dynamic data race detector for multithreaded programs
-
Artigo desenvolvido pelo MIT discutindo o problema de desempenho de mecanismos de locking não escaláveis. O trabalho compara diversas soluções e prova o impacto no sistema operacional à medida que o número de núcleos aumenta.Non-scalable locks are dangerous
-
Artigo no formato Survey publicado pela ACM sobre processamento de pacotes de redes eficientes através de eBPF e XDP. O trabalho foi desenvolvido pelo Departamento de Ciência da Computação da Universidade Federal de Minas Gerais em 2020.Fast Packet Processing with eBPF and XDP: Concepts, Code, Challenges, and Applications
-
Artigo publicado em 2019 pela USENIX no simpósio NSDI'19. O trabalho foi desenvolvido pelo MIT e apresenta o Shenango, um sistema que melhora o escalonamento de CPU entre processos e threads sem impactar na latência.Shenango: Achieving High CPU Efficiency for Latency-sensitive Datacenter Workloads
-
Este artigo apresenta diferentes latências inerentes aos programas de computadores que nem sempre estão bem esclarecidos para um programador. Essas diferenças lhe darão uma visão global e impacto que cada uma delas tem em um algoritmo, programa ou sistema.Latências que todo programador deveria saber
-
Este artigo tem como objetivo explicar os detalhes de implementação da abstração Descritores de Arquivos que é utilizada pelo sistema operacional Linux para controlar arquivos. Iremos discutir o que eles são de fato no código do kernel do linux e como ele é importante. Além disso, exemplos de uso no sistema operacional serão apresentados.O que são file descriptors