Я могу попытаться ответить 1,3 и 4.
Ядро Linux использует различные шаги к коду программы перехода в электрические сигналы.
Логический Адрес: Они включены в инструкции по машинному языку обратиться к операции или инструкции. Разделенный на сегмент и смещение.
Линейный Адрес: Единица Сегментации переводит логичный в линейные адреса. Это - шестнадцатеричное число (на архитектуре на 32 бита: 0x00000000-0xffffffff
) обращение к пространству в памяти.
Физический адрес: Далее, Единица Подкачки страниц преобразовывает линейный в физические адреса. Это - электрические сигналы, обращаясь к элементам памяти по контактам на микропроцессорах.
Адрес шины: Используемый всеми устройствами кроме ЦП для обращения к элементам памяти (DMA не требует ЦП, но все еще обращающийся). Эти адреса главным образом идентичны физическим, за исключением некоторой другой архитектуры, как SPARC и Alpha, которые включают отдельный Блок управления памятью ввода-вывода.
Ядро работает со всеми адресами, и каждый из них является шагом между запросом пользователя и фактической обработкой этого запроса на аппаратном уровне.
Если процесс приближается к семафору со значением 0 или ниже, он временно отстранен, пока значение не достигает 1 или больше. Это только происходит с процессами, которые могут спать. Обработчик прерываний не может спать и поэтому запрещается использовать семафоры.
Атомарные операции могут быть достигнуты при помощи инструкций по Ассемблеру, они определяются:
LOCK_PREFIX
На уровне C ядро обеспечивает тип atomic_t
и макросы, снабженные префиксом atomic_
(которые добавляют LOCK_PREFIX
к инструкциям по сборке).
squeeze3
третий выпуск патча для сжатия, squeeze5
является пятым. Они - часть номера версии. Версии для библиотеки и файлов для разработчика должны соответствовать точно, таким образом, нормально, что APT хочет, чтобы Вы работали apt-get install -f
когда Ваша система имеет несовместимые версии.
То, что не нормально, то, что обновление libxml2-dev
перестал работать. Сообщение о неспособности читать /usr/include/libxml2
необычно. Это, кажется, указывает, что установка была повреждена в некотором роде. Проверьте, существует ли каталог все еще. Если Вы переместили или удалили его в какой-то момент …, не делают этого, и воссоздают или пятятся каталог для восстановления. Если каталог существует, но Вы видите что-то как
$ ls -ld /usr/include/libxml2
?????????? ??? ???????? ???????? 4096 ??? ?? ???? /usr/include/libxml2
затем Ваша файловая система повреждается, или возможно Ваша RAM. Во-первых, проверьте свою RAM: это - наиболее распространенная причина повреждения файловой системы. Запишите как можно меньше, пока Вы не уверены в RAM, поскольку можно сделать повреждение хуже. Как взять его, оттуда зависит от характера и масштабов повреждения.
Попытайтесь произвести чистку его и затем переустановить.
sudo apt-get purge -f libxml2-dev
sudo apt-get clean
sudo apt-get update
sudo apt-get install libxml2 libxml2-dev
A -dev
пакет является только компонентами, требуемыми скомпилировать программы, связанные против той библиотеки, это не нужно в течение времени выполнения, таким образом, безопасно полностью произвести чистку.
apt-get clean
который произвел бы чистку кэша пакета и перезагрузки силы с repo пакет, Вам было нужно.
– bahamat
20.08.2012, 19:55
/usr/include/libxml2
был поврежден. Даже rm -f /usr/include/libxml2
перестал бы работать, говоря, что что-то как он не могло найти файл. Моему webhost потребовались 17 часов для фиксации его.
– Jonathan
21.08.2012, 20:12