OSDev http://osdev.su/ |
|
Создание объектов http://osdev.su/viewtopic.php?f=26&t=610 |
Страница 1 из 3 |
Автор: | Станислав [ 30 июл 2012, 13:19 ] |
Заголовок сообщения: | Создание объектов |
В моей системе самое главное проектировать объекты, объект это стандартные 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 файлов) |
Автор: | D-S [ 30 июл 2012, 14:43 ] |
Заголовок сообщения: | Re: Создание объектов |
Понятие "объект" это в первую очередь возможность отображения на разные языки программирования и эффективный маршалинг для доступа через границы процессов. Эти функции позволят эффективно магипулировать объектами в системе. Ничего этого и близко нет. Как система будет манипулировать объектами? Возьмите стандарт и будет Вам счастье. Выбор не богат но радикален - COM или CORBA. У каждого свои плюсы и минусы. Без стандарта - это сферический конь в вакууме. До языков программирования у Вас наверно далеко, но вот с передачей данных между процессами Вы столкнетесь очень скоро... |
Автор: | Станислав [ 30 июл 2012, 15:37 ] |
Заголовок сообщения: | Re: Создание объектов |
Есть система и есть объекты и это не обсуждается, о том что они могут или не могут можно говорить зная их и их возможности с системе, а иначе тоже не стоит. Я писал уже, что они будут делать гораздо больше существующих и быстрее, будут разных версий и обновляться, причём писал не один раз и не два. В какой системе кодеки в виде объектов, это нужно, чтобы браузер выводил любые форматы, и вообще смысл в том, чтобы делалось всё и везде и легко? Такого нету ни где. |
Автор: | D-S [ 30 июл 2012, 22:07 ] |
Заголовок сообщения: | Re: Создание объектов |
Да, объекты есть, а что и как с ними делать не понятно. Как метод Х объекта У вызвать из другого процесса? Что и как передаётся и как возвращается? Как вообще в ходе выполнения понять какой метод на объект надо вызывать? Поэтому я и говорю - прежде всего это изучение и следование стандартам. Там есть все ответы... |
Автор: | Станислав [ 31 июл 2012, 03:14 ] |
Заголовок сообщения: | Re: Создание объектов |
D-S писал(а): Да, объекты есть, а что и как с ними делать не понятно. Как метод Х объекта У вызвать из другого процесса? Что не понятного? Объект это кусок памяти в котором есть переменные, функции, данные. Сколько для твоего объекта нужно данных и функций ты сам смотриш и проектируеш его, твои функции могут вызывать другие объекты(например объект файл который имеет данные файла грузит их в память и вызывает объект кодек который эти данные расшифровывает и в итоге данные выводятся на экран другим объектом). При работе с объектом его адрес всегда в ebp и пользуешся его данными всегда mov eax,[ebp+смещение], вызываеш его функции call dword[ebp+смещение], вызванная функция так же пользуется данными из объекта по тому же ebp. Если хочеш воспользоваться другим объектом, то соответственно записываеш его адрес в ebp и смотриш где у него функции, данные и пользуешся ими. У меня постоянно при выводе на экран выводимый объект общается с объектом экрана. |
Автор: | iz56 [ 31 июл 2012, 17:15 ] |
Заголовок сообщения: | Re: Создание объектов |
Отражает ли как-нибудь объектная модель параллельный код. Если нужно программисту часть кода выполнить в отдельной нити ,например. (В конце-концов любая ОС - это сервис для прикладного программирования.) |
Автор: | Станислав [ 01 авг 2012, 03:28 ] |
Заголовок сообщения: | Re: Создание объектов |
iz56 писал(а): Отражает ли как-нибудь объектная модель параллельный код. Если нужно программисту часть кода выполнить в отдельной нити ,например. (В конце-концов любая ОС - это сервис для прикладного программирования.) Вопрос не очень понял, если можно поподробнее. Вообще объект имеет функцию создания, которая просто записывает в данную ей память адреса функций, которые могут лежать где угодно, и данные какиенибудь, если надо то записывает его к другим объектам, чтобы они знали о нём, или эта функция создания находится в функционале другого объекта и он естественно запишет созданный объект в свою цепочку. После создания объекта с ним соответственно можно будет работать. Системные объекты создаются системой, объекты кодеки создаются модулями загруженными(кодеков, компонентов, протоколов может быть сколько угодно и они загружаются из файла), объекты устройств создаются при просмотре устройств на шинах. В начале проектировки кстати стоит начать с функции создания и перечисления его нужных данных и функций, потом написание функций. Некоторые функции вешаются на объект при вызове функции инициализации, а некоторые функции наоборот сами сделаем как функцию событий, т.е. чтобы работать с объектом вызываем его функционал когда надо и ждём от него сообщение. |
Автор: | iz56 [ 01 авг 2012, 08:17 ] |
Заголовок сообщения: | Re: Создание объектов |
Вопрос сложный во многом http://parallel.ru/vvv/ - сейчас читаю, отсюда и вопрос - чем поможет (твоя) система объектов в этом или я теперь думаю функции внутри объекта могут выполняться параллельно - как тогда это сделать - на уровне приложений или приложения только в одном потоке могут существовать. Интерес мой исключительно в том что мне как раз сейчас надо всё это продумать для своей ос - вот заинтересовался как люди делают. ещё по теме - целый раздел на сайте (по рус.) про преимущества неблокирующих алгоритмов синхронизации http://www.1024cores.net/home/in-russian/lock--wait--obstruction--atomic-free-algorithms Ещё вопрос возможно ли создавать объекты динамически во время выполнения программы. (добавлю ещё что с ООП так и не разобрался в своё время ) |
Автор: | D-S [ 01 авг 2012, 09:32 ] |
Заголовок сообщения: | Re: Создание объектов |
Алгоритмы lock-free, wait-free интересные, но достаточно нишевые и должны использоватся только там, где без них не обойтись. Они все построены вокруг использования инструкции CMPXCHG, эта инструкция очень затратная в многопроцессорной системе (т.к. должна одновременно изменить данные в кэше нескольких процессоров), для которых собственно эти алгоритмы и предназначены. Вместо выиигрыша можем получить проигрыш... |
Автор: | Станислав [ 01 авг 2012, 13:30 ] |
Заголовок сообщения: | Re: Создание объектов |
iz56 писал(а): Вопрос сложный во многом http://parallel.ru/vvv/ - сейчас читаю, отсюда и вопрос - чем поможет (твоя) система объектов в этом или я теперь думаю функции внутри объекта могут выполняться параллельно - как тогда это сделать - на уровне приложений или приложения только в одном потоке могут существовать. Интерес мой исключительно в том что мне как раз сейчас надо всё это продумать для своей ос - вот заинтересовался как люди делают. ещё по теме - целый раздел на сайте (по рус.) про преимущества неблокирующих алгоритмов синхронизации http://www.1024cores.net/home/in-russian/lock--wait--obstruction--atomic-free-algorithms Ещё вопрос возможно ли создавать объекты динамически во время выполнения программы. (добавлю ещё что с ООП так и не разобрался в своё время ) Вы говорите о выполнении одной функции одним процессором, а другой функции другим процессором с другим стеком и т.д. это вопрос из темы "как бы нам поэфективнее использовать процессоры", на самом деле не надо сильно задуряться здесь, так как сложные схемы сводят на нет весь выигрыш, есть у нас несколько процессоров то просто нужно выполнять работу одного объекта на одном процессоре, а другой будет работать на другом. Я уже писал, что все объекты устройств будут на первом процессоре, причём они не загрузят его даже на 30% при работе всех устройств с большими очередями, т.к. он только команды отдаёт, но он не должен быть занят, чтобы побыстрее послать команду, ещё он спакойно может обрабатывать сообщения от прерываний и объектные и по мелочи делать что угодно. Остальные процессоры могут выполнять объекты типо кодеков, они расшифровывают данные програмно и каждый работает со своей памятью и друг с другом не пересекается, их не нужно синхронизировать. Работа одной функции на нескольких процессорах требует синхронихации, причём там много условий по непересечению в памяти и т.д., это сложная тема(реализуется в любой системе одинаково). Вообще объекты любой тематики просто объединяют в себя все данные и функции этой темы вот и всё, выдавая готовый объект решающий любую проблему связанную с этой темой, ну и кроме этого много чего полезного. Например объект файл который знает где его инфа работает на первом процессоре может запустить объукты кодеки которыебудут каждый на свободном процессоре, почему бы и нет, это будет полюбому. Если проектируете объекты, то давайте собственно это и делать вместе, в моей системе есть ГУИ и драва (сетевухи, флешки, диски, ...). |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |