Free Essay

Structs

In:

Submitted By fabio6810
Words 4894
Pages 20
Objectivos

Interfaces Utilizador
Utili

Descrever os serviços que o
SO fornece aos utilizadores, aplicações e outros sistemas

System Calls
Tipos de System Calls

Apresentar as várias as várias arquitecturas de um sistema operativo Programas Sistema
Design e Implementação do
Sistema Operativo

Explicar como os SO são os SO são instalados, configurados e gerados Arquitectura de Sistemas
Operativos
Máquinas Virtuais
Virtuais
Geração do Sistema Operativo

Operating System Concepts

2.2

Silberschatz, Galvin and Gagne ©2005

Serviços
Serviços do Sistema Operativo
Os serviços mais evidentes do SO são as funções directamente relacionadas com utilizador relacionadas com o utilizador:
Interface Utilizador – quase todos os SOs fornecem um tipo de UI
Command-Line Interpreter (CLI)
Graphics User Interface (GUI)
Batch
Execução de programas – o sistema carrega um programa em memória, de programas sistema carrega um programa em memória executa-o e termina-o, reportando eventuais erros.
Operações de I/O - Um programa em execução requer operações de I/O relativamente ficheiros ou periféricos relativamente a ficheiros ou periféricos.
Operações relativas ao Sistema de Ficheiros – a grande maioria de operações das aplicações têm a ver com fi ficheiros: ler, escrever, apagar, mover directórios listar, procurar, gestão de acessos

Operating System Concepts

2.3

Silberschatz, Galvin and Gagne ©2005

Serviços
Serviços do Sistema Operativo (Cont.)
Comunicações – troca e/ou partilha de dados entre aplicações residentes no mesmo computador ou em computadores ligados por rede no mesmo computador ou em computadores ligados por rede
Podem ser feitas por memória partilhada ou através de mensagens
(pacotes movimentados pelo SO através de protocolos)
Detecção de Erros – o SO tem de estar constantemente a par de todos os erros, a tentar reportá-los ou mesmo corrigi-los.
Podem ocorrer no CPU ou na memória, periféricos ou na maioria dos
Podem ocorrer no CPU ou na memória, periféricos ou na maioria dos casos, em programas utilizador
Para cada tipo de erro, o SO toma a acção apropriada para garantir a continuidade da execução do sistema como um todo continuidade da execução do sistema como um todo
Facilidades de debug podem aumentar as capacidades dos utilizadores o programadores utilizarem o sistema correctamente

Operating System Concepts

2.4

Silberschatz, Galvin and Gagne ©2005

Serviços
Serviços do Sistema Operativo (Cont.)
Outras funcionalidades do SO providenciam a operacionalidade, eficiência e robustez do sistema e dos recursos geridos.
Al
Alocação de recursos – quando múltiplos utilizadores ou processos estão a utilizar o mesmo sistema simultaneamente
Tipos de Recursos
CPU, Memória e Armazenamento: algoritmos específicos
Memória Armazenamento: algoritmos específicos
Periféricos: controle dos pedidos e o seu encadeamento
Accounting/Logging – Guardar historial das acções dos utilizadores e da utilização que fizeram dos recursos dos sistema
Protecção e Segurança – Garantir que a informação que existe ou transita num sistema multiutilizador e ligado em rede não é acedida ou modificada por quem não deve.
A Protecção implica que todos os acesso a recursos geridos pelo sistema
Protecção
que todos os acesso recursos geridos pelo sistema são controlados
Segurança implica que a utilização do sistema por quaisquer entidades envolve uma autenticação prévia e pode implicar armazenar ou transferir dados de forma cifrada dados de forma cifrada
Para que um sistema seja protegido e seguro, deve haver uma coerência entre as precauções tomadas.
Noção do elo mais fraco de uma cadeia

Operating System Concepts

2.5

Silberschatz, Galvin and Gagne ©2005

Interface
Interface Utilizador - CLI
Command Line Interpreter permite a execução directa de comandos
A implementação pode ser realizada no kernel ou num programa sistema Podem ter inúmeras variantes ter inúmeras variantes
Os mais conhecidos são os “shells”
Princípio: lêem um comando da consola do utilizador e executam a acção correspondente
Os comandos podem fazer parte do próprio interpretador
Ou podem ser realizados em programas separados podem ser realizados em programas separados




Operating System Concepts

Neste último caso adicionar novos comandos não requer a modificação do interpretador
É o caso do shell Unix e MS-DOS

2.6

Silberschatz, Galvin and Gagne ©2005

Windows
Windows CLI

cmd.exe

Operating System Concepts

2.7

Silberschatz, Galvin and Gagne ©2005

Unix
Unix CLI bash Operating System Concepts

2.8

Silberschatz, Galvin and Gagne ©2005

Scripting
Scripting
Os CLIs também possibilitam a execução de uma sequência de comandos ou instruções, designado por script
Constituem uma linguagem de programação específica do sistema É a forma mais utilizada para realizar tarefas de configuração ou forma mais utilizada para realizar tarefas de configuração ou manutenção do sistema
No decorrer do Bootstrap, são executados centenas de scripts que permitem o arranque da totalidade dos serviços it associados ao Sistema Operativo
Existem inúmeras linguagens de scripting cmd: Windows, contidos em ficheiros .bat (batch)
Shell: Unix, contidos em ficheiros .sh (shell scripts)
Python: também uma linguagem de programação, independente da plataforma

Operating System Concepts

2.9

Silberschatz, Galvin and Gagne ©2005

Exemplo
Exemplo de batch

Operating System Concepts

2.10

Silberschatz, Galvin and Gagne ©2005

Exemplo
Exemplo de Shell script

Operating System Concepts

2.11

Silberschatz, Galvin and Gagne ©2005

Interface
Interface Utilizador - GUI
Graphical User Interface
Mais intuitiva e com maior grau de usabilidade
Tornou o computador utilizável pelo público em geral computador utilizável pelo público em geral
É uma interface mais adaptada aos computadores de uso pessoal
Utiliza um rato, um teclado e um monitor com sistema de janelas
Icons representam ficheiros, programas e acções ficheiros programas acções
A movimentação do rato e acção dos botões podem ser programadas de acordo com o look and feel das aplicações
Obter informação, escolher opções, executar comandos, abrir directórios ou pastas
Criada na Xerox PARC cerca em 1973
Generalizada com os Apple McIntosh
A maioria dos sistemas actuais inclui interfaces CLI e GUI
Microsoft Windows é um GUI com o CLI cmd
Apple Mac OS X usa o “Aqua” GUI interface por cima de um kernel de tipo UNIX com vários shells disponíveis tipo UNIX, com vários shells disponíveis
Linux tem um CLI com várias GUIs opcionais (Gnome, KDE)

Operating System Concepts

2.12

Silberschatz, Galvin and Gagne ©2005

Placa
Placa Gráfica

De forma simplificada os diversos componentes de uma placa gráfica, são: forma simplificada os diversos componentes de uma placa gráfica são:
GRAM: Graphic RAM
GPU: Graphical Processing Unit
FB: Frame Buffer
FB: Frame Buffer
VC: Video Controller
Operating System Concepts

2.13

Silberschatz, Galvin and Gagne ©2005

Componentes
Componentes Software de um GUI

Operating System Concepts

2.14

Silberschatz, Galvin and Gagne ©2005

Linux
Linux KDE

Operating System Concepts

2.15

Silberschatz, Galvin and Gagne ©2005

System
System Calls
Interface de programação fornecida pelo SO
Normalmente escrita em linguagem de alto nível (C, C++ ou Java)
Normalmente as aplicações utilizam uma Application Program
Interface (API) que encapsula o acesso directo aos system calls
As APIs mais utilizadas são a Win32 API para Windows, a POSIX
API para praticamente todas as versões de UNIX, e a Java API para Java Virtual Machine (JVM) para a Java Virtual Machine (JVM).
Motivos para utilizar APIs em vez dos system calls directamente
Portabilidade – independência da plataforma
Esconder complexidade inerente aos system calls
Acréscimo de funcionalidades que optimizam o desempenho
O acesso aos system calls está implementada em bibliotecas que são carregadas com as aplicações

Operating System Concepts

2.16

Silberschatz, Galvin and Gagne ©2005

Exemplo
Exemplo de Utilização
Sequência de System Calls para copiar o conteúdo de um ficheiro para outro para outro

Operating System Concepts

2.17

Silberschatz, Galvin and Gagne ©2005

Exemplo
Exemplo de Programa
Utilização de System Calls para realizar a cópia de um ficheiro fi Operating System Concepts

2.18

Silberschatz, Galvin and Gagne ©2005

Exemplo
Exemplo da API - Windows Standard
A função ReadFile() da Win32 API
Uma função para ler o conteúdo de um ficheiro função para ler conteúdo de um ficheiro

Descrição dos parâmetros de ReadFile()
HANDLE file - o descriptor do ficheiro a ler
LPVOID buffer - um buffer onde os dados irão ser colocados
DWORD bytesToRead - o número de bytes a ler
LPDWORD bytesRead - o número de bytes lidos na última leitura
LPOVERLAPPED ovl - indica se dever ser usada leitura entrlaçada se de se usada

Operating System Concepts

2.19

Silberschatz, Galvin and Gagne ©2005

Exemplo
Exemplo da API UNIX Standard

Operating System Concepts

2.20

Silberschatz, Galvin and Gagne ©2005

Transição para os Syscalls em Linux pa os Sysca

Operating System Concepts

2.21

Silberschatz, Galvin and Gagne ©2005

Implementação
Implementação dos System Calls
A cada system call é associado um número inteiro
A interface mantém uma tabela com o endereço de cada system call interface mantém uma tabela com endereço de cada system handler que é indexada pelo número do system call
Através desta tabela, o respectivo handler é invocado no kernel
Os parâmetros do system call são transferidos para o kernel parâmetros do system transferidos para kernel
Uma vez executado, o resultado e os parâmetros de retorno são transferidos para o programa utilizador, como se tivesse havido uma invocação de uma função normal
A aplicação que invoca o system call não precisa de saber como este é implementado Só precisa de obedecer à sintaxe da API (assinatura do método) e esperar pelos resultados da invocação
Precisa de conhecer a semântica associada ao system call
Os detalhes da interface sistema são escondidos pela API
São geridos por uma biblioteca fornecida pelo sistema – camada funcional que é incluída na aplicação no momento do carregamento do ficheiro executável

Operating System Concepts

2.22

Silberschatz, Galvin and Gagne ©2005

Mecanismo
Mecanismo dos System Calls

Operating System Concepts

2.23

Silberschatz, Galvin and Gagne ©2005

Detalhe
Detalhe da Transição em Linux i386

Operating System Concepts

2.24

Silberschatz, Galvin and Gagne ©2005

Linux
Linux System Calls Numbers

/usr/src/linux/include/asm-i386/unistd.h

Operating System Concepts

2.25

Silberschatz, Galvin and Gagne ©2005

Linux
Linux Syscall Table

/usr/src/linux/arch/i386/kernel/entry.S

Operating System Concepts

2.26

Silberschatz, Galvin and Gagne ©2005

Windows
Windows Syscall Table
Uma tabela contendo os nomes dos System Calls e os respectivos valores para cada uma das versões do sistema: http://netlab.ulusofona.pt/so/praticas/winsyscalls.h Cada elemento da tabela é do tipo:

Utilização
Nome: syscalls[syscall_number].syscall_name
Valor: syscalls[syscall_number].x[system_version] syscalls O mecanismo de entrada no kernel é semelhante ao do Linux
Usa a instrução int $0x2e para comutar para o modo de privilégio máximo
Mais detalhes em: http://www.codeguru.com/Cpp/W-P/system/devicedriverdevelopment/article.php/c8035 Operating System Concepts

2.27

Silberschatz, Galvin and Gagne ©2005

Passagem
Passagem de Parâmetros em Linux
Na arquitectura Intel, os parâmetros são passados nos registos
Registo eax contém o número do syscall
Registos ebx, ecx, edx, esi e edi contêm os primeiros 5 argumentos No caso de haver mais, são passados por referência, sendo o endereço da sua localização passado por registo.
O valor de retorno do syscall é enviado através do registo eax.
Todos os argumentos passados para o kernel têm de ser validados tê por este
Evitar utilização de recursos não autorizados ou não existentes
Evitar acessos a zonas de memória não pertencentes ao espaço de endereçamento do processo
Evitar acessos indevidos a seu próprio espaço acessos indevidos seu próprio espaço
P.ex.: escrever em zonas read only
Os argumentos são copiados por funções em C e Assembly http://lxr.linux.no/#linux+v3.0.4/arch/x86/lib/usercopy_32.c Operating System Concepts

2.28

Silberschatz, Galvin and Gagne ©2005

Invocação
Invocação Directa de Syscalls
Programa em Assembler que invoca os system calls write() e exit() através da instrução int 0x80

Operating System Concepts

2.29

Silberschatz, Galvin and Gagne ©2005

Invocação
Invocação através da Libc
Programa em C que invoca a função de biblioteca printf(), que por sua vez chama o system call write()

Operating System Concepts

2.30

Silberschatz, Galvin and Gagne ©2005

Uma
Uma implementação Simples da libc
Exemplo de implementação simples da função de invocação do syscall write(fd, buffer, count) a partir de um programa em C:

Salvaguarda do stack frame anterior e inicialização do stack frame corrente
Salvaguarda dos registos utilizados utilizados
Passagem dos argumentos da função invocada para os registos adequados registos adequados
Carregamento do nº de syscall e passagem para o kernel
Restauração do contexto do contexto anterior à invocação e retorno ao programa principal

Operating System Concepts

2.31

Silberschatz, Galvin and Gagne ©2005

Utilização
Utilização de sysentry/sysexit
Na arquitectura Intel a partir do Pentium II, duas novas instruções permitem realização de system calls mais rapidamente permitem a realização de system calls mais rapidamente sysentry permite a entrada no sistema sem passar por uma interrupção software sysexit permite a saída do kernel pelo mesmo mecanismo it O kernel linux utiliza estas instruções preferencialmente a partir da versão 2.6
A invocação destas instruções faz-se pela invocação directa de código assembler colocado pelo kernel numa página específica de todos os processos (virtual dynamic shared object - vdso)
O ponto de entrada é designado por kernel_vsyscall
Endereço pode variar por distribuição e formato executável
Mais detalhes em:
Mais detalhes em: manugarg.googlepages.com/systemcallinlinux2_6.html www.codeguru.com/cpp/w-p/system/devicedriverdevelopment/article.php/c8223

Operating System Concepts

2.32

Silberschatz, Galvin and Gagne ©2005

Sequência
Sequência de Invocação
Programa em Assembler que invoca os system calls write() e exit() através das instruções sysenter/sysexit

Operating System Concepts

2.33

Silberschatz, Galvin and Gagne ©2005

Passagem
Passagem de Parâmetros nos System Call
É necessário trocar mais informação do que a identificação do system call
Parâmetros de entrada e saída
O tipo exacto e quantidade de parâmetros a passar e receber varia tipo exacto quantidade de parâmetros passar receber varia com o SC e o OS
Três métodos genéricos são utilizados para passar os parâmetros para o
SO
Mais simples: passar os parâmetros nos registos do processador
Método utilizado no Linux
Em alguns casos pode haver mais parâmetros do que regs.
Os parâmetros são guardados num bloco ou tabela em memória e o parâmetros são guardados num bloco ou tabela em memória endereço do bloco é passado como parâmetro num registo
Método utilizado no Windows e Solaris
Os parâmetros podem ser empurrados (pushed) para a pilha pela aplicação, e puxados (popped) pelo SO
Estes dois últimos métodos não limitam o número e comprimento dos parâmetros passados
Sempre que há passagem de dados por referência estes têm de ser que há passagem de dados por referência estes têm de ser copiados para o kernel (in) ou para o processo utilizador (out)
Caso das operações de I/O que realizam transferências de dados importantes (leitura ou escritura de ficheiros ou rede)

Operating System Concepts

2.34

Silberschatz, Galvin and Gagne ©2005

Passagem
Passagem de Parâmetros por Referência

Operating System Concepts

2.35

Silberschatz, Galvin and Gagne ©2005

Referências
Referências de Código do Kernel
Para aprofundar estes conceitos aconselha-se a análise de alguns excertos de código aprofundar estes conceitos aconselha análise de alguns excertos de código do kernel disponíveis em: http://lxr.linux.no/
Definição dos números de System Calls http://lxr.linux.no/#linux+v3.0.4/arch/x86/include/asm/unistd_32.h Tabela de System Calls http://lxr.linux.no/linux+v3.0.4/arch/x86/kernel/syscall_table_32.S Pontos de entrada no Kernel de entrada no Kernel int $80 system_call http://lxr.linux.no/#linux+v3.0.4/arch/x86/ia32/ia32entry.S#L380 sysentry system_call http://lxr.linux.no/#linux+v3.0.4/arch/x86/ia32/ia32entry.S#L98 Criação do Virtual Dynamic Shared Object (VDSO)
VDSO sysenter http://lxr.linux.no/#linux+v3.0.4/arch/x86/vdso/vdso32/sysenter.S VDSO int80 http://lxr.linux.no/#linux+v3.0.4/arch/x86/vdso/vdso32/int80.S Teste e cópia de argumentos dos System Calls (in/out) http://lxr.linux.no/#linux+v3.0.4/arch/x86/lib/usercopy_32.c Operating System Concepts

2.36

Silberschatz, Galvin and Gagne ©2005

Tipos
Tipos de System Calls
Controle de Processos fork(), exec(), wait(), exit(), kill(), …
Gestão de Ficheiros open(), creat(), read(), write(), seek(), …
Gestão de Periféricos mount(), umount(), ioctl(), read(), write(), …
Informação e manutenção manutenção stat(), time(), chmod(), …
Comunicações
Comunicações socket(), bind(), connect(), send(), receive(), …
IPC
pipe(), dup(), shmat(), shmget(), …
Debug
ptrace()
Operating System Concepts

2.37

Silberschatz, Galvin and Gagne ©2005

Programas
Programas Sistema
Os programas ou utilitários sistema fornecem um ambiente para
A gestão do sistema
O desenvolvimento e execução de programas
Podem ser divididos em
Interface utilizador
Gestão de Ficheiros
Arquivo e restauração
Informação de Estado
Suporte de Linguagens de Programação
Carregamento e Execução de Programas
Serviços de Rede
Aplicações Genéricas
A maioria dos utilizadores tem uma visão do Sistema Operativo definida pelos programas sistema e não pelos System Calls

Operating System Concepts

2.38

Silberschatz, Galvin and Gagne ©2005

Arquitectura
Arquitectura e Implementação de SOs
A arquitectura interna dos Sistemas Operativos pode variar bastante de uma versão para outra
Para a definir deve-se começar por estabelecer os objectivos e as especificações Estes dependem fortemente dos objectivos e do tipo de hardware
Diferentes pontos de vista:
Utilizadores: deve ser de fácil compreensão e utilização, fiável, seguro e rápido
Conceptores: deve ser fácil de desenhar, implementar e manter, deve ser flexível, fiável, eficiente e não ter erros (bugs)
Muitas vezes estes pontos de vista não são fáceis de conciliar
A funcionalidade, simplicidade e usabilidade são difíceis de conseguir simultaneamente É importante separar conceitos: importante separar conceitos:
Política: o que fazer?
Mecanismo: como fazer?
A separação garante flexibilidade em futuras mudanças fl Operating System Concepts

2.39

Silberschatz, Galvin and Gagne ©2005

Arquitectura
Arquitectura Simples: MS-DOS
MSConcebido para fornecer o máximo de funcionalidades num mínimo de espaço Não é um sistema modular
Não tem interfaces e níveis de funcionalidade bem definidos

Operating System Concepts

2.40

Silberschatz, Galvin and Gagne ©2005

Arquitectura
Arquitectura em Camadas
O SO é dividido em várias camadas ou níveis, cada um construído em cima do anterior (ex: sistemas de Mainframes – VMS, Multics)
O nível mais baixo é o hardware
O mais elevado é a interface utilizador
O princípio da modularidade implica que os níveis sejam escolhidos de forma a que cada um só utilize serviços dos níveis inferiores

Operating System Concepts

2.41

Silberschatz, Galvin and Gagne ©2005

Arquitectura de tipo Unix
Ar
O sistema Unix original era limitado pelas funcionalidades do hardware
Minicomputador Digital PDP-11 de 16 bits e memória segmentada
Mas rapidamente começou a ser utilizado em hardware mais evoluído
É consistido por dois níveis distintos:
Os programas sistema e as aplicações
O núcleo (kernel) núcleo É consistido por toda a funcionalidade que está abaixo da interface dos system calls
Fornece a gestão de processos, de memória e de ficheiros, os protocolos de rede, assim como as funções de mais baixo nível
Muitas funcionalidades para um só nível funcionalidades para um só nível
As verões iniciais eram pouco modulares

Operating System Concepts

2.42

Silberschatz, Galvin and Gagne ©2005

Arquitectura Original do Sistema UNIX

Operating System Concepts

2.43

Silberschatz, Galvin and Gagne ©2005

Source: Stallings, W., "Operating Systems: Internals and Design Principles"

Componentes
Componentes de um Sistema Unix

Operating System Concepts

2.44

Silberschatz, Galvin and Gagne ©2005

Evolução
Evolução da Arquitectura Unix

Uma das evoluções mais radicais na arquitectura do sistema Unix foi realizada a partir de 1985 na Carneghie-Mellon University com o projecto Mach.
O núcleo foi modificado a partir do sistema BSD, tendo as funções de mais baixo nível sido separadas num módulo designado por micro-núcleo Mach 2.5.
Os serviços do sistema estão separados do núcleo através de uma interface de mensagens internas ao sistema
Sistema de Ficheiros, Processos, Protocolos, etc..
Este projecto deu origem a uma nova geração de sistemas
OSF/1 MK com núcleo Mach 3.0 => Digital Unix
Mac OS/X
Operating System Concepts

2.45

Silberschatz, Galvin and Gagne ©2005

Detalhe
Detalhe da Arquitectura Mach 2.5

O sistema fornece dois tipos de Application Binary Interfaces (ABIs):
Uma de tipo Unix clássico permitindo a compatibilidade com as aplicações existentes Uma outra dando acesso às funcionalidades específicas do núcleo Mach que permitem implementar aplicações com conceitos diferentes

Operating System Concepts

2.46

Silberschatz, Galvin and Gagne ©2005

Evolução:
Evolução: conceito de Micro-Núcleo
Micro-

O Sistema Mach 3.0 baseia-se no conceito de micro-kernel e torna-se ainda mais modular
As serviços do sistema são implementadas em servidores que se serviços do sistema são implementadas em servidores que se executar em modo utilizador
Só os componentes básicos correm em modo supervisor: o µ-kernel
A comunicação entre as aplicações e os servidores faz-se por mensagens comunicação entre as aplicações os servidores faz por mensagens

Operating System Concepts

2.47

Silberschatz, Galvin and Gagne ©2005

Um system
Um system call UNIX em Mach 3.0
1.
2.
3.

4.

5.

6.

7.

8.

Invocação do system call através de um software interrupt no contexto da aplicação.
Transição para o µ-Kernel, que detecta a para que detecta invocação de uma funcionalidade UNIX.
Envio de uma mensagem do µ-Kernel ao(s) servidor(es) UNIX, com os parâmetros do system system call invocado.
Recepção da mensagem pelo servidor, identificação do system call e execução da funcionalidade invocada.
Possível interacção entre o servidor e a interacção entre servidor aplicação, caso haja transferências de dados por referência (caso p. ex.: do read ou do write)
Envio da mensagem de retorno do servidor da mensagem de retorno do servidor ao µ-Kernel contendo os resultados do system call.
Recepção da mensagem pelo µ-Kernel e criação do contexto para retornar os criação do contexto para retornar os resultados à aplicação
Retorno do software interrupt para a aplicação que invocou o system call.

Operating System Concepts

4

2.48

Silberschatz, Galvin and Gagne ©2005

Crítica
Crítica da Arquitectura Micro-Núcleo
MicroBenefícios:
Mais fácil modificar e manter o micro-núcleo
Mais fácil suportar novas arquitecturas hardware
Todas as dependências estão concentradas no micro-núcleo
Mais fiável e seguro
Menos código em modo “supervisor” código em modo supervisor
Desvantagens:
Pior desempenho na comunicação entre serviços e entre estes e o núcleo
Versões posteriores voltam a repor os servidores em modo supervisor
Referências
Mach 3.0 http://www.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html Chorus OS http://www http://www.experimentalstuff.com/Technologies/ChorusOS/index.html
Micro-núcleo Minix 3 http://www.minix3.org/doc/herder.html Operating System Concepts

2.49

Silberschatz, Galvin and Gagne ©2005

Herança:
Herança: Arquitectura Modular
A maioria dos sistemas operativos modernos são baseados em arquitecturas maioria dos sistemas operativos modernos são baseados em arquitecturas modulares Utilizam uma aproximação orientada aos objectos
Os principais componente funcionais são independentes e comunicam por interfaces bem definidas
Os componentes podem ser carregados dinamicamente no núcleo
Aproximação inspirada no conceito de micro-núcleo
Separação em camadas com níveis de abstracção distintos
Isolamento das funcionalidades básicas numa camada independente dos serviços de mais alto nível
Implementação dos serviços sistema em módulos distintos, com possibilidade de configuração dinâmica
Manutenção dos serviços em modo supervisor para garantia de desempenho Arquitecturas actuais, flexíveis e dinâmicas
Ex: Mach OS, Linux, Windows

Operating System Concepts

2.50

Silberschatz, Galvin and Gagne ©2005

Source: Stallings, W., "Operating Systems: Internals and Design Principles"

Arquitectura
Arquitectura Unix Modular

Operating System Concepts

2.51

Silberschatz, Galvin and Gagne ©2005

Source: Stallings, W., "Operating Systems: Internals and Design Principles"

Arquitectura
Arquitectura Genérica Linux

Operating System Concepts

2.52

Silberschatz, Galvin and Gagne ©2005

Arquitectura
Arquitectura do Windows NT
Process Management
Memory Management
File Management
Device Mgmt Infrastructure

Source: Operating Systems, Gary Nutt
Copyright © 2004 Pearson Education, Inc.

Process
T

T

T

T

Process

Process
T

T

T

T

T

Libraries
Subsystem

Subsystem

User

Subsystem

Supervisor

NT Executive
NT Kernel
Hardware Abstraction Layer

Processor(s)

Operating System Concepts

Main Memory
Memory

2.54

I/O Subsystem

Devices
Silberschatz, Galvin and Gagne ©2005

Source: Stallings, W., "Operating Systems: Internals and Design Principles"

Detalhe
Detalhe Arquitectura NT

Operating System Concepts

2.55

Silberschatz, Galvin and Gagne ©2005

Noção
Noção de Máquina Virtual
A noção de máquina virtual leva o conceito das níveis de abstracção até às últimas consequências
Considera a camada do Sistema Operativo como um tipo de camada do Sistema Operativo como um tipo de hardware com características específicas
Uma máquina virtual fornece uma interface idêntica à do hardware que simula que simula
Os recursos do computador real são partilhados de forma a criar a noção de máquina virtual
Ex: O sistema operativo cria a ilusão de que múltiplos sistemas sistema operativo cria ilusão de que múltiplos sistemas operativos se estão a executar simultaneamente
Cada um com o seu próprio processador e a sua memória virtual virtual
Um sistema baseado em máquina virtual é uma excelente plataforma para investigação e desenvolvimento de sistemas operativos
O desenvolvimento é feito na máquina virtual, de forma a não desenvolvimento feito na máquina virtual de forma não interromper o funcionamento do sistema
O primeiro OS com implementação de máquina virtual foi o IBM VM
VM/370
VM/370 - 1972

Operating System Concepts

2.56

Silberschatz, Galvin and Gagne ©2005

Arquitectura da Máquina Virtual

Non-virtual Machine

Virtual Machine

(a) Sistema Normal

Operating System Concepts

Virtual
Machine
Monitor

(b) Máquina Virtual

2.57

Silberschatz, Galvin and Gagne ©2005

Detalhe
Detalhe

Operating System Concepts

2.58

Silberschatz, Galvin and Gagne ©2005

Gestão
Gestão dos System Calls

Quando uma aplicação efectua um system call a transição dá-se para Host para o Host OS e não para o Guest não para Guest
Tem de haver um mecanismo de redirecção para o Guest OS

Operating System Concepts

2.59

Silberschatz, Galvin and Gagne ©2005

Gestão
Gestão de Interrupções

Quando o hardware gera uma interrupção, é o Host OS que realiza o serviço e não para o Guest serviço não para Guest
Tem de haver um mecanismo de redirecção para o Guest OS

Operating System Concepts

2.60

Silberschatz, Galvin and Gagne ©2005

Possíveis
Possíveis Implementações
O conceito é difícil de implementar devido à dificuldade de simular o comportamento exacto da máquina real
O que acontece quando o sistema operativo hóspede acede a instruções privilegiadas só executáveis em modo supervisor?
Utilização de um VMM (Virtual Machine Monitor) para realizar a simulação Várias técnicas de implementação são possíveis:
Paravirtualização: consiste em modificar o Guest de forma a consiste em modificar Guest forma substituir todas as instruções privilegiadas por chamadas a funções específicas do VMM
Implica modificação do sistema Guest, o que a torna pouco utilizável, embora permita melhor desempenho
Full Virtualization: consiste em interceptar as instruções privilegiadas do Guest e substituí-las dinamicamente por funções do VMM
Não necessita modificação do sistema Guest, mas tem pior desempenho Operating System Concepts

2.61

Silberschatz, Galvin and Gagne ©2005

Exemplo:
Exemplo: Arquitectura VMware

(Linux)

(Windows 7)

(Android)

Virtual Machine Monitor

(hypervisor)

Full Virtualization, implementada pela VMware, Virtual Box, Virtual PC, etc.. implementada pela VMware Virtual Box Virtual PC etc
Executa o sistema operativo Guest num nível de privilégio intermédio (p.ex.: 1), intercepta todas as instruções que não são permitidas nesse nível, e substituílas por código equivalente no VMM

Operating System Concepts

2.62

Silberschatz, Galvin and Gagne ©2005

Extensões
Extensões de Suporte às VM
Hoje em dia os principais processadores (Intel, AMD) fornecem extensões hardware para suporte da virtualização
Arquitectura Intel Virtual: Technology Extensions (VT-x ou VT-i)
Intel Virtual: Technology
VT
Dois novos modos de execução
Root para execução do VMM
Non-root para execução das VMs
Ambos suportam todos os níveis de privilégio do processador
A passagem de um contexto para outro (VM Enter) é provocada por passagem de um contexto para outro
Enter provocada por certas instruções específicas (VMENTER, VMRESUME), ou pela execução de instruções não autorizadas (VM Exit)
Ver : www.intel.com/technology/itj/2006/v10i3/1-hardware/1-abstract.htm

Arquitectura AMD: AMD-V ou SVM
Implementa funcionalidades semelhantes

Operating System Concepts

2.63

Silberschatz, Galvin and Gagne ©2005

Mudanças
Mudanças de Contexto VMM/VM
Non-Root Mode

Non-Root Mode
VM 1

VM entry
VMLAUNCH
VMRESUME

VM 2

VM exit exit VM entry entry VM exit

VMLAUNCH
VMRESUME

Root Mode
A entrada na VM (VM enter) é activada pelas instruções VMLAUNCH (início) ou
VMRESUME (continuação) partir do VMM
VMRESUME (continuação) a partir do VMM
A saída da VM é (VM exit) é provocada pela execução de instruções não autorizadas no modo Non-Root, provocando a entrada no VMM
Assim o código de cada OS não necessita de ser modificado e pode correr no seu nível
OS
de privilégio habitual
Operating System Concepts

2.64

Silberschatz, Galvin and Gagne ©2005

A Máquina Virtual Java
Máquina

Criação de uma abstracção de processador e Sistema Operativo
As aplicações são compiladas para uma linguagem máquina virtual byte-code Uma máquina virtual Java interpreta o código máquina como se fosse um processador virtual
A máquina Java é implementada em cima de um OS tradicional máq Ja implementada em cima de
OS tradicional

Operating System Concepts

2.65

Silberschatz, Galvin and Gagne ©2005

Referências
Referências Adicionais
Como complemento deste slides os alunos poderão consultar e estudar os elementos seguintes: os elementos seguintes:
Informação adicional sobre System Calls http://www.answers.com/topic/system-call-1 Livro sobre programação avançada em C (incluindo System Calls) http://www.cs.cf.ac.uk/Dave/C Mapa Interactivo do Sistema Linux http://www.makelinux.net/kernel_map Sit
Site e livro sobre o Mac OS X li OS http://osxbook.com Livro “Windows Internals” de M. Russinovitch (versão 4 disponível on-line) http://flylib.com/books/en/4.491.1.2/1/ Operating System Concepts

2.66

Silberschatz, Galvin and Gagne ©2005

Fim
Fim da 2ª Parte

Similar Documents

Premium Essay

Business Struct

...Club IT, Part 2 Ruben and Lisa are two successful owners and managers of Club IT. They are very hard working managers, who try and keep their success high, they currently try and stay updated on their business and most importantly how to manage their customers. Ruben and Lisa have actually created a website so they can interact better with their customers and staff, but it does not look professional enough. It could use a bit more work to catch customers attention more. It would be a good idea toadd certain things to the website to make customers feel more appreciated, like a VIP section, VIP special packages, ticket sales, and blogs on the events to customers more updated on what is going on at the club. The way the internet is accessed, is one of the problems, dial up service is not good to use for a business, it operates too slow, and you are unable to do more than one thing at a time. For example, when running credit cards through the system, you are unable to have enough speed to communicate with the supplier. The reason why Ruben and Lisa did this, was so they can save more money, it would only cost more money to put another line in. The best solution would be to install high-speed internet service. This way they will be able to run credit cards through, and be able to take phone calls to their customers and suppliers, without putting them to the side or on hold. Upgrading their internet to high-speed would also increase their chances to a new IT system. The use of the...

Words: 714 - Pages: 3

Free Essay

Enum, Struct Et Type

...Institut de Technologie du Cambodge    Génie Informatique et Communication  Type énuméré, structure et  renommage des types    1. Type énuméré  Un type énuméré est un type dont on énumère, c’est‐à‐dire dont on donne la liste effective,  les éléments de ce type. Bien entendu cela ne peut concerner que des types correspondants  à un ensemble fini d’éléments.    La définition d’un type énuméré est très simple : on énumère les éléments de ce type, qui  sont des identificateurs, séparés par des virgules et encadrés par des accolades ouvrante et  fermante. Par exemple :    {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche}   Pour définir un tel type, on commence par le mot clé enum, suivi d’un identificateur qui sera  le nom du type, suivi de la définition, suivie d’un point‐virgule. Par exemple :    enum jour {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche};   Pour  déclarer  d’une  variable  d’un  type  énuméré,  on  commence  également  par  le  mot  clé  enum, suivi du nom du type, suivi du nom de la variable (ou des variables), suivi d’un point‐ virgule. Par exemple :    enum jour j;   On ne peut qu’affecter une constante (du type donné) à une variable d’un type énuméré ou  comparer une variable du type à une des valeurs du type. Par exemple :    j = dimanche ; if (j == lundi) printf("Monday");    Le langage C considère les valeurs des types énumérés comme des constantes entières de  type  int,  les  convertissant ...

Words: 823 - Pages: 4

Free Essay

C++ Linkedlist Problems

...Linked List Problems By Nick Parlante Copyright ©1998-2002, Nick Parlante Abstract This document reviews basic linked list code techniques and then works through 18 linked list problems covering a wide range of difficulty. Most obviously, these problems are a way to learn about linked lists. More importantly, these problems are a way to develop your ability with complex pointer algorithms. Even though modern languages and tools have made linked lists pretty unimportant for day-to-day programming, the skills for complex pointer algorithms are very important, and linked lists are an excellent way to develop those skills. The problems use the C language syntax, so they require a basic understanding of C and its pointer syntax. The emphasis is on the important concepts of pointer manipulation and linked list algorithms rather than the features of the C language. For some of the problems we present multiple solutions, such as iteration vs. recursion, dummy node vs. local reference. The specific problems are, in rough order of difficulty: Count, GetNth, DeleteList, Pop, InsertNth, SortedInsert, InsertSort, Append, FrontBackSplit, RemoveDuplicates, MoveNode, AlternatingSplit, ShuffleMerge, SortedMerge, SortedIntersect, Reverse, and RecursiveReverse. Contents Section 1 — Review of basic linked list code techniques Section 2 — 18 list problems in increasing order of difficulty Section 3 — Solutions to all the problems 3 10 20 This is document #105, Linked List Problems, in the...

Words: 7907 - Pages: 32

Free Essay

Khvji

...must read the Text book and come to consultations, if help is needed. Structures and Lists #include #include struct Student { char *name ; int age; }; // Note: char *name ="xxxxxxxxxxxxxx"; is // not permitted in structures. Why? int main(void){ struct Student s; // allocates memory. s.name = malloc(20*sizeof(char)); scanf("%s",s.name); s.age = 20; printf("1:%s %d\n",s.name, s.age); struct Student *ps; ps = &s; // Dot has higher priority over & scanf("%s%d",(*ps).name,&(*ps).age); printf("2:%s %d\n", (*ps).name, (*ps).age); printf("3:%s %d\n",ps->name,ps->age+3); struct Student *ps1; // allocate memory by malloc() dynamically. ps1 = malloc(sizeof(struct Student)); ps1->name = malloc(20*sizeof(char)); scanf("%s%d",ps1->name,&(ps1->age)); printf("4:%s %d\n",ps1->name,ps1->age+3); printf("5:%s %d\n", (*ps1).name, (*ps1).age); } Student s 0028FF08 malloc 003C1110 name name age age ps malloc 0028FF00 003C1188 ps1 malloc #include #include struct S1 { int a1; char b1; }; struct S2{ int a2; char b2; struct S1 *p2; }; struct S3{ int a3; char b3; struct S1 *p3a; struct S2 *p3b; }; Linked structures // Self referencing structure. Also called: recursive structure. struct S4{ int a4; char b4; struct S4 *p4; }; int main(){ struct S1 s1; struct S2 s2; struct S3 s3; struct S4 s4; s1.a1=2; s1.b1='A'; s2.a2=20; s2.b2='B'; s2.p2 = &s1; // Creates a list: s2 ---> s1 printf("First:%d %c %d %c\n"...

Words: 1984 - Pages: 8

Free Essay

Linked List Programs

...#include #include struct node { int info; struct node *link; }; struct node *start=NULL,*n,*temp,*temp1; void create(); void display(); void insbeg(); void inspos(); void delbeg(); void delend(); void search(); int main() { int i; printf("------linked list----------\n"); n=(struct node *)malloc(sizeof(struct node)); printf("enter the element:--->"); scanf("%d",&n->info); n->link=NULL; start=n; for(i=0;iinfo); n->link=start; start=n; } void create() { n=(struct node *)malloc(sizeof(struct node)); printf("enter the element--->"); scanf("%d",&n->info); temp=start; while(temp->link!=NULL) { temp=temp->link; } temp->link=n; n->link=NULL; } void display() { printf("The list is:\n"); temp=start; while(temp!=NULL) { printf("%d\n",temp->info); temp=temp->link; } } void inspos() { int pos, count=0; temp=start; if(temp==NULL) count=0; else count=1; printf("enter position."); scanf("%d",&pos); if(pos==1) { insbeg(); return; } n=(struct node *)malloc(sizeof(struct node)); printf("enter the element--->"); scanf("%d",&n->info); while(temp->link!=NULL) { if(count==pos-1) break; temp=temp->link; count++; } n->link=temp->link; temp->link=n; } void delbeg() { temp=start; start=start->link; free(temp); } void delend() { temp=start; while(temp->link...

Words: 251 - Pages: 2

Free Essay

Tcp/Ip

...TCP/IP - Socket Programming Jim Binkley 1 sockets - overview sockets ◆ simple client - server model ◆ – – – look at tcpclient/tcpserver.c look at udpclient/udpserver.c tcp/udp contrasts “normal” master/slave setup for TCP ◆ inetd on UNIX - mother server ◆ some details - there are more... ◆ Jim Binkley 2 sockets in BSD world since early 80’s, 4.2 BSD ◆ client/server model ◆ “like” unix file i/o up to a point, can be redirected to stdin/stdout/stderr (on unix) ◆ sockets are dominant tcp/ip application API ◆ – – other API is System V TLI (OSI-based) winsock - windows variations on sockets » sockets in windows event-driven framework 3 Jim Binkley sockets ◆ basic definition - “endpoint of communication” allows connected streams (TCP) or discrete messages (UDP) between processes on same machine, cross network ◆ in o.s., really read/write data queues + TCP has connection Queue (server side) ◆ talk to “socket” with handle/sock descriptor ◆ Jim Binkley 4 kinds of sockets acc. to address family; i.e. how does addressing work ◆ IP address family -> IP addr, tcp/udp port ◆ traditional BSD families ◆ – TCP/IP (AF_INET; i.e., Internet) » TCP/UDP/”raw” (talk to IP) – – – Jim Binkley UNIX (intra-machine, pipes) XNS, and even APPLETALK, DECNET, IPX ... 5 sockets client handle read write read write server socket layer r/w queues tcp stack Jim Binkley 6 syscalls - TCP client/simple test server int s =...

Words: 1236 - Pages: 5

Free Essay

Oops

...v _ __________________________________________________________________________ Preface No programming technique solves all problems. No programming language produces only correct results. No programmer should start each project from scratch. Object-oriented programming is the current cure-all — although it has been around for much more then ten years. At the core, there is little more to it then finally applying the good programming principles which we have been taught for more then twenty years. C++ (Eiffel, Oberon-2, Smalltalk ... take your pick) is the New Language because it is object-oriented — although you need not use it that way if you do not want to (or know how to), and it turns out that you can do just as well with plain ANSI-C. Only object-orientation permits code reuse between projects — although the idea of subroutines is as old as computers and good programmers always carried their toolkits and libraries with them. This book is not going to praise object-oriented programming or condemn the Old Way. We are simply going to use ANSI-C to discover how object-oriented programming is done, what its techniques are, why they help us solve bigger problems, and how we harness generality and program to catch mistakes earlier. Along the way we encounter all the jargon — classes, inheritance, instances, linkage, methods, objects, polymorphisms, and more — but we take it out of the realm of magic and see how it translates into the things we have known and...

Words: 72330 - Pages: 290

Free Essay

Random

...Solution: Number Of Nodes: 1. /* 2.  * C Program to Find the Number of Nodes in a Binary Tree 3.  */ 4. #include <stdio.h> 5. #include <stdlib.h> 6.   7. /* 8.  * Structure of node 9.  */ 10. struct btnode 11. { 12. int value; 13. struct btnode *l; 14. struct btnode *r; 15. }; 16.   17. void createbinary(); 18. void preorder(node *); 19. int count(node*); 20. node* add(int); 21.   22. typedef struct btnode node; 23. node *ptr, *root = NULL; 24.   25. int main() 26. { 27. int c; 28.   29. createbinary(); 30. preorder(root); 31. c = count(root); 32. printf("\nNumber of nodes in binary tree are:%d\n", c); 33. } 34. /* 35.  * constructing the following binary tree 36.  * 50 37. ...

Words: 1523 - Pages: 7

Premium Essay

Phase I

...char **argv) { int clnt_fd,serv_fd; struct sockaddr_in serv_addr; char c; serv_fd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_port=htons(atoi(argv[1])); serv_addr.sin_addr.s_addr=INADDR_ANY; bind(serv_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)); listen(serv_fd,1); clnt_fd=accept(serv_fd, NULL, NULL); while(read(clnt_fd, &c, 1)) write(clnt_fd, &c, 1); close(clnt_fd); close(serv_fd); return 0; } echoclient.c #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<unistd.h> int main(int argc, char **argv) { int clnt_fd; struct sockaddr_in serv_addr; char c; clnt_fd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_port=htons(atoi(argv[2])); serv_addr.sin_addr.s_addr=inet_addr(argv[1]); connect(clnt_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)); while((c=(char)getchar())!=EOF) { write(clnt_fd, &c,1); read(clnt_fd, &c, 1); putchar((int)c); } close(clnt_fd); return 0; } FILE TRANSFER fileserver.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include<sys/ioctl.h> #include<net/if_arp.h> #include<arpa/inet.h> int main() { FILE *fp; int sd,cd,b; char fname[50],op[100]; struct sockaddr_in sadd,cadd; socklen_t clen=sizeof(cadd); ...

Words: 1244 - Pages: 5

Free Essay

A Linked List

...#include<stdio.h> #include<conio.h> #include<alloc.h> struct node { int x; struct node *next; } ; struct node *head, *curr, *tail, *delte, *insert, *temp; void input() { printf("Press '0' to Exit Input\n\n"); curr=(struct node*)malloc(sizeof(node)); printf("Enter an Integer: "); scanf("%d", &curr->x); while(curr->x!=0) { if(head==NULL) { head=curr; head->next=NULL; tail=curr; } else { tail->next=curr; tail=curr; curr->next=NULL; } curr=(struct node*)malloc(sizeof(node)); printf("Enter an Integer: "); scanf("%d", &curr->x); } } void sort() { int no_ex; int x; curr=head; do { no_ex=0; curr=head; while(curr->next!=NULL) { if(curr->x>curr->next->x) { x=curr->x; curr->x=curr->next->x; curr->next->x=x; no_ex=1; } curr=curr->next; } } while(no_ex); } void insrt() { int test=0; printf("\nWhat to Insert?: "); insert=(struct node*)malloc(sizeof(node)); scanf("%d", &insert->x); curr=head; if(head->x>insert->x) { insert->next=head; head=insert; } else { while(curr->next!=NULL) { if(curr->next->x>insert->x&&test!=1) { insert->next=curr->next; ...

Words: 496 - Pages: 2

Free Essay

Business Information Systems

...language has a super-default behaviour for ‘new()’ even if there is no constructors, then the language default will (often, this is set “set every-thing in sight to zero”). 2. If there isn’t a language-specified default, then you get whatever random stuff happened to be in memory. 1.3 If your class needs to share values, it needs someplace in memory to store this data. An instance variable reserves memory for this data your class needs. Lets assume you want to add a place for a string on int variable, You can use an instance variable to reserve that memory for the lifetime of the object. Each object will receive unique memory for this variables. It’s much like a C struct; Struct t_something{ Int a; int b; } The struct declares two fields (a and b). Each value may be read and written to, and the struct is large enough to hold its fields. 1.4 If single selection is a statement in java that evaluates to True or False meaning If the statement results in True, the work gets done on the true side, if it’s evaluated False the True side gets ignored and the next line of code gets executed. For example: *while...

Words: 310 - Pages: 2

Free Essay

Kkhksanfklhaklfh

...Document Number: Date: Revises: Reply to: N3337 2012-01-16 N3291 Stefanus Du Toit Intel Corporation cxxeditor@gmail.com Working Draft, Standard for Programming Language C++ Note: this is an early draft. It’s known to be incomplet and incorrekt, and it has lots of ba d for matting. c ISO/IEC N3337 Contents Contents List of Tables List of Figures 1 General 1.1 Scope . . . . . . . . . . . . . . . . . . . . 1.2 Normative references . . . . . . . . . . . . 1.3 Terms and definitions . . . . . . . . . . . . 1.4 Implementation compliance . . . . . . . . 1.5 Structure of this International Standard . 1.6 Syntax notation . . . . . . . . . . . . . . . 1.7 The C++ memory model . . . . . . . . . . 1.8 The C++ object model . . . . . . . . . . . 1.9 Program execution . . . . . . . . . . . . . 1.10 Multi-threaded executions and data races 1.11 Acknowledgments . . . . . . . . . . . . . . 2 Lexical conventions 2.1 Separate translation . . . . 2.2 Phases of translation . . . . 2.3 Character sets . . . . . . . . 2.4 Trigraph sequences . . . . . 2.5 Preprocessing tokens . . . . 2.6 Alternative tokens . . . . . 2.7 Tokens . . . . . . . . . . . . 2.8 Comments . . . . . . . . . . 2.9 Header names . . . . . . . . 2.10 Preprocessing numbers . . . 2.11 Identifiers . . . . . . . . . . 2.12 Keywords . . . . . . . . . . 2.13 Operators and punctuators 2.14 Literals . . . . . . . . . . . 3 Basic 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 Contents concepts Declarations and definitions One definition...

Words: 144120 - Pages: 577

Free Essay

C Sharp Language Specification

...company names mentioned herein may be the trademarks of their respective owners. Table of Contents 1. Introduction 1 1.1 Hello world 1 1.2 Program structure 2 1.3 Types and variables 4 1.4 Expressions 6 1.5 Statements 8 1.6 Classes and objects 12 1.6.1 Members 12 1.6.2 Accessibility 13 1.6.3 Type parameters 13 1.6.4 Base classes 14 1.6.5 Fields 14 1.6.6 Methods 15 1.6.6.1 Parameters 15 1.6.6.2 Method body and local variables 16 1.6.6.3 Static and instance methods 17 1.6.6.4 Virtual, override, and abstract methods 18 1.6.6.5 Method overloading 20 1.6.7 Other function members 21 1.6.7.1 Constructors 22 1.6.7.2 Properties 23 1.6.7.3 Indexers 23 1.6.7.4 Events 24 1.6.7.5 Operators 24 1.6.7.6 Destructors 25 1.7 Structs 25 1.8 Arrays 26 1.9 Interfaces 27 1.10 Enums 29 1.11 Delegates 30 1.12 Attributes 31 2. Lexical structure 33 2.1 Programs 33 2.2 Grammars 33 2.2.1 Grammar notation 33 2.2.2 Lexical grammar 34 2.2.3 Syntactic grammar 34 2.3 Lexical analysis 34 2.3.1 Line terminators 35 2.3.2 Comments 35 2.3.3 White space 37 2.4 Tokens 37 2.4.1 Unicode character escape sequences 37 2.4.2 Identifiers 38 2.4.3 Keywords 39 2.4.4 Literals 40 2.4.4.1 Boolean literals 40 2.4.4.2 Integer literals 40 2.4.4.3 Real literals 41 2.4.4.4 Character literals 42 2.4.4.5 String literals 43 2.4.4.6 The null literal 45 2.4.5 Operators and punctuators 45 2.5 Pre-processing directives 45 2.5.1 Conditional compilation symbols 47 2.5.2 Pre-processing...

Words: 47390 - Pages: 190

Free Essay

Library Management System

...TERM PAPER CSE-101 Submitted to: Submitted by: Ms. Satindar Kaur Mr. Money Bansal ( Deptt. Of Computer) Roll.No.- R205A06 Reg.No- 10802676 Class- B.Tech-(ECE) LOVELY SCHOOL OF ENGINEERING ACKNOWLEDGEMENT I Money Bansal of section 205 registration no. 10802676 and roll no. 06 of course B.Tech. ECE hereby submit my synopsis on foundation of computing. I have done this project of Library management system under the guidance of Miss. Satindar Kaur. This is my great experience of C programming to submit this synopsis. Miss. Satindar Kaur (Lect. Found. of comp.) INTRODUCTION ‘C’ is a programming language developed at AT &T’s bell laboratories of USA in 1972.It was deigned by Dennis Retchie. This project of “LIBRARY MANAGEMENT SYSTEM” gives us the complete information about the library.We can enter the record of new books and retrieve the details of books available in the library .We can issue the books to the student and maintain their records and can also check how many books are issued and stock available in the library. The library Management system is designed & developed for a receipt and issuance of books in the library along with the student’s details.The books received in the library are entered in books entry form.When the student wants to get the desired...

Words: 1406 - Pages: 6

Premium Essay

Semaphores

...Header files #include <sys/types.h> #include <stdlib.h> #include <sys/ipc.h> #include <sys/sem.h> #include <sys/shm.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> #include <string.h> #include <stdio.h> #define SHM_KEY 123 #define SEM_KEY 456 #define PLAIN 0 #define CHOC 1 const int shared_segment_size = 0x6400; union semun { int val; struct semid_ds *buf; unsigned short int *array; struct seminfo *__buf; }; Create sem #include "my_ipc.h" int main( int argc, char *argv[]) { int sem_id, proj_id; if ( (sem_id = semget (SEM_KEY, 2, IPC_CREAT | IPC_EXCL | 0600 )) == -1 ) {perror ("Unable to create semaphore"); exit(5); }printf ("sem_id is %d\n", sem_id ); semaphore_initialize (sem_id); }int semaphore_initialize (int semid) { union semun argument; unsigned short values[2]; values[PLAIN] = 0; values[CHOC] = 0; argument.array = values; return semctl (semid, 0, SETALL, argument); } Producer_consumer #include "my_ipc.h" int main() { int sem_id, user_type, plain, choc; char *shared_memory; if ( (sem_id = semget (SEM_KEY, 1, 0600 )) == -1 ) { perror ("Unable to get hold of the semaphore "); exit(5); } printf ("Enter 0 if you are a producer or 1 if you are a consumer : "); scanf ("%d", &user_type ); if ( user_type ) { printf ("How many plain doughnuts you want to consume : "); scanf ("%d", &plain...

Words: 518 - Pages: 3