2. 1) SISTEMAS OPERACIONAIS
2) LINGUAGENS DE PROGRAMAÇÃO
3) ARMAZENAMENTO E RECUPERAÇÃO DE DADOS
4) SEGURANÇA DA INFORMAÇÃO
3. Sistemas Operacionais
É um conjunto de programas que
gerenciam os softwares aplicativos
Cria uma camada de abstração entre o
aplicativo e o hardware
Ele está em contato direto com a
máquina e por isso é tão importante em
um ambiente computacional
4. Sistemas Operacionais
Podem ser classificados de 3 formas:
◦ Pelo tipo de núcleo do sistema
◦ Como gerenciam os programas em execução
◦ Pelo número de usuários que podem operá-lo
simultaneamente
5. Sistemas Operacionais -
Classificação
Quanto ao tipo do núcleo
◦ Podem ser: monolíticos ou micro Kernel
Quanto ao gerenciamento dos programas
em execução
◦ Podem ser: monotarefa, multitarefa
cooperativa ou multitarefa preemptiva
6. Sistemas Operacionais - Módulos
Gerenciamento de Processos
Gerenciamento de Memória
Gerenciamento de Arquivos
Gerenciamento de Entrada/Saída
7. Gerenciamento de Processos
Módulo responsável por gerenciar os
programas em execução.
Escalona (ou seja, define uma fatia de
tempo do processador) para as tarefas do
usuário (essencialmente, aplicativos e
funções dos aplicativos que são
executados pelo usuário)
8. Gerenciamento de Processos
Cada processo deve conter as seguintes
informações:
◦ Identificador
◦ Informações sobre localidade de memória em
que se encontra seu conteúdo
◦ Prioridade de processo
◦ Estado interno ao SO
10. Gerenciamento de Memória
Módulo que gerencia a memória de forma
mais adequada possível, é responsável por
alocar e liberar espaços na memória para
os processos em execução e fazer o
chaveamento swapping entre a memória
principal e o disco
Para um programa ser executado, precisa
estar em memória
11. Gerenciamento de Memória
Princípio da localidade de referência
◦ Princípio da localidade espacial: uma vez
acessados, a probabilidade de acessá-los
novamente é muito grande
◦ Princípio da localidade temporal: a
probabilidade de se acessar conteúdos à
volta(próximos) de um conteúdo já acessado
é alta
12. Gerenciamento de Memória
Existem basicamente dois tipos de
gerenciadores de memória:
◦ com paginação: utilizam o princípio da
localidade de referência para fazer o
chaveamento das informações entre o disco e
a memória
◦ Sem paginação: não fazem gerenciamento de
informações
13. Gerenciamento de Arquivos
Módulo responsável por manipular
arquivos
◦ Possibilidade de armazenar e recuperar uma grande
quantidade de informação
◦ A informação gerada por um aplicativo ou processo
deve continuar a existir após a finalização desse
processo
◦ Múltiplos aplicativos ou processos podem acessar a
mesma informação de forma concorrente
Gerenciador de arquivos, chamadas do
sistema (System Calls)
14. Gerenciamento de Arquivos
Existem duas camadas:
◦ Camada de alto nível: interface com o usuário
cujas tarefas de visualização, manutenção e
apagamento são realizadas pelo usuário
◦ Camada de baixo nível: define como os
arquivos são armazenados fisicamente, como
os arquivos são referenciados; além disso, é
responsável também por converter os
comandos de interface para os comandos de
system calls
15. Gerenciamento de Entrada/Saída
Também pode ser chamado de
Gerenciador de Dispositivos
Camadas do gerenciador de dispositivos
16. Gerenciamento de Entrada/Saída
Drivers
◦ Módulos que são acoplados ao SO e
possibilitam fazer uma ponte entre o SO e o
dispositivo
Camadas de serviços mais padronizados e
genéricos
◦ Software do usuário, Software de E/S, Drivers
Camadas de serviços mais específicos
◦ Manipuladores de Interrupção, Hardware
17. Linguagens de Programação
Uma linguagem de programação possui
uma estrutura própria que permite ao
usuário se comunicar com o computador
Cada linguagem de programação possui
dois tipos de regras:
◦ Sintáticas - refere-se à formação das palavras, ou
seja, quais as palavras (no caso de linguagens de
programação, chamamos essas de tokens) que podem
ser utilizadas
◦ Semânticas - refere-se às regras de formação de
frases, ou seja, como devo agrupar cada token para
formar uma sentença lógica
19. Linguagens de Programação
Etapas de um processo de criação de um
programa
◦ Interpretação, o código-fonte de uma
linguagem é traduzido à medida que ele
é executado
◦ Compilação, traduz todo o código-fonte
e transforma-o em um arquivo
executável
20. Linguagens de Programação -
Classificação
Quanto ao paradigma – as linguagens se
diferenciam segundo a forma de abordar a sua
sintaxe
Quanto à estrutura de tipos – as linguagens são
definidas como fracamente tipada, fortemente
tipada ou dinamicamente tipada
Quanto ao grau de abstração – as linguagens
são definidas quanto se distanciam dos detalhes
de hardware, podem ser, baixo nível, médio nível
e alto nível
21. Linguagens de Programação -
Paradigmas
Um paradigma de programação define, de
maneira geral, como deve ser estruturada uma
sintaxe de uma linguagem
◦ Programação estruturada – define que todos os
programas podem ser escritos a partir de 3
estruturas básicas: sequência, decisão e iteração
◦ Programação orientada a objetos – define as etapas
de análise, modelagem e programação. Principais
elementos:
Classe, Método, Atributo, Objeto, Sobrecarga, Herança
◦ Programação funcional
◦ Programação Lógica
22. Linguagens de Programação -
Paradigmas
Programação funcional
◦ Trata a programação como uma avaliação de
funções matemáticas. Exemplos deste tipo de
linguagem podem ser: R, Mathematica, Haskell,
ML, etc.
Programação Lógica
◦ É o tipo de programação que faz uso da lógica
de primeira ordem. A linguagem mais
conhecida é o Prolog. É muito utilizada no
contexto da Inteligência Artificial
23. Linguagens de Programação –Tipos
Tipo da variável, dependendo da linguagem é
preciso definir o tipo da variável no momento
da declaração, ou de acordo com o valor da
atribuição, com isso as linguagens se definem
em:
◦ Fracamente Tipada (ex. Smalltalk)
◦ Fortemente Tipada (ex. Java)
◦ Dinamicamente Tipada (ex.: Python)
24. Linguagens de Programação – Grau
de Abstração
Quanto mais perto do hardware a
estrutura de uma linguagem está próxima,
menos abstrata ela será
Assim, existem: linguagens de baixo nível
(ex.: Assembly), linguagens de médio nível
(ex.: C) e linguagens de alto nível (ex.:
SQL)
25. Armazenamento e Recuperação de
Dados
Dados, Informação e Conhecimento
A tecnologia para gerenciar dados em um
computador é denominada de Banco de
Dados e a interface que nos permite
gerenciar estes dados diretamente é
denominada de Sistemas de
Gerenciamento de Banco de Dados
26. Banco de Dados
Um banco de dados (BD) se assemelha
muito aos módulos gerenciadores de
arquivos dos SO’s
Os dados dentro de um BD são também
organizados em arquivos
Elementos gerais de um BD
◦ Tabela – estrutura lógica em que são armazenadas as
informações
◦ Campos – atributos da tabela
◦ Registros – linhas da tabela
◦ Tipo – tipo do campo
27. Banco de Dados
Modelos mais importantes em que os
BD’s se baseiam:
◦ BD Relacional – Todos os dados estão
armazenados logicamente em tabelas
◦ BD Orientado a Objetos – Os elementos são
organizados como objetos (assim como no
paradigma orientado a objetos)
28. Banco de Dados Relacional
Elementos
◦ Campo, Tabela, Registros e Tipo
◦ Chave Primária - é um campo que define
exclusivamente os registros de uma tabela. Em
outras palavras, cada elemento deste campo
deve ser único e não pode se repetir
◦ Chave Estrangeira - é um campo de uma
tabela que possui um relacionamento com
outro campo em outra tabela
29. Banco de Dados Relacional
Para gerenciar os elementos é necessário
uma linguagem específica que nos permite
criar desde os elementos básicos(tabela,
campos, chaves) até inserir, atualizar ou
apagar registros no sistema
Linguagem SQL – Structured Query
Language ou Linguagem de Pesquisa
Estruturada
30. Linguagem SQL
Padrão de quase todos os SGBD’s
relacionais no mercado
Pode ser dividido em 3 grupos de
comandos:
◦ DML (Data Manipulation Language)
◦ DDL (Data Definition Language)
◦ DCL (Data Control Language)
31. Linguagem SQL - DML
Linguagem de Manipulação de Dados –
provê comandos para manipulação dos
registros em uma ou mais tabelas, possui
as seguintes estruturas:
◦ SELECT
◦ INSERT
◦ UPDATE
◦ DELETE
32. Linguagem SQL - DDL
Linguagem de Definição de Dados –
provê comandos para gerenciamento e
criação de tabelas e seus elementos.
Possui os seguintes comandos:
◦ CREATE
◦ DROP
◦ ALTER
33. Linguagem SQL - DCL
Linguagem de Controle de Dados – provê
comandos para o controle dos aspectos
de autorização de dados. Possui os
seguintes comandos:
◦ GRANT
◦ REVOKE
◦ COMMIT
◦ ROLLBACK
34. DML - SELECT
SELECT: comando utilizado para
consulta de registros em uma ou mais
tabelas. Possui a seguinte estrutura
SELECT <campos> FROM <tabela>
WHERE <condição>;
35. DML - INSERT
INSERT: comando utilizado para inserir
registros em uma tabela. Não devemos
nos esquecer que as regras de chave
primária e estrangeira deverão ser
tratadas pelo SGBD, quando tentarmos
executar este comando. Possui a seguinte
estrutura
INSERT INTO <tabela> (<campos>)
VALUES (<valores>);
36. DML - DELETE
DELETE: comando para apagar um ou
mais registros. Também aqui as regras para
chaves primárias e estrangeiras devem ser
obedecidas. Possui a seguinte estrutura
DELETE FROM <tabela> WHERE
<condição>;
37. DML - UPDATE
UPDATE: comando para atualizar um ou
mais registros. A utilização deste comando
também deve obedecer às regras de
chave primária e chave estrangeira. Possui
a seguinte estrutura
UPDATE <tabela> SET <atribuições>
WHERE <condições>;
38. Segurança da Informação
Há 3 aspectos básicos em que se baseia a
área de Segurança de Informação
◦ Confidencialidade – é a propriedade que limita o
acesso a determinadas informações a pessoas
autorizadas
◦ Integridade - é a propriedade pela qual um
determinado conjunto de informações deverá manter
suas características primárias, sem serem
corrompidas de nenhuma forma
◦ Disponibilidade - é a propriedade pela qual a
informação deve estar disponível sempre que seu
proprietário ou pessoas autorizadas queiram acessá-la
40. Mecanismos de Segurança
Controle Físico
◦ Ferramentas físicas que podem ser utilizadas
para manter as informações confidenciais,
íntegras e disponíveis
◦ O controle físico pode ser utilizado através
de: trancas, portas blindadas, mecanismos
contra invasão humana ou contra fogo,
enchente, etc
41. Mecanismos de Segurança
Controle Lógico
◦ Softwares aplicativos ou até mesmo circuitos
eletrônicos específicos, especializados em
manter as informações livres de intrusos
Criptografia - mecanismo para esconder a
informação
Assinatura Digital - mecanismo para garantir a
integridade da informação
Controle de Acesso
Honeypot – servidor falso como alvo
42. Ameaças à Segurança
Perfis
◦ Hackers – são indivíduos que podem tanto violar
sistemas alheios como também ajudar a encontrar
falhas de segurança para que sistemas de informação
possam ser protegidos.
◦ Crackers – são indivíduos que essencialmente têm
como objetivo quebrar (cracker) um sistema de
segurança de forma ilegal e antiética.
◦ Phreakers – são crackers especializados em telefonia
móvel ou fixa
43. Ameaças à Segurança
Programas
◦ Vírus – são programas especializados em
corromper a integridade lógica de um sistema
computacional a fim de causar danos nos
dados armazenados.
◦ Trojans – também chamados de “Cavalo de
Tróia”, são softwares especializados em abrir
acessos em um sistema com o objetivo de
pessoas não especializadas roubarem
informações confidenciais
44. Níveis de Segurança
Físico
◦ Ameaças físicas: incêndios, desabamentos,
relâmpagos, alagamentos e acesso indevido de
pessoas
Lógico
◦ Ameaças lógicas: vírus e trojans
◦ Definir políticas de segurança para evitar
tanto ataques quanto perdas lógicas de
informações
45. Políticas de Segurança
Critérios
◦ Disponibilidade – dados críticos devem estar sempre
disponíveis
◦ Utilização – os sistemas devem cumprir sempre seus
objetivos
◦ Integridade – os sistemas devem estar sempre em
condições de uso
◦ Autenticidade – os sistemas devem poder distinguir
um usuário autorizado de outro não-autorizado
◦ Confidencialidade – somente pessoas autorizadas
devem acessar informações internas