User Tag List

Страница 3 из 20 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 200

Тема: Пишем свою ОС. Практика

  1. #21

    Регистрация
    12.12.2009
    Адрес
    Курск
    Сообщений
    768
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    давно пора переместить эту тему в "концепции".
    так давайте уже писать! Правда я не умею =))))))))))))))))))))))))))))))))))))))))))))))))) ))))))))))))
    Pentagon-128/AY/FDD; Leningrad-48/128; Гамма-48 ред1; Искра- 1080; Искра-1085;

  2. #22

    Регистрация
    15.06.2006
    Адрес
    S.Pb
    Сообщений
    5,791
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    В принципе - для реализации номальной ОС (с защитой памяти) достаточно:

    1. Обеспечить впечатывание любой страницы в любое окно.
    2. Обеспечить аппаратную блокировку записи в любое окно.
    3. Обеспечить генерацию NMI при записи в заблокированное окно.

    Всё. При таком варианте программы не могут случайно повредить друг другу или затереть код ОС. Сбой в программе, пишущей не в своё окно, будет отловлен и обработан.

    Не знаю, только, насколько трудоёмко доработать, например, Phoenix под эти требования.
    Да, есть предложение сделать под Феникс (а возможно и под Кай и Скорпион) плату расширения возможностей под слот NemoBus. Из системных возможностей как раз планируется:

    - управление режимами чтения/записи в окне CPU0;
    - режим совместимости со Спектрумом +128;
    - виртуальный ROM-диск в ОЗУ;
    - любая страница в любое окно;
    - работа в режиме виртуальной машины (ВМ), при этом в ОЗУ можно держать несколько виртуальных Спектрумов не имеющих возможности залезать в адресное пространство других ВМ, и почти мгновенно переключаться между ними;
    - работа в режиме главной ВМ ядра ОС, имеющей доступ ко всем ресурсам компьютера и ко всем ВМ.

    Этого хватит?

  3. #23

    Регистрация
    12.12.2009
    Адрес
    Курск
    Сообщений
    768
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    осталось дождаться сие чуда современного прогресса!
    Pentagon-128/AY/FDD; Leningrad-48/128; Гамма-48 ред1; Искра- 1080; Искра-1085;

  4. #24

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от БК-0010 Посмотреть сообщение
    Да, есть предложение сделать под Феникс (а возможно и под Кай и Скорпион) плату расширения возможностей под слот NemoBus. Из системных возможностей как раз планируется:

    - управление режимами чтения/записи в окне CPU0;
    - режим совместимости со Спектрумом +128;
    - виртуальный ROM-диск в ОЗУ;
    - любая страница в любое окно;
    - работа в режиме виртуальной машины (ВМ), при этом в ОЗУ можно держать несколько виртуальных Спектрумов не имеющих возможности залезать в адресное пространство других ВМ, и почти мгновенно переключаться между ними;
    - работа в режиме главной ВМ ядра ОС, имеющей доступ ко всем ресурсам компьютера и ко всем ВМ.

    Этого хватит?
    Лучше так.

    - управление режимами чтения/записи в ЛЮБОМ окне;
    - генерация NMI при попытки записи в окно, в которое запрещена запись;

  5. #25

    Регистрация
    05.10.2006
    Адрес
    Харьковская обл.
    Сообщений
    166
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от МИВ Посмотреть сообщение
    давно пора переместить эту тему в "концепции".
    Там уже такая есть

    Цитата Сообщение от МИВ Посмотреть сообщение
    так давайте уже писать! Правда я не умею =))))))))))))))))))))))))))))))))))))))))))))))))) ))))))))))))
    Ща буду учить.
    Приступаем.
    Ещё раз напоминаю - будет для начала делать упрощенно - ведь когда ученики приходят в школу, их же не начинают сразу учить решать квадратные уравнения? Их учат рисовать палочки и кружочки.
    Вот и мы будем учиться "рисовать палочки".

    Начнем с рассмотрения идеологии и разработки концепции.

    Придумаем конкретный пример - "любитель "криминального чтива" - у которого имеется LCD-монитор c композитным видеовходом и и подключенный к нему Спектрум с дисководом. А также дискетка с художественными произведениями указанного жанра в виде текстовых файлов. Нам необходимо разработать ПО для обеспечения возможности читать любителем содержимое текстовых файлов на экране LCD-монитора. При этом мы сразу расширим идеологию, для того чтобы полученное ПО можно было использовать и для других "любителей",(пример - начинающий писатель-студент, которому необходима возможность набирать, просматривать и редактировать текстовые файлы на карточке памяти Compact Flash, подключенные к IDE-контроллеру через переходник CF-IDE (при этом у него на компьютере отсутствует контроллер дисковода и сам дисковод и дискеты).

    Теперь концепция.

    Рассмотрит три основных составляющих нужного нам ПО:

    ядро – состоящее из подмножества компонентов,

    программа пользователя, тоже состоящая из подмножества компонентов (далее по тексту - задача),

    загрузчик ядра.

    Начать надо с главного – определиться с распределением памяти компьютера для ядра и задачи.

    Для ядра отведём нижние 32 Кб адресного пространства Z80, а для задачи - верхние 32 Кб.К чему это приведёт?

    Ограничение такого распределения очевидны , но оставим так,чтобы всё не усложнять на первом этапе. В память ядра войдёт область пзу, экран и системные переменные BASIC и ядро будет под них подстраиваться, а задача будет свободна от этого.

    В следующих версиях можно будет "масштабировать" нашу систему, например предоставить задаче возможность использовать страничную организацию области памяти #C000-#FFFF, а ядру "перепадёт" второй экран,а также некоторые страницы памяти в указанном диапазоне,и в результате ядро получить возможность использовать экранную область первого экрана для "не-экранных" целей и т.д.

    Далее, распределение процессорного времени.

    Ядро запускает задачу.

    Задаче предоставляется 100% процессорного времени для выполнения своих операций. Когда задача запрашивает операции, выполняемые ядром она самостоятельно передаёт управление ядру и ядро использует 100 % процессорного времени до завершения требуемой операции. После этого ядро возвращает управление задаче.

    Когда задача выполнила все необходимые операции, она запрашивает операцию ядра "завершить задачу".

    Теперь кратко рассмотрим основные компоненты ядра.

    1)Диспетчер задач - обеспечивает загрузку задачи в её адресное пространство,выполнение и завершение задачи.

    1)Драйвер устройства ввода (в данном случае это клавиатура).

    2)Драйвер устройства вывода (в данном случае это экран)

    3)Файловая система - производит все операции, необходимые для работы с файлами на различных информационных носителях (в данном случае это дисковод). Подразделяется на 3 части:

    а) Диспетчер устройств. Он объединяет в единую виртуальную файловую систему компоненты б),в)

    б) Драйвера файловых систем (в данном случае одной файловой системе TR-DOS, которая на дискете,)

    в) Драйвера дисковых устройств (в данном случае один драйвер дисковода, подключенный к BETA-DISK-INTERFACE).

    Программа пользователя будет хранится на диске в виде одного файла длиной не более 32 Кб.
    Ядро тоже будет хранится на диске в виде одного файла длиной не более 8 Кб.
    Загрузчик сделаем на Бэйсике .Назовём его boot. Он будет загружать ядро на адрес #6000.

  6. #26

    Регистрация
    12.12.2009
    Адрес
    Курск
    Сообщений
    768
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    и?

    ---------- Post added at 16:20 ---------- Previous post was at 16:13 ----------

    Программа пользователя будет хранится на диске в виде одного файла длиной не более 32 Кб.
    почему именно 32?
    Ядро тоже будет хранится на диске в виде одного файла длиной не более 8 Кб.
    тоже почему?
    Загрузчик сделаем на Бэйсике .Назовём его boot. Он будет загружать ядро на адрес #6000.[/QUOTE]

    почему именно с 6000?
    Pentagon-128/AY/FDD; Leningrad-48/128; Гамма-48 ред1; Искра- 1080; Искра-1085;

  7. #27

    Регистрация
    05.10.2006
    Адрес
    Харьковская обл.
    Сообщений
    166
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от МИВ Посмотреть сообщение
    и?
    Не надо И (C) Электроник
    Сейчас вот подберём подходящие дровишки...
    Надо будет их доработать для нашей цели, сделать загрузчики и начать увязывать всё в кучу

    Цитата Сообщение от МИВ Посмотреть сообщение
    Программа пользователя будет хранится на диске в виде одного файла длиной не более 32 Кб.
    почему именно 32?
    Ядро тоже будет хранится на диске в виде одного файла длиной не более 8 Кб.
    тоже почему?
    Загрузчик сделаем на Бэйсике .Назовём его boot. Он будет загружать ядро на адрес #6000.
    почему именно с 6000? [/quote]

    Задача согласно нашей концепции не может занимать в памяти более 32 Кб.
    Поскольку мы сейчас рассматриваем конкретную программу пользователя - программу чтения текста - то она точно поместиться в 32 Кб
    Ядро длиной до 8 Кб потому что загружаться будет на адрес #6000
    В ядре у нас будет мало функций в этой версии - поэтому все они поместяться

    ---------- Post added at 19:18 ---------- Previous post was at 18:49 ----------

    Почему адрес именно #6000 - а мне нравится круглое число 24576
    Можно сделать адрес #5D80 (ниже уже сиспеременные, и могут быть проблемы при загрузке ядра из бэйсика, из разных коммандеров)
    Ну будет ядро на 640 байт длиннее - нам это ничего сейчас не даёт,
    тем более ,что после загрузки ядро сможет использовать больше чем 8 Кб

  8. #28

    Регистрация
    05.10.2006
    Адрес
    Харьковская обл.
    Сообщений
    166
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Zet9 Посмотреть сообщение
    Теперь кратко рассмотрим основные компоненты ядра.

    1)Диспетчер задач - обеспечивает загрузку задачи в её адресное пространство,выполнение и завершение задачи.

    1)Драйвер устройства ввода (в данном случае это клавиатура).

    2)Драйвер устройства вывода (в данном случае это экран)

    3)Файловая система - производит все операции, необходимые для работы с файлами на различных информационных носителях (в данном случае это дисковод). Подразделяется на 3 части:

    а) Диспетчер устройств. Он объединяет в единую виртуальную файловую систему компоненты б),в)

    б) Драйвера файловых систем (в данном случае одной файловой системе TR-DOS, которая на дискете,)

    в) Драйвера дисковых устройств (в данном случае один драйвер дисковода, подключенный к BETA-DISK-INTERFACE).
    .
    Реализация вышеуказанных компонентов не представляет особой сложности, за исключение аппаратнозависимы драйвером дисковода (порты контроллера закрытые, необходимо переходить в область пзу трдос, плюс нужно знание комманд ВГ93)
    Драйвер клавиатуры будет имет только одну функцию - получить код символа
    Драйвер экрана - тоже одна функция - вывести строку символов из буфера такой-то длины.
    В драйвере файловой системы трдос нужно будет повозиться с произвольным чтением изнутри файла - применим для этого функцию lseek - установить указатель на определённое место в файле

  9. #29

    Регистрация
    12.12.2009
    Адрес
    Курск
    Сообщений
    768
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    можно получить домашнее задание? где почитать про командыВГ?
    Pentagon-128/AY/FDD; Leningrad-48/128; Гамма-48 ред1; Искра- 1080; Искра-1085;

  10. #30

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    При наличии аппаратной реализации принципа "любая страница в любом окне" нужно планировать под память пользователя (программы/процесса) все 64к адресного пространства. Ядро держать в "теневой" странице и подключать только на время обращения к его функциям. Разница между 32к/64к для процесса критична в том, что в 64к уже достаточно большой простор для длинномерного компилированного С-кода, а в 32к на C разве что только "hello world" запускать.
    Последний раз редактировалось Error404; 29.01.2010 в 16:56.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

Страница 3 из 20 ПерваяПервая 1234567 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Пишем на ассемблере под эмулятором
    от GM BIT в разделе Для начинающих
    Ответов: 76
    Последнее: 15.07.2016, 20:04
  2. Пишем свою ОС. Теория
    от Zet9 в разделе ZX Концепции
    Ответов: 280
    Последнее: 27.06.2012, 15:27
  3. Я ищу свою дему
    от AAA в разделе Демо
    Ответов: 4
    Последнее: 04.05.2005, 22:59
  4. Ищу свою gfx работу!!!
    от invador в разделе Игры
    Ответов: 7
    Последнее: 02.02.2005, 12:54

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •