Resumen de Capitulo de tarea 3
Enviado por lajwilix • 20 de Junio de 2016 • Ensayo • 7.088 Palabras (29 Páginas) • 323 Visitas
CENTRO UNIVERSITARIO TECNOLOGICO
CEUTEC
[pic 1]
Asignatura:
Sistema Operativo 1
Catedrático:
Ferenck Vargas
Integrantes:
Mauricio Fernandez
Fecha:
13 de Mayo del 2016
Link del Branch:
https://github.com/CEUTEC-Courses/2016-ii-1272-so1-osdevseries-Maurisof.git
Resumen de Capitulo 14
En estos capítulos ya se entra en la parte más avanzada de desarrollo de los sistemas operativos la verdad es, en pocas palabras, el código es el mal. El código puede ser muy desordenado y feo. Esto es lo que se suma una mayor complejidad hacer a la naturaleza caótica y recursiva de código y diseño. No me malinterpreten, todavía deberá volver a escribir un montón de código. La razón de esto es porque no existe un diseño correcto. Esto es lo que hace que el código caótica: Después de escribir y reescribe el código en sí mismo puede ser muy mal formado. Esto tiene la tendencia para detener un proyecto completo, específicamente grandes proyectos, como el resto del sistema dependerá de la naturaleza caótica de este código feo escrita y mal diseñado. Siempre y cuando el código está contenido dentro de una pequeña caja, no importa cómo este desordenado o feo el código obtiene en el interior. Mientras este código está escondido dentro de una pequeña caja donde nadie puede verlo. En el interior de la caja puede contener criaturas y otras cosas - que no cuidan como que no puede salir de la caja. Después de todo, todo lo que vemos es la caja. No necesitamos que cuidar cómo funciona, simplemente funciona.
El uso del analógico de la Caja de Pandora vez más, podemos decir que la interfaz es la caja, y la implementación es lo que está dentro de la caja. La interfaz público parte de la caja es la conexión de la caja con el mundo exterior. Es lo que conecta a nuestra casilla para otras cajas dentro de este subsistema. La interfaz en sí misma contiene todas las funciones prototipos, estructuras, clases y otras definiciones que el cuadro expone al mundo exterior por lo que el mundo exterior puede utilizar e interactuar con la caja. Esta es la interfaz. Todo el código mal que habita dentro de esta caja de texto que definen el módulo, todas sus funciones, rutinas de clase módulos es la implementación.
Es importante para la construcción de cada caja componente con una interfaz que es simple y al punto. También debe ser claro en lo que hace cada componente. En C, el espacio de nombres global puede llegar a estar muy lleno de toneladas de rutinas. Debido a esto, es importante nombrar estas rutinas e interfaces para ayudar a identificar claramente ellos. Usted también tendrá que asegurarse de que los detalles implementación de la caja la parte privada se mantienen como miembros privados. Poner ninguna parte de este en la interfaz es malo, ya que puede abrir la caja lo cual es malo. En C, podemos asegurar rutinas permanecen como parte de la implementación mediante el uso de la estática de palabras clave. Las interfaces pueden hacerse mediante el uso de la externa palabra clave. En C ++, Se animó a utilizar las clases, con el privado, público, y protegidas palabras clave.
Es muy importante entender por qué hemos elegido esta estructura para esta serie. La razón principal es la de encapsulación, en donde cada directorio contiene un separado módulo de biblioteca. Es decir, cada uno de estos módulos es una caja de pandora. Es extremadamente importante mantener estos módulos como independiente como sea posible con el fin de mantener la estabilidad de código, estructura, y portabilidad. Con el fin de hacer esto, he decidido tratar a cada módulo como módulos de bibliotecas independientes. Lo único que no necesita ser construido como un módulo de la biblioteca son los archivos dentro del directorio de inclusión /. Ya que son sólo archivos de cabecera, que nunca debería haber la necesidad de contener implementación. Debido a esto, no hay ninguna caja para abrir.
Al igual que con las aplicaciones, me he decidido a hacer que el código de tiempo de ejecución C ++ el primer código que se ejecutará. En otras palabras, el gestor de arranque no se ejecuta el kernel. En su lugar, se ejecuta el código de tiempo de ejecución (CRTLIB), que establece la envírenme para el núcleo, y después ejecuta el kernel. Si está utilizando C ++, que podría estar interesado acerca de los archivos de cabecera de la biblioteca. Es decir, en C ++, el .h anexa * se deja caer, y un c se antepone a todas las cabeceras C.
Así, en lugar de # include stdlib.h, C ++ utiliza #include cstdlib Nos gustaría animar a la creación de una interfaz compatible con las dos lenguas. Sin embargo, puede que se pregunte cómo lo hacemos es muy sencillo, en realidad. En todos los compiladores estándar incluyen / directorio, podrás ver diferentes variantes de un mismo archivo. es decir, se verá stdlib.h y cstdlib . cstdlib es simplemente un archivo de cabecera que #includes stdlib.h y no más. Vamos a hacer lo mismo con nuestra biblioteca.
Esto permitirá a los desarrolladores que utilizan C para utilizar stdlib.h , mientras que nuestra C ++ desarrolladores todavía puede utilizar cstdlib . De esta manera se puede tanto estimular los buenos hábitos. Recuerde teoría la caja de Pandora. Los tipos de datos dentro de una caja se encuentran en detalle implementación. Algunos tipos de datos están bien, sin embargo, algunos o mejor mantiene dentro de la implementación. Lizet es uno de ellos. Al mantener los detalles implementación, podemos modificar cualquier cosa que nos gusta de los tipos de datos, sin afectar a cualquier cosa que utiliza ese tipo, así que mientras permanezcamos compatible con versiones anteriores.
Este es un archivo bastante grande en alrededor de 150 líneas. Nada de eso es muy difícil, sin embargo. En él se definen los diferentes tipos de datos integrales que están garantizados para tener un cierto tamaño. ctype.h es un conjunto de macros que ayudan a meter qué tipo de carácter en una cadena es. Esto se hace siguiendo las diferentes propiedades de la norma conjunto de caracteres ASCII.
Esto es un poco complicado. VA_SIZE devuelve el tamaño de los parámetros inserta en la pila. Recuerde que C y C ++ utiliza la pila para pasar parámetros a rutinas. En las máquinas de 32 bits, cada elemento de la pila es normalmente de 32 bits. Esto es un poco complicado. vagar () devuelve el siguiente parámetro en la lista de parámetros. AP debe contener el puntero a la lista de parámetros que estamos trabajando. TIPO contamines el tipo de datos (int, char, etc.) Todo lo que tenemos que hacer es añadir el número de bytes del tipo de datos (TIPO) al puntero lista de parámetros variable (AP). Esto asegura el puntero lista de parámetros variable ahora apunta al siguiente parámetro de la lista.
...