Aula T1
Aula T1
Aula T1
Sistemas
Operacionais
Prof.: Murilo Oliveira MACHADO
Agenda
Exemplos de SO
Exemplos de SO
O sistema
operacional, é a peça
mais fundamental de
software, opera em
modo núcleo
(também chamado
modo supervisor).
Nesse modo
usuário, no qual
apenas um
subconjunto das
instruções
da máquina está
disponível.
Em particular,
aquelas instruções
que afetam o controle
da máquina ou
realizam
E/S (Entrada/Saída)
são proibidas para
programas de
modo usuário.
Um usuário é livre
para conseguir um
app diferente ou
escrever o seu
próprio, se assim
quiser;
Sistemas
embarcados ou
interpretados (como
os baseados em
Java) podem não ter
o modo núcleo
→ Nenhum programador são iria querer lidar com esse disco em nível de
hardware. Em vez disso, um software, chamado driver de disco, lida com o
hardware e fornece uma interface para ler e escrever blocos de dados, sem
entrar nos detalhes.
→ Nenhum programador são iria querer lidar com esse disco em nível de
hardware. Em vez disso, um software, chamado driver de disco, lida com o
hardware e fornece uma interface para ler e escrever blocos de dados, sem
entrar nos detalhes.
→ Nenhum programador são iria querer lidar com esse disco em nível de
hardware. Em vez disso, um software, chamado driver de disco, lida com o
hardware e fornece uma interface para ler e escrever blocos de dados,
sem entrar nos detalhes.
→ Nenhum programador são iria querer lidar com esse disco em nível de
hardware. Em vez disso, um software, chamado driver de disco, lida com o
hardware e fornece uma interface para ler e escrever blocos de dados, sem
entrar nos detalhes.
As primeiras linhas de
impressão poderiam ser do
programa 1, as seguintes do
programa 2, então algumas
do programa 3 e assim por
diante. O resultado seria o
caos absoluto.
Quando um recurso é
multiplexado no tempo, diferentes
programas ou usuários se
revezam.
Prof.: Murilo Oliveira MACHADO
O que é um sistema operacional?
O sistema operacional como uma máquina
estendida
O gerenciamento de recursos
inclui a multiplexação
(compartilhamento) de recursos
de duas maneiras diferentes:
no tempo e no espaço.
Quando um recurso é
multiplexado no tempo, diferentes
programas ou usuários se
revezam.
Prof.: Murilo Oliveira MACHADO
O que é um sistema operacional?
O sistema operacional como uma máquina
estendida
O gerenciamento de recursos
inclui a multiplexação
(compartilhamento) de recursos
de duas maneiras diferentes:
no tempo e no espaço.
Quando um recurso é
multiplexado no tempo,
diferentes programas ou
usuários se revezam.
Prof.: Murilo Oliveira MACHADO
O que é um sistema operacional?
O sistema operacional como uma máquina
estendida
A CPU realiza
multiplexação no tempo
ou no espaço?
A CPU realiza
multiplexação no tempo
ou no espaço?
Multiplexação no tempo:
Compartilha o tempo
A memória principal
realiza multiplexação no
tempo ou no espaço?
A memória principal
realiza multiplexação no
tempo ou no espaço?
Multiplexação no espaço:
Compartilha os bits
A memória principal é
normalmente dividida entre vários
programas sendo
executados, de modo que cada um
pode ser residente ao
mesmo tempo.
A ideia por trás disso era reunir um lote de tarefas na sala de entradas e
então passá-lo para uma fita magnética.
A saída era escrita em uma segunda fita, em vez de ser impressa. Por fim,
a fita de saída era levada para impressora.
O IBM 360 foi a primeira linha importante de computadores a usar CIs (circuitos
integrados) de pequena escala, proporcionando desse modo uma vantagem
significativa na relação preço/desempenho sobre as máquinas de segunda
geração, que foram construídas sobre transistores individuais.
No 7094, quando a tarefa atual fazia uma pausa para esperar por uma fita ou
outra operação de E/S terminar, a CPU simplesmente ficava ociosa até o término
da E/S
Alguns obtêm energia por contatos no leitor no qual estão inseridos, mas
cartões inteligentes sem contato obtêm energia por indução, o que limita
muito o que eles podem fazer.
Se um processo pode criar um ou mais processos (chamados de processos filhos), e estes por sua vez
podem criar processos filhos, chegamos logo à estrutura da árvore de processo
(1) Generalidades vagas (“sistemas operacionais têm chamadas de sistema para ler arquivos”)
(2) Algum sistema específico (“UNIX possui uma chamada de sistema read com três parâmetros: um para
especificar o arquivo, um para dizer onde os dados devem ser colocados e outro para dizer quantos bytes
devem ser lidos”).
Prof.: Murilo Oliveira MACHADO
Chamadas de sistema
(1) Generalidades vagas (“sistemas operacionais têm chamadas de sistema para ler arquivos”)
(2) Algum sistema específico (“UNIX possui uma chamada de sistema read com três parâmetros: um para
especificar o arquivo, um para dizer onde os dados devem ser colocados e outro para dizer quantos bytes
devem ser lidos”).
Prof.: Murilo Oliveira MACHADO
Chamadas de sistema
Qualquer computador de uma única CPU pode executar apenas uma
instrução de cada vez.
O programa de
chamada primeiro
empilha os parâmetros:
O programa de
chamada primeiro
empilha os parâmetros:
O programa de
chamada primeiro
empilha os parâmetros:
O primeiro e o terceiro parâmetros são
chamados por valor, mas o segundo
parâmetro é passado por referência,
significando que o endereço do buffer
(indicado por &) é passado, não seu
conteúdo.
Prof.: Murilo Oliveira MACHADO
Chamadas de sistema
Chamadas de sistema para gerenciamento de processos
Considere o caso do shell. Ele lê um comando do terminal, cria um processo
filho, espera que ele execute o comando e então lê o próximo comando quando o
processo filho termina. Para esperar que o processo filho termine, o processo pai
executa uma chamada de sistema waitpid, que apenas espera até o processo
filho terminar (qualquer processo filho se mais de um existir).
Após o shell ter criado o processo filho, este localiza e executa o arquivo
cp e passa para ele os nomes dos arquivos de origem (fd1) e de destino
(fd2).
O programa principal de cp (e programa principal da maioria dos
outros programas C) contém a declaração: main(argc, argv, envp)
Após o shell ter criado o processo filho, este localiza e executa o arquivo
cp e passa para ele os nomes dos arquivos de origem (fd1) e de destino
(fd2).
O programa principal de cp (e programa principal da maioria dos
outros programas C) contém a declaração: main(argc, argv, envp)
Após o shell ter criado o processo filho, este localiza e executa o arquivo
cp e passa para ele os nomes dos arquivos de origem (fd1) e de destino
(fd2).
O programa principal de cp (e programa principal da maioria dos
outros programas C) contém a declaração: main(argc, argv, envp)
Após o shell ter criado o processo filho, este localiza e executa o arquivo
cp e passa para ele os nomes dos arquivos de origem (fd1) e de destino
(fd2).
O programa principal de cp (e programa principal da maioria dos
outros programas C) contém a declaração: main(argc, argv, envp)
Após o shell ter criado o processo filho, este localiza e executa o arquivo
cp e passa para ele os nomes dos arquivos de origem (fd1) e de destino
(fd2).
O programa principal de cp (e programa principal da maioria dos
outros programas C) contém a declaração: main(argc, argv, envp)
A chamada link permiti que o mesmo arquivo apareça sob dois ou mais
nomes, muitas vezes em diretórios diferentes.
Aqui há dois usuários, ast e jim, cada um com o seu próprio diretório
com alguns arquivos.
Se ast agora executa um programa contendo a chamada de sistema:
link(“/usr/jim/memo”, “/usr/ast/note”);
Aqui há dois usuários, ast e jim, cada um com o seu próprio diretório
com alguns arquivos.
o arquivo memo no diretório de jim estará aparecendo agora no diretório de ast sob o
nome note.
O que link faz é nada mais
que criar uma entrada de
diretório nova com um
nome (possivelmente
novo), usando o i-número
de um arquivo existente.