На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Коротко о разделе:
Здесь разрешается создавать темы, относящиеся к любому языку программирования, для которого не существует раздела на форуме (например, Lisp, Tcl/Tk, FORTRAN и т.д.). Если раздел для нужного Вам языка есть, большая просьба создавать тему в нем.
Вопросы, связанные с JScript, Perl, PHP обсуждаются в разделе WWW Masters.

Обратите внимание:
1. Прежде чем задать вопрос, воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали.
2. Если Ваш вопрос связан с конкретным языком программирования, обязательно укажите название языка в имени темы.
3. Постарайтесь давать темам информативные названия. Темы с названиями типа "Помогите, горю" будут удалены.
4. Помните, чем грамотней будет задан Ваш вопрос, тем больше будет у Вас шансов получить на него ответ. Как правильно задавать вопросы
5. Ипользуйте тег [ code ] ...текст программы... [ /code ] для выделения текста программы.

Просьбы выполнить какую-либо работу за автора в этом разделе не обсуждаются. Темы с подобными просьбами будут перемещены или удалены. Для заказов у нас существуют специальные разделы: Разовые заказы и подработка, ПОМОЩЬ СТУДЕНТАМ.

Если кто не понял (а такие есть) — чтобы за вас решали ваши задачки, идите на другие ресурсы.

Полезные ссылки:
Есть. ;)
Наши Исходники | GPSS (en), GPSS (ru) (!) | Common Lisp | Tcl/Tk | Haskell | Lua
Модераторы: B.V.
Страницы: (3) 1 [2] 3  все  ( Перейти к последнему сообщению )  
> разработка отечественной революционной ОС , идея создания революционной ОС в украине
    shm, да никто не спорит с этим, всё нормально
    Сообщение отредактировано: Ahilles -
      В линуксе, где используемый компилятор умеет работать с несколькими разными областями памяти, регистры в области ввода-вывода тоже доступны таким способом.
        amk, ты вообще понимаешь что такое физическая и виртуальная память? (я без трололо спрашиваю)
          А при чем тут это? Когда переменная отмаплена в нормальную память, используются всем известный доступ в память, виртуальная память там используется прозрачно. А когда в область регистров ввода/вывода, используются команды in/out и виртуальная память оказывается ни при чем (хотя виртуализация регистров IO может использоваться, если платформа поддерживает)
            я про этот пост
            Цитата amk @
            В линуксе, где используемый компилятор умеет работать с несколькими разными областями памяти, регистры в области ввода-вывода тоже доступны таким способом.

            суть в том память она и в африке память и без разницы какой компилятор используется. если регистры из физической памяти отмаплены на виртуальную, то проблем вообще никаких нет
              Цитата amk @
              Когда переменная отмаплена в нормальную память, используются всем известный доступ в память, виртуальная память там используется прозрачно. А когда в область регистров ввода/вывода, используются команды in/out и виртуальная память оказывается ни при чем (хотя виртуализация регистров IO может использоваться, если платформа поддерживает)

              Порты ввода/вывода на память не отображаются.
              Есть порты ввода/вывода, с ними работа осуществляется командами in/out, их 65536 и в память они не отображаются.
              Вообще. Этого архитектура не поддерживает. Это как отдельное адресное пространство, абсолютно независимое.

              А есть Memory Mapped I/O - регистры устройств, отображённые в память.
              С ними работа происходит как с обычными переменными, простыми операциями записи/чтения.

              Какой из механизмов использует конкретное устройство зависит от того, как оно сделано.

              И разницы между разными ОС и разными компиляторами нет - это архитектурная особенность, под Windows Memory Mapped I/O из драйвера точно так же использовать можна.
                В gcc (для архитектуры ix86 и подобных) есть две отдельные логические области памяти.
                Одна - обычная память, про которую ты говоришь, в которой хранятся программа и данные, и отображаются некоторые внешние устройства. Переменные по умолчанию размещаются в ней.
                Вторая - область устройств ввода вывода, памятью естественно не являющаяся, но позволяющая писать программу так, будто регистры тоже находятся в памяти. Для помещения "переменной" в эту область надо указать специальный атрибут, и обычно адрес. Аналог псевдомассива port[] в паскале или встроенных функций для работы с портами IO.

                Если в какой-то архитектуре есть отдельный набор команд для работы с еще какой-нибудь областью памяти то для нее будет сконфигурирована еще одна логическая область памяти.
                  Цитата amk @
                  Вторая - область устройств ввода вывода, памятью естественно не являющаяся, но позволяющая писать программу так, будто регистры тоже находятся в памяти. Для помещения "переменной" в эту область надо указать специальный атрибут, и обычно адрес. Аналог псевдомассива port[] в паскале или встроенных функций для работы с портами IO.

                  если область физической памяти отвечающая за регистры устройств, не отображена на виртуалную память, то ты хоть тресни, ты никак не сможешь получить к ней доступ (ну разве что в ring0 вручную подредактировать PDE/PTE и отобразить нужную физическую страницу на требуемую виртуальную)
                    В системе команд i86 есть команды in/out, которые и используются для доступа к области ввода/вывода. И никакого отображения на память не нужно. Так что с этим проблем не возникает.
                      Цитата Ahilles @
                      если область физической памяти отвечающая за регистры устройств, не отображена на виртуалную память, то ты хоть тресни, ты никак не сможешь получить к ней доступ

                      Если под виртуальной памятью подразумевается адресное пространство проца, то не им единым. Пространство ввода/вывода лежит совершенно отдельно и много устройств (в основном более древней архитектуры - типа таймера или контроллера прерываний) отображаются именно туда, и в адресном пространстве процессора их нету. Работа с такими устройствами возможна только через операции in/out (типа запись в порты, но на самом деле эти порты - и есть адрес, смещение по памяти в этом пространстве ввода-вывода), а прямыми операциями записи/чтения из памяти по адресу, как это делается почти со всеми современными девайсами, к таким устройствами не доступишься.
                      Естественно, сейчас я подразумеваю x86 архитектуру.
                      Сообщение отредактировано: Хрен -
                        Есть ли хотя бы видение зачем разрабатываете эту ОС? Чем она будет выгодно отличаться от существующих? Какая у неё область применения?

                        А то у вас получится с напарником персональное Сколково, только вместо госбюджета/инвестфондов/etc будете проедать свои кровные... Вот будет ОС, вот будет фирма, вот на ней будем юзать эту ОС... А сейчас-то что у вас есть? Какой экспириенс уже был? Нет-нет, я не отговариваю - просто задаю вопросы из (возможно, неправильного) жизненного опыта.
                          Mr.Delphist
                          Я боюсь, наши герои совсем разочаровались в нас - никто на проект бежать не хочет, никто не понимает, что это будет прорыв....
                          Так что скорее всего эти вопросы уйдут вникуда 8)
                            Цитата amk @
                            В системе команд i86 есть команды in/out, которые и используются для доступа к области ввода/вывода. И никакого отображения на память не нужно. Так что с этим проблем не возникает.

                            так воти надо говорить in/out, а не пудрить мозг фигнёй типа
                            Цитата amk @

                            Вторая - область устройств ввода вывода, памятью естественно не являющаяся, но позволяющая писать программу так, будто регистры тоже находятся в памяти. Для помещения "переменной" в эту область надо указать специальный атрибут, и обычно адрес. Аналог псевдомассива port[] в паскале или встроенных функций для работы с портами IO.

                            по сути это просто миникласс-обёртка вокруг команд in/out. и тут нет ничего особенного
                              Цитата amk @
                              Вторая - область устройств ввода вывода, памятью естественно не являющаяся, но позволяющая писать программу так, будто регистры тоже находятся в памяти. Для помещения "переменной" в эту область надо указать специальный атрибут, и обычно адрес. Аналог псевдомассива port[] в паскале или встроенных функций для работы с портами IO.

                              Можна кусок кода, или хотя бы название атрибута?
                              Первый раз про такое слышу и в документации нет.
                              Есть io.h с функциями inb/w/d outb/w/d, но это ведь совсем не то.

                              Добавлено
                              Цитата Ahilles @
                              по сути это просто миникласс-обёртка вокруг команд in/out. и тут нет ничего особенного

                              Не может быть в чистом С никаких неявных обёрток, и если честно, я вообще сомневаюсь что то о чём говорит amk в природе gcc существует.
                                Цитата Mr.Delphist @
                                Есть ли хотя бы видение зачем разрабатываете эту ОС? Чем она будет выгодно отличаться от существующих? Какая у неё область применения?

                                это уже никому не интересно. :whistle: а вот развести срачик на тему создания своей ОС ой как интересно и вкусно, ням, ням...
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) 1 [2] 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0428 ]   [ 14 queries used ]   [ Generated: 21.05.24, 12:19 GMT ]