Важная информация

User Tag List

Страница 2 из 22 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 217

Тема: Техраздел UZIX

  1. #11
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Некоторый отчет.
    Выложил исходники проекта от 5 января.
    Что имеем:
    • сделал интерфейс процесса с ядром такой, чтобы работали оригинальные Юзиксовые бинарники - т.к. неохота все пересобирать (к LIBC пока не прикасался). Впрочем, PS, RENICE, TOP все равно потом надо будет пересобрать - я для упрощения ASM кода кое-какие переменные переставил в структуре заголовка процесса.
    • Пока отлаживаюсь в некоммутируемом режиме (без многозадачности), хотя мысли для ее работы в коде оформлены, просто пока отключен и не проверялся сам диспетчер 50Hz в ISR service()
    • Запускается init, он запускает login (вводим root, ага ), затем запускается sash, все это как-то уже живет в разных страницах памяти, как-то туды-сюды переключаясь на засыпаниях процессов в очередях. sash прочитывает какие-то файлы из /etc/ и увисает на сигналах (а это межстраничные вызовы), надо разбираться. Трассировать С-шный код в ассемблере - это очень увлекательно. А деваться некуда - я переделываю плоскую (одностраничную) модель Юзикса в многостраничную, наошибаюсь - не без того.


    Подскажите знающие люди: нафига приложения в диких количествах вызывают этот мутный непонятный sbrk() ?
    Последний раз редактировалось Error404; 06.01.2015 в 01:56.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  2. #12
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Подскажите знающие люди: нафига приложения в диких количествах вызывают этот мутный непонятный sbrk() ?
    Насколько я понимаю, это верхняя граница памяти процесса. Т.е. чтобы, например, перенести процесс в другую страницу, достаточно скопировать до этой границы. Выше этой границы процесс гарантированно не использует память. В этой функции ядра можно контролировать распределение страниц памяти для процесса.

  3. #13
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Насколько я понимаю, это верхняя граница памяти процесса. Т.е. чтобы, например, перенести процесс в другую страницу, достаточно скопировать до этой границы. Выше этой границы процесс гарантированно не использует память. В этой функции ядра можно контролировать распределение страниц памяти для процесса.
    Ну, где-то так я и предполагал. Дергается при каждом malloc/free
    Но в целом там ничего сложного (хотя кое-что уже нашел и поправил, но не критично, не должно было влиять).
    Значит, собака где-то в другом месте порылась, копаю дальше.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  4. #14
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Остальное завтра: уже засыпаю...
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	scr1.jpg 
Просмотров:	268 
Размер:	22.6 Кб 
ID:	50559   Нажмите на изображение для увеличения. 

Название:	scr2.jpg 
Просмотров:	249 
Размер:	23.0 Кб 
ID:	50560   Нажмите на изображение для увеличения. 

Название:	scr3.jpg 
Просмотров:	256 
Размер:	22.2 Кб 
ID:	50561   Нажмите на изображение для увеличения. 

Название:	scr4.jpg 
Просмотров:	217 
Размер:	22.4 Кб 
ID:	50578  
    Последний раз редактировалось Error404; 07.01.2015 в 18:17.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  5. #15
    Junior
    Регистрация
    14.11.2011
    Адрес
    г. Алматы, Казахстан
    Сообщений
    19
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Их два brk() и sbrk()

    Вызов brk() и sbrk() изменяет расположение маркера окончания программы (program break), который определяет конец сегмента данных процесса (т.е., маркер окончания — это первая точка
    после конца сегмента неинициализированных данных). Увеличение маркера окончания программы позволяет процессу выделить память; уменьшение маркера приводит к освобождению памяти.

    brk() устанавливает конец сегмента данных в значение, указанное в аргументе addr, если это значение является приемлемым, система имеет достаточно памяти и процесс не достиг максимально
    возможного размера своего сегмента данных (см. setrlimit(2)).

    sbrk() увеличивает пространство данных программы на increment байт. Вызов sbrk() с increment равным 0 может быть использован для нахождения текущего местоположения маркера окончания
    программы.
    Вот что говорит man по этим функциям.
    чаще всего используются для изменения размера кучи, при динамическом выделении памяти через malloc() / realloc() / calloc() и при освобождении выделенного через free()

    В переносимых программах к использованию не рекомендуются, т.к поведение зависит от реализации VMM в ядре ОС, вместо них лучше пользоваться функциями для динамического выделения памяти из libc ( malloc/calloc/realloc/free).

    Цитата Сообщение от Error404 Посмотреть сообщение
    Некоторый отчет.
    Выложил исходники проекта от 5 января.
    Что имеем:
    • сделал интерфейс процесса с ядром такой, чтобы работали оригинальные Юзиксовые бинарники - т.к. неохота все пересобирать (к LIBC пока не прикасался). Впрочем, PS, RENICE, TOP все равно потом надо будет пересобрать - я для упрощения ASM кода кое-какие переменные переставил в структуре заголовка процесса.
    • Пока отлаживаюсь в некоммутируемом режиме (без многозадачности), хотя мысли для ее работы в коде оформлены, просто пока отключен и не проверялся сам диспетчер 50Hz в ISR service()
    • Запускается init, он запускает login (вводим root, ага ), затем запускается sash, все это как-то уже живет в разных страницах памяти, как-то туды-сюды переключаясь на засыпаниях процессов в очередях. sash прочитывает какие-то файлы из /etc/ и увисает на сигналах (а это межстраничные вызовы), надо разбираться. Трассировать С-шный код в ассемблере - это очень увлекательно. А деваться некуда - я переделываю плоскую (одностраничную) модель Юзикса в многостраничную, наошибаюсь - не без того.


    Подскажите знающие люди: нафига приложения в диких количествах вызывают этот мутный непонятный sbrk() ?
    Последний раз редактировалось impressed; 07.01.2015 в 16:05.
    2:5083/89

  6. #16
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну в общем из-за этого странного механизма выделения памяти и был один из глюков. Сейчас собрал работоспособную (оптимистичненько?) немногозадачную версию Юзикса (т.е. контексты не переключаются по INT50Hz пока), свежий пак исходников в первом посте. Чисто народу для побаловаться, пока я многозадачность буду допиливать. Пишите багрепорты, а лучше сразу присылайте фиксы ошибок.

    Здесь кладу образ для загрузки (tty-sd5.ohi - он одинаковый что для IDE, что для SD-card), поправленный плагин для записи CPM-файлов в образы HDD для TotalCommander/DoubleCommander/Far (старый плагин не работает! виснет если в образе есть не-CPM партиции), ПЗУ мониторов и MBOOT.ORD для загрузки сразу с SD по включению питания и через Ордос соответственно.

    tty-sd5.zip из двух частей собирать так:
    cmd> copy /b tty-sd5-001.zip + tty-sd5-002.zip tty-sd5.zip
    и уже потом раззиповать tty-sd5.ohi.

    Файлы копировать в/из файловые системы UZIX пока только через утилиту UCP.COM (она в user_3 CP/M-овской партиции tty-sd5.ohi - первой партиции) - в ней нажмете "?" - выведется подсказка (hint: использовать bput/bget как в ftp).

    Всего в образе 3 партиции: CP/M, UZIX, UZIX.
    Соответствие устройствам можно смотреть утилитой BD.COM (перед тем как выводить собственно HEX-дамп секторов указанной партиции, она покажет все партиции какие есть в табличке). Пример на картинке.

    Обе партиции UZIX - системные, т.е. из CP/M ядро UZIX (бинарь UZIX.COM) можно запускать с параметром - любой из этих двух партиций:
    uzix 2:
    или
    uzix 4:

    а 0: - это партиция с CP/M

    Отличие в том, что в последней партиции ( 4: ) я создал и метадевайсы /dev/fd2 .. /dev/fd7 (картинка 4), а в партиции 2: есть только /dev/fd0 и /dev/fd1. Т.е. загрузившись в партиции 4: вы можете сделать "mount /dev/fd2 /mnt", а в 2: ничего такого сделать не можете пока аналогично не наковыряете через mknod соответствующие девайсы.

    Почему такая система нумерации партиций.
    У нас в общем случае 2 физических привода, на каждом в максимуме по 4 партиции - итого 8. Если это обычные флешки, то там по одной партиции, и удобно когда они /dev/fd0 (устройство 0, первая партиция) и /dev/fd1 (устройство 1, первая партиция). Продолжая (добавляя партиции), имеем:

    /dev/fd2 (устройство 0, партиция 2), /dev/fd3 (устройство 1, партиция 2),
    /dev/fd4 (устройство 0, партиция 3), /dev/fd5 (устройство 1, партиция 3),
    /dev/fd6 (устройство 0, партиция 4), /dev/fd7 (устройство 1, партиция 4).

    Еще поддерживаются
    /dev/fd8 (устройство 0 целиком включая MBR), /dev/fd9 (устройство 1 целиком включая MBR). Файловые системы UZIX на них делать (MKFS.COM) нельзя - убьете MBR. Это устройства на будущее - для утилит типа fdisk в версии для uzix.

    А еще планирую /dev/fd10 - электронный диск в "расширенной" памяти ОЗУ (сверх 1Мб) - если этого ОЗУ у вас более чем 1Мб (а первый мегабайт весь распределен под UZIX, что дает параллельно выполнять до 13 процессов, каждому из которых дается не меньше 58,5кб ОЗУ)

    ЗЫ. Так забавно, там даже и man-ы есть
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	scr0.jpg 
Просмотров:	241 
Размер:	23.5 Кб 
ID:	50571  
    Вложения Вложения
    • Тип файла: zip ROM.zip (13.0 Кб, Просмотров: 117)
    Последний раз редактировалось Error404; 17.01.2015 в 17:34.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Member
    Регистрация
    29.12.2014
    Адрес
    г. Санкт-Петербург
    Сообщений
    36
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот можете меня тапками забросать но причем тут уж тога орион

    Можно легко сделать вот такую машину
    http://searle.hostei.com/grant/cpm/index.html?mmskip=1

    с RS232 - даже терминала не надо - юзай внешний на здоровье

    но вместо 64 к памяти закатать там SRAM на 512 и пейджер постраничный

    и портировать на нее - будет отличная машина для UZIX и ничего лишнего =)

  9. #18
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от medvdv Посмотреть сообщение
    Вот можете меня тапками забросать но причем тут уж тога орион

    Можно легко сделать вот такую машину
    http://searle.hostei.com/grant/cpm/index.html?mmskip=1

    с RS232 - даже терминала не надо - юзай внешний на здоровье

    но вместо 64 к памяти закатать там SRAM на 512 и пейджер постраничный

    и портировать на нее - будет отличная машина для UZIX и ничего лишнего =)
    Принципиально оно ничем от Ориона не отличается, т.к. юзает Z80 c его ограничениями, какой там терминал - уже дело десятое (RS-232 на Орионе кстати есть есколько реализаций, одну из них впилю в Юзикс). Можно конечно и туда запилить. Но к Ориону у меня незавершенный гештальт: я в 1997г. сильно обдумывал на тему многозадачной ОС для него, но ушел в армию а после армии люди немного меняются - перестают "заниматься фигней" (становятся тупыми овощами, но пригодными к взрослой жизни - жестче, впрочем и без армии таких полно, чоужтам). А под 40 опять накрыло. Так что буду доделывать и точка. На этом офтоп закрываю.
    Последний раз редактировалось Error404; 08.01.2015 в 11:25.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  10. #19
    Activist
    Регистрация
    18.09.2009
    Адрес
    г. Витебск
    Сообщений
    499
    Спасибо Благодарностей отдано 
    13
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ага, только вы попробуйте дорисовать к той схеме:
    1. работа с памятью более 64К
    2. клавиатуру
    3. видео
    4. ну и еще пара портов ввода/вывода

    на выходе по корпусам получится Орион или почти, на который к тому же софта 0 - все нужно портировать.

  11. #20
    Member
    Регистрация
    18.01.2010
    Адрес
    Крым
    Сообщений
    132
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    16 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мужики, а как бы на обычную cp/m машинку uzix поставить? Это есть, это возможно?
    Безо всяких там синклеров, ага? Извините, за глупый вопрос, ежели чё.

Страница 2 из 22 ПерваяПервая 123456 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 0
    Последнее: 24.02.2009, 12:31
  2. и еще раз о uzix
    от sysop в разделе Оси
    Ответов: 33
    Последнее: 25.08.2006, 14:35

Ваши права

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