cap6-sistemas-operacionais.asc 34.3 KB
Newer Older
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
1
[[cap_so]]
2
== Introdução aos Sistemas Operacionais
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
3

4
:cap: cap6
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
5
6

.Objetivos do capítulo
7
____
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
8
9
10
11
12
13
14
Ao final deste capítulo você deverá ser capaz de:

* Descrever as funções de um Sistema Operacional;

* Apresentar os principais fatos na evolução dos Sistemas Operacionais durante 
a evolução da arquitetura dos computadores;

15
* Descrever os principais conceitos de Sistema Operacional e como o mesmo 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
16
abstrai o uso do hardware de um computador.
17
____
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32


Um sistema computacional moderno consiste em um ou mais processadores, memória 
principal, discos, impressoras, teclado, monitor, interfaces de rede e outros 
dispositivos de entrada e saída. Enfim é um sistema complexo. Desenvolver 
programas que mantenham o controle de todos esses componentes e os utilizem 
corretamente e de maneira otimizada é um trabalho extremamente difícil. Por 
isso, os computadores têm um dispositivo de software denominado Sistema 
Operacional, cujo trabalho é gerenciar esses componentes e fornecer aos 
programas do usuário uma interface com o hardware mais simples.

A maioria dos usuários de computador já teve alguma experiência com um 
Sistema Operacional, mesmo assim é difícil reconhecer de modo preciso o que 
é um Sistema Operacional. Este problema ocorre porque os Sistemas Operacionais 
realizam basicamente duas funções não relacionadas: estender a máquina e 
33
gerenciar recursos. Este capítulo irá descrever suas principais funções para o usuário do computador.
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
34
35
36



37
=== Introdução
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
38
39
40
41

Sem o software, um computador seria um pedaço de metal sem uso. Muitos 
consideram o software como a alma do computador.

42
43
44
45
46
47
Existem dois tipos de software para computadores: 

Programas do sistema::
responsáveis por operações de gerenciamento do próprio computador, 

Programas aplicações:: implementados por usuários do computador para resolver 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
48
49
seus problemas específicos.

50
O principal programa do sistema é o ((Sistema Operacional)) (SO), responsável por 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
51
52
53
54
55
56
57
gerenciar o acesso aos recursos do computador e prover serviços extras da 
máquina. Nos computadores modernos, muitos são os dispositivos a serem 
gerenciados: um ou mais processadores, memória principal, terminais de acesso, 
disco rígido, interfaces de rede e etc. Imagine a complexidade de implementar 
um programa que faz uso de cada um destes dispositivos, controlando o acesso 
concorrente de outros programas para não interferir no resultado final do seu.

58
59
[[fig_so]]
.Recursos gerenciados pelo Sistema Operacional
60
image::images/{cap}/so-perifericos.eps[scaledwidth="60%"]
61
62


63

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
64
65
66
67
68
O leitor deve perceber que seriam programações muito complexas e é uma das 
funções do Sistema Operacional, permitir as aplicações de usuário o uso 
destes dispositivos de forma mais simplificada. Para isso, o Sistema 
Operacional fornece as aplicações, uma coleção de funções 
pré-programadas para atuarem sobre estes dispositivos, as chamadas do sistema 
69
(_((system calls))_).
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
70
71
72



73
74
[[fig_camdas]]
.Sistema de um computador: hardware, programas do sistema e aplicações.
75
image::images/{cap}/camadas.eps[scaledwidth="40%"]
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
76
77


78
Podemos observar na <<fig_camdas>> a arquitetura em camadas de um sistema 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
79
80
81
82
83
84
85
computacional. Na camada inferior encontram-se os circuitos integrados, fonte 
de energia, barramentos, placas de rede e etc.

Um conjunto de instruções é interpretado pela camada de Microprogramação. 
Esta camada conversa diretamente com os dispositivos providenciando 
funcionalidades para a camada acima através das instruções de máquina.

86
87
(((Sistema Operacional)))

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
88
A principal função da camada do Sistema Operacional é *diminuir a 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
89
complexidade e fornecer ao programador um conjunto de instruções de mais alto 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
90
nível*, sem a preocupação dos detalhes das instruções, como a 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
91
92
93
94
95
96
97
98
99
100
movimentação do cabeçote de leitura dos discos rígidos contidos na memória 
secundária para ler os dados de um programa em execução.

Acima do Sistema Operacional, existem outros programas do sistema, como os 
Compiladores, Editores e os Interpretadores de Comandos, que auxiliam as 
aplicações a fazerem uso das funcionalidades do Sistema Operacional. E por 
fim, a camada de aplicações, escritas pelos usuários para resolver seus 
problemas específicos, como processamento de imagens, serviços de 
comunicação na rede, aplicações comerciais, científicas e etc.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
101
[IMPORTANT]
102
Muitos confundem o Sistema Operacional com a sua interface gráfica. No Windows, 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
103
104
105
Sistema Operacional da Microsoft, existe um programa do sistema, chamado 
gerenciador de janelas, responsável por controlar as ações do usuário e 
ativar os recursos do Sistema Operacional, dando assim uma falsa impressão que 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
106
107
108
o mesmo seja o Sistema Operacional de fato. 

Para podermos definir bem a 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
109
110
111
112
fronteira do que é o papel do Sistema Operacional, elencamos e em seguida 
descrevemos suas duas principais funções: Extensão da Máquina e Gerenciador 
de Recursos.

113
==== O Sistema Operacional como uma Máquina Estendida
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
114
115
116
117
118

A arquitetura, conjunto de instruções, organizações de memória, E/S e 
estrutura de barramentos da maioria dos computadores em nível de linguagem de 
máquina é primitivo e de difícil programação.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
119
120
//TODO hj ninguem usa disquete, trocar o texto para HD.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
121
122
123
124
125
126
127
128
129
130
131
Examinando como é feita a E/S da unidade de discos flexíveis (disquete), são 
realizados inúmeros comandos para leitura e escrita de dados, movimentação 
do braço do disco e formatação de trilhas. Além da inicialização, 
sinalização, reinicialização e recalibração do controlador e das unidades 
de disquetes.

Sem entrar em detalhes de fato, é claro que um programador de nível médio 
provavelmente não se envolverá com os detalhes de programação das unidades 
de disco, em vez disso, busca lidar com essas unidades de modo mais abstrato e 
simples.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
132
Esse programa que oculta a ``verdade'' ao programador sobre o hardware e 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
133
134
135
136
137
138
139
apresenta uma visão simples é o Sistema Operacional, permitindo que o 
usuário trabalhe com o conceito de arquivos com nomes para dividir o disco.

Em todo caso a abstração oferecida pelo sistema operacional é mais simples e 
mais fácil de usar que a do hardware, oferecendo ao usuário o equivalente a 
uma máquina estendida.

140
==== Gerenciador de Recursos
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
141

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
142
143
144
O segundo trabalho do Sistema Operacional é fornecer uma *alocação ordenada e 
controlada* de processadores, memórias e dispositivos de E/S entre vários 
programas que *competem* por eles.
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
145
146
147
148
149
150
151
152
153
154
155
156

Imagine o que aconteceria se três programas em execução em algum computador 
tentassem imprimir suas saídas simultaneamente na mesma impressora. As 
primeiras linhas poderiam ser do programa 1, as linhas seguintes do programa 2 
e algumas outras do programa 3. O resultado seria uma confusão. O Sistema 
Operacional pode trazer ordem a essa confusão, armazenando temporariamente no 
disco todas as saídas destinadas à impressora, tratando a impressão de cada 
saída por vez.

Além disso, os usuários muitas vezes precisam compartilhar não somente 
hardware, mas também informação (arquivo, banco de dados e etc).

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
157
158
O gerenciamento de recursos realiza o compartilhamento destes recursos de duas maneiras:

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
159
Compartilhamento no tempo:: 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
160
Quando o recurso é compartilhado no tempo, 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
161
162
163
164
165
diferentes usuários aguardam sua vez para utilizar um recurso. Por exemplo, 
com somente uma CPU e múltiplos programas, o Sistema Operacional aloca a CPU a 
um programa, e depois que executou o suficiente, outro programa obtém seu uso, 
então outro e por fim o primeiro programa novamente.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
166
Compartilhamento no espaço::
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
167
168
169
170
171
172
No compartilhamento do espaço, os usuários não esperam a sua vez, cada um 
ocupa sua parte no recurso. Por exemplo, a memória principal é normalmente 
dividida entre vários programas em execução, assim, cada um pode residir ao 
mesmo tempo na memória.


173
=== Tipos de Sistemas Operacionais
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
174
175
176
177
178
179
180
181
182

Como vimos na seção anterior, muitos Sistemas Operacionais possuem 
características distintas devido à arquitetura do hardware em que irão 
executar. Esta seção traz alguns dos tipos de Sistemas Operacionais 
existentes descrevendo suas principais características

==== Computadores de Grande Porte

Estes computadores distinguem dos PCs em termos de capacidade de E/S. Possui 
183
milhares de discos com milhares de 'terabytes' de dados. Atualmente ressurgiram 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
184
185
186
como sofisticados servidores web e servidores para transações entre empresas.

Seus Sistemas Operacionais são, sobretudo, orientados para o processamento 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
187
188
189
190
simultâneo de muitos tarefas (_jobs_) com quantidades volumosas de E/S. Esses sistemas 
oferecem normalmente três tipos de serviços: em *lote* ('batch'), *processamento de transações* e *tempo compartilhado*.

// TODO explicar melhor os conceitos acima? lote/processamento de transações/tempo compartilhado
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215

==== Sistema Operacional de Servidores

Servidores são computadores pessoais grandes, estações de trabalho e até 
computadores de grande porte. Eles servem múltiplos usuários de uma vez em 
uma rede e permitem-lhe compartilhar recursos de hardware e software. Seu 
Sistema Operacional deve prover um bom gerenciamento de recursos, como 
serviços de impressão, serviços de arquivos ou serviços web.

==== Sistema Operacional de Multiprocessadores

Um módulo cada vez mais comum de obter potência computacional é conectar 
múltiplas CPUs em um único sistema. Dependendo da forma como são 
interligados os processadores e o que os mesmos compartilham, esses sistemas 
são denominados computadores paralelos, multicomputadores ou 
multiprocessadores. São Sistemas Operacionais com aspectos especiais de 
comunicação e conectividade.

==== Sistema Operacional de PC

Seu trabalho é oferecer uma boa interface para um único usuário. São 
amplamente usados para processadores de texto, planilha e acesso a internet.

==== Sistema Operacional de Tempo Real

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
216
Os Sistemas Operacionais de ((tempo real)) são caracterizados por terem o tempo 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
217
218
219
220
221
como um parâmetro fundamental. Por exemplo, em sistemas de controle de 
processos industriais é muito comum a existência de prazos rígidos para a 
execução de determinadas tarefas, podendo uma ação, ocorrendo em um momento 
incorreto, soldar uma região errada de uma peça, estragando o produto final.

Eduardo de Santana Medeiros Alexandre's avatar
tablet    
Eduardo de Santana Medeiros Alexandre committed
222
Existem dois tipos de Sistema Operacionais de tempo real:
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
223

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
224
Crítico::
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
225
226
Onde as ações precisam ocorrer em determinados instantes. 

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
227
Não crítico:: No qual o 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
228
229
230
231
232
descumprimento ocasional de um prazo é aceitável. Sistemas multimídia 
pertencem a esta última categoria.

==== Sistema Operacional Embarcado

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
233
((Sistemas embarcados)) são pequenos computadores, geralmente computadores de 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
234
mão, celulares e set-top-box para TV Digital. Realizam um pequeno número de 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
235
236
237
funções, seu Sistema Operacional deve lidar com restrições de *tamanho*, 
*memória* e *consumo de energia*.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
238
239
240
241
242
243
244
245
246
247

==== Sistema Operacional de Cartões Inteligentes

Sistemas de Cartões Inteligentes são dispositivos do tamanho de cartões de 
crédito que contém um chip de CPU. Possui restrições severas de consumo de 
energia e de memória. Alguns deles podem realizar apenas uma única função, 
como pagamentos eletrônicos, mas outros podem tratar múltiplas funções. O 
gerenciamento dos recursos e a proteção das mesmas são tratados pelo Sistema 
Operacional, geralmente muito primitivo, contido no cartão.

248
=== Conceitos de Sistemas Operacionais
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
249
250
251
252
253

Todos os Sistemas Operacionais têm certos conceitos básicos, como processos, 
memória e arquivos, que são fundamentais para entendê-los. Nesta seção 
iremos dar uma introdução sobre seus principais conceitos.

254
==== Processos
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
255

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
256
Um *((processo))* é basicamente um programa em execução. Associado a cada processo 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
257
está o seu espaço de endereçamento e uma lista de posições de memória que 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
258
259
260
este processo possui permissão para ler e escrever. Também associado a cada processo está um 
conjunto de ((registradores)), que inclui o ((contador)) de programa, o ponteiro para a 
((pilha de execução)) e demais informações necessárias para executar um 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
programa.

Em um sistema multiprogramado, a CPU salta de programa para programa, 
executando cada um deles por dezenas ou centenas de vezes por segundo. 
Estritamente falando, enquanto a cada instante a CPU executa somente um 
programa, no decorrer de um segundo ela pode trabalhar sobre vários programas, 
dando a ilusão de um verdadeiro paralelismo. Fala-se em pseudoparalelismo para 
contrastar com o real paralelismo dos sistemas multiprocessadores.

Quando um processo é suspenso temporariamente dessa maneira, ele deverá ser 
reiniciado mais tarde, exatamente do mesmo ponto em que ele estava quando foi 
interrompido. Logo, todas as informações relativas ao processo devem ser 
explicitamente salvas. Por exemplo, um processo pode ter vários arquivos 
abertos para leitura. Existe um ponteiro associado a cada um desses arquivos, 
que indica a posição atual, assim quando o processo retorna a execução, a 
chamada de sistema `read` sobre o arquivo poderá ler os dados corretamente de 
sua última posição manipulada.

Em muitos sistemas operacionais os dados relativos ao processo, que não 
estejam em seu espaço de endereçamento, são armazenados em uma tabela do 
Sistema Operacional chamada de tabela de processos, contendo uma entrada para 
cada processo.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
284
285
// TODO Ilustrar os dois ultimos paragrafos.

286
===== Estados de Processos
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
287
288

Os processos em um Sistema Operacional possuem três estados ilustrados na 
289
<<fig_transicao_de_estados>>, estes estados são:
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
290
291
292
293
294
295
296

Em execução:: realmente usando a  CPU naquele instante;

Pronto:: executável, temporariamente parado para dar lugar a outro processo;

Bloqueado:: incapaz de executar enquanto um evento externo esperado não ocorrer.

297
298
[[fig_transicao_de_estados]]
.Transição de estados de um processo.
299
image::images/{cap}/estados.eps[scaledwidth="60%"]
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
300
301


302
As transições entre os estados também estão ilustradas na <<fig_transicao_de_estados>>, estas 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
303
304
transições são:

305
1. Processo bloqueia aguardando uma entrada dos dispositivos de E/S.
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329

2. O escalador de processos seleciona outro processo.

3. O escalador de processos seleciona este processo.

4. A entrada torna-se disponível.

A transição 1 ocorre quando um processo descobre que ele não pode 
prosseguir. No UNIX, quando um processo lê de um arquivo especial e não há 
entrada disponível, o processo é automaticamente bloqueado.

As transições 2 e 3 são causadas pelo escalonador de processos sem que o 
processo saiba disso. A transição 2 ocorre quando o escalonador decide que o 
processo em execução já teve tempo suficiente de CPU e é momento de deixar 
outro processo ocupar o tempo de CPU. A transição 3 ocorre quando o 
escalonador define que é justo que o processo retorne a ser executado, após 
ter compartilhado a CPU com outros processos.

A transição 4 ocorre quando um evento externo pelo qual um processo estava 
aguardando (por exemplo, a chegada de uma dado vindo da placa de rede). Note 
que a transição 4 não leva o processo diretamente para o estado “Em 
Execução”, pois pode existir um outro processo em execução e este 
processo que estava bloqueado deve aguardar sua vez no escalonador.

330
331
332
===== Threads

(((Threads)))
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
333
334
335
336
337
338

Em Sistemas Operacionais tradicionais, cada processo tem um espaço de 
endereçamento e um único thread (fluxo) de controle. Na verdade, isso é 
quase uma definição de processo. Contudo, frequentemente há situações em 
que é desejável ter múltiplos threads de controle no mesmo espaço de 
endereçamento executando quase em paralelo como se fossem dois processos 
339
separados. Este conceito, chamado de multithread, pode ser observado na 
340
<<fig_processos_x_threads>>(b) a seguir.
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
341

342
343
[[fig_processos_x_threads]]
.(a)Três processos, cada um com um Thread de execução. (b) Um processo com três threads de execução.
344
image::images/{cap}/processXthread.eps[scaledwidth="60%"]
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
345

346
347
348
349
////
Faltou referenciar a parte b?
////

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
350
351
352
353
354
355
356
357
358
359
360
361
Threads distintos em um processo não são tão independentes quanto processos 
distintos. Todos os threads têm exatamente o mesmo espaço de endereçamento, 
o que significa que eles compartilham as mesmas variáveis globais.

Como os threads têm algumas das propriedades dos processos, eles são chamados 
de processos leves. É importante perceber que cada thread tem sua própria 
pilha de execução. Logo os estados dos processos são os mesmos para os 
threads, ocorrendo as mesmas transações de estados, como se cada thread fosse 
um processo separado. Havendo a necessidade de salvar o estado da pilha de 
execução de cada thread toda vez que o mesmo perder a vez na CPU, podendo 
futuramente retornar a execução no ponto em que foi interrompido.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
362
[IMPORTANT]
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
363
364
365
A vantagem de se criar thread está na rapidez de sua criação e no menor 
gasto de recursos do sistema para o mesmo.

366
==== Gerenciamento de memória
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
367

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
368
369
(((Memória, gerenciamento)))

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
370
371
372
373
374
375
376
377
378
379
380
O que todo programador deseja é dispor de uma memória infinitamente grande, 
rápida e não volátil, a um custo muito baixo. Infelizmente, a tecnologias 
atuais não comportam essas memórias. Por isso, a maioria dos computadores 
utiliza uma hierarquia de memórias, que combina: uma pequena quantidade de 
memória cache, volátil, muito rápida e de alto custo; uma grande memória 
principal (RAM), volátil com alguns gigabytes, de velocidade e custo médios; 
e uma memória secundária, constituída de armazenamento não volátil em 
disco, com centenas de gigabytes e custo baixo. Cabe ao Sistema Operacional 
coordenar a utilização dessas memórias.

A parte do Sistema Operacional, responsável pela gerência das hierarquias de 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
381
memória, é denominado *gerenciador de memória*. Sua função é manter o 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
382
controle de quais partes da memória estão em uso e quais não estão, 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
383
*alocando* memória aos processos quando precisam e *liberando* a memória quando 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
384
385
386
387
os processos terminam.

===== Monoprogramação

388
389
(((Monoprogramação)))

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
390
391
392
393
394
395
396
397
398
399
Quando se utiliza o esquema mais simples de gerenciamento de memória, a mesma 
é compartilhada entre o programa e o Sistema Operacional, e somente um 
programa é executado por vez.

Tão logo um usuário tecle um comando, o Sistema Operacional carrega o 
programa solicitado do disco na memória e o executa. Quando o processo 
finaliza, o Sistema Operacional espera por um novo comando. Ao receber um novo 
comando, carregará o novo programa na memória, no espaço de endereçamento 
ocupado pelo programa anterior.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
400
401
402
403
404
NOTE: Os antigos jogos do MS-DOS funcionavam assim. Quando um jogo era iniciado,
nenhum outro aplicativo poderia ser executado. O jogo tinha exclusividade de 
acesso a toda memória do usuário. Para acionar outro programa era necessário
sair do jogo.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
405
406
===== Multiprogramação

407
408
(((Multiprogramação)))

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
409
410
411
412
413
414
415
416
A maioria dos sistemas modernos permite a multiprogramação, onde múltiplos 
processos estejam em execução simultânea, coexistindo na memória principal, 
através do particionamento da memória entre os processos. Das técnicas de 
compartilhamento e gerenciamento desta memória a mais utilizada nos 
microcomputadores é a Memória Virtual.

===== Memória Virtual

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
417
O conceito básico da *((Memória Virtual))* é que um programa pode está com sua 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
418
parte ativa em memória e o restante em disco, por exemplo, um programa com 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
419
1 GB de memória pode rodar em um computador de 512 MB de memória, sendo parte do 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
420
421
422
423
424
425
programa dinamicamente carregado em memória de acordo com a necessidade de 
execução.

Na multiprogramação vários programas podem ter pedaços ativos deles em 
memória, enquanto o resto se encontra em disco. Ficando como responsabilidade 
do Sistema Operacional o controle de indicar que programas devem ficar na 
426
memória e quais devem ficar em disco, chaveando estes programas a medida que 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
427
428
forem sendo exigidos pelo usuário.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
429
430
431
432
433
434
435
NOTE: Por isso é lento alternar entre aplicativos quando temos
vários aplicativos abertos, pois os outros provavelmente estarão na
memória virtual. Para acessar esses aplicativos o SO terá
que salvar o aplicativo atual no disco, liberando espaço na memória principal,
e carregar o aplicativo selecionado da memória virtual para a memória principal,
restaurando seu estado anterior.

436
437
438
==== Entrada/Saída (E/S)

(((Entrada & Saída)))
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
439
440
441

O Sistema Operacional deve controlar todos os dispositivos de E/S de um 
computador. Deve emitir comandos para os dispositivos, interceptar 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
442
*((interrupções))* e tratar os erros, deve também fornecer uma interface simples e 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
443
444
445
446
447
fácil de usar, na medida do possível, esta interface deveria ser a mesma para 
todos os dispositivos. Ou seja, para o usuário ler dados de um arquivo ou de 
um dispositivo de rede as chamadas ao sistema são iguais, mudando apenas os 
parâmetros de entrada.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
448
449
// TODO explicar interrupções

450
451
452
453
454
455
456
457
458
[NOTE]
.Interrupção
====
Uma interrupção é um sinal de um dispositivo que tipicamente resulta em uma troca de 
contexto, isto é, o processador para de fazer o que está fazendo para atender o 
dispositivo que pediu a interrupção. Para saber mais consulte: http://pt.wikipedia.org/wiki/Interrupções
====    


Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
459
460
461
===== Dispositivos de E/S

Os dispositivos de E/S podem ser de modo genérico, divididos em duas 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
462
categorias: 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
463

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
464
Dispositivos de blocos:: 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
465
466
467
468
469
470
Um dispositivo de bloco é aquele que armazena informação em blocos de 
tamanho fixo, cada um com seu próprio endereço. Os tamanhos de blocos variam 
de 512 bytes a 32.768 bytes. A propriedade essencial de um dispositivo de 
blocos é que cada bloco pode ser lido ou escrito independente de todos os 
outros. Discos são dispositivos de blocos mais comuns.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
471
472
Dispositivos de caractere::
Envia ou recebe um fluxo de caracteres, sem considerar qualquer estrutura de blocos. 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
473
Ele não é endereçável e não dispõe de qualquer operação de 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
474
475
posicionamento. Impressoras, teclado, interface de rede, mouses e a maior parte de 
outros dispositivos (diferentes dos discos) são considerados dispositivos 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
476
477
478
de caractere.


479
480
481
==== Sistema de Arquivo

(((Sistema de Arquivo)))
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
482
483
484
485
486
487

Um problema em manter a informação dentro do espaço de endereçamento do 
processo é quando o mesmo termina, e sua informação é perdida. Em muitas 
aplicações a informação precisa ficar retida por semanas, meses ou até 
para sempre.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
488
489
490
491
492
493
A solução usual para esse problema é armazenar a informação em disco, 
em unidades chamadas arquivos. Chamadas ao sistema são obviamente necessárias 
para criar, remover, ler e escrever arquivos.footnote:[Alguém poderia
pensar que a solução de armazenamento seria banco de dados ao invés de arquivos,
no entanto, os bancos de dados utilizam arquivos internamente.]
Antes que possa ser lido, um 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
494
495
496
497
arquivo deve ser localizado no disco, aberto e depois de lido, fechado. Desse 
modo, chamadas ao sistema são fornecidas para realizar estas tarefas.

Para ter um local para guardar os arquivos, a maioria dos Sistemas Operacionais 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
498
fornece o conceito de diretório (ou pasta) como um modo de agrupar arquivos. São 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
499
500
501
necessárias chamadas ao sistema para criar e remover diretórios. São também 
fornecidas chamadas para colocar um arquivo em um diretório e removê-los de 
lá. Entrada para diretórios também podem ser outros diretórios, formando 
502
uma hierarquia de diretórios como ilustrado na <<fig_sistema_de_arquivos>>.
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
503

504
505
[[fig_sistema_de_arquivos]]
.Sistema de Arquivos de um computador pessoal.
506
image::images/{cap}/hierarquiaArquivos.eps[scaledwidth="60%"]
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
507
508


Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
509
////
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
510
Antes que possa ser lido ou escrito, um arquivo precisa ser aberto e, nesse 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
511
512
513
514
515
516
momento as permissões são verificadas. 
Se o acesso ao arquivo, pelo usuário, 
for permitido, o sistema retorna um *((descritor de arquivo))* que poderá ser usado em
operações subsequentes para manipular o arquivo. Se o acesso for proibido, um código de erro é retornado.
////

Eduardo de Santana Medeiros Alexandre's avatar
redes    
Eduardo de Santana Medeiros Alexandre committed
517
Os sistemas de arquivos também são responsáveis por controlar as *((permissões de acessos))*
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
518
519
520
521
522
523
aos arquivos e diretórios. Através dele é possíveis especificar os usuários e grupos
de usuários com seus respectivos direitos de acesso para cada arquivo ou diretório. Os
direitos de acesso são: somente leitura, leitura e escrita ou sem acesso. 

NOTE: Se um usuário não possui permissão de leitura para um determinado arquivo ele
não poderá manipulá-lo. 
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
524

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
=== Conteúdos complementares

==== Evolução dos Sistemas Operacionais 

A história dos Sistemas Operacionais está diretamente ligada a arquitetura 
dos computadores em que os mesmos iriam executar. Nesta seção iremos abordar 
alguns exemplos desta evolução casada entre o hardware e o software.

===== Computadores a Vácuo (1945-1955)

Durante a segunda guerra mundial uma aceleração na evolução dos 
computadores ocorreu devido à necessidade de aplicações que pudessem quebrar 
a codificação das mensagens dos inimigos.

Neste período alguns pesquisadores como John Von Newman em Princeton, Konrad 
Zuse na Alemanha e Howard Aiken em Harvad construíram dispositivos capazes de 
computar através de tubos a vácuo, sendo estes equipamentos grandes o 
bastante para ocupar salas inteiras.

Nesta geração as instruções eram dadas diretamente em código de máquina. 
Não havia linguagem de programação (nem mesmo linguagem de montagem). E os 
Sistemas Operacionais não tinham qualquer funcionalidade, ou seja, não 
existiam.

===== Transistores e Sistemas em Lote (1955-1965)

(((Transistores)))

Com o surgimento dos transistores, os computadores se tornaram confiáveis e 
passaram a ser comercializados, isto em meados da década de 50.

O computador passou a ter mais clara a separação dos papeis de seus atores: 
os projetistas do computador, programadores e os operadores da máquina. Antes 
estes papeis eram realizados pelos mesmos desbravadores da Computação.

Para executar um programa, o programador desenvolvia seu algoritmo e entregava 
o cartão contendo seu código ao operador. O operador era responsável por 
entrar com o cartão no computador e acionar sua computação, ao final, a 
saída era impressa e o resultado entregue de volta ao programador.

Como os computadores iniciais eram muito caros, uma empresa compartilhava seus 
diversos processos em uma única máquina, para isso, desenvolveu-se o conceito 
de sistema em lote.

O *((sistema em lote))* trabalhava com fitas magnéticas que possuíam diversos 
programas a serem executados em sequencia. Um programa especial (ancestral do 
Sistema Operacional) carregava cada programa da fita, executava o programa e 
enviava sua saída para a impressora. Após o encerramento deste programa o 
sistema configurava a próxima atividade para entrar em execução. Este ciclo 
se repetia até acabarem todas as atividades do lote.

===== Circuitos Integrados e Multiprogramação (1965-1980)

(((Circuitos Integrados))) (((Multiprogramação)))

No início da década de 60, os computadores passaram a ter duas utilizações 
no mercado: os computadores científicos de larga escala para a ciência e a 
engenharia e os computadores comerciais adotados por bancos, companhias de 
seguro e departamentos de recursos humanos.

O principal responsável pela sua popularização foi a adoção da tecnologia 
de Circuitos Integrados que diminuiu o tamanho e o preço dos computadores. O 
IBM 360 foi o principal computador adotado pelos dois filões do mercado.

A principal mudança para os Sistemas Operacionais foi a criação da 
Multiprogramação, permitindo que vários programas pudessem compartilhar a 
memória principal ao mesmo tempo, cada uma com seu espaço reservado na 
memória, compartilhamento do espaço (<<fig_compartilhar_tempo_espaco>>(a)), 
podendo estas atividades serem executadas ao mesmo tempo.


[[fig_compartilhar_tempo_espaco]]
.Multiprogramação em um Sistema Operacional, tipos de compartilhamento dos recursos do computador.
598
image::images/{cap}/Compart_tempo_espaco.eps[scaledwidth="60%"]
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634


Entretanto os computadores desta época não tinham mais de um núcleo de 
processamento (processador), logo era de responsabilidade do Sistema 
Operacional, dividir o uso do único processador com os diversos programas em 
execução durante pequenas frações de tempo, compartilhamento do tempo 
(<<fig_compartilhar_tempo_espaco>>(b)).

===== Computadores Pessoais (1980-1995)

(((Computadores Pessoais)))

Com o advento dos minicomputadores na década de 80, o computador passou a ser 
usado na vida privada das pessoas, passou-se a comprar computadores como se 
comprava vídeo cassete, surgindo assim o conceito de Computador Pessoal 
(Personal Computer - PC).

A popularização do computador se deu pelas interfaces gráficas propostas 
pelos Sistemas Operacionais, permitindo que leigos da área pudessem manipular 
suas aplicações pessoais, sem o auxílio dos antigos operados de máquina.

Os principais Sistemas operacionais da época foram o MS-DOS, precursor do 
Windows da Microsoft, o Unix, base para as diversas distribuições do Linux, 
Sistema Operacional aberto ao público (podendo usa-lo e modificar seu código) 
e o Mac OS, sistema criado pela Apple que trouxe a revolução na Interface 
Gráfica, adotado até hoje nos Sistemas Operacionais modernos.

No final da década de 80, começou-se a criar Sistemas Operacionais para 
manipular computadores interligados por redes de comunicação, chamados 
Sistemas Operacionais de Rede ou de Sistemas Distribuídos. Nele o usuário 
passou a controlar diversos computadores ao mesmo tempo, podendo até se logar 
em um computador remoto, localizado a quilômetros de distância, e controla-lo 
como se estivesse usando seu teclado ou mouse local.

==== A Guerra dos Sistemas Operacionais

635
image::images/{cap}/appleXmicrosoft.eps[scaledwidth="60%"]
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676

Na década de 70 dois jovens estudantes tiveram visões distintas sobre o 
futuro dos computadores, na época dominada por grandes computadores da poderosa 
IBM. Seus nomes Steven Jobs e Bill Gates. O primeiro entendeu que o computador 
deveria ser usado por pessoas comuns para auxiliá-los em tarefas do trabalho e 
de casa, criando assim o conceito de Computador Pessoal, materializado pelo 
lançamento do Apple 2 no ano de 1977, que passou a ser o nome de sua empresa, 
a atual gigante Apple. Sua proposta era ter controle total sobre o 
desenvolvimento do computador, sendo responsável pelo projeto do hardware e do 
software. Inicialmente o design de seus produtos fizeram muito sucesso e a 
interface gráfica de seu sistema operacional (Mac OS), adota da empresa Xerox, 
foi tão revolucionária que grupos de usuários passaram a se intitular fãs 
dos produtos e seu mentor o profeta da revolução da Computação que iria 
livrar o mundo da opressão dos grandes computadores da IBM.

O segundo criou a Microsoft, e tinha uma visão mais voltada para o software, o 
seu Sistema Operacional, o Windows, foi pensado para funcionar em qualquer 
hardware,  fato que diminuiu a qualidade do mesmo. Entretanto aliado à 
funcionalidade da interface gráfica, copiado dos produtos da Apple, a um 
conjunto de aplicações muito funcionais nas empresas e em trabalhos 
domésticos como o Word, Excel, Powerpoint e etc (``Killed Applications''), o 
Sistema Operacional dos computadores comerciais por muito tempo passou a ser 
sinônimo de Windows. Na década de 90 a Microsoft se torna a maior empresa de 
informática do mundo, tornando seu dono o homem mais rico do planeta. Nada mal 
para um estudante pobre que só vendia software.

A disputa entre Jobs e Gates tinha se tornada pública, e na década de 90 a 
aposta total no software parecia ter sido declarada como campeã. Steven Jobs 
fora demitido da sua própria empresa e chegou a trabalhar no ramo da 
animação, tendo como frutos a empresa Pixel, hoje um renomado estúdio de 
desenhos animados, criadora do famoso desenho Toy Story.

No final da década de 90 Jobs retorna a Apple, e com sua capacidade de 
inovação e a busca constante pela perfeição no design de seus produtos 
sempre pensando na interface com o usuário, a Apple lança em série novos 
produtos revolucionários, o iPod, iPhone e iPad, além de uma série de 
computadores pessoais e seus notebooks sempre elegantes e modernos.  A ideia de 
ter o controle sobre o projeto do hardware influenciando o projeto do software 
permitiu que na primeira década do século XXI a Apple tomasse o posto de 
maior empresa de informática da Microsoft, chegando em 2012 a valer o dobro da 
concorrente. O iPod (tocador de música em mp3) foi o equipamento eletrônico 
Eduardo de Santana Medeiros Alexandre's avatar
tablet    
Eduardo de Santana Medeiros Alexandre committed
677
678
679
680
mais vendido da história, desbancando o posto do Walkman da Sony. 
O tablet iPad com seus jogos, aplicativos, design e usabilidade
tem conquistando um mercado que era exclusivo dos computadores.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
681
682
683
684
685
686
687
688
689
690
691
692
693
694
Agora sem o comando de Gates a Microsoft quer voltar a ser a empresa inovadora 
de antes, mas para isso tem que percorrer o caminho já trilhado por suas 
concorrentes. Em 2012 a Microsoft lançou seu primeiro computador, chamado 
Surface, um híbrido de notebook e tablet e para controlar seu hardware foi 
desenvolvido um novo Sistema Operacional, o Windows 8, com boa aparência mas 
com a velha obsessão da Microsoft de colocar seus softwares para serem 
compatíveis com vários hardwares, logo o Windows 8 foi adaptado para telas de 
toque e computadores com teclado e mouse, o que leva o usuário a confusões de 
navegabilidade.

O importante é que nesta briga ganham os usuários, com novas ferramentas mais 
amigáveis e novas funcionalidade para os dispositivos que um dia serviam 
apenas para cálculos científicos ou contabilidades empresariais.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
695

696
=== Recapitulando
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
697
698
699
700
701
702
703
704
705
706
707
708
709

Neste capítulo introduzimos o conceito de Sistema Operacional, descrevendo 
suas duas principais funções paras os programadores de aplicações: 
Extensão da Máquina e Gerenciamento dos Recursos da máquina. Analisamos a 
evolução dos Sistemas Operacionais na história, ligados a evolução da 
arquitetura dos computadores a eles associados e ainda identificamos os tipos 
de Sistemas Operacionais baseado nas necessidades de cada arquitetura.

Por fim, descrevemos os principais conceitos de um Sistema Operacional na 
visão de seus usuários, estes conceitos são: Processos, Thread, seus estados 
e transições; Gerenciamento de Memória e Sistemas de Arquivos.


710
711
// FIXME Faltando ponte para o próximo capítulo.

Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
712

713
=== Atividades
Eduardo de Santana Medeiros Alexandre's avatar
so    
Eduardo de Santana Medeiros Alexandre committed
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737

1. Quais as principais funções de um Sistema Operacional? Para quem se 
destinam estas funções?


2. Descreva o que é um Processo. Quais seus possíveis estados? Quais são as 
transições entre estes estados?


3. Descreva três tipos de Sistemas Operacionais, destacando suas principais 
funções para a arquitetura do computador que o mesmo executa.


4. Durante a programação de uma aplicação de usuário, para que serve o uso 
de chamadas de sistema (system calls)?


5. Como o Sistema Operacional abstrai o uso dos dispositivos de E/S? Quais são 
os dois tipos de dispositivos de E/S manipulados pelo Sistema Operacional?


6. Qual a função do Sistema de Arquivo no Sistema Operacional?