Planeamento Introdução ao Sistema Operativo UNIX Java: Ferramentas, Entradas/Saídas, Excepções Threads e Semáforos Problemas de Sincronização Jantar dos Filósofos, Leitores/Escritores, ... Sockets Stream Sockets Datagram Security Manager Projecto: Sincronização e Comunicação entre Processos Sistema UNIX Modularidade Facilidade em acrescentar/remover módulos Multitarefa Realização de várias tarefas (processos) ao mesmo tempo Multiutilizador Acesso ao computador por vários utilizadores ao mesmo tempo Portabilidade Comunicações Entre programas (IPC - Interprocess communications) Entre utilizadores Sistema UNIX O Kernel do UNIX é o núcleo do Sistema Operativo Aloca tempo e memória para os programas Faz a gestão de arquivos de comunicações em resposta a chamadas de sistema A Shell age como interface entre o utilizador e o núcleo C Shell (CSH) Prompt: % Bourne Shell Kernel Shell Sistema UNIX Em UNIX, tudo é um arquivo ou um processo Um processo é um programa em fase de execução identificado por um PID único (identificador de processo) Um arquivo é uma coleção de dados. São criados pelos utilizadores que usam os editores de texto, compiladores, linkers, etc... sun1% ls -la total 28 drwxr-xr-x drwxr-xr-x -rw-r--r--rw-r--r--rw-r--r--rw-r--r-- 2 3 1 1 1 1 pcampos pcampos pcampos pcampos pcampos pcampos aluno aluno aluno aluno aluno aluno 512 512 850 540 1297 907 Mar Mar Mar Mar Mar Mar 3 3 3 3 3 3 11:05 11:03 11:04 11:01 11:04 11:01 . .. KKMultiServer.class KKMultiServer.java KKMultiServerThread.class KKMultiServerThread.java Sistema UNIX A estrutura das directorias: Todos os arquivos se agrupam numa estrutura de directorias O sistema de arquivos é organizado numa estrutura hierárquica, como uma arvore invertida O topo da hierarquia é tradicionalmente chamado “raíz” (root) Directorias mais importantes: / root /boot arquivos de boot /unix ou /vmunix kernel do S.O. /bin ou /usr/bin executáveis principais /dev dispositivos, arquivos de E/S /etc arquivos para administração Sistema UNIX - Directorias ls (list schema) lista arquivos e directorias mkdir (make directory) cria directorias cd (change directory) muda para uma directoria diferente cd ~ • desloca o utilizador para a sua directoria home pwd (print working directory) pathnames (caminhos) Sistema UNIX - Arquivos cp (copy) copia arquivos mv (move) move arquivos rm (remove), rmdir (remove directory) apaga arquivos ou directorias cat (concat) mostra o conteúdo de um arquivo no écran grep pesquisa sobre o conteúdo de um arquivo Sistema UNIX - Redireccionamento comando comando > arquivo >> arquivo comando arq1 comando1 < arq2 | comando2 cat arq1 arq2 who > arq3 Redirecciona a saída de um comando para um arquivo Insere a saída de um comando no conteúdo de um arquivo Redirecciona a entrada para um arquivo A saída do comando1 é a entrada do comando2 Concatena os arquivos arq1 e arq2 gerando arq3 Lista os utilizadores “logados” actualmente no sistema Sistema UNIX - Permissões chmod altera os direitos de acesso Símbolo u g o a r w x + – Significado Utilizador [user] Grupo [group] Outros [other] Todos [all] Leitura Escrita Execução adiciona permissão retira permissão chmod go-rwx proj.java chmod a+rw proj.java Sistema UNIX - Processos ps Mostra os processo que estão em execução ps -u pcampos PID TTY 4221 pts/1 4255 pts/1 TIME CMD 0:00 csh 0:00 vi top é mais informativo... Processes: 44 total, 3 running, 41 sleeping... 118 threads 14:45:42 Load Avg: 0.41, 0.55, 0.54 CPU usage: 81.1% user, 18.9% sys, 0.0% idle SharedLibs: num = 120, resident = 36.6M code, 3.59M data, 7.79M LinkEdit MemRegions: num = 5959, resident = 142M + 10.1M private, 91.9M shared PhysMem: 54.1M wired, 65.7M active, 308M inactive, 428M used, 83.8M free VM: 2.48G + 90.2M 75141(0) pageins, 2945(0) pageouts PID 1062 1060 1059 COMMAND top tcsh login %CPU 9.4% 0.0% 0.0% TIME #TH #PRTS #MREGS RPRVT 0:02.81 1 16 26 284K 0:00.04 1 13 21 384K 0:00.04 1 13 37 144K kill Força a terminação de um processo RSHRD 436K 668K 428K RSIZE 1.74M 880K 504K VSIZE 27.1M 22.1M 26.9M Sistema UNIX - Outros... UNIX é Case-Sensitive Ctrl+C (^C) Cancela o processo que está em primeiro plano Ctrl+Z (^Z) Suspende o processo que está em primeiro plano man (manual) Fornece ajuda sobre os comandos e não só Editor pico e editor vi Telnet, SSH Java - Ferramentas Java 2 Platform, Standard Edition: http://java.sun.com/j2se/1.4.2/download.html JCreator LE: http://www.jcreator.com Eclipse IDE: http://www.eclipse.org Sistema UNIX - Exercícios 1. Crie um directório public_html na sua área de trabalho. 2. Use os comandos ls, pwd e cd para explorar o sistema de arquivos. (Lembre-se, caso se perca dentro do sistema de arquivos, digite cd sem argumentos para voltar à sua directoria home.) 3. Com recurso a um editor de texto, crie um ficheiro index.html: <html><head><meta http-equiv="Content-Language" content="pt"> <title>Página de Teste Criada na Aula 1 de Sistemas Operativo</title> </head> <body><p align="center">Página de web de teste.</p> <p align="center">Logo que possível actualizaremos esta página.</p> </body></html> 4. Mova o ficheiro criado para o interior do directório public_html. 5. Verifique o conteúdo o ficheiro através do comando cat index.html. 6. Com recurso ao comando grep, obtenha o número da linha que contém a palavra “web”, no ficheiro index.html. 7. Altere as permissões da directoria public_html, de modo que o ficheiro criado fique disponível na Internet.