mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 22:37:49 +00:00
Format markdown
This commit is contained in:
@@ -277,16 +277,16 @@ pub fn _print(args: fmt::Arguments) {
|
||||
|
||||
Bloquea el `WRITER`, llama a `write_fmt` en él y lo desbloquea implícitamente al final de la función. Ahora imagina que una interrupción ocurre mientras `WRITER` está bloqueado y el manejador de interrupciones intenta imprimir algo también:
|
||||
|
||||
Timestep | _start | manejador_interrupcion
|
||||
---------|------|------------------
|
||||
0 | llama a `println!` |
|
||||
1 | `print` bloquea `WRITER` |
|
||||
2 | | **ocurre la interrupción**, el manejador comienza a ejecutarse
|
||||
3 | | llama a `println!` |
|
||||
4 | | `print` intenta bloquear `WRITER` (ya bloqueado)
|
||||
5 | | `print` intenta bloquear `WRITER` (ya bloqueado)
|
||||
… | | …
|
||||
_nunca_ | _desbloquear `WRITER`_ |
|
||||
| Timestep | _start | manejador_interrupcion |
|
||||
| -------- | ------------------------ | -------------------------------------------------------------- |
|
||||
| 0 | llama a `println!` | |
|
||||
| 1 | `print` bloquea `WRITER` | |
|
||||
| 2 | | **ocurre la interrupción**, el manejador comienza a ejecutarse |
|
||||
| 3 | | llama a `println!` |
|
||||
| 4 | | `print` intenta bloquear `WRITER` (ya bloqueado) |
|
||||
| 5 | | `print` intenta bloquear `WRITER` (ya bloqueado) |
|
||||
| … | | … |
|
||||
| _nunca_ | _desbloquear `WRITER`_ |
|
||||
|
||||
El `WRITER` está bloqueado, así que el manejador de interrupciones espera hasta que se libere. Pero esto nunca sucede, porque la función `_start` solo continúa ejecutándose después de que el manejador de interrupciones regrese. Así, todo el sistema se cuelga.
|
||||
|
||||
@@ -734,4 +734,4 @@ Ahora podemos interactuar con nuestro kernel y tenemos algunos bloques fundament
|
||||
|
||||
Las interrupciones de temporizador son esenciales para un sistema operativo porque proporcionan una manera de interrumpir periódicamente el proceso en ejecución y permitir que el kernel recupere el control. El kernel puede luego cambiar a un proceso diferente y crear la ilusión de que varios procesos se están ejecutando en paralelo.
|
||||
|
||||
Pero antes de que podamos crear procesos o hilos, necesitamos una forma de asignar memoria para ellos. Las próximas publicaciones explorarán la gestión de memoria para proporcionar este bloque fundamental.
|
||||
Pero antes de que podamos crear procesos o hilos, necesitamos una forma de asignar memoria para ellos. Las próximas publicaciones explorarán la gestión de memoria para proporcionar este bloque fundamental.
|
||||
|
||||
Reference in New Issue
Block a user