Aulas de Sistemas Operacionais com Debates Estruturados
Nesta página estão reunidas anotações de debates estruturados conduzidos pelo Prof. Lesandro Ponciano na disciplina Sistemas Operacionais entre os anos de 2019 e 2025. O Debate Estruturado é uma estratégia didático-pedagógica aplicada no ensino e aprendizagem. Ela foi publicada em 2019 no Workshop sobre Educação em IHC (WEIHC) da Sociedade Brasileira de Computação. Posteriormente, passou a ser aplicada na disciplina de Sistemas Operacionais. Para mais informações sobre a estratégia de Debate Estruturado, veja o artigo científico Debate Estruturado.
Índice de Debates Estruturados
- Relações entre eficiência energética e desempenho: carga de trabalho, centralização e distribuição
- Consumo e Economia de Energia em Sistemas Computacionais
- Privacidade e Camadas do Sistema Computacional
- Localidade temporal e desempenho em sistemas computacionais
- Caching: armazenamento temporário de dados e efeitos no desempenho
- Interseções entre Inteligência Artificial e Malwares
- Performance e consumo de energia em sistemas de computação
- Vulnerabilidade e Segurança em Sistemas Operacionais
- Confiabilidade e Desempenho de cima para baixo e de baixo para cima
- Vulnerabilidades e resistência a ataques em Sistemas Operacionais
- Evolução e utilidades das chamadas de sistemas
Relações entre eficiência energética e desempenho: carga de trabalho, centralização e distribuição
Data do Debate: Maio/2025
Textos de referência para o debate
- Assessing Green Strategies in Peer-to-Peer Opportunistic Grids
- Energy-Efficient and Load-Aware VM Placement in Cloud Data Centers
Questões colocadas durante o debate
- Por que a economia de energia é uma consideração relativamente nova no design de sistemas computacionais? De que forma a busca por economia de energia afeta o projeto desses sistemas? Os projetistas mudam a decisão de projeto do sistema computacional dependendo do requisito de economia de energia?
- Quais os principais mecanismos implementados quando se deseja economizar energia no sistema computacional? De quem é a responsabilidade pela economia de energia no sistema computacional? Seria a aplicação, sistema operacional ou hardware? Por quê?
- Estratégias de dormência (sleep) colocam um trade-off entre economia de energia e desempenho, como economizar 80% e ter um makespan de 2%; Como lidar com esse trade-off? Quais questões se considerar desse trade-off quando se deseja-se utilizar esse mecanismo, por exemplo, em data centers baseados em alocação de VM?
- O mecanismo de realocação de VM tem custo adicional de movimentação da VM. A relação entre economia de energia e impacto no desempenho é satisfatória? Em quais situações faz sentido fazer uso desse mecanismo e em quais não faz? Seria possível usar esse mecanismo em ambientes distribuídos, como as Grades Computacionais?
Consumo e Economia de Energia em Sistemas Computacionais
Data do Debate: Maio/2025
Textos de referência para o debate
- Fairness-Aware Energy Efficient Scheduling on Heterogeneous Multi-Core Processors
- Energy Efficient Computing through Productivity-Aware Frequency Scaling
Questões colocadas durante o debate
- Quando se fala de estratégias modernas de economia de energia, o hardware é o vilão ou é um aliado? Qual papel o hardware desempenha? O que é necessário em nível de hardware para que a economia de energia seja possível e quais são os custos disso?
- Quando se fala de estratégias modernas de economia de energia, o sistema operacional é o vilão ou é um aliado? Qual papel o sistema operacional desempenha? Em que medida a eficácia do sistema operacional no contexto de economia de energia depende mais do hardware e das aplicações do que do sistema operacional?
- Quais são as principais diferenças quando se trata de economia de energia em uma arquitetura de um processador versus uma arquitetura com processadores de múltiplos cores? O que funciona para um processador não funciona para vários? Por quê? Qual a responsabilidade do sistema operacional nesse contexto?
- Por que critérios como justiça (fairness) e produtividade (productivity) se tornam relevantes quando se aborda estratégias de economia de energia? De que forma isso se relaciona com a abordagem de política e mecanismo que é fundamental em sistemas operacionais? De quem deve ser a responsabilidade de garantir essa justiça e produtividade?
Privacidade e Camadas do Sistema Computacional
Data do Debate: Maio/2025
Textos de referência para o debate
- Awareness of Mobile Operating System Privacy Among Computer Science Students
- A Forensic Analysis of the Tor Network in Tails Operating system
Questões colocadas durante o debate
- Qual a importância de estudantes (e as pessoas de forma geral) conhecerem os recursos de privacidade fornecidos pelo sistema operacional instalado em seus dispositivos? Não está o sistema operacional por padrão contendo a melhor definição de privacidade para o usuário? Se não está, por que não? Não seria isso uma falha grave do sistema operacional?
- Na perspectiva do sistema operacional, o Tor browser é apenas um processo. Se esse processo tem algo de especial que lhe torna melhor que outros em termos de privacidade/segurança, o que seria isso? Por que dedicar esforço implementando privacidade/segurança no nível do browser se o gerente que tem acesso a todo e qualquer recurso do dispositivo é o sistema operacional?
- Em quais aspectos o problema da segurança e/ou privacidade deve ser resolvido no nível tecnológico e em que medida ele precisa ser resolvido no nível comportamental? Por exemplo, se nem mesmo estudantes de Ciência da Computação leem as políticas de privacidade, como a tecnologia poderia resolver isso? E se houve um vazamento de dados ou ataque, há situações em que é possível atribuir o problema à tecnologia?
- Por construção, quais garantias a Tor network oferece me confidencialidade e quais ele não consegue entregar? Há o risco de usar essa tecnologia achando erroneamente que está protegido? Pela análise forense, quais tipos de proteção ou garantia de confiabilidade que realmente pode-se obter ao se usar essa tecnologia?
Localidade temporal e desempenho em sistemas computacionais
Data do Debate: Maio/2025
Textos de referência para o debate
Questões colocadas durante o debate
- O princípio da localidade temporal é recorrente em sistemas computacionais como servidores da Internet, banco de dados, bloqueio de spam, mecanismos de busca, sistemas de comércio eletrônico, sistemas de e-mail, etc. O que torna esse princípio tão frequente? De que forma isso pode ser uma influência do comportamento do humano que usa esses sistemas? Como a forma de uso do sistema pelo usuário pode causar ou não temporalidade no baixo nível?
- É claro que se o princípio da localidade temporal existir em um dado sistema, ele poderá ser explorado na engenharia desse sistema. Como surge a localidade temporal no caso de sistema local que há apenas um computador? De que forma o surgimento da localidade temporal pode estar relacionada à forma como nós projetamos esses sistemas, como linguagem de programação e estilos arquiteturais?
- Considerando o contexto de aplicações de computação de alto desempenho (HPC Applications) como a exploração do princípio da localidade temporal permite melhoria de desempenho? Quais os mecanismos existentes nesse sistema em que políticas que exploram a temporalidade permitem ganho de desempenho? Qual o papel do sistema operacional nesse contexto?
- Além do princípio da localidade temporal, sistemas computacionais também costumam exibir localidade espacial ou localidade de referência. Sempre que há localidade temporal também há localidade espacial? Por que? Como diferenciar essas localidades de modo a identificar (ou explorar) a influência que cada uma tem no desempenho de um dado sistema?
Caching: armazenamento temporário de dados e efeitos no desempenho
Data do Debate: Maio/2025
Textos de referência para o debate
- Progressive Web Apps Development: Study of Caching Mechanisms
- BitTorrent traffic from a caching perspective
Questões colocadas durante o debate
- O sistema computacional tem vários mecanismos implementados em software e hardware, incluindo escalonamento e caching. Como o caching é implementado em software para dispositivos móveis e para sistemas de distribuição de arquivos? O que exatamente esses sistemas buscam ao usar caching e por que caching é uma solução para isso?
- Caching pode ser implementada por software em diferentes locais, como nos dispositivos dos usuários (como em PWA), nos servidores intermediários (como BitTorrent Caching), ou nos servidores de conteúdo. De que forma o comportamento humano pode afetar o desempenho desses dois tipos de cache?
- Como o conceito de caching implementada por software se assemelha ao conceito de memória virtual implementada pelo sistema operacional? E como ele difere? Conceitualmente, como o fator de temporalidade e frequência de acesso afetam o desempenho desses mecanismos?
- Qual é o fator (ou métrica) determinante quando se busca implementar caching via software como no ambiente BitTorrent e PWA? Qual é a métrica de interesse que se busca melhorar nesse contexto? É possível enunciar um contexto geral em que, sempre que o projetista estiver, a solução será usar caching? Se sim, qual contexto geral é esse?
Interseções entre Inteligência Artificial e Malwares
Data do Debate: outubro/2024
Textos de referência para o debate
- An Early Detection of Android Malware Using System Calls based Machine Learning Model
- Unleashing Malware Analysis and Understanding With Generative AI
Questões colocadas durante o debate
- Um processo que monitora o fluxo de chamadas de sistemas de um processo alvo precisa ser executado em modo núcleo? Em poucos segundos, um processo típico realiza milhares de system calls, é eficaz e eficiente realizar esse tipo de monitoramento em um sistema multitarefa típicos com dezenas de processos? Como lidar com isso?
- Qual o risco de usar um sistema não determinístico com Generative IA (ex: ChatGPT) para gerar interpretações para relatórios de malwares? De quem é a culpa se a IA generativa omitir algo relevante? Qual o risco de fornecer para uma IA generativa dados tão sensíveis? Não pode a IA ter malwares?
- O que exatamente é possível detectar no fluxo de chamadas de sistemas de um processo e que revelaria que um processo alvo é um malware? E o que exatamente é possível (e desejável) uma IA aprender nesse contexto? Qual a chance e o risco de um falso negativo neste contexto?
- Como avaliar se o mecanismo de redução de redundância permite reduzir o tamanho do grafo ASG sem perder informação? O que exatamente a redundância significa? Não seria redundância informação relevante na detecção de malware? Por exemplo, o relevante é apenas usar sleep, quando, em que sequência e por quantas vezes sleep é usado?
Performance e consumo de energia em sistemas de computação
Data do Debate: Outubro/2021
Textos de referência para o debate
- Assessing Green Strategies in Peer-to-Peer Opportunistic Grids
- Energy Efficient Computing through Productivity-Aware Frequency Scaling
Questões colocadas durante o debate
- Qual a diferença entre a busca de economia de energia no nível de sistema em um sistema computacional centralizado (como realizado pelo PAFS) e em um sistema distribuído (como a realizada no grid)? Quais as diferenças dos mecanismos e políticas de energia nesses contextos?
- Por que em um Grid além de escolher qual máquina colocar para dormir também é necessário decidir também qual máquina acordar? No PAFS, o que influencia a decisão de mudar a frequência do processador? Qual o papel do escalonador de tarefas no contexto do consumo de energia?
- Qual a relação de custo-benefício no contexto de consumo de energia? A economia de energia é obtida sem nenhum custo? Se há custo, a que esse custo está associado? Quem se beneficia das abordagens de redução do consumo de energia? Quem paga eventual custo?
- Qual a relação entre "computação verde" e "economia de energia" em sistemas computacionais? Por que é relevante buscar a economia de energia em sistemas computacionais? Isso é algo a ser resolvido no nível do software ou há também responsabilidades no nível do software (sistema e aplicação)? Se há, quais?
Vulnerabilidades e resistência a ataques em Sistemas Operacionais
Data do Debate: Maio/2021
Textos de referência para o debate
- Experience Report: Study of Vulnerabilities of Enterprise Operating Systems
- SAMADroid: A Novel 3-Level Hybrid Malware Detection Model for Android Operating System
Questões colocadas durante o debate
- Quão vulneráveis são os sistemas operacionais? Os sistemas operacionais modernos são seguros? Se sim, o que garante a segurança? Se não, de que advém a insegurança?
- Por que é tão difícil detectar um malware? Chega-se a combinar três níveis de verificação (estática, dinâmica e com aprendizagem de máquina)! Diante dessa complexidade, a quem deve caber a detecção de malware? Sistema operacional, antivírus, ou programas do usuário?
- Uma das dificuldades de implementar mecanismos de proteção e segurança é que eles têm um custo. Por exemplo, um mecanismo para detectar malware vai consumir memória e CPU e pode ser intrusivo. Como prover a detecção de malware e ainda ser eficiente?
- Muitas vezes engenheiros de software acreditam que é sua responsabilidade criar código seguro. No entanto, uma vulnerabilidade na camada inferior, como no Sistema Operacional, compromete tudo que está acima. Como fazer software seguro quando o problema pode estar na camada inferior? Como um engenheiro de software pode lidar com isso?
- O tempo decorrido entre uma vulnerabilidade ser detectada e uma correção ser liberada é o mais crítico para os usuários. É um período em que a vulnerabilidade é conhecida e ainda não se tem uma proteção. Isso pode durar vários dias. Como engenheiros de software e usuários podem agir nesse contexto? Fazer de conta que o problema não existe?
- Aparentemente há um padrão de vulnerabilidades que ocorrem em diferentes operacionais. Por que há um padrão nas vulnerabilidades? Por que sistemas operacionais que estão sendo desenvolvidos há décadas ainda têm vulnerabilidades? Está a engenharia de sistemas operacionais falhando?
Confiabilidade e Desempenho de cima para baixo e de baixo para cima
Data do Debate: Maio/2021
Textos de referência para o debate
- A Kubernetes CI/CD Pipeline with Asylo as a Trusted Execution Environment
- HySec-Flow: Privacy-Preserving Genomic Computing with SGX-based Big-Data Analytics Framework
- BOINC: A Platform for Volunteer Computing
- Squad: A Secure, Simple Storage Service for SGX-Based Microservices
Questões colocadas durante o debate
- Quando se fala de Intel Software Guard Extensions (SGX) se fala de algo muito micro na execução em uma máquina, mas quando se fala de BOINC e sistemas como SETI@home se fala de algo macro com centenas de milhares de máquinas. O que há de comum nesses dois contextos?
- De que forma os mecanismos de implementação de segurança podem ser providos pelo hardware de processamento como o Intel SGX? Como isso viabiliza novas tecnologias, serviços e aplicações em ambientes como Computação na Nuvem?
- No caso de sistemas de computação voluntária, como aqueles que usam o BOINC, qual é característica da carga de trabalho (tarefas) que tornaria o uso desse ambiente conveniente/vantajoso? Como avaliar o desempenho e a confiabilidade nesse contexto?
- Qual a relação entre middleware e sistema operacional no caso de sistemas como o BOINC? Como as atividades de segurança e escalonamento se colocam nessa relação?
Vulnerabilidade e Segurança em Sistemas Operacionais
Data do Debate: Outubro/2020
Textos de referência para o debate
- Machine Learning Approach to Predict Computer Operating Systems Vulnerabilities
- Análise Transparente de Malware com Suporte de Hardware
Questões colocadas durante o debate
- Por que é necessário o uso de algoritmos de Machine Learning para tentar prever o efeito ou severidade de uma vulnerabilidade recém descoberta? Não seria apenas o caso de olhar no código do SO e ver o efeito? Há algo ambiental? O que torna o National Vulnerability Database uma fonte de dados adequada para treinar tais algoritmos?
- Há um número maior de vulnerabilidades de alta severidade no SO Windows e há um um número maior de vulnerabilidades de média severidade no SO Linux. Por que isso ocorre? O quanto a fatia de mercado e disponibilidade do código fonte afeta esse padrão?
- Diferentemente do SO, o processador acompanha a execução de cada instrução do processo. Diferentemente do processador, o SO tem poder de gerência sobre o processo, podendo encerrá-lo e limitar seu acesso a recursos, por exemplo. Nesse sentido, quais funções cada um desses componentes desempenham no combate a malwares? Como a eficácia e eficiência desse combate é afetada pelos dois?
- Análise de instruções do binário, padrões de chamadas de sistemas, injeção de DLL são formas em software de detectar malware. Por que essas técnicas por si só não são suficientes? Qual é a dificuldade, para o SO, detectar que um processo está computando algo que ele não deveria computar ou acessando algo que ele não deveria acessar?
- Observa-se um menor número de vulnerabilidades no SO da Apple. Trata-se de não haver problemas ou de, na perspectiva do atacante, não valer a pena buscar por vulnerabilidade? Como saber qual o nível efetivo de segurança do sistema operacional se ele não for submetido a tentativa de ataque?
- Técnicas de reconstrução do código como grafo de fluxo de controle e grafo de chamadas desempenham qual papel na detecção de malware? Por que o emprego dessas técnicas geralmente não é feito pelos sistemas operacionais e sim por software aplicativos, com os antivírus e antimalware.
Evolução e utilidades das chamadas de sistemas
Data do Debate: Outubro/2019
Textos de referência para o debate
Questões colocadas durante o debate
- De forma geral, o código do sistema operacional é antigo e está em constante evolução. Há elementos de estruturas antigas. Pode-se ir ajustando ou será que já podemos dizer que o tempo das chamadas de sistemas já passou? É chegada a hora de mudar para uma outra forma de interface?
- Quem se beneficia desses estudos acerca da evolução das chamadas de sistemas e acerca de como o padrão de realização de chamadas pode revelar comportamentos maliciosos? O que mais poderia ser feito para maximizar esse benefício?
- Como está a qualidade do código do sistema operacional, em termos de erros e de arquitetura? O que nos revela o fato de que 1/3 dos commits sobre system calls serem para correção de bugs? Por que tanta refatoração?
- Por que algumas chamadas de sistemas (como ptrace) são mais difíceis de manter do que outras? Como lidar com código de chamadas de sistemas para diferente arquiteturas sobre as quais o sistema operacional executa? Em termos de engenharia de software, como lidar com isso?