энергия: я могу сделать *только* y, выполняют копию?

История MacOS является замысловатой. Я очень интересовался этим в конце 90-х, поскольку Мах был передан во всем мире как более быстрый способ создать систему Unix.

Источник ядра немного более сложен.

Все это запускается с AT&T, распределяющей их операционную систему некоторым университетам бесплатно. Этот Unix был улучшен экстенсивно в Беркли и стал основой для изменений BSD Unix и включил несколько новых идей как "Быстрая Файловая система" (UFS), представленные символьные ссылки и сокеты API. AT&T продолжила их собственный путь и создала System V одновременно.

Между тем продолженное исследование и некоторые люди приняло работу от BSD как основа. В CMU ядро BSD использовалось в качестве основы для разработки прототипа нескольких новых идей: потоки, API для управления системой виртуальной памяти (через сменные "пейджеры" - уровень пользователя mmap), система вызова удаленной процедуры уровня ядра и самое главное идея переместить некоторые операции уровня ядра в пространство пользователя. Это стало ядром Маха.

Я не на 100% уверен, прибыл ли mmap от Маха и позже был принят BSD, или если Мах просто вел идею, и BSD добавила их собственный mmap на основе идей Маха.

Хотя ядро Маха было описано как микроядро, до версии 2.5 это была просто система, которая обеспечила поток, mmap, функции передачи сообщений, но осталась монолитным ядром, все сервисы работали на привилегированном режиме.

В это время Rick Rashid (теперь в Microsoft) и Avie Tevanian (теперь в Apple) придумал свежую идею, которая могла ускорить Unix. Идея состояла в том, чтобы использовать mmap системный вызов для передачи данных, которые будут скопированы с пространства пользователя на "серверы", реализовывая файловую систему. Эта идея была по существу изменением того, чтобы стараться избегать копий создания тех же данных, но это было передано как преимущество микро ядер, даже если функция могла бы быть изолирована от микро ядра.

Сравнительные тесты этого VM-backed, более быстрая система Unix - то, что управляло людьми в NeXT и в FSF для выбора Маха как основы для их ядер.

NeXT пошел с Махом 2,5 ядра (который был основан или на BSD 4.2 или 4.3), и GNU не будет на самом деле запускаться на работе в течение многих лет. Это - то, что использовали операционные системы NeXTSTEP.

Между тем в CMU, работа продолжила Маха, и они наконец поняли видение наличия нескольких серверов, работающих сверху микро ядра с версией 3.0. Я не знаю ни о ком в дикой способности выполнить Маха 3.0, поскольку все интересные серверы уровня пользователя использовали код AT&T, таким образом, их считали обремененными, таким образом, это осталось продуктом исследования.

В это время команда Jolitz сделала порт 4,3 + BSD к 386 архитектуре и опубликовала их усилия по портированию на DrDobbs. 386BSD активно не сохранялся, и группа появилась, чтобы поддержать и переместиться 386BSD вперед, команда NetBSD. Внутренние поединки в группе NetBSD вызвали первое разделение, и FreeBSD был сформирован из этого. NetBSD, в то время, когда требуется сфокусироваться на наличии межплатформенного BSD и FreeBSD хотел сфокусироваться на наличии Unix, который сделал большой на x86 платформах. Немного позже, разделение NetBSD снова из-за некоторых других споров и этого вывода к созданию OpenBSD.

Ветвление BSD 4.3 для x86 платформ пошло коммерческое с компанией под названием BSDi, и различные члены исходной команды Беркли работали там и сохранили хорошие отношения с командой BSD в Университете.

AT&T не была удивлена и запустила AT&T по сравнению с судебным процессом BSDi, который был позже расширен для предъявления иска Университету также. Судебный процесс был о BSDi использующим собственного кода из AT&T, которая не была переписана Беркли. Это задержало BSD по сравнению с и ближайшая операционная система Linux.

Хотя вещи не выглядели хорошими для ответчиков, в какой-то момент кто-то понял, что SystemV включил большие блоки кода BSD в соответствии с лицензией BSD, и AT&T не выполнила их обязательства в лицензии. Урегулирование было достигнуто, в котором AT&T не должна будет вытягивать их продукт с рынка, и Университет согласился сорвать любой код, который мог все еще быть основан на коде AT&T.

Университет затем выпустил две версии обремененного BSD 4.4 и 4,4 облегченных. Обремененная версия загрузилась бы и работала бы, но содержала код AT&T. Облегченная версия не содержала кода из AT&T, но не работала.

Различные усилия BSD восстановили свою работу сверх новых 4,4 облегченных выпусков и имели загружающуюся систему в течение месяцев.

Между тем Мах 3,0 микро ядра остался не очень полезным без любого из серверов пространства пользователя.

Студент из скандинавского университета (я верю, у меня могла бы быть эта несправедливость), был первый, который создаст полного Маха 3,0 системы с полной ОС на основе 4,4 облегченных выпусков, я полагаю, что это назвали "Lites". Система работала, но была медленной.

В течение 1992-1996 и к настоящему времени BSD уже имел mmap () системный вызов, а также большинство других систем Unix. "Микро ядро способствует", который не был там, никогда действительно осуществился. NeXT все еще имел монолитное ядро. FSF все еще пытался заставить Маха создавать и не желал коснуться кода BSD или способствовать любому из усилий BSD с открытым исходным кодом, они держали зарядку отдельно в плохо указанном видении ядра, и они тонули на протоколах RPC для их собственного ядра. Микро ядро выглядело большим на бумаге, но оказалось по спроектированному и просто сделало все медленнее.

В этой точке у нас также был Linus по сравнению с дебатами Andy по микроядрам по сравнению с монолитными ядрами, и мир начал понимать, что было просто невозможно добавить все те дополнительные циклы к микро ядру и все еще прибыть перед хорошо разработанным монолитным ядром.

Apple еще не приобрела NeXTSTEP, но также начинала изучать Маха как потенциальное ядро для их будущих операционных систем. Они наняли Фонд открытого программного обеспечения к порту Linux к ядру Маха, и это было сделано из их Гренобльских офисов, я полагаю, что это назвали "mklinux".

То, когда Apple купила NeXT, что они имели на их руках, было относительно старой основой Unix, 4.2 или 4.3 базирующимися Unix и к настоящему времени, даже бесплатное программное обеспечение не работало хорошо из поля в тех системах. Они наняли Jordan Hubbard далеко от FreeBSD для обновления их стека Unix. Его команда была ответственна за обновление пространства пользователя, и это не удивление, что пространство пользователя MacOS было обновлено до последних версий, доступных на BSD.

Apple действительно переключила их Маха от 2,5 до 3,0 в какой-то момент, но решенный для не движения с подходом микроядра и вместо этого сохранила все незавершенным. Я никогда не мог подтвердить, использовала ли Apple Lites, нанял скандинавского хакера, или если они приняли 4.4, облегченные как их ОС. Я подозреваю, что они сделали, но я уже шел дальше к Linux и прекратил отслеживать мир BSD/Mach.

Был слух в конце 90-х, что Avie в Apple пытался нанять Linus (кто был уже известен в этой точке) работать над его ребенком, но Linus принял решение продолжить работать над Linux.

История в стороне, эта страница описывает пространство пользователя и ядро Маха/Unix:

http://developer.apple.com/mac/library/documentation/Darwin/Conceptual/KernelProgramming/Architecture/Architecture.html#//apple_ref/doc/uid/TP30000905-CH1g-CACDAEDC

Я нашел эту диаграмму истории OSX: alt text

11
21.02.2011, 20:59
4 ответа

9 предыдущих рывков сохраняются в названных регистрах 1 через 9. Можно вспомнить предпоследний рывок с "1p, предыдущий с "2p и так далее. Команда :reg показывает регистры, которые доступны для вставки.

Если Вы хотите, чтобы рывок продлился дольше, используйте регистр буквы.

Для более неясных связанных с рывком команд начните читать в :help " в руководстве.

16
27.01.2020, 19:57
  • 1
    Кроме того, зарегистрируйтесь 0, содержит последний дергавший текст (в противоположность удаленному). Так вернувшись к исходному вопросу, можно дергать с y, продолжите редактировать включая d и x, и вставьте дергавший текст в с "0p –  Nefrubyr 16.05.2012, 12:15
  • 2
    @Nefrubyr, Ваш комментарий выше является на самом деле самым простым ответом, но он не упоминается ни в одном из существующих трех ответов. Возможно, необходимо ли добавить его? (Я могу, если Вы не делаете.) –  Wildcard 29.04.2016, 23:34

Команды Вы говорите об использовании так называемый регистр "без имени". Это предназначено только для очень краткосрочного использования. "Я собираюсь дергать это отсюда и помещать его там" вид вещей.

Когда Вы хотите держать на что-то в течение больше, чем нескольких секунд, в то время как Вы идете и делаете что-то еще, необходимо использовать названные регистры.

Например, "y y будет дергать строку, курсор идет в a зарегистрироваться. Ничто не ударит его случайно, если Вы не введете другую команду, включающую a зарегистрироваться. Минуты, часы, даже несколько дней спустя, можно ввести "p для отбрасывания, который дергал копию строки от a регистр ниже того курсор идет.

(Чтобы это работало действительно хорошо, у Вас должна быть строка как set viminfo='50,\"1000 в Вашем ~/.vimrc файл, чтобы сказать этому помнить вещи как содержание регистра через сессии Vim. Можно затем поехать в отпуск между рывком и поместить!)

Существует 26 именованных регистров (a-z). Если Вы даете им как верхний регистр вместо как показано выше, Вы добавляете к текущему содержанию регистра вместо того, чтобы заменить их. Так, можно расти, что-то действительно сложное в, скажем, регистрируются h одна часть за один раз, затем шлепнитесь все это вниз сразу с "h p.

Заметьте, что имя регистра является дополнительным. Это подразумевает, что может быть много команд, которые Вы уже знаете и используете, где Вы могли использовать названные регистры. Сказать :help registers в Vim для получения некоторое представление о возможностях.

Кроме того, получите кружку Vi.

9
27.01.2020, 19:57

Если вам нужно удалить текст с помощью d без изменения регистра восстановления (скажем, вы уже вставили в него текст, который вы не готовы вставить перед удалением, например, другого текста), вы можете использовать регистр черной дыры _ .

Если вы сделаете " _ d d , например, текущая строка будет немедленно удалена и забыта.

На самом деле, я не использую этот регистр очень часто. Это не требует меньшего количества нажатий клавиш, чем сохранение в регистр общего назначения (любой буквенный регистр), и если вы сохраняете в регистр общего назначения, по крайней мере, строки, которые вы удалили, все еще доступны, пока вы не перезапишете регистр, если возникнет необходимость.

Если вы часто забываете использовать другой регистр при удалении, вы можете определить макрос оболочки для d d , например, следующим образом: : noremap dd "добавить .

1
27.01.2020, 19:57

Как было указано в комментариях к (текущему) принятому ответу, канонический способ сделать это - использовать нулевой регистр ( "0 ). Нулевой регистр всегда содержит последнее восстановление и будет не перезаписываются на d и x , поэтому "0p всегда помещает все, что вы выдернули, независимо от того, что редактировалось за это время.

0
27.01.2020, 19:57

Теги

Похожие вопросы