Установите Win 7 over XP на второй жесткий диск

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

public void DoStuff(Foo foo)
{
    if (foo == null) return;
}

При наблюдении этого кода, я сразу спросил бы:

  • 'нечто' является когда-либо пустым?
  • Если так, сколько клиентов 'DoStuff' когда-нибудь вызывает функцию с пустым 'нечто'?

В зависимости от ответов на эти вопросы могло бы случиться так, что

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

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

существует две других причины (конкретный, я думаю к коду C++), где несколько существуют, может на самом деле иметь отрицательный влияние. Они - размер кода и оптимизация компилятора.

объекту C++ не-POD А в объеме в выходе функции назовут ее деструктор. Где существует несколько операторов возврата, может иметь место, что существуют различные объекты в объеме и таким образом, список деструкторов для вызова будет отличаться. Компилятор поэтому должен генерировать код для каждого оператора возврата:

void foo (int i, int j) {
  A a;
  if (i > 0) {
     B b;
     return ;   // Call dtor for 'b' followed by 'a'
  }
  if (i == j) {
     C c;
     B b;
     return ;   // Call dtor for 'b', 'c' and then 'a'
  }
  return 'a'    // Call dtor for 'a'
}

, Если размер кода является проблемой - тогда, это может быть чем-то стоящим избежать.

другая проблема касается "Названный Возвращаемым значением OptimiZation" (иначе Копия Elision, C++ ISO '03 12.8/15). C++ позволяет реализации пропускать вызов конструктора копии, если это может:

A foo () {
  A a1;
  // do something
  return a1;
}

void bar () {
  A a2 ( foo() );
}

Просто взятие кода, как, объект 'a1' создается в 'нечто', и затем его конструкцию копии назовут для построения 'a2'. Однако копия elision позволяет компилятору создавать 'a1' в том же месте на стеке как 'a2'. Нет поэтому никакой потребности "скопировать" объект, когда функция возвращается.

Несколько точек выхода усложняют работу компилятора в попытке обнаружить это, и по крайней мере для относительно последней версии VC ++, оптимизация не произошла, где тело функции имело несколько возвратов. См. Названный Оптимизацией Возвращаемого значения в Visual C++ 2005 для получения дополнительной информации.

0
задан 18.05.2020, 18:33

1 ответ

Вы можете, но так как Ubuntu и Windows находятся на отдельных дисках с отдельными диспетчерами начальной загрузки, Вы не будете видеть записи загрузки для обоих OSs в обоих менеджерах. Это означает, хотите ли Вы загрузить ОС на жестком диске 2, необходимо будет войти компьютеры quickboot меню и сказать ему загружаться от жесткого диска 2. Который для многих людей является предпочтенным способом сделать вещи. Следует иметь в виду, что быстрые меню начальной загрузки некоторого компьютера не позволяют выбирать определенный жесткий диск для начальной загрузки от, который означал бы, что необходимо будет разъединить 1 диск загрузиться другой или зафиксировать диспетчер начальной загрузки для списка и Ubuntu и загрузчиков Окна.

лучшее место для запуска должно было бы проверить быстрое меню начальной загрузки для наблюдения то, что поддерживает компьютер. Для этого теста у Вас должны быть оба подключенные жестких диска. Это сделано путем нажатия определенной клавиши, когда компьютер сначала включает. Ключ варьируется моделью компьютера, но это должно сказать относительно экрана. Типичные ключи являются F2, F4, F10 и F11. Необходимо тогда получить список, в котором говорится что-то вроде:

1. CD/DVD
2. Removable
3. Hard Drive 1
4. Hard Drive 2
5. Network

, Если можно выбрать между дисками тогда, план будет работать. Просто разъедините Ubuntu и установите Windows, тогда снова соединяются.

, Если это не перечисляет определенный жесткий диск тогда, Вы не можете выбрать, и это будет всегда пытаться загрузиться от первого для предложения диспетчера начальной загрузки, который препятствовал бы тому, чтобы Вы загрузились в 1 из операционных систем, если Вы не разъединяете другой диск. В этом случае "можно" быть в состоянии продолжить двигаться путем установки как запланировано и затем запущения программы, названной восстановлением начальной загрузки от Ubuntu, когда оба жестких диска подключены. Это должно добавить запись для Windows к диску Ubuntu.

, Кроме того, можно установить VirtualBox на Ubuntu и установить Windows 7 в виртуальной машине. Тогда перенаправьте USB-устройство к виртуальной машине так, чтобы Windows 7 мог взаимодействовать с ним.

0
ответ дан 18.05.2020, 18:34
  • 1
    Диспетчер начальной загрузки GRUB в настоящее время позволяет мне выбрать Ubuntu (значение по умолчанию) или XP WIN на HDD2, но XP WIN won' t выполненный, потому что жесткий диск от другой машины и конечно Windows не может иметь дело с этим. Таким образом, я хочу поместить WIN 7 на второй жесткий диск. Я должен вытереть HDD2 сначала? – Ragavan Rajan 18.05.2020, 18:34
  • 2
    Можно вытереть его сначала, или можно вытереть его с установочного диска Windows 7, прежде чем это установит. Кроме того, можно использовать Ubuntu, чтобы уменьшить раздел XP и затем установить Windows 7 около XP. XP все еще won' t начальная загрузка, но тот путь Вы don' t должны удалить его, если Вы планируете зафиксировать XP в какой-то момент. – Srishti 18.05.2020, 18:34

Теги

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