OSDev

для всех
Текущее время: 28 апр 2024, 02:15

Часовой пояс: UTC + 3 часа




Форум закрыт Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 23 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Создание объектов
СообщениеДобавлено: 30 июл 2012, 13:19 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
В моей системе самое главное проектировать объекты, объект это стандартные 64байта и специальная информация, буфер еслинужен и функционал.
Всё работает через объекты, кодеки, файлы, компоненты, модули, форма окна, устройства, диски, файловые системы, протоколы сетевые.

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

Вот примеры:
Цитата:
Стандартный объект в ОС Малинка имеет стандартные для всех объектов поля:
Для использования объектов всегда используется его указатель, регистр ebp. Главная задача объекта - нарисовать себя на
экране и по наведении мышки иметь адрес курсора, принимать сообщения и обрабатывать их.
Для отрисовки объекта всегда используется функция со смещением 8, для сообщения со смещением 12 и курсор всегда со смещением 0,
система будет использовать эти поля.

0-3 Адрес изображения курсора 4байта
4-7 Цвет курсора и тип курсора 4байта Чёрный 1, цветной 2, разноцветный 3
8-11 Адрес кода отрисовки 4байта
12-15 Адрес кода с обработчиком 4байта
16-19 Адрес ресурса 4байта
20-23 Цвет ресурса и размер или тип 4байта Это поле для разных объектов несёт разный смысл
24-27 Ширина, высота 4байта Это поле для разных объектов несёт разный смысл
28-31 Положение 4байта
32-35 Адрес хозяина 4байта
36-39 Адрес своего активного объекта 4байта
40-43 Адрес следующего объекта 4байта
44-47 Адрес предыдущего 4байта



Объект система:

0-3 Адрес изображения курсора 4байта
4-7 Цвет курсора и тип курсора 4байта Чёрный 1, цветной 2, разноцветный 3
8-11 Адрес кода отрисовки 4байта
12-15 Адрес кода с обработчиком 4байта
16-19 Адрес изображения 4байта
20-23 Цвет ресурса и размер или тип 4байта
24-25 Ширина экрана 2байта
26-27 Высота экрана 2байта
28-31 Положение 4байта
32-35 Адрес хозяина 4байта
36-39 Адрес своего активного объекта 4байта активному объекту приходит сообщение от клавы и таймера
40-43 Адрес иконок 4байта сначала рисуются все иконки в цепочке
44-47 Адрес кнопок 4байта
48-51 Адрес форм 4байта
52-55 Адрес меню 4байта
56-59 Адрес 4байта
60-63 Адрес 4байта
64-67 Адрес функций системы 4байта
68-71 Адрес функций системы 4байта
72-75 Адрес функций системы 4байта
76-79 Адрес функций системы 4байта
....


Объект текст:

0-3 Адрес изображения курсора 4байта
4-7 Цвет курсора и тип курсора 4байта Чёрный 1, цветной 2, разноцветный 3
8-11 Адрес кода отрисовки 4байта
12-15 Адрес кода с обработчиком 4байта
16-19 Адрес текста 4байта
20 синий цвет 1байт
21 зелёный цвет 1байт
22 красный цвет 1байт
23 размер шрифта 1байт
24-27 Адрес шрифта 4байта
28-31 Положение 4байта
32-35 Адрес хозяина 4байта
36-39 Адрес своего активного объекта 4байта
40-43 Адрес следующего объекта 4байта
44-47 Адрес предыдущего 4байта

Объект изображение:

0-3 Адрес изображения курсора 4байта
4-7 Цвет курсора и тип курсора 4байта Чёрный 1, цветной 2, разноцветный 3
8-11 Адрес кода отрисовки 4байта
12-15 Адрес кода с обработчиком 4байта
16-19 Адрес изображения 4байта
20-23 Цвет ресурса и размер или тип 4байта
24-25 Ширина 2байта
26-27 Высота 2байта
28-31 Положение 4байта
32-35 Адрес хозяина 4байта
36-39 Адрес своего активного объекта 4байта
40-43 Адрес следующего объекта 4байта
44-47 Адрес предыдущего 4байта

Для отрисовки call(jmp) dword[ebp+8]

Объект значёк:

0-3 Адрес изображения курсора 4байта
4-7 Цвет курсора и тип курсора 4байта Чёрный 1, цветной 2, разноцветный 3
8-11 Адрес кода отрисовки 4байта
12-15 Адрес кода с обработчиком 4байта
16-19 Адрес текста 4байта
20 синий цвет 1байт
21 зелёный цвет 1байт
22 красный цвет 1байт
23 размер шрифта 1байт
24-27 Адрес шрифта 4байта
28-31 Положение 4байта
32-35 Адрес хозяина 4байта
36-39 Адрес своего активного объекта 4байта адрес объекта для его запуска, вызывается в обработчике
40-43 Адрес следующего объекта 4байта
44-47 Адрес предыдущего 4байта
48-51 Адрес изображения 4байта
52-53 Ширина 2байта
54-55 Высота 2байта
56-57 x 2байта
58-59 y 2байта
60-63 Адрес функции активации 4байта вызывается в обработчике по нажатию мышки

Для отрисовки call(jmp) dword[ebp+8]
Для вызова объекта в обработчике call(jmp) dword[ebp+36]
Для активации call(jmp) dword[ebp+60]

Объект форма:

0-3 Адрес изображения курсора 4байта
4-7 Цвет курсора и тип курсора 4байта Чёрный 1, цветной 2, разноцветный 3
8-11 Адрес кода отрисовки 4байта
12-15 Адрес кода с обработчиком 4байта
16-19 Адрес формы 4байта массив Ширина*Высота*8
20-23 Цвет ресурса и тип 4байта
24-25 Ширина 2байта
26-27 Высота 2байта
28-31 Положение 4байта
32-35 Адрес хозяина 4байта
36-39 Адрес своего активного объекта 4байта
40-43 Адрес следующего объекта 4байта
44-47 Адрес предыдущего 4байта
48-51 Адрес функции очистки экрана 4байта
52-55 Адрес функции перемещения 4байта
56-59 Адрес функции активации 4байта
60-63 Адрес функции закрытия 4байта вызывается в обработчике по правой кнопки мыши на данный момент

Объект устройство:

0-3 Адрес изображения курсора 4байта
4-7 Цвет курсора и тип курсора 4байта Чёрный 1, цветной 2, разноцветный 3
8-11 Адрес кода отрисовки 4байта
12-15 Адрес кода с обработчиком 4байта
16-19 Адрес текста 4байта текст находится с 80 по 127
20 синий цвет 1байт
21 зелёный цвет 1байт
22 красный цвет 1байт
23 размер шрифта 1байт
24-27 Адрес шрифта 4байта
28-31 Положение 4байта
32-35 Адрес хозяина 4байта
36-39 Адрес своего активного объекта 4байта
40-43 Адрес следующего объекта 4байта
44-47 Адрес предыдущего 4байта
48-51 Адрес шины 4байта
52-55 Адрес функции вывода информации 4байта

При загрузке драйвера, он использует под свои нужды 56-79 и 80-127 байты, в 56 пишет адрес регистров в памяти, и т.д..
Каждое устройство может изменить оформление для себя, шрифт, цвет, размер, курсор.

Объект диск, 256байт+512байт(буфер):

0-3 Адрес изображения курсора 4байта
4-7 Цвет курсора и тип курсора 4байта Чёрный 1, цветной 2, разноцветный 3
8-11 Адрес кода отрисовки 4байта
12-15 Адрес кода с обработчиком 4байта
16-19 Адрес текста 4байта текст находится с 80 по 127
20 синий цвет 1байт
21 зелёный цвет 1байт
22 красный цвет 1байт
23 размер шрифта 1байт
24-27 Адрес шрифта 4байта
28-31 Положение 4байта
32-35 Адрес хозяина 4байта
36-39 Адрес своего активного объекта 4байта
40-43 Адрес следующего объекта 4байта
44-47 Адрес предыдущего 4байта
48-51 Адрес значка 4байта
52-53 Ширина значка 2байта
54-55 Высота значка 2байта
56-59 Адрес диска в контроллере 4байта
60-63 Адрес функции чтения сектора 4байта главная функция объекта
64-127 Параметры диска
128-... Имя диска
...


Объект диск локальный, 256байт+1024байт(буфер):

0-3 Адрес изображения курсора 4байта
4-7 Цвет курсора и тип курсора 4байта Чёрный 1, цветной 2, разноцветный 3
8-11 Адрес кода отрисовки 4байта
12-15 Адрес кода с обработчиком 4байта
16-19 Адрес текста 4байта текст находится с 80 по 127
20 синий цвет 1байт
21 зелёный цвет 1байт
22 красный цвет 1байт
23 размер шрифта 1байт
24-27 Адрес шрифта 4байта
28-31 Положение 4байта
32-35 Адрес хозяина 4байта
36-39 Адрес своего активного объекта 4байта
40-43 Адрес следующего объекта 4байта
44-47 Адрес предыдущего 4байта
48-51 Адрес значка 4байта
52-53 Ширина 2байта
54-55 Высота 2байта
56-59 Первый кластер 4байта для синхронизации с файлами, т.к. обработчик один
60-63 Адрес диска локального (себя) 4байта для синхронизации с файлами, т.к. обработчик один
64-127 Параметры файловой системы 52байта
128-... Имя диска 12байт
256-... Буфер для файловой системы 1024байт

Объект файл, 256байт:

0-3 Адрес изображения курсора 4байта
4-7 Цвет курсора и тип курсора 4байта Чёрный 1, цветной 2, разноцветный 3
8-11 Адрес кода отрисовки 4байта
12-15 Адрес кода с обработчиком 4байта
16-19 Адрес текста 4байта текст находится с 80 по 127
20 синий цвет 1байт
21 зелёный цвет 1байт
22 красный цвет 1байт
23 размер шрифта 1байт
24-27 Адрес шрифта 4байта
28-31 Положение 4байта
32-35 Адрес хозяина 4байта
36-39 Адрес своего активного объекта 4байта
40-43 Адрес следующего объекта 4байта
44-47 Адрес предыдущего 4байта
48-51 Адрес значка 4байта
52-53 Ширина 2байта
54-55 Высота 2байта
56-59 Первый кластер 4байта
60-63 Адрес диска локального 4байта
64-128 Функции для работы с файлом 64байт
128-255 Буфер для имени и пути 128байт
Файлы создаются при взове функции чтения файлов и их создание из папки в подготовленную память размера 256*100(для 100 файлов)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание объектов
СообщениеДобавлено: 30 июл 2012, 14:43 
Аватара пользователя

Зарегистрирован: 14 май 2012, 22:17
Сообщения: 101
Понятие "объект" это в первую очередь возможность отображения на разные языки программирования и эффективный маршалинг для доступа через границы процессов. Эти функции позволят эффективно магипулировать объектами в системе. Ничего этого и близко нет. Как система будет манипулировать объектами? Возьмите стандарт и будет Вам счастье. Выбор не богат но радикален - COM или CORBA. У каждого свои плюсы и минусы. Без стандарта - это сферический конь в вакууме. До языков программирования у Вас наверно далеко, но вот с передачей данных между процессами Вы столкнетесь очень скоро...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание объектов
СообщениеДобавлено: 30 июл 2012, 15:37 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Есть система и есть объекты и это не обсуждается, о том что они могут или не могут можно говорить зная их и их возможности с системе, а иначе тоже не стоит.
Я писал уже, что они будут делать гораздо больше существующих и быстрее, будут разных версий и обновляться, причём писал не один раз и не два.
В какой системе кодеки в виде объектов, это нужно, чтобы браузер выводил любые форматы, и вообще смысл в том, чтобы делалось всё и везде и легко?
Такого нету ни где.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание объектов
СообщениеДобавлено: 30 июл 2012, 22:07 
Аватара пользователя

Зарегистрирован: 14 май 2012, 22:17
Сообщения: 101
Да, объекты есть, а что и как с ними делать не понятно. Как метод Х объекта У вызвать из другого процесса? Что и как передаётся и как возвращается? Как вообще в ходе выполнения понять какой метод на объект надо вызывать? Поэтому я и говорю - прежде всего это изучение и следование стандартам. Там есть все ответы...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание объектов
СообщениеДобавлено: 31 июл 2012, 03:14 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
D-S писал(а):
Да, объекты есть, а что и как с ними делать не понятно. Как метод Х объекта У вызвать из другого процесса?

Что не понятного? Объект это кусок памяти в котором есть переменные, функции, данные. Сколько для твоего объекта нужно данных и функций ты сам смотриш и проектируеш его, твои функции могут вызывать другие объекты(например объект файл который имеет данные файла грузит их в память и вызывает объект кодек который эти данные расшифровывает и в итоге данные выводятся на экран другим объектом). При работе с объектом его адрес всегда в ebp и пользуешся его данными всегда mov eax,[ebp+смещение], вызываеш его функции call dword[ebp+смещение], вызванная функция так же пользуется данными из объекта по тому же ebp.
Если хочеш воспользоваться другим объектом, то соответственно записываеш его адрес в ebp и смотриш где у него функции, данные и пользуешся ими.
У меня постоянно при выводе на экран выводимый объект общается с объектом экрана.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание объектов
СообщениеДобавлено: 31 июл 2012, 17:15 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 320
Откуда: Псковская обл.
Отражает ли как-нибудь объектная модель параллельный код. Если нужно программисту часть кода выполнить в отдельной нити ,например. (В конце-концов любая ОС - это сервис для прикладного программирования.)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание объектов
СообщениеДобавлено: 01 авг 2012, 03:28 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
iz56 писал(а):
Отражает ли как-нибудь объектная модель параллельный код. Если нужно программисту часть кода выполнить в отдельной нити ,например. (В конце-концов любая ОС - это сервис для прикладного программирования.)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание объектов
СообщениеДобавлено: 01 авг 2012, 08:17 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 320
Откуда: Псковская обл.
Вопрос сложный во многом http://parallel.ru/vvv/ - сейчас читаю, отсюда и вопрос - чем поможет (твоя) система объектов в этом или я теперь думаю функции внутри объекта могут выполняться параллельно - как тогда это сделать - на уровне приложений или приложения только в одном потоке могут существовать. Интерес мой исключительно в том что мне как раз сейчас надо всё это продумать для своей ос - вот заинтересовался как люди делают.
ещё по теме - целый раздел на сайте (по рус.) про преимущества неблокирующих алгоритмов синхронизации http://www.1024cores.net/home/in-russian/lock--wait--obstruction--atomic-free-algorithms
Ещё вопрос возможно ли создавать объекты динамически во время выполнения программы.
(добавлю ещё что с ООП так и не разобрался в своё время )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание объектов
СообщениеДобавлено: 01 авг 2012, 09:32 
Аватара пользователя

Зарегистрирован: 14 май 2012, 22:17
Сообщения: 101
Алгоритмы lock-free, wait-free интересные, но достаточно нишевые и должны использоватся только там, где без них не обойтись. Они все построены вокруг использования инструкции CMPXCHG, эта инструкция очень затратная в многопроцессорной системе (т.к. должна одновременно изменить данные в кэше нескольких процессоров), для которых собственно эти алгоритмы и предназначены. Вместо выиигрыша можем получить проигрыш...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание объектов
СообщениеДобавлено: 01 авг 2012, 13:30 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
iz56 писал(а):
Вопрос сложный во многом http://parallel.ru/vvv/ - сейчас читаю, отсюда и вопрос - чем поможет (твоя) система объектов в этом или я теперь думаю функции внутри объекта могут выполняться параллельно - как тогда это сделать - на уровне приложений или приложения только в одном потоке могут существовать. Интерес мой исключительно в том что мне как раз сейчас надо всё это продумать для своей ос - вот заинтересовался как люди делают.
ещё по теме - целый раздел на сайте (по рус.) про преимущества неблокирующих алгоритмов синхронизации http://www.1024cores.net/home/in-russian/lock--wait--obstruction--atomic-free-algorithms
Ещё вопрос возможно ли создавать объекты динамически во время выполнения программы.
(добавлю ещё что с ООП так и не разобрался в своё время )

Вы говорите о выполнении одной функции одним процессором, а другой функции другим процессором с другим стеком и т.д. это вопрос из темы "как бы нам поэфективнее использовать процессоры", на самом деле не надо сильно задуряться здесь, так как сложные схемы сводят на нет весь выигрыш, есть у нас несколько процессоров то просто нужно выполнять работу одного объекта на одном процессоре, а другой будет работать на другом. Я уже писал, что все объекты устройств будут на первом процессоре, причём они не загрузят его даже на 30% при работе всех устройств с большими очередями, т.к. он только команды отдаёт, но он не должен быть занят, чтобы побыстрее послать команду, ещё он спакойно может обрабатывать сообщения от прерываний и объектные и по мелочи делать что угодно. Остальные процессоры могут выполнять объекты типо кодеков, они расшифровывают данные програмно и каждый работает со своей памятью и друг с другом не пересекается, их не нужно синхронизировать. Работа одной функции на нескольких процессорах требует синхронихации, причём там много условий по непересечению в памяти и т.д., это сложная тема(реализуется в любой системе одинаково).
Вообще объекты любой тематики просто объединяют в себя все данные и функции этой темы вот и всё, выдавая готовый объект решающий любую проблему связанную с этой темой, ну и кроме этого много чего полезного.
Например объект файл который знает где его инфа работает на первом процессоре может запустить объукты кодеки которыебудут каждый на свободном процессоре, почему бы и нет, это будет полюбому.
Если проектируете объекты, то давайте собственно это и делать вместе, в моей системе есть ГУИ и драва (сетевухи, флешки, диски, ...).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Форум закрыт Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 23 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB