Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Операционная система
Operative System
Nachos (Not Another Completely Heuristic Operating System – не ещё одна полностью эвристическая операционная система) – это учебное программное обеспечение, предназначенное для преподавания курсов по операционным системам на уровне бакалавриата и, возможно, магистратуры. Она была разработана в Калифорнийском университете в Беркли под руководством Томаса Андерсона и используется во многих учебных заведениях по всему миру. Изначально написанная на C++ для архитектуры MIPS, Nachos работает как пользовательский процесс в хост-операционной системе. Симулятор MIPS выполняет код любых пользовательских программ, работающих поверх операционной системы Nachos. Существуют порты кода Nachos для различных архитектур. Помимо кода Nachos, в состав системы включены различные учебные задания. Цель Nachos – познакомить студентов с концепциями проектирования и реализации операционных систем, требуя от них реализации значительных функциональных блоков внутри системы Nachos. В случае с Nachos, симулятор операционной системы означает, что можно запустить операционную систему (гостевую ОС) поверх другой операционной системы (хост-ОС), подобно Bochs/VMware. Она обеспечивает эмуляцию:
- центрального процессора (MIPS);
- жесткого диска;
- контроллера прерываний, таймера и других компонентов,
необходимых для запуска приложений пользовательского пространства Nachos. Это означает, что вы можете писать программы для Nachos, компилировать их с помощью реального компилятора (старая версия gcc, генерирующая код для MIPS) и запускать их. Ядро Nachos компилируется для платформы хост-ОС и, следовательно, работает непосредственно на процессоре хост-ОС. Версия 3.4 Nachos на протяжении многих лет была стабильной и наиболее распространенной версией. Версия 4.0 Nachos существует в бета-статусе примерно с 1996 года.
Not Another Completely Heuristic Operating System, or Nachos, is instructional software for teaching undergraduate, and potentially graduate level operating systems courses. It was developed at the University of California, Berkeley, designed by Thomas Anderson, and is used by numerous schools around the world. Originally written in C++ for MIPS, Nachos runs as a user process on a host operating system. A MIPS simulator executes the code for any user programs running on top of the Nachos operating system. Ports of the Nachos code exist for a variety of architectures. In addition to the Nachos code, a number of assignments are provided with the Nachos system. The goal of Nachos is to introduce students to concepts in operating system design and implementation by requiring them to implement significant pieces of functionality within the Nachos system. In Nachos' case, Operating System simulator simply means that you can run an OS (a guest OS) on top of another one (the host OS), similar to Bochs/VMware. It features emulation for:
A CPU (a MIPS CPU)
A hard drive
An interrupt controller, timer, and misc. other components
which are there to run the Nachos user space applications. That means that you can write programs for Nachos, compile them with a real compiler (an old gcc compiler that produces code for MIPS) and run them. The Nachos kernel instead is compiled to the platform of the Host OS and thus runs natively on the Host OS' CPU. Nachos version 3.4 has been the stable, commonly used version of Nachos for many years. Nachos version 4.0 has existed as a beta since approximately 1996.
Реализация
Нахос имеет различные модули, реализующие функциональность базовой операционной системы. Функции-обертки для различных системных вызовов ядра ОС обычно реализуются аналогично системным вызовам UNIX. Различные части ОС создаются как объекты с использованием нативного кода. Например, класс Machine используется как главный класс для имитируемой машины. Он содержит различные объекты, такие как FileSystem, Processor, Timer и т.д., которые определены для моделирования различных аппаратных аспектов.
Nachos has various modules implementing the functionality of a basic operating system. The wrapper functions for various system calls of the OS kernel are generally implemented in a manner similar to that of the UNIX system calls Various parts of the OS are instantiated as objects using the native code. For example, a class Machineis used as the master class of the simulated machine. It contains various objects, such as FileSystem, Processor, Timer, etc. which are defined to simulate various hardware aspects.
Основные компоненты
NachOS моделирует машину, приближенно имитирующую архитектуру MIPS. Машина имеет регистры, память и центральный процессор. Машина NachOS/MIPS реализована объектом Machine, экземпляр которого создается при запуске NachOS. Он содержит методы, такие как Run, ReadRegister, WriteRegister и другие. Также определяется объект прерывания для обработки прерываний. Таймер и статистика также реализованы в нем.
NachOS Machine Nachos simulates a machine that roughly approximates the MIPS architecture. The machine has registers, memory and a CPU. The Nachos/MIPS machine is implemented by the Machine object, an instance of which is created when Nachos starts up. It contains methods like Run, ReadRegister, WriteRegister, etc. It also defines an interrupt object to handle interrupts. Timer and statistics are also implemented in this. NachOS Threads In NachOS a thread class is defined. A thread has an associated state with it which may be ready, running, blocked or just created. The thread object has various methods like PutThreadToSleep, YieldCPU, ThreadFork, ThreadStackAllocate, etc. Each thread runs at a virtual address space. NachOS UserPrograms Nachos runs user programs in their own private address space. Nachos can run any MIPS binary, assuming that it restricts itself to only making system calls that Nachos understands. In Unix, "a. out" files are stored in "coff" format. Nachos requires that executables be in the simpler "Noff" format. To convert binaries of one format to the other, use the coff2noff program.
NachOS Потоки В NachOS определен класс потоков. Поток имеет связанное с ним состояние, которое может быть готовым, выполняющимся, заблокированным или только что созданным. Объект потока имеет различные методы, такие как PutThreadToSleep, YieldCPU, ThreadFork, ThreadStackAllocate и т.д. Каждый поток выполняется в собственном виртуальном адресном пространстве.
NachOS Machine Nachos simulates a machine that roughly approximates the MIPS architecture. The machine has registers, memory and a CPU. The Nachos/MIPS machine is implemented by the Machine object, an instance of which is created when Nachos starts up. It contains methods like Run, ReadRegister, WriteRegister, etc. It also defines an interrupt object to handle interrupts. Timer and statistics are also implemented in this. NachOS Threads In NachOS a thread class is defined. A thread has an associated state with it which may be ready, running, blocked or just created. The thread object has various methods like PutThreadToSleep, YieldCPU, ThreadFork, ThreadStackAllocate, etc. Each thread runs at a virtual address space. NachOS UserPrograms Nachos runs user programs in their own private address space. Nachos can run any MIPS binary, assuming that it restricts itself to only making system calls that Nachos understands. In Unix, "a. out" files are stored in "coff" format. Nachos requires that executables be in the simpler "Noff" format. To convert binaries of one format to the other, use the coff2noff program.
NachOS Пользовательские программы NachOS запускает пользовательские программы в их собственном изолированном адресном пространстве. NachOS может запускать любые двоичные файлы MIPS, при условии, что они используют только те системные вызовы, которые понимает NachOS. В Unix файлы "a.out" хранятся в формате "coff". NachOS требует, чтобы исполняемые файлы были в более простом формате "Noff". Для преобразования двоичных файлов из одного формата в другой используйте программу coff2noff.
NachOS Machine Nachos simulates a machine that roughly approximates the MIPS architecture. The machine has registers, memory and a CPU. The Nachos/MIPS machine is implemented by the Machine object, an instance of which is created when Nachos starts up. It contains methods like Run, ReadRegister, WriteRegister, etc. It also defines an interrupt object to handle interrupts. Timer and statistics are also implemented in this. NachOS Threads In NachOS a thread class is defined. A thread has an associated state with it which may be ready, running, blocked or just created. The thread object has various methods like PutThreadToSleep, YieldCPU, ThreadFork, ThreadStackAllocate, etc. Each thread runs at a virtual address space. NachOS UserPrograms Nachos runs user programs in their own private address space. Nachos can run any MIPS binary, assuming that it restricts itself to only making system calls that Nachos understands. In Unix, "a. out" files are stored in "coff" format. Nachos requires that executables be in the simpler "Noff" format. To convert binaries of one format to the other, use the coff2noff program.
Преемники
Поскольку Nachos уже несколько лет не находится в активной разработке и имеет ряд известных недостатков (особенно в отношении переносимости: Nachos использует ассемблерный код MIPS и требует портирования для работы на архитектуре x86), были начаты проекты-преемники. В 2004 году Стэнфордский университет разработал Pintos – систему, вдохновлённую Nachos, написанную на языке C и предназначенную для работы на реальном оборудовании x86. В 2000 году Дэн Хеттена из Калифорнийского университета в Беркли портировал Nachos на Java, создав Nachos 5.0j, с целью повышения переносимости, доступности для студентов и снижения подверженности тонким ошибкам в студенческом коде, которые в предыдущих версиях часто занимали большую часть времени, отводимого на разработку студенческих проектов. Ещё одна версия на основе Java была создана профессором Питером Друшелем в Университете Райса. Позже, в 2003 году, профессор Юджин Старк из Университета Стоуни Брук адаптировал её и использовал в курсе операционных систем. В Технологическом университете Граца (Австрия) была реализована система SWEB ("Schon wieder ein Betriebssystem"), которая используется для обучения основам операционных систем.
As Nachos has not been in active development for a number of years, and possesses a number of recognized flaws (particularly with regards to portability: Nachos relies on MIPS assembly code, and requires porting to run on x86 architecture), successor projects have been initiated. In 2004, Stanford University created Pintos, a Nachos inspired system written in C and designed to run on actual x86 hardware. In 2000, Dan Hettena at UC Berkeley ported Nachos to Java as Nachos 5.0j, in an effort to make Nachos more portable, more accessible to undergraduates, and less susceptible to subtle bugs in student code that had in earlier versions often dominated student project development time. Another Java based version was created by Professor Peter Druschel at Rice University. It was later adapted by Professor Eugene Stark at Stony Brook University in 2003 and applied in the Operating System course. At Graz University of Technology (Austria), a system called SWEB ("Schon wieder ein Betriebssystem") has been implemented and is used to teach operating system principles.