Diferentes Tipos de Software Quem são estes Senhores? Overview Sistemas Operativos Steve Jobs Bill Gates Linus Torvalds Device Drivers Sistemas Informáticos Bill Joy Dennis Ritchie SLIDES 6 Funções do Sistema Operativo Ken Thompson Andrew Tanenbaum Virtualização do Processador/Dispositivos Esconder os detalhes do hardware subjacente ao sistema Gestão de memória Gestão de dispositivos genéricos Gestão de dispositivos de armazenamento (discos/etc.) Segurança Dois aspectos fundamentais... Multiprogramação Processadores Virtuais (... máquinas virtuais...) “Virtualizar” a utilização do processador e dos recursos associados à máquina Cada programa corre sobre a aparência de ser o único no sistema O sistema operativo fornece um interface unificado aos dispositivos da máquina Virtualização da Máquina Trata-se de uma técnica de manter múltiplos programas em memória simultaneamente. Cada programa executa como se fosse o único existente na máquina. Gestão de Memória Processador Real Em qualquer altura o Sistema Operativo tem de saber que programas estão em memória e onde é que cada um deles reside 1 Conceito de Processo Histórico: batch processing Um programa em execução com... Timesharing system A system that allows multiple users to interact with a computer at the same time Multiprogramming A technique that allows multiple processes to be active at once, allowing programmers to interact with the computer system directly, while still sharing its resources In a timesharing system, each user has his or her own virtual machine, in which all system resources are (in effect) available for use Um identificador único Recursos próprios (e.g. ficheiros abertos) Um espaço de endereçamento (i.e. memória própria protegida de todos os outros “processos”) MS Word (1 processo) MS Excel (1 processo) Comutação entre Processos Comutação de Processos De alguns em alguns ms é gerada uma “interrupção” Quanto existe uma interrupção, deixa-se de executar o código do utilizador e passa-se a executar o código do sistema operativo O sistema operativo pode então comutar para outro processo (escalonamento preemptivo) Nível do Utilizador total = 0; for (int i=0; i<20000; i++) total = total + i; printf(“total=%d\n”, total); while (!feof(fd)) { if (fscanf(fd, “%d”, &d) == 1) printf(“%d\n”, d); } Timesharing Ciclo de Vida de um Processo Terminated New Ready (to execute) Dispatch Interrupt (...) Running I/O or event waiting Nível do Kernel RTC Interrupt Handler Blocked (waiting for something) End of I/O or event completed 2 Filas do Sistema Operativo Ready Queue Fila onde aguardam todos os processos que estão à espera de executar Blocked Queue Fila onde aguardam todos os processos que estão à espera que uma operação de entrada/saída complete ou de um “evento especial” Escalonamento de Processos Round Robin Suponhamos que existem vários processos na Ready Queue.... Como é que se decide qual é que executa a seguir? Existem diversos algoritmos. Um bastante conhecido é o Round-Robin É decidido à priori qual a fatia de tempo a atribuir a cada processo. Timeslice ou Quantum de Execução Running (não é uma fila) A “Ready Queue” é um lista ordenada Processo que se encontra a executar Apenas este processo o Sistema Operativo ocupam tempo de processador Cada processo executa até se esgotar o seu timeslice. Quando isso acontece, é colocado no final da ready queue O próximo processo a executar é o que está à frente na ready queue Bootstrap process Gestão de Memória Ver Slides_6B: Escalonamento Processos 3 Endereços de Memória Endereços Lógicos e Físicos Endereço Virtual Endereço Físico Endereço Lógico: especifica um endereço que é visto pelo programa que deverá ter alguma correspondência com um endereço físico. Endereço Físico: endereço real/absoluto na memória principal. Endereços Lógicos e Físicos Gestão de Memória Particionamento de Memória Base register A register that holds the beginning address of the current partition Bounds register A register that holds the length of the current partition Fixed partitions Main memory is divided into a particular number of partitions. Dynamic partitions Partitions are created to fit the needs of the programs. 4 Fixed Partitioning Placement Algorithms with Partitions Equal-size partitions Equal-size partitions any process whose size is less than or equal to the partition size can be loaded into an available partition. if all partitions are full, the operating system can swap a process out of a partition. a program may not fit in a partition. The programmer must design the program with overlays. because all partitions are of equal size, it does not matter which partition is used Unequal-size partitions can assign each process to the smallest partition within which it will fit queue for each partition processes are assigned in such a way as to minimize wasted memory within a partition The use of main memory is inefficient. No program occupies an entire partition. This is called internal fragmentation. Dynamic Partitioning Partitions are of variable length and number. Process is allocated exactly as much memory as required. Eventually get holes in the memory. This is called external fragmentation. Must use compaction to shift processes so they are contiguous and all free memory is in one block. 5 Memory Compaction To merge the memory blocks and reduce memory holes caused by external fragmentation. Time-consuming task.... Placement Algorithm: Best-Fit Best-fit algorithm Chooses the block that is closest in size to the request. Worst performance. Since it finds the smallest block it produces the smallest amount of fragmentation. Memory compaction must be done more often. Placement Algorithm: Worst-Fit Worst-fit algorithm Chooses the largest available block. The fragmentation area can be used for another request. Dynamic Partitioning: Placement Algorithms Operating system must decide which free block to allocate to a process. Four algorithms: Best-Fit; First-Fit; Next-Fit; Worst-Fit Placement Algorithm: First-Fit First-fit algorithm Begins to scan memory from the beginning and chooses the next available block that is largest enough. Fastest. May have many process loaded in the front end of memory that must be searched over when trying to find a free block. Analysis of First-Fit Algorithm: For every N allocated blocks, there are another 0.5N blocks that will be lost due to fragmentation -> 1/3 of memory will be unusable... 6 Placement Algorithm: Next-Fit Buddy System Entire space available is treated as a single block of 2U. If a request of size s such that 2U-1 < s <= 2U, entire block is allocated. Next-fit Begins to scan memory from the location of the last placement and chooses the next available block that is largest enough. Otherwise block is split into two equal buddies. Process continues until smallest block greater than or equal to s is generated. Worst-Fit Exercícios Gestão Memória 7 Exercício Exercício Considere que tem um sistema de memória com as seguintes partições pela seguinte ordem: 100kb, 500kb, 200kb, 300kb, 600kb, 400kb. - Qual o resultado de execução dos algoritmos Best-Fit, First-Fit, Worst-Fit para a seguinte ordem de pedidos: 212kb, 417kb, 112kb, 526kb, 12kb Para cada um dos algoritmos indique o total de fragmentação. E se tivesse uma memória de 2Mb e o algoritmo Buddy-system, qual seria o resultado da execução para aquela ordem de pedidos? Protecção de Memória Considere a técnica de Buddy System para gestão de memória. Admitindo que a memória total é de 512kbytes. Apresente a simulação do algoritmo, “step-by-step” e indique a valor total de fragmentação interna em cada passo, considerando a seguinte lista de pedidos: A: request 88k B: request 156k C: request 22k D: request 54k E: request 312k --- release C,A F: request 136k --- release D G: request 206k É absolutamente fundamental que cada processo não possa aceder à memória dos outros processos Questão de segurança de dados Protecção contra “ponteiros” perdidos e bugs de software Grande problema dos Windows 95, 98 e Macs antigos! Em caso de inexistência de espaço na memória principal considere a existência de swapping para memória virtual e a aplicação do algoritmo LRU. Memória Segmentada “Real” A cada processo corresponde um endereço base e um limite (registos especiais no processador) Sempre que existe um acesso a memória, o processador verifica se o processo se encontra a aceder à sua memória ou não 71433 70000 60530 50060 Processo B MOV AX, [60000] ERRO, Acesso proibido! GPF e Segmentation Faults! ☺ Memória Virtual Actualmente, todos os sistemas utilizam o conceito de memória virtual Cada processo vê toda a memória do computador, como sendo dele Quando um processo gera um endereço, esse endereço é virtual. O processador, com a ajuda do sistema operativo transforma-o num endereço físico 4Gb 4Gb Disco 5000 Processo A MOV AX, [50124] OK, dentro do espaço de endereçamento 1000 1000 0 0 256Mb 0 Espaço de endereçamento do processo A Espaço de endereçamento do processo B Tabela(s) de Tradução de Endereços 0 Memória física 8 Memória Virtual Paginada O sistema mais utilizado nas máquinas actuais Funciona tal como o esquema indicado anteriormente, com os seguinte pormenores A memória física é dividida em pequenos pedaços chamados páginas (e.g. 4Kbytes) A memória de cada processo também é dividida em páginas Existe uma tabela de páginas por cada processo, que é gerida pelo sistema operativo. É utilizando esta tabela que é feita a tradução dos endereços virtuais em endereços físicos Sempre que é colocado outro processo em execução, a sua tabela de páginas é carregada. Address Translation Scheme Paginação de Memória Paginação de Memória Paged memory technique A memory management technique in which processes are divided into fixed-size pages and stored in memory frames when loaded into memory Frame A fixed-size portion of main memory that holds a process page Page A fixed-size portion of a process that is stored into a memory frame Page-map table (PMT) A table used by the operating system to keep track of page/frame relationships Paging: Address Translation To produce a physical address, you first look up the page in the PMT to find the frame number in which it is stored Then multiply the frame number by the frame size and add the offset to get the physical address Figure 10.7 A paged memory management approach Paging Example Address generated by CPU is divided into: Page number (p) – used as an index into a page table which contains base address of each page in physical memory. Page offset (d) – combined with base address to define the physical memory address that is sent to the memory unit. Page number (p) – used as an index into a page table which contains base address of each page in physical memory. Page offset (d) – combined with base address to define the physical memory address that is sent to the memory unit. 9 Free Frames Page Tables for Example Logical-to-Physical Address Translation Exercícios Paginação 10 Exercício Page Swapping Considere um computador com 256Mbytes de memória real, que usa um esquema de memória virtual de 2Gbytes, baseado em Paginação, e onde o número das páginas ocupam os 20 bits mais significativos do endereço virtual. (a) (b) (c) Qual o total máximo de páginas? Qual o tamanho de cada página? Se uma PTE (Page Table Entry) ocupar 8 bytes quantas páginas ocupa a Tabela de Páginas? Qual será o tamanho máximo dessa Tabela. Swapping Swapping Demand paging An important extension of paged memory management Not all parts of a program actually have to be in memory at the same time In demand paging, the pages are brought into memory on demand Page swap The act of bringing in a page from secondary memory, which often causes another page to be written back to secondary memory Memória Virtual Need for Page Replacement A process can be swapped temporarily out of memory to disk, and then brought back into memory for continued execution. Major part of swap time is transfer time; total transfer time is directly proportional to the amount of memory swapped. Example: disk: transfer rate memory to swap: Time it takes to swap out: Average disk latency: Time to swap-out/swap-in: 5Mb/sec 1 Mb 1/5 sec = 200 msec 8 msec 416 msec 11 Basic Page Replacement 1. Find the location of the desired page on disk. 2. Find a free frame: - If there is a free frame, use it. - If there is no free frame, use a page replacement algorithm to select a victim frame. - If victim is dirty write back to disk 3. Read the desired page into the (newly) free frame. Update the page and frame tables. 4. Restart the process. Trashing Example Trashing Se um processo não tem páginas “suficientes”, o ritmo de faltas de página aumenta muito. Isto é caracterizado pelo comando vmstat: Baixa taxa de ocupação do CPU. Grande número de operações de I/O sobre o disco de paginação. Poucas “frames”livres. Thrashing ≡ o processo está praticamente sempre à espera que o SO carregue páginas (page-in) e a transferir páginas (page-out) de/para o disco. Exercício Considere que tem um sistema operativo com um determinado valor limite no grau de multiprogramação e que a taxa de utilização de CPU e disco foram medidas nos seguintes 3 cenários: (a) CPU usage [11%]; Disk usage [98%] (b) CPU usage [92%]; Disk usage [5%] (c) CPU usage [12%]; Disk usage [3%] Para cada um dos três casos, indique o que poderá estar a acontecer, indique se pode aumentar o número de processos para ocupar mais a CPU e se o mecanismo de paginação deverá estar ou não a melhorar a performance. Localidade Temporal e Espacial Para evitar a ocorrência de trashing é preciso que os programas explorem bem a localidade dos dados mantidos em cache. Localidade Temporal Localidade Espacial 12 Hierarquia de memória Exemplo: dois programas... Princípio da localidade espacial: Quem escreveu o programa A? E o programa B? Se eu acedi a estes dados, é provável que aceda aos dados que estão próximos (e.g. uma imagem) Princípio da localidade temporal: Se eu acedi à pouco tempo a estes dados, é provável que lhes vá aceder dentro de pouco tempo Velocidade Preço Registos ~128x 32bits Cache int A[][] = new int[128][128]; int i,j; int A[][] = new int[128][128]; int i,j; // page size = 512 bytes // each row is stored in one // page // page size = 512 bytes // each row is stored in one // page // Programa A for (j = 0; j < 128; j++) for (i = 0; i < 128; i++) A[i][j] = 0; // Programa B for (i = 0; i < 128; i++) for (j = 0; j < 128; j++) A[i][j] = 0; ~512Kbyte Memória Central (RAM) ~512Mbyte Memória de Massa (Disco) ~60Gbyte José Peseiro Tamanho Exercício Page Faults int A[][] = new int[128][128]; int A[][] = new int[128][128]; // Programa A for (j = 0; j < 128; j++) for (i = 0; i < 128; i++) A[i][j] = 0; // Programa B for (i = 0; i < 128; i++) for (j = 0; j < 128; j++) A[i][j] = 0; 128 x128 = 16,384 page faults 128 page faults Considere que tem duas matrizes: - int A[4][400]; - int B[4][400]. O tamanho da página neste sistema é 800 bytes e um inteiro ocupa 4 bytes. O sistema tem N Page-Frames, mas o primeiro page-frame é usado pela página 0, que contém o código. Os outros (N-1) Page-frames estão vazios no ínicio. O sistema faz uso do algoritmo LRU e do ModifyBit para troca de páginas. int A[][] = new int[128][128]; int A[][] = new int[128][128]; // Programa A for (j = 0; j < 128; j++) for (i = 0; i < 128; i++) A[i][j] = 0; // Programa B for (i = 0; i < 128; i++) for (j = 0; j < 128; j++) A[i][j] = 0; // Programa A // Programa B for(i=0;i < 4; i++) for(j=0; j < 400; j++) A[i][j]=B[i][j]; for(j=0;j < 400; j++) for(i=0; i < 4; i++) A[i][j]=B[i][j]; Se o número de Page-Frames for igual a cinco (N=5) quantos PageFaults e quantos Swap-Outs serão gerados pelo Programa A? e pelo Programa B? 128 x128 = 16,384 page faults 128 page faults 13 Para saber mais... Computer Science, An Overview Capítulo 3 (3.1, 3.2, 3.3) Computer Science Illuminated Capítulo 10 (10.1, 10.2, 10.3, 10.4) 14