Sistemas operativos modernos
no existe consenso entre los diseñadores de sistemas operativos en cuanto a la forma óptima de diseñar uno, este capítulo será más personal, especulativo y, sin duda, más controvertido que los anteriores. 12.1 LANATURALEZADELPROBLEMADE DISEÑO El diseño de sistemas operativos es más un proyecto de ingeniería que una ciencia exacta. Es mucho más difícil establecer metas claras y cumplirlas. Comencemos con los siguientes puntos. 12.1.1 Metas Para poder diseñar con éxito un sistema operativo, los diseñadores deben tener una idea clara de lo que quieren. La falta de una meta dificulta sobremanera la toma de decisiones subsiguien tes. A fm de aclarar este punto, es provechoso examinar dos lenguajes de programación, PL/I y C. PL/I fue diseñado por IBM en la década de 1960, pues era muy molesto tener que mane jar tanto FORTRAN como COBOL, y embarazoso escuchar una y otra vez a los académicos decir en voz baja que Algol era mejor que cualquiera de ellos. Por ello se formó un comité al que se encomendó crear un lenguaje que fuera todo para todos: PL/I, que tenía un poco de FORTRAN, un poco de COBOL y un poco de Algol. Fracasó porque carecía de una visión uni- ficadora: era una mera colección de funciones en pugna unas con otras y, para colmo, dema siado torpe para compilarse de manera eficiente. Consideremos ahora C. Fue diseñado por una sola persona (Dennis Ritchie) con un solo fin (programación de sistemas). Tuvo un enorme éxito, en buena medida porque Ritchie sabía lo que quería y lo que no quería. El resultado es que todavía es muy ufilizado, décadas después de su nacimiento. Tener una visión clara de lo que se busca es crucial. ¿Qué quieren los diseñadores de sistemas operativos? Es obvio que esto varía de un siste ma a otro, y es diferente para los sistemas integrados que para los servidores. No obstante, en el caso de los sistemas operativos de propósito general hay cuatro objetivos principales: 1. Definir abstracciones. 2. Proporcionar operaciones primifivas. 3. Garanfizar el aislamiento. 4. Administrar el hardware. A confinuación analizaremos cada uno de estos puntos. La tarea más importante de un sistema operativo, y quizá la más difícil, es definir las abs tracciones correctas. Algunas de ellas, como los procesos y archivos, se han usado desde hace tanto fiempo que podrían parecer obvias. Otras, como los subprocesos, son más recientes y me nos maduras. Por ejemplo, si se bifurca un proceso de múlfiples subprocesos que fiene un sub-
RkJQdWJsaXNoZXIy MjI4NDcx