Resumo das perguntas clássicas do exame de admissão de pós-graduação em informática

sistema operacional

recursos do sistema operacional?

– Compartilhado: os recursos podem ser usados ​​por vários processos em execução simultânea
– Simultâneo: vários processos podem ser processados ​​no mesmo intervalo de tempo, exigindo suporte de hardware
– Virtual: mapeando entidades físicas em vários dispositivos virtuais
– Assíncrono: a execução do processo para e inicia, a execução a velocidade de cada processo pode ser diferente, mas o SO precisa garantir que o resultado de cada execução do processo seja o mesmo

Os três componentes do processo?

Segmento de programa, segmento de dados, PCB (bloco de controle de processo)

Qual é a diferença entre concorrência e paralelismo?

Simultaneidade: mesmo intervalo Paralelo: mesmo momento

Processo de comutação de processo?

Mantenha o contexto do processador -> atualize o PCB -> mova o PCB para a fila correspondente (pronto, bloqueado) -> selecione outro processo e atualize seu PCB -> atualize a estrutura de dados de gerenciamento de memória -> restaure o contexto do processador

processo de comunicação

1. Operação PV em modo de comunicação de baixo nível
(mecanismo de semáforo).
– P: primitiva wait(S), aplica-se a S recursos – V:
, libera S recursos
primitiva – passagem de mensagem (troca de dados entre processos com mensagens formatadas, existem entidades intermediárias, que são divididas em dois tipos diretos e indiretos, e a camada inferior é realizada por dois primitivos de envio e recebimento de mensagens) – comunicação de pipeline ( dois Há um arquivo de pipeline especial no meio de cada processo, a entrada e a saída do processo passam o pipeline, comunicação half-duplex)


O que é um tubo?

Um módulo que consiste em um conjunto de dados e na definição de operações nesse conjunto de dados. Apenas um processo pode utilizar o monitor ao mesmo tempo, ou seja, o monitor é mutuamente exclusivo, após o processo liberar o monitor, ele precisa acordar o processo na fila de espera que solicitou o recurso monitor. Um processo só pode acessar os dados nele contidos entrando no monitor e usando as operações dentro do monitor.

Condição necessária para impasse?

– Condição de exclusão mútua: os recursos só podem ser ocupados por um processo em um determinado momento
– Condição de não privação: os recursos mantidos por um processo não podem ser retirados à força por outros processos antes da liberação voluntária
– Condições de solicitação e ocupação: o processo de impasse deve ser ambos Reter recursos e solicitar recursos
– condições de espera cíclica: há uma cadeia de espera, aplicação mútua, não liberando um ao outro
Evitar deadlock: não deixar ocorrer condições de espera cíclica. Use o algoritmo do banqueiro.

Diferença entre impasse e fome?

– Ambos são problemas de alocação de recursos
– Deadlock está esperando por recursos que nunca serão liberados, enquanto recursos solicitados por starvation serão liberados, mas nunca serão alocados para si mesmos
– Uma vez que um deadlock ocorre, deve haver vários processos de deadlock, e pode haver ser apenas um processo faminto
- o processo faminto pode estar no estado pronto e o processo em impasse deve ser um processo bloqueado

Diferença entre processo e thread?

Um thread é chamado de processo leve e um processo contém threads. Um processo tem um espaço de memória independente e processos diferentes não podem compartilhar diretamente outros recursos de processo, enquanto threads no mesmo processo compartilham o espaço de memória do processo; em comparação com os processos, a troca de threads tem menos sobrecarga do sistema; um processo é a menor unidade de alocação de recursos , Um thread é a menor unidade de execução do programa.

O que o FCB contém?

Ponteiro de arquivo: a última posição de leitura e gravação.
File Opens: Quantos processos abriram este arquivo.
Localização do disco de arquivo.
Permissões de acesso a arquivos: criar, somente leitura, leitura/gravação, etc.

Algoritmo de substituição de página?

Algoritmo de permutação ideal OPT

As páginas selecionadas para serem eliminadas serão páginas que nunca serão utilizadas no futuro, ou páginas que não serão acessadas por mais tempo, de modo que possa ser garantida a menor taxa de falta de página. No entanto, como as pessoas atualmente não podem prever qual das milhares de páginas do processo na memória não será acessada por mais tempo no futuro, esse algoritmo não pode ser realizado.

Algoritmo de substituição primeiro a entrar primeiro a sair FIFO

A prioridade é eliminar as páginas que entram na memória primeiro, ou seja, as páginas que residem na memória há mais tempo. O algoritmo é simples de implementar, basta vincular as páginas transferidas para a memória em uma fila de acordo com a ordem e definir um ponteiro para apontar sempre para a página mais antiga. No entanto, esse algoritmo não se adapta às regras quando o processo está realmente em execução, pois no processo algumas páginas são frequentemente acessadas.

O algoritmo menos usado recentemente LRU

A página que não foi visitada há mais tempo recentemente é eliminada, acredita-se que a página que não foi visitada no período passado pode não ser visitada no futuro próximo. O algoritmo define um campo de acesso para cada página para registrar o tempo decorrido desde o último acesso da página e, ao eliminar uma página, selecione aquela com o maior valor entre as páginas existentes a serem eliminadas.

Relógio Algoritmo LOCK

O desempenho do algoritmo LRU é próximo ao do OPT, mas é difícil de implementar e tem um grande overhead; a implementação do algoritmo FIFO é simples, mas seu desempenho é ruim. Portanto, os projetistas do sistema operacional tentaram muitos algoritmos, tentando abordar o desempenho do LRU com uma sobrecarga relativamente pequena.Esses algoritmos são todos variantes do algoritmo CLOCK.
Um algoritmo CLOCK simples é associar um bit adicional a cada quadro, chamado de bit de uso. Quando uma página é carregada pela primeira vez na memória principal, o bit de uso do quadro é definido como 1; quando a página é acessada posteriormente, seu bit de uso também é definido como 1. Para o algoritmo de substituição de página, o conjunto de quadros candidatos para substituição é visto como um buffer circular e um ponteiro é associado a ele. Quando uma página é substituída, esse ponteiro é definido para apontar para o próximo quadro no buffer. Quando uma página precisa ser substituída, o sistema operacional varre o buffer em busca de um quadro com o bit de uso definido como 0. Sempre que um quadro com um bit de uso de 1 é encontrado, o sistema operacional redefine o bit para 0; se no início do processo, todos os quadros no buffer tiverem bits de uso de 0, o primeiro quadro encontrado é escolhido Substituição de um quadro ; se os bits de uso de todos os quadros forem 1, o ponteiro faz um círculo completo no buffer, define todos os bits de uso como 0 e permanece na posição original, substituindo a página no quadro. Como o algoritmo verifica o status de cada página ciclicamente, ele é chamado de algoritmo CLOCK, também conhecido como algoritmo Não usado recentemente (NRU).

Algoritmo de Relógio Aprimorado

O algoritmo CLOCK aprimorado é superior ao algoritmo CLOCK simples em que as páginas que não foram alteradas são preferidas ao substituir. Isso economiza tempo, pois as páginas modificadas devem ser reescritas antes de serem substituídas.

Algoritmo de agendamento de trabalho em lote?

Primeiro a chegar, primeiro a servir FCFS

É escalonar os trabalhos de acordo com a ordem natural em que cada trabalho entra no sistema. A vantagem desse algoritmo de escalonamento é que ele é simples e justo de implementar. Sua desvantagem é que não leva em consideração o uso abrangente de vários recursos do sistema, o que muitas vezes deixa os usuários de jobs curtos insatisfeitos, pois o tempo de espera para jobs curtos pode ser muito maior do que o tempo real de execução.

Trabalho mais curto primeiro (SJF)

É para priorizar e processar trabalhos curtos.O chamado trabalho curto refere-se ao curto tempo de execução do trabalho. Quando a tarefa não está em execução, o tempo de execução real da tarefa não pode ser conhecido, portanto, o usuário precisa enviar o tempo de execução estimado da tarefa ao enviar a tarefa.

Maior taxa de resposta Prioridade HRN

O FCFS pode causar insatisfação dos usuários com trabalhos curtos, e o SPF pode deixar os usuários insatisfeitos com trabalhos longos, portanto HRN é proposto para selecionar o trabalho com a maior taxa de resposta a ser executada. Taxa de resposta = 1 + tempo de espera do trabalho / tempo de processamento do trabalho.

Algoritmo de agendamento de fila multinível

Cada trabalho especifica um número inteiro representando o nível de prioridade do trabalho.Quando um novo trabalho precisa ser transferido do poço de entrada para a memória para processamento, o trabalho com o número de prioridade mais alto recebe prioridade.

Algoritmo de escalonamento de processos?

O processo possui três estados: bloqueio pronto, em execução.

primeiro a entrar primeiro a sair FIFO

Selecione de acordo com a ordem em que os processos entram na fila de prontos. Ou seja, sempre que o escalonamento de processos é inserido, o processo líder da fila de prontos é sempre colocado em operação.

Algoritmo de rotação de fatia de tempo RR

Um algoritmo de escalonamento para sistemas de tempo compartilhado. A ideia básica do round robin é dividir o tempo de processamento da CPU em fatias de tempo, e os processos na fila de prontos executam uma fatia de tempo por vez. Quando a fatia de tempo termina, o processo é forçado a desistir da UCP, e o processo entra na fila de prontos para aguardar o próximo escalonamento. Ao mesmo tempo, o escalonamento de processos seleciona um processo na fila de prontos e atribui a ele um tempo corte para começar a correr.

Algoritmo de prioridade mais alta HPF

O escalonamento do processo atribui o processador ao processo pronto com a prioridade mais alta de cada vez. O algoritmo de prioridade mais alta pode ser combinado com diferentes métodos de CPU para formar um algoritmo de prioridade mais alta preemptivo e um algoritmo de prioridade mais alta não preemptivo.

Algoritmo de feedback de fila multinível

A combinação de vários algoritmos de escalonamento é um método de fila multinível.

Algoritmo de agendamento de disco?

Primeiro a chegar, primeiro a servir FCFS

Menor tempo de busca primeiro SSTF

Deixar o solicitante mais próximo da faixa atual iniciar o drive do disco, ou seja, deixar executar primeiro o job com menor tempo de busca, independente da ordem de chegada do solicitante, superando assim o movimento do braço magnético no primeiro a chegar. problema superdimensionado do algoritmo de escalonamento first-serve

Algoritmo de Varredura SCAN

Comece sempre da posição atual do braço magnético e siga a direção do movimento do braço magnético para selecionar o visitante do cilindro mais próximo do braço magnético atual. Se não houver solicitação de acesso ao longo da direção do braço magnético, o sentido de movimento do braço magnético é alterado. O movimento do braço magnético sob este método de agendamento é semelhante ao agendamento do elevador, por isso também é chamado de algoritmo de agendamento do elevador.

Algoritmo de varredura cíclica C-SCAN

O algoritmo de agendamento de varredura round-robin é aprimorado com base no algoritmo de varredura. O braço magnético é alterado para um único movimento, de fora para dentro. A posição atual começa a selecionar o visitante de qual cilindro está mais próximo do braço magnético atual ao longo da direção de movimento do braço magnético. Caso não haja solicitação de acesso na direção do braço magnético, volte para a mais externa e acesse a solicitação de trabalho com o menor número de cilindro.

FAT (tabela de alocação de arquivos)

Todos os números de bloco de disco atribuídos a arquivos são colocados no FAT para registrar a localização física dos arquivos.

Qual é a diferença entre uma interrupção e uma chamada de sistema?

Como funcionam as interrupções?
Solicitação de interrupção, resposta de interrupção, proteção de ponto de interrupção, execução de rotina de serviço de interrupção, recuperação de ponto de interrupção, retorno de interrupção

Interrupção: Resolver a incompatibilidade entre a velocidade do processador e a velocidade do hardware é uma condição necessária para a multiprogramação. Cada interrupção tem sua própria identificação digital.Quando ocorre uma interrupção, o conteúdo do contador de instruções PC e a palavra de status do processador PSW são automaticamente inseridos na pilha do processador, e os novos vetores de interrupção PC e PSW também são carregados em seus respectivos registradores. . Neste momento, o PC contém o endereço de entrada do tratamento de interrupção para a interrupção, que controla o programa para passar para o processamento correspondente. Quando o tratamento de interrupção é executado, o último iret (retorno de interrupção) do programa controla a recuperação de o programa de chamada.ambiente de. A diferença entre interrupções e chamadas de sistema: As interrupções são geradas por periféricos, não intencionais, e as chamadas de sistema passivas são geradas por aplicativos que solicitam o sistema operacional para fornecer serviços, intencionais e ativas. Para entrar no modo kernel a partir do modo de usuário por meio de uma interrupção. (Contato) Processo de interrupção: solicitação de interrupção, resposta de interrupção, proteção de ponto de interrupção, execução do programa de serviço de interrupção, recuperação de ponto de interrupção, retorno de interrupção processo de chamada do sistema: o programa aplicativo solicita uma chamada do sistema ao executar no modo de usuário, interrompe, entra no modo kernel do usuário modo e executa no modo kernel O código do kernel correspondente.

O significado e método de armazenamento virtual?

De acordo com as duas características de exclusão mútua e localização espacial e temporal da execução do programa, apenas uma parte da tarefa pode ser carregada durante o carregamento e a outra parte é armazenada no disco. Um espaço de memória principal tão pequeno também pode executar um trabalho maior do que ele. As tecnologias de armazenamento virtual comumente usadas incluem paginação e gerenciamento de armazenamento segmentado.

O sistema de arquivos usado pelo Windows e Linux?

window:fat32.linux:ext2,fat32.

Princípios de composição computacional

O que é uma estrutura de von Neumann?

Uma estrutura de memória que combina memória de instrução de programa e memória de dados.
Os cinco componentes são: entrada e saída, unidade de computação, unidade de controle e unidade de armazenamento.
Dispositivos de entrada para entrada de dados e programas;
memória para armazenamento de programas e dados;
unidades aritméticas para processamento de dados;
controladores para controlar a execução de programas;
dispositivos de saída para saída de resultados de processamento.

O papel do cache

Conecte a CPU e a memória.

Qual a diferença entre cache e registrador?

O registrador é uma parte da CPU que é armazenada temporariamente, e o cache é usado como uma correia de aceleração entre a CPU de alta velocidade e a memória principal de baixa velocidade.

sistema de comando

A calculadora do sistema de instruções complexas CISC (Complex Instruction Set Computer) é um microprocessador que executa mais tipos de instruções de computador. RISC (Computador de conjunto de instruções reduzido) é uma calculadora de sistema de instrução simplificada, que é um microprocessador que executa menos tipos de instruções de computador.

linha de montagem

O processo repetitivo é dividido em vários subprocessos para ser concluído.

Barramento e E/S

O barramento refere-se à linha de conexão para comunicação de dados, incluindo endereço, dados e instruções de controle.
A entrada/saída de E/S (entrada/saída) é dividida em duas partes: dispositivo de E/S e interface de E/S. Os
métodos de E/S são: DIO (E/S direta), AIO (E/S assíncrona, E/S assíncrona), E/S mapeada em memória (E/S mapeada em memória), etc., diferentes métodos de E/S têm diferentes métodos de implementação e desempenho, e diferentes métodos de E/S podem ser selecionados de acordo com a situação em diferentes aplicativos.

DMA

DMA (Direct Memory Access) é um recurso importante de todos os computadores modernos, permitindo que dispositivos de hardware de diferentes velocidades se comuniquem entre si sem depender da pesada carga de interrupção da CPU. Caso contrário, a CPU precisa copiar os dados de cada fragmento da origem para o bloco de rascunho e, em seguida, gravá-los novamente no novo local. Durante esse tempo, a CPU fica indisponível para outros trabalhos.

Java

As características do java?

Compile uma vez e execute em qualquer lugar, sem ponteiros, totalmente orientado a objetos, orientado a objetos (encapsulamento, herança, polimorfismo).

Termos comuns de Java

JavaEE: Java Platform Enterprise Edition é uma plataforma padrão lançada pela Sun para aplicativos de nível empresarial.
J2EE: Java 2 Platform, Enterprise Edition, é o antigo nome de JavaEE.
JDBC: Java DataBase Connectivity, conexão de banco de dados Java.
JNDI: Java Naming and Directory Interface, fornece um sistema de diretório que permite aos desenvolvedores acessar recursos por nome.
EJB: Enterprise JavaBean, usado para construir um componente de servidor gerenciável.
Servlet: Um programa de servidor escrito em Java que pode modificar dinamicamente o conteúdo da web.
JSP: Java Server Pages, um padrão de tecnologia de página da Web dinâmico liderado pela Sun. O JSP é implantado no servidor da Web, que pode responder às solicitações do cliente e retornar o conteúdo correspondente.
RMI: Remote Method Invocation, para que o cliente possa chamar o método no servidor remoto como um objeto local. Ao contrário do RPC (Protocolo de Chamada de Procedimento Remoto), o RMI só é aplicável a Java e os resultados retornados também são diferentes. O RML precisa ser serializado durante a transferência do arquivo e convertido em binário para ser transmitido pelo servlet
XML: Extensible Markup Language, usado para transmitir e armazenar dados
JMS: Java Message Service, um serviço de middleware orientado a mensagens na plataforma Java, usado no Delivery de serviços entre sistemas ou aplicações distribuídas.
JTA: Java Transaction API, componentes de gerenciamento de transações.
Weblogic: Um servidor JavaEE comercial lançado pela Oracle

Como o java lida com a alocação e liberação de objetos?

Java divide a memória em espaço de pilha para armazenamento.O novo espaço na pilha não precisa ser recuperado por si só e é automaticamente coletado como lixo.

JVMName

Ao contrário do C++, que exige que os programadores liberem memória manualmente, o Java tem uma máquina virtual, portanto, o Java não exige que os programadores liberem memória ativamente, mas usa o próprio coletor de lixo da máquina virtual (Garbage Collector-GC) para reciclar objetos. Devido à existência de uma máquina virtual, a linguagem Java alcançou independência de plataforma.Em qualquer plataforma, o código é convertido em um arquivo de bytecode para executar o código na máquina virtual sob a plataforma.

Glossário:

Distribuição da área de memória
Pilha da máquina virtual: armazene o frame da pilha quando cada método é executado, e uma chamada de método até a conclusão corresponde ao processo de push e popping do frame da pilha na pilha da máquina virtual.

Pilha de método nativo: semelhante à pilha de máquina virtual, mas atende ao método nativo em Java. A "memória da pilha" geralmente referida refere-se ao nome coletivo da pilha da máquina virtual e à pilha do método local.

Contador de Programa: Um indicador do número da linha do bytecode sendo executado pelo thread atual, do qual o interpretador de bytecode depende para seu trabalho. Ocupa um pequeno espaço de memória e não aparece OOM.

Heap: A chamada "memória heap". A maior parte da memória gerenciada pela JVM é compartilhada por todos os encadeamentos. A única função é alocar espaço de memória para instâncias de objetos.No algoritmo de recuperação geracional, a nova geração e a geração antiga estão no heap.

Área de método (também chamada de geração permanente): não no heap, mas compartilhada por cada thread, armazenando dados como informações de classe, constantes, variáveis ​​estáticas, código compilado pela JVM, etc. que foram carregados pela JVM. Entre eles está a piscina constante.

Outra: a memória direta, que não pertence à área de memória da JVM, está intimamente relacionada ao NIO e não é limitada pelo tamanho da memória da JVM.

Mecanismo de coleta de lixo da JVM

Quando acontece a coleta de lixo?

O GC é essencialmente um thread daemon, que detecta constantemente se há objetos inacessíveis no heap e libera memória, portanto, não podemos prever quando o GC acontecerá. O GC destrói objetos chamando o método finalize() do objeto.

Determinação de Objetos Inalcançáveis: Algoritmos de Busca Raiz. Há uma série de Raízes GC definidas na JVM. Quando não há cadeia de referência de um objeto para qualquer Raiz GC, significa que o objeto está inacessível.

Algoritmo de coleta de lixo na JVM

1. Algoritmo Mark-clear

Algoritmo mais básico, GC vai julgar se o objeto no heap está inalcançável, se atende as condições de limpeza (verificar se é necessário executar o método finalize() para o objeto, o padrão necessário é se o objeto foi chamado o método finalize ou o objeto Você substituiu o método finalize(), porque finalize() só pode ser chamado uma vez), marque o objeto e coloque-o na fila F-queue. Neste ponto, a menos que o objeto recupere uma referência no método finalize(), ele será limpo.

2. Copie o algoritmo

Divida a memória em duas partes de tamanho igual. Quando o objeto está inacessível, ele não é limpo a tempo, mas aguarda a memória em uso

Acho que você gosta

Origin blog.csdn.net/weixin_44077556/article/details/107405999
Recomendado
Clasificación