[Linux] "programação Linux C aprendizagem stop" Part.3 [Sistema Linux de programação]

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)
  • 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

  • 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

https://blog.csdn.net/Y_Hanxiao/article/details/83986797

https://www.cnblogs.com/diantong/p/10507132.html

Acho que você gosta

Origin www.cnblogs.com/cxc1357/p/12378555.html
Recomendado
Clasificación