Что на самом деле делает ОС?

Синтаксис на основе класса ES6 намного лучше, чем традиционный подход к прототипу,

  • По сравнению с конструкторами и наследованием конструктора классы облегчают начинающим начинающим.
  • Подкласс поддерживается внутри языка.
  • Встроенные конструкторы являются подклассами.
  • Нет библиотеки для наследования больше; код станет более переносимым между фреймворками.
  • Они обеспечивают основу для расширенных функций в будущем (mixins и т. д.).

Так что, если вас не волнует перекрестный браузер, а затем пойти с синтаксисом на основе классов.

Счастливое кодирование !!

13
задан Billy ONeal 8 June 2011 в 12:54
поделиться

11 ответов

Операционная система - это слой между вашим кодом (пользовательским кодом) и аппаратным обеспечением.

ОС отвечает за управление физическими компонентами и предоставляет вам простой (надеюсь) API, на основе которого можно строить. Она определяет, какие программы запускаются, когда, кто первый, как обрабатывается память, кто получает память, отрисовка видео и все прочее.

Например, при создании графического интерфейса вместо того, чтобы посылать каждый бит на монитор, вы говорите ОС (или менеджеру окон) создать окно. Затем вы говорите ей поместить кнопку в окно. Затем ОС обрабатывает рисование окна, перемещение окна, перемещение кнопки (но удерживая ее там, где она должна быть в окне).

Теперь вы можете программировать операционную систему на C++, но это нелегко. Вы должны разработать ядро и прочее, найти способ взаимодействия с аппаратным обеспечением, а затем предоставить этот интерфейс пользователям и их программам.

Итак, по сути, ОС управляет взаимодействием между программным обеспечением и аппаратурой и управляет вашими физическими ресурсами. Программы на C++ могут выполняться в ОС или, при достаточной работе, работать сами по себе или даже быть ОС.

13
ответ дан 1 December 2019 в 19:39
поделиться

конечно, http: //en.wikipedia.org / wiki / Operating_system

Операционная система - это программное обеспечение на компьютере, которое управляет тем, как различные программы используют его оборудование, и регулирует способы, которыми пользователь управляет компьютером. Операционные системы можно найти практически на любом устройстве, содержащем компьютер с множеством программ - от сотовых телефонов и игровых консолей до суперкомпьютеров и веб-серверов. Некоторые популярные современные операционные системы для персональных компьютеров включают Microsoft Windows, Mac OS X и Linux (см. Также: список операционных систем, сравнение операционных систем).

Я имею в виду описание операционной системы, что она делает, когда и почему выходит далеко за рамки ответа на этом сайте imho.

3
ответ дан 1 December 2019 в 19:39
поделиться

Операционная система, а точнее ее ядро, разрабатывается на таком языке, как C. И компилируется в машинный код, как и любая другая программа. Основное различие между основной ОС и некоторым кодом, который вы пишете на C, заключается в том, что код на C будет выполняться в режиме таймшера через планировщик CPU ОС. Также учтите, что ОС запускается первой и способна создать такую среду, в которой она полностью контролирует и ограничивает все, что запускает. Также следует помнить, что системные вызовы - это то, как процесс может общаться с ОС, а все остальное - это обычные машинные инструкции, которые могут выполняться на любом другом процессоре этого типа.

Несколько ключевых функций, которые предоставляет любая основная ОС:

  • Планировщик процессора - он загружает процесс, позволяет ему работать очень ограниченное количество времени, после чего отменяет его, возвращает контроль и позволяет запустить что-то другое (будь то задача ядра или другой процесс, обычно задачи ядра имеют приоритет)
  • Управление памятью - любое приложение, которое вы запускаете, не имеет точных адресов памяти, так как они подвержены изменениям. Все процессы работают в виртуальной памяти, а ОС преобразует виртуальную память (например: 0x41000+) в физический адрес. (опять же, это абстрагирование аппаратного обеспечения, как часто упоминается)
  • Файловые системы - различных видов
  • Ресурсы - любой вид устройства может рассматриваться как ресурс. Процесс может запросить доступ к ресурсу. (Как ни странно, в наше время ни одна из основных ОС не имеет механизма для предотвращения мертвых блокировок ресурсов)
  • Безопасность - она осуществляется с помощью ролей. Очень важно, чтобы каждый процесс работал в жестких рамках. Это еще одна абстракция, которую обеспечивает ОС.
2
ответ дан 1 December 2019 в 19:39
поделиться

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

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

1
ответ дан 1 December 2019 в 19:39
поделиться

Не существует «четкого» определения того, каковы обязанности ОС. Он может включать следующее:

  • Управление памятью
  • Устройства и драйверы
  • Файловая система (и)
  • Процессы и потоки
  • Системные вызовы

В двух словах ОС - это программа, которая позволяет пользователю для управления оборудованием компьютера относительно простым способом

1
ответ дан 1 December 2019 в 19:39
поделиться

По сути, ОС - это программа, внутри которой выполняются все остальные программы. Это буквально первая программа, которую запускает ваш компьютер при загрузке. Как таковая, она контролирует все аппаратное обеспечение и действует в качестве привратника для других программ для доступа к этому оборудованию. Она также контролирует (или, по крайней мере, должна контролировать) все программы, которые работают под ее управлением - когда они запускаются, как останавливаются и к каким ресурсам имеют доступ. Вы можете назвать его "Главной управляющей программой" :)

1
ответ дан 1 December 2019 в 19:39
поделиться

Прочитав вопрос, я понял, что вы хотите спросить. Вы спрашиваете, нужна ли программам на C/C++ ОС для работы. Ответ - нет. C/C++ - это компилятор, который переводит человеческий язык в машинный. Он не требует конкретной операционной системы. Однако, если вы компилируете, скажем, в Visual Studio, полученный исполняемый машинный код не может работать ни на чем, кроме Windows.

В частности, код на C/C++ обычно переносимый, так как если у вас есть компилятор для операционной системы, вы можете скомпилировать его, и он будет работать так же. Однако, иногда у вас есть код, специфичный для конкретной машины (или ОС), например, windows-приложение, использующее windows-интерфейсы, которые не могут быть перенесены на другую операционную систему. Некоторые примеры, которые я могу вспомнить, например, операции с каталогами обычно не переносятся и зависят от того, на какой ОС вы работаете. Однако большинство файловых операций, например fopen, переносимы.

ОС - это немного другое. Для нее требуется другой компилятор, и она требует другого способа загрузки. Большинство ОС создаются на C/C++, затем компилируются компилятором, после чего распространяются. Например, Microsoft написала Windows 95 на C/C++, они пропустили ее через компилятор, затем записали полученный исполняемый код на CD-ROM, затем продали его вам, вы вставили диск, и он скопировал полученный исполняемый код на вашу машину, и вы его использовали.

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

1
ответ дан 1 December 2019 в 19:39
поделиться

На самом деле, сам стандарт C ++ может что-то сказать по этому поводу. §1.4 / 7:

Определены два типа реализаций: размещенная и автономная. Для размещенной реализации этот международный стандарт определяет набор доступных библиотек. Автономная реализация - это реализация, в которой выполнение может происходить без использования операционной системы, и имеет набор библиотек, определяемый реализацией, который включает определенные библиотеки поддержки языка (17.4.1.3).

И в 17.4.1.3,

Автономная реализация имеет набор заголовков, определяемый реализацией. Этот набор должен включать как минимум следующие заголовки, как показано в таблице 13:

Table 13—C++ Headers for Freestanding Implementations
_______________________________________________
 Subclause Header(s)
 18.1 Types    <cstddef>   
 18.2 Implementation properties    <limits>
 18.3 Start and termination    <cstdlib>
 18.4 Dynamic memory management    <new>
 18.5 Type identification  <typeinfo>  
 18.6 Exception handling   <exception> 
 18.7 Other runtime support    <cstdarg>   

Поставляемая версия заголовка должна объявлять как минимум функции abort (), atexit () и exit () (18.3).

Эти заголовки либо определяют константы, либо предоставляют базовую поддержку компилятору. На практике некоторые языковые функции будут отсутствовать, пока ОС не завершит некоторую инициализацию, например new и catch .

6
ответ дан 1 December 2019 в 19:39
поделиться

На самом деле ОС - это просто программа, которая запускает другие программы и управляет аппаратными ресурсами для них.

Если вы действительно серьезно хотите разобраться во внутренностях, я бы рекомендовал прочитать книгу Understanding the Linux Kernel.

4
ответ дан 1 December 2019 в 19:39
поделиться

С точки зрения программирования операционные системы в первую очередь обеспечивают абстракцию. Абстракция от деталей центрального процессора и управления памятью, абстракция от работы с аппаратными устройствами, абстракция от деталей стека сетевых протоколов.

Операционная система предоставляет интерфейс программирования более высокого уровня, часто стандартизированный для нескольких операционных систем, как POSIX для всех версий Unix.

1
ответ дан 1 December 2019 в 19:39
поделиться

Термин "операционная система" в применении к ПК обычно означает современную операционную систему с "защищенной памятью", которая обеспечивает не только базовый набор системных служб, но и полноценный пользовательский интерфейс:

  • сочетание ядра, драйверов устройств и системных служб, которые обеспечивают защиту памяти, задачи, которые не могут вмешиваться в память друг друга, и потоки, которые являются единицами выполнения внутри процесса, а также способы для потоков и задач общаться друг с другом и получать доступ к общим ресурсам, таким как файловые системы, которые содержат файлы на устройствах хранения данных, таких как жесткий диск вашего ПК, фактически являются ядром операционной системы.

  • "Оболочка" поверх этой операционной системы может быть простой, как текстовая командная строка "command.com" в DOS (помните " C:> _ "?) или сложной, как оболочка Windows, включая ее панель управления, и т.д.

Иногда "дистрибутив linux" содержит гораздо больше, чем операционная система, но неофициально называется одним именем (например, Ubuntu), поэтому грань между тем, что представляет собой операционная система (ядро linux и стандартные библиотеки, возможно) и приложениями, которые просто поставляются с этой операционной системой (среды Gnome и KDE в Linux), довольно серые.

Отличный способ узнать, что на самом деле представляет собой операционная система, - это прочитать одну из книг Танненбаума об операционных системах. Я считаю, что он подробно описывает реализацию своего ядра "minix". Другая книга - "Linux Kernel Internals". Если вы сможете справиться с техническими деталями в такого рода книгах, тогда вы сможете действительно понять, что такое "ядро" операционной системы, а затем начать разбираться в слоях вокруг этого ядра.

Я не знаю ни одной коммерческой или открытой операционной системы, которая была бы написана в основном на C++. Такое программирование на уровне системы чаще всего выполняется на смеси чистого ANSI C и ассемблера/машинного языка. Низкоуровневые биты ассемблера часто участвуют в таких задачах, как обработка прерываний, инициализация оборудования и загрузка системы. Пока у вас нет кучи, стека и рабочей системы виртуальной памяти, вы не захотите использовать объекты C++ или даже некоторые функции языка C, такие как malloc. Ваши ресурсы и ваш дизайн должны быть ограничены критериями производительности, и любой вид дополнительных накладных расходов, даже семантических, должен вызывать сожаление".

Недавно Линус Торвальдс знаменито оскорбил C++ и описал в списке рассылки, почему он никогда не будет использовать его для ядра Linux. Однако я считаю, что C++ делает успехи в областях, которые обычно были прибежищем "чистого Си". Например, команда Gnu GCC, наконец, готова допустить C++ в кодовую базу GCC.

1
ответ дан 1 December 2019 в 19:39
поделиться
Другие вопросы по тегам:

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