minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
04/07/2024: Sincronização do sistema operacional e notas de estudo de exclusão mútua
Processos ou programas simultâneos perderão seu fechamento quando executados. Ou seja, se dois programas utilizarem um recurso compartilhado em áreas separadas, os resultados de cada execução poderão ser diferentes.
A razão é que não protegemos o recurso compartilhado x que tanto o programa a quanto o programa b precisam acessar.
O relacionamento mutuamente restritivo é a sincronização. Uma compreensão simples da sincronização é que deve haver uma ordem na execução dos processos.
O relacionamento que se restringe indiretamente é chamado de relacionamento mutuamente exclusivo, por exemplo, impressora.
“Modelo Produtor e Consumidor”
contador+ +
首先把变量放到寄存器里面
register1 = counter;
接下来对寄存器进行一个自增
register1 = register1 + 1;
再把结果返回到counter里
counter = register1;
contador- -
首先把变量放到寄存器里面
register2 = counter;
接下来对寄存器进行一个自减
register2 = register2 - 1;
再把结果返回到counter里
counter = register2;
Solução: trate o contador como um recurso crítico e permita que o processo acesse a variável contador mutuamente (você aprenderá o mecanismo de sincronização mais tarde)
Quer se trate de um recurso crítico de hardware ou de software, vários processos devem acessá-lo mutuamente.
Essas áreas são essencialmente códigos
Quando nenhum processo está na seção crítica, isso indica que os recursos da seção crítica estão ociosos. Um processo que solicita a entrada na seção crítica deve ter permissão para entrar imediatamente em sua própria seção crítica para utilizar os recursos de maneira eficaz.
Quando um processo existente entra na seção crítica, indica que o recurso crítico está sendo acessado. Portanto, outros processos que tentam entrar na seção crítica devem esperar para garantir acesso mutuamente exclusivo ao recurso crítico.
Para processos que requerem acesso a recursos críticos, devem garantir que podem entrar na sua própria secção crítica dentro de um tempo limitado para evitar cair num estado de “espera para morrer”.
Quando um processo não consegue entrar em sua própria seção crítica, o processador (CPU) deve ser liberado imediatamente para evitar que o processo caia no estado de "espera ocupada".
两个进程必须交替进入临界区,若一个进程不再进入临界区,则另一个进程也无法进入临界区,违背了“空闲让进”准则
O método de primeira verificação de sinalização dupla define um sinalizador de matriz booleana[2] para marcar a disposição de cada processo de entrar na seção crítica sinalizador[i]=true significa que Pi deseja entrar na seção crítica.
- O loop while é equivalente ao mecanismo de semáforo
- Definir a bandeira da outra parte equivale a alterar o semáforo da outra parte.
- Porém, como ambos os processos verificam primeiro a bandeira [olhar primeiro para o semáforo], e ambos são falsos [ambos os semáforos verdes] inicialmente, é possível que os dois processos passem pelo semáforo ao mesmo tempo e entrem juntos na seção crítica .
O método de pós-verificação de sinalização dupla verificará a bandeira da outra parte e, em seguida, definirá a sua própria. Essas duas operações não podem ser feitas de uma só vez, portanto, os dois processos podem entrar na seção crítica ao mesmo tempo. foi desenvolvido um método que primeiro define o próprio sinalizador e depois verifica o sinalizador da outra parte. Se o sinalizador da outra parte for verdadeiro, espere, caso contrário, entre na seção crítica;
O algoritmo de Peterson combinamétodo de marca únicaeMétodo de pós-verificação de marca duplaA ideia é usar flag[] para resolver o problema de acesso mutuamente exclusivo e usar turn para resolver o problema de fome.
Se ambas as partes estiverem competindo para entrar na seção crítica, o processo pode ser permitido para dar à outra parte a oportunidade de entrar na seção crítica.
Antes de cada processo entrar na seção crítica, ele define seu próprio sinalizador e define o sinalizador de turno que pode entrar. Depois disso, ele detecta o sinalizador e o turno da outra parte ao mesmo tempo para garantir que apenas um processo possa entrar quando. ambas as partes solicitam entrar na seção crítica ao mesmo tempo.
Falha em abrir mão do direito de esperar
É difícil para o software resolver o problema de exclusão mútua de cada processo de entrar na seção crítica e tem grandes limitações, portanto, o computador fornece algumas instruções especiais de hardware para resolver o problema.
A instrução TS pode ser considerada como um processo de função (primitivo) cujo processo de execução é indivisível.
Use o TS para gerenciar seções críticas e definir um bloqueio para cada recurso crítico.
É chamada de instrução de troca e é usada para trocar o conteúdo de duas palavras.
É definido como um inteiro S usado para representar o número de recursos. Existem apenas três operações para este semáforo inteiro: inicialização (atribuição de um valor inicial), espera (decremento), sinal (incremento).
Mecanismo de sincronização de processos sem fenômeno de "espera ocupada"
- A operação de espera é equivalente à operação P
- A operação do sinal é equivalente à operação V
- Apenas dois nomes diferentes, as funções são exatamente as mesmas
- espere(A) = P(A)
- sinal(B) = V(A)
Defina um semáforo mutuamente exclusivo mutex=1 e, em seguida, coloque a seção crítica para cada processo para acessar recursos críticos entre wait(mutex) e signal(mutex)
Defina um semáforo de sincronização S = 0, de modo que o sinal de instrução (S) que precisa ser executado primeiro e depois a espera (S)