В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.
При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.
Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».
Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this
. Возьмем этот пример:
public class Some {
private int id;
public int getId(){
return this.id;
}
public setId( int newId ) {
this.id = newId;
}
}
И в другом месте вашего кода:
Some reference = new Some(); // Point to a new object of type Some()
Some otherReference = null; // Initiallly this points to NULL
reference.setId( 1 ); // Execute setId method, now private var id is 1
System.out.println( reference.getId() ); // Prints 1 to the console
otherReference = reference // Now they both point to the only object.
reference = null; // "reference" now point to null.
// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );
// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...
Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference
и otherReference
оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.
Существуют также совершенно другие операционные системы исследования/обучения вокруг, как TOPSY.
Topsy является маленькой собственной многопоточностью места, многозадачной операционной системой на основе архитектуры микроядра с коммуникационной инфраструктурой передачи сообщений.
ANSI C, ~20k строки. Это было, по-видимому, портировано к ia32, MIPS R3000/R4000, StrongARM SA110, Intel IXP1200, Intel IXP2400 и Motorola 68K. Вы найдете различные отчеты о тезисе об их веб-сайте.
OpenBSD мог быть хорошим выбором, я думаю, что установка по умолчанию (№ X11) имеет что-то как 15 процессов. FreeBSD является вторым. Так или иначе Вы захотите читать" Разработка и реализация Операционной системы FreeBSD "
BTW, я потратил значительное количество времени на AIX, Солярис, FreeBSD и Linux..., и я думаю, что страницы справочника OpenBSD являются лучшими вокруг.
Я все еще нежно помню XINU (XINU не является UNIX) из колледжа. Не уверенный это обеспечило бы все, в чем Вы нуждаетесь, но это было довольно образовательным, когда я был в колледже, и легко соответствуйте на дискете наряду с Turbo C :)
Я договорюсь о Minix. Также книга:
http://www.amazon.com/Operating-Systems-Implementation-Prentice-Software/dp/0131429388
на самом деле довольно понятен. (В отличие от некоторых книг по подобным темам, думая "О понимании ядра Linux" здесь.) Это довольно дорого, но можно, вероятно, забрать подержанное предыдущее издание.
(NB. Я ни в коем случае не аффилирован с книгой, это просто хорошо :))
tomsrtbt: "Большая часть GNU/Linux на 1 гибком диске".
Contiki является очень маленьким. Возможно, слишком маленький для Ваших потребностей и/или аппаратной цели, все же.
Не другая абсолютно эвристическая операционная система (NACHOS) начо wiki
Это не полностью FOSS, но Вы могли бы посмотреть на QNX (иначе Qnix). Это - микроядро ОС, предназначенная для встроенных систем.
у меня нет присоединения... Посмотрите, что Wiki связывается здесь. Примечание, что источник был сделан доступным некоторое время назад.
Ищите Xinu - Xinu Не Является Unix - Douglas Comer. Это было первоначально на LSI (PDP-11) машины, но было портировано ко многой другой архитектуре. Можно найти больше информации и источник в Университет Пердью .
Сделайте свой собственный дистрибутив только с частями, в которых Вы нуждаетесь.
Однажды был "PeeWeeLinux" - Это был набор работы сценариев оболочки Red Hat 6.2. Вы могли создать систему (привередничают) от ряда меню, после того как Вы поняли это. Этому четыре года теперь. Я создал систему 4 МБ: 1/2MB для Linux плюс 3,5 для PHP!
И затем был парень, который создал приложение для терминала коммуникации путем взятия ядра Linux и замены init его приложением!
необходимо сказать который редактор и который компилятор. Busybox в 100K дает Вам ограниченный vi, например. Но я думаю, хотите ли Вы gcc, , что определит размер целевой системы.
Я соглашаюсь с использованием Minix. Вы получаете gcc, vi, emacs, удар. гибкий провод. бизон, человек и TEX, если Вы устанавливаете все это, но можно отключить его только к ядру, удару, gcc и vi
При попытке понять ядро, посмотрите на Minix. Ядро Linux является слишком большим для академического осуществления.
система я могу демонтировать
, Также взглянули на практическое руководство Bootdisk, для обнаружения то, что это - Вы, собираются демонтировать.