Arquivo I / O
- função funções da biblioteca O C padrão I / e sem buffer de I / O
- C E / S padrão função biblioteca printf (), putchar (), fputs (), abrirá o I / O tampão no espaço utilizador
- (), Read (), de escrita (), perto (), etc. localizado na função de biblioteca padrão C I subjacente tampões sistema aberto / S, também chamado I \ O (sem buffer I / O) funções não tamponados
- Quando eu chamar a biblioteca padrão para ler e escrever arquivo regular / O / O é mais rápido que Unbuffered I, e a necessidade de gerenciar buffers de E / S
- O tampão não precisa escrever dispositivo terminal ou rede, chamadas geralmente diretos sem buffer I / O
- Cada processo no kernel do Linux tem uma estrutura task_struct para manter a informação relacionada com o processo, chamado de descritor de processo (descritor de Processo)
- Existe um apontador para a estrutura files_struct task_struct, conhecida como uma mesa de descrição do ficheiro , em que cada entrada contém um apontador de ponteiro ficheiro aberto
- Os usuários não podem acessar diretamente a descrição do arquivo no kernel, mas só pode usar o índice da tabela descritor de arquivo (0,1,2, etc.), chamado de um descritor de arquivo , senão com uma variável do tipo int
- Quando a chamada para abrir um arquivo é aberto, o kernel aloca um descritor de arquivo e voltou para o programa do usuário, o descritor de arquivo ponteiro entrada da tabela para o arquivo recém-inaugurado
- Ao ler e escrever arquivos, o descritor de arquivo passado para o programa do usuário ler ou escrever, o kernel para encontrar a entrada correspondente, em conformidade com o descritor de arquivo, e em seguida, localize o ponteiro entrada da tabela de arquivo
- Três arquivos será aberta automaticamente quando o programa é iniciado: a entrada padrão, saída padrão e saída de erro padrão
- abrir fechar
- int aberta (char const * caminho, bandeiras int, ...);
- permissões de arquivo determinado pelo argumento modo de máscara aberta e umask do processo atual
- int perto (int fd);
- ler escrever
- Bloqueio (Block): Quando um processo chama a função é bloqueada, o processo é posto para dormir (sono) do Estado, que é o kernel agendador outros programas até que o processo está à espera de um evento ocorrer (como um pacote é recebido na rede) antes de não pode continuar a funcionar
- Execução (em execução): a ser executado ou estado de pronto (pronto para ser executado)
- Polling (Poll): suposto estar aqui em cima, mas na verdade não está bloqueado, mas retorna diretamente um erro, o chamador deve tentar lê-lo novamente
- Non-blocking I / O tem uma desvantagem, se todos os dispositivos têm sido dados não chega, as necessidades chamada para consultas repetidas para fazer trabalho útil, se o bloqueio em que o sistema operacional pode agendar outra execução do processo
- Pode usar non-blocking I / O, normalmente não parar a consulta em um loop while, mas não perguntou sobre o atraso ao Parlamento, enquanto espera por um cronograma atrasado outros processos podem ser executados, mas a desvantagem é quando os dados chegam não no tempo
- select (2) função lata monitorando simultaneamente uma pluralidade de dispositivos de bloqueio, também é possível definir o bloqueio tempo limite de espera
- lseek
- Mova a posição corrente de leitura (offset)
- fcntl
- atributo de status Arquivo (File Status Flag): Qual é o processo atual acessa o arquivo ou dispositivo, como ler, escrever, anexar, sem bloqueio, etc.
- propriedade estado de reset foi aberto um arquivo sem ter que re-abrir o arquivo
- Shell sintaxe de redirecionamento: abra o arquivo em que o descritor de arquivo no <,>, >>, <> para adicionar uma frente digital, o número é expresso
- $ Comando> / dev / null 2> & 1: O comando de comando padrão redirecionamento de saída para / dev / null, em seguida, uma mensagem de erro (erro padrão) O comando também pode ser gerado e redirecionado para a saída padrão (& 1, não e mais ele será interpretado como um nome de arquivo) do mesmo documento, ou seja, / dev / null
- Escrito no / dev / null dados do arquivo não for exibido, executar comandos, mas isso é normal ou não imprimir uma mensagem de erro
- ioctl
- Atributo informações de controle de origem, um arquivo ou o próprio dispositivo, como taxa de transmissão, o tamanho da janela de terminal
- Os dados de leitura / gravação ler e escrever, são as principais operações de I / O, conhecidas como dados em banda, os dados não podem ser leitura / gravação ler e escrever, referido como dados out-of-band
- mmap
- Uma parte do arquivo em disco é mapeada diretamente para a memória, ler e ponteiros de escrita pode ser usado diretamente sem através de um arquivo de leitura / gravação funções
File System
- introdução
- Como apresentar o usuário com uma estrutura de árvore? Como lidar com as solicitações do usuário uma operação de arquivos e diretórios?
- Como alcançar uma estrutura de árvore linear armazenados no disco? formato de armazenamento de arquivos como projetar o acesso mais eficiente para o disco do sistema?
- Quais são as várias operações de arquivos e diretórios no efeito líquido disco?
- sistema de arquivos ext2
- bloco de sistema de arquivos é a menor unidade (Block), partição inteira sistema de arquivos ext2 divididos em vários grupos de blocos do mesmo tamanho (Grupo Block), para cada grupo de bloco é constituído pelos seguintes componentes:
- Superblock (Super Block): Descrição área de informação excessivamente positiva do sistema de arquivos, como o tamanho do bloco, o número da versão do sistema de arquivos
- Bloco tabela descritor grupo (GDT, grupo descritor Tabela): informações de descrição de um grupo de bloqueio, tal como quando começar a tabela de inodo, onde o bloco de dados de início e semelhantes. Toda a partição é dividido em um número correspondente de grupos de blocos para o número do grupo descritor
- Bloco de mapa de bits (bloco de Mapa de bits): que descrevem o grupo bloco inteiro, que bloqueia o bloco livre é usado
- Bitmap inodo (inodo bitmap): mapa de bits de bloco e semelhantes, se ocupa um bloco, em que cada bit indica se ou não um inodo livre
- mesa de inode (Tabela inode): Descrição dos arquivos de armazenamento de informações, tais como o tipo de arquivo, permissões, tamanho, tempo de criação / alteração / acesso, ou seja, que o comando da informação ls -l para ver
- bloco de dados: armazenamento de arquivos de dados
- A menor unidade de disco ler e escrever é chamado de setor (Sector), tipicamente 512 bytes
- Bloco de dados de endereçamento
- sistema de operações de diretório de arquivos e funções:
- Ler arquivo inode: stat (2)
- de acesso (2)
- chmod (2)
- chown (2)
- utime (2)
- truncado (2)
- ligação (2)
- renomeia (2)
- Mkdir (2)
- rmdir (2)
- bloco de sistema de arquivos é a menor unidade (Block), partição inteira sistema de arquivos ext2 divididos em vários grupos de blocos do mesmo tamanho (Grupo Block), para cada grupo de bloco é constituído pelos seguintes componentes:
- Virtual File System (VFS, Virtual File System): kernel do Linux em uma variedade de diferentes formatos de arquivo fazer uma camada de abstração para que o conceito de arquivos, diretórios, como a camada de leitura e acesso de gravação abstração chamada de conceito, de modo que os vários sistemas de arquivos olha e com todos eles ao mesmo
- sistemas de arquivo Linux: Sistema de rede de arquivo, sistema de arquivos em disco, sistema de arquivo especial, etc.
- VFS como um sistema de arquivos de uso geral, os quatro conceitos básicos de sistema abstrato de arquivo, arquivo, entrada de diretório, inode, ponto de montagem
- No Linux, além de processar tudo o que é arquivo
- Quatro objeto básico de VFS
- superbloco Object (objeto superbloco): um sistema de arquivos montado
- objeto inode (objeto inode): um arquivo
- entrada de diretório objeto (dentry objeto): um diretório
- objeto de arquivo (objeto de arquivo): Abra o arquivo pelo processo
-
- Cada processo no PCB (Processo Control Block) são guardados com uma tabela de descritor de ficheiro, o descritor de ficheiro é um índice da tabela, cada entrada tem um apontador para a estrutura do ficheiro no kernel
- membro da estrutura de arquivo
- f_flags: Bandeira Estado do Arquivo
- f_pos: A posição atual do leitor
- f_count: contagem de referência (Contagem de Referência)
- Cada estrutura de arquivo aponta para uma estrutura file_operations, o membro da estrutura é uma função ponteiros para várias operações de arquivo implementadas funções de kernel
- Cada arquivo tem um ponteiro para a dentry estrutura (diretório entrada de diretório entrada) estrutura ponteiro, o diretório de cache do kernel na estrutura da árvore dentry Cache, cada nó é uma estrutura dentry, de acordo com o caminho (por exemplo / home / akaedu / a) encontrar inode do arquivo
- estrutura inode contém as informações lidas a partir do inode disco para partição, como proprietário, tamanho, tipo, permissões, etc.
- Cada estrutura inode tem um ponteiro para a estrutura inode_operations, que é um conjunto de ponteiro diretório do arquivo de funções para a realização de funções de algumas operações do kernel, como arquivos e diretórios adicionar e excluir, e outros links simbólicos seguem
- inode tem um ponteiro para uma estrutura super_block estrutura que contém informações sobre o super-bloco a partir do disco para ler a partição, como o tipo de sistema de arquivo, tamanho do bloco, etc., que é um ponteiro para uma dentry membro s_root, mostrando o documento raiz do sistema é montar onde
- dup e dup2 pode ser usado para copiar um descritor de arquivo existente, de modo que os dois descritores de arquivos apontam para a mesma estrutura de arquivo
- link de disco rígido (hard link): um número de inode correspondente à pluralidade de nomes de arquivos, ou seja, um documento usando uma pluralidade de aliases
- soft link (soft link): um número de inode corresponde a um nome de arquivo, Trivial File
processo
- introdução
- Cada processo no núcleo tem um bloco de controlo de processo (PCB) para manter a informação relacionada com o processo, o Linux é uma estrutura PCB task_struct, incluindo as seguintes informações
- ID de processo: um número inteiro não negativo, o sistema de cada processo tem uma identificação única
- Estado do processo: executar, suspender, parar, zumbis, etc.
- Necessidade de ser salvo e restaurado quando o processo de mudança de alguns registros de CPU
- Informações descrevendo o espaço de endereço virtual
- Descrição do terminal de controlo
- O diretório de trabalho atual
- umask mascarar
- mesa de descritor de arquivo, um ponteiro para a estrutura do arquivo contém muitos corpo
- E informações relacionadas com o sinal
- ID de usuário e ID de grupo
- terminal de controlo, o grupo de sessão e processos
- Resource capping processo (limite de recursos) pode ser utilizada
- bifurcar: De acordo com uma cópia do processo existente (pai processo Processo Parent) um novo processo (processo filho Processo Criança)
- exec: implementação do novo programa
- Cada processo no núcleo tem um bloco de controlo de processo (PCB) para manter a informação relacionada com o processo, o Linux é uma estrutura PCB task_struct, incluindo as seguintes informações
- Variáveis de ambiente
- PATH: caminho de pesquisa para arquivos executáveis podem conter vários diretórios, separados por uma: Verifique o valor comando echo
- SHELL: atual Shell, geralmente o valor de / bin / bash
- TERM: tipo de terminal atual
- LANG: idioma e local, decidiu mostrar a codificação informações de formato e tempo, moeda, etc.
- HOME: O caminho atual do diretório home do usuário
- Controle de processos
- bifurcar: a função de chamada de sistema, depois de chamar para o kernel, de acordo com a replicar um processo filho do processo pai. Chamado de uma vez, duas vezes devolvido (o processo pai chamado uma vez, o pai e filho processa cada uma vez devolvidos)
- gdb só pode controlar um processo de (padrão é o processo pai), mas não pode controlar vários processos simultaneamente
- exec: Depois de criar um processo filho usando garfo, o processo filho chama necessidades EXEC para executar outro programa
- esperar e waitpid: o processo é encerrado Shell (pai) chamadas esperar ou waitpid para obter seu estado de saída, enquanto remover completamente este processo, mas os termina processo, se o pai não Chamada em espera ou waitpid para limpá-lo, que é o processo de estado processo zumbi
- comunicação entre processos
- Cada processo cada um com um espaço de endereço de usuário diferente, não pode ver as variáveis globais de outros processos, dados inter-processo deve ser trocados através do kernel
- Um tampão aberto no núcleo, um processo para copiar os dados do espaço utilizador para o tampão, e, em seguida, processar dois do núcleo de tampão para ler os dados de distância, este mecanismo é chamado de comunicação entre processos (IPC, InterProcess Comunicação)
- Pipeline é um mecanismo básico IPC, criado pela função de tubo, as seguintes restrições
- processo de comunicação de duas vias só pode ser alcançado através de um gasoduto, se o pai é o processo de escrita da criança a ler, você precisa abrir outro tubo
- Leia extremidade do tubo passando por um descritor de arquivo aberto, um descritor de arquivo para ser passada através do garfo
- Quatro tipos de gasoduto circunstâncias especiais
- Todos apontam para o fim gravação dos descritores de arquivos tubo estão fechados
- Não estão a apontar para o final de gravação do descritor de arquivo tubulação não está fechado
- Todos apontam para o fim leitura dos descritores de arquivos tubo estão fechados
- Apontando o fim leitura do tubo não desliga o descritor de arquivo
- Outros mecanismos de IPC: FIFO, Unix Domínio Socket (mais utilizado), usando o sistema de arquivos em um arquivo especial para identificar canal IPC
Shell Script
- Como Run
- Interpretado uma entrada comando de usuário, interpretado, um modo de execução interativa (Interactive) e lote (Lote) (usuário antes de escrever um script Shell (Script), a Shell concluiu a primeira performance) em dois
- Usuários digitar comandos na linha de comando, a Shell fork e exec o comando, mas o built-in exceção de comando, executar comando interno é equivalente a chamar um processo Shell função não criar um novo processo
- A sintaxe básica
- Variáveis: as letras maiúsculas sublinhadas compostas de variáveis sub-ambiente e variáveis locais (Shell só existem no processo atual)
- substituição de nome de arquivo (Globbing): chamados caracteres curinga para correspondência (Wildcard)
- substituição de comando: `` ou $ () é um comando
- substituição aritmética: $ (()) no valor Shell para uma variável inteira
- significado especial \ para a remoção de um único caractere imediatamente seguinte: o caractere de escape
- aspas simples, aspas duplas: manter todos os personagens das citações literais
- bash script de inicialização
- Você pode definir a variável de ambiente e apelido, configurações de umask no script de inicialização, entrem em vigor toda vez que você iniciar o Shell
- Modo de festa de inicialização
- Shell começou como um login interativo, ou usar o --login parâmetro start
- non-login interativo início Shel
- início não-interativo
- comando sh para começar
- Shell sintaxe de script
- Condições de ensaio: ensaio ou [
- if / then / elif / else / fi
- caso / esac
- para / do / feito
- enquanto / fazer / feito
- parâmetros posicionais e variáveis especiais
- função
- modo de depurar scripts shell
- -n
- -v
- -x
Expressões regulares
- introdução
- As expressões regulares: algumas disposições especiais classes de personagens Sintaxe notação, ea relação posicional entre o número de qualificadores, e então usar estes sintaxe especial e encadear representam um modo comum (padrão)
- A mensagem contém: uma classe de caracteres (caráter de classe), o número de qualificadores (Quantifier), a relação posicional entre caracteres
- Aplicação: a entrada do usuário validar (ip, e-mail) formato é legal
- A sintaxe básica
- Comandos comum
- grep
- sed: editor de fluxo (Stream Editor), Shell script usado como um filtro, a saída de um programa introduzido antes da entrada sed, editado após a conversão para outro formato de saída
- awk: em linhas ou como uma unidade de processamento
sinal
- conceito básico
- sinal Pressione Ctrl-C é gerado pelo processo em primeiro plano emitido (interrupção de hardware), CPU para mudar do modo de usuário para interrupções de processamento de modo kernel
- Sinal em relação ao fluxo de processo de controlo é assíncrona
- matar -l para ver a lista de sinal definido pelo sistema, cada sinal tem um rótulo e um nome de macro, definições de macro pode ser encontrada em signal.h
- Cada sinal tem uma condição padrão ea operação de processamento de geração
- Gerando um sinal
- Bloqueio de sinal
- Realizando uma operação de processamento de sinal de entrega é referido como sinal (entrega)
- Sinal gerado entre um estado chamado de entrega de sinal de pendentes (Pending)
- Processo para seleccionar um sinal de bloqueio (bloco), realizada em um sinal de estado de pendência é gerado quando é bloqueado até que o processo é desbloqueado, antes da aplicação da entrega da acção
- sinal de captura
- A operação de processamento de sinal é funções definidas pelo utilizador (manipulador de sinal), o sinal da chamada de função quando a transferência, o sistema executa automaticamente sigreturn chamada para o modo de kernel retorna novamente, nenhum novo sinal foi emitido, os principais retorna o contexto para continuar
Terminal e daemon de controle de trabalho
- terminal
- terminal série: desenvolvimento incorporado, cada porta correspondente a uma placa de terminais alvo
- Virtual Terminal (Terminal Virtual):
/dev/tty1
~/dev/tty6
- tampão terminal: terminal de entrada / saída fila tampão
- Terminal de login: módulo de núcleo compreende um hardware de processamento de controladores de dispositivos terminais e protocolos de linha (Linha disciplina)
- Terminal de Rede / ilustrações terminal (janela): Qualquer número, conseguida por pseudo-terminal (Pseudo TTY), um dispositivo composto por um mestre pseudo-terminal (PTY mestre, correspondente ao teclado e monitor) e uma composição a partir de um dispositivo (PTY Slave)
- controle de trabalho (trabalho de controlo):
- Jó (Jó) refere-se ao grupo de processos (Process Group), Shell pode executar fundo múltiplo e um trabalho trabalhos plano simultaneamente
- Sessão: têm o mesmo terminal de um grupo de controlo de processos
- Daemon (daemon)
- processo de serviço do sistema em Linux, não há terminal de controle, e o usuário não pode interagir sem afetar o logon e logoff do usuário foi executado
fio
- O conceito de threads
- Durante a realização de um controlo de processo de vários processos, como o download de software, uma interface gráfica e interação do usuário para o lado, à espera de manuseio do mouse e eventos de teclado do usuário e, simultaneamente, baixar arquivos múltiplos, espera e lidar com cabelo de vários hosts de rede aos dados
- Multitarefa "Wait - Processing" multithreading ciclo de lata
- Vários segmentos do mesmo processo compartilham o mesmo espaço de endereço
- Passe Controle
- Criar um fio
- Terminar a thread
- A sincronização entre threads
- Mutex (Mutex, Mutual exclusivo Lock): representa o número de recursos disponíveis, 0 ou 1, um segmento para adquirir o bloqueio pode ser feito "dizia - modificar - write" operação, e depois para os outros lançamentos de rosca de bloqueio, nenhum segmento de bloqueio única não pode esperar para o acesso aos dados compartilhados, garantir que a "ler - modificar - write" é uma operação atômica (quer executar ou não executar), não executa para o meio interrompido, isso não será paralelo nos outros processadores operacional
- Impasse (impasse)
- variável de condição (condição Variável)
- Semáforo (semáforo): o número de recursos disponíveis, pode ser maior do que 1
- Outros mecanismos de sincronização inter-thread
base protocolo TCP / IP
- TCP / IP do pacote de encapsulamento pilha de protocolos
- Packet Nome: camada de transporte - a secção (segmento), a camada de rede - os pacotes de dados (de datagramas), a camada de ligação - um quadro (frame)
- formato de quadro Ethernet
- formato de datagramas ARP
- formato de datagrama IP
- endereço IP e roteamento
- endereço IP privado pode hospedar ligações à Internet através de um servidor proxy ou NAT (Network Address Translation)
- teste de circuito fechado nativa (loop back)
-
- Tabela de roteamento
- Formato do segmento UDP
- protocolo TCP
programação de socket
- preliminares
- programa de rede TCP baseada em protocolo
- escolha: a rede de sistema de chamadas de programa pode ser bloqueado simultaneamente monitorar vários descritores de arquivos (como várias conexões de rede), que tem dados sobre o primeiro tratamento que, sem garfo e, portanto, pode conseguir serviços de servidor multi-processo simultâneos
- programa de protocolo de rede baseado em UDP
- UNIX Domínio Soquete IPC
- Web Server simples
referência
Linux C Programação aprendizagem parada
http://docs.linuxtone.org/ebooks/C&CPP/c/
IBM Tutorial
https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html
Macio e conexão hard-wired