[ВХОД]

Главная | Содержание | Форум | Файлы | Поиск | Контакт
NAVIG
О форуме
Резонансные генераторы
Магнитные генераторы
Механические центробежные (вихревые) генераторы
Торсионные генераторы
Электростатические генераторы
Водородные генераторы
Ветро- и гидро- и солнечные генераторы
Струйные технологии
Торнадо и смерчи
Экономия топлива
Транспорт
Гравитация и антигравитация
Оружие
Нейтронная физика
Научные идеи, теории, предположения...
Прочие идеи (разные)
Новые технологии
Коммерческие вопросы
Барахолка
Патентный отдел
Сделай сам. Советы.
Конструкторское бюро
Помощь сайту...
Принимаю пожертвования на
Юmoney 4100135735990
Яндекс 4048 4150 3989 0880
Сберка 4006 8000 2087 6875

Денег нет,
...но вы держитесь там.
Удачи вам! И здоровья!


мобильная версия
Печатать страницу
Форум - Новые технологии - Сделай сам - Операционная система Linux. Вопросы без ответа. - Стр.9
<][ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 ][>
Post:#471944 Date:06.06.2015 (00:41) ...
21 августа 1991 года закончился августовский путч в СССР-
24 августа 1991 в центре Киева. Люди приветствуют провозглашение независимости
25 августа 1991 года Линус Товальдс опубликовал ядро Linux Date: 25 Aug 91 20:57:08 GMT
Просто совпадение? Можно быть, но есть еще много других совпадений.
Главное- это одинаковая методика зомбирования адептов Линукса и Нэзалежной.
Линуксоидов в мире точно столько же сколько и укропов- около 1 %.
О чем не спросишь линуксоида- ответ : хто нескаче тотмастдай
dedivan | Post: 472643 - Date: 15.06.15(00:46)
DevilR Пост: 472637 От 15.Jun.2015 (01:29)
А насчет инлайнов в линуксе - врете вы, дедушка!
Только что посмотрел в своем ядре 4.0.5 - 5460 штук.


Это хорошо- значит грамотный. Теперь смотри что они вводят и сколько раз.
Даже сайты специальные есть для поиска в ядре линуха.
Для примера-static inline struct cgroup- один раз во всем тексте.
Это и есть правило использования инлайнов.
Все остальное делается через вызовы библиотек.

_________________
я плохого не посоветую
dedivan | Post: 472645 - Date: 15.06.15(00:57)
DevilR Пост: 472642 От 15.Jun.2015 (01:45)
Но говорить за весь линух... вы бы дали конкретный код - я бы проверил. Хоть на одноплатках, хоть на настольном компе.


Это пока на уровне идеи. Просто она возникла не на пустом месте,
а как раз в процессе разбора особенностей ядра линукса и его компиляторов.

_________________
я плохого не посоветую
dedivan | Post: 472649 - Date: 15.06.15(01:32)
DevilR Пост: 472646 От 15.Jun.2015 (02:04)
P.S. Нет компиляторов ядра. Не бывает. Компилятор (или интерпретатор) языка - это да, есть. Например gcc для c...


Тот же gcc сотни релизов и все разные. Ядро у тебя собрано одним,
а пользовательскую програмку взял готовую- собранную другим компилятором.
Вон хохоша вообще не парится- берет готовые образы.
Поэтому и не любая программа запускается на разных дистрибутивах линукса. Вроде ядро одно и то же- а скомпилили с разными ключиками
и разными версиями компиляторов.
Вот и не находят они свои библиотеки.
А отсюда вывод- програмка знает где должна быть ее библиотека. Если она там вдруг не лежит- ядро ей не подсказывает. А раскладывает библиотеки ядро по правилам своего компилятора.

Второе- допустим все нормально запустилось, программа загрузила одну из библиотек.
Наступает прерывание по таймеру и начинает работать ядро, ему допустим
понадобилась та же самая библиотека, а она вот уже готовая в памяти.
Вопрос- ядро будет загружать новый экземпляр библиотеки или воспользуется имеющимся?

_________________
я плохого не посоветую
- Правка 15.06.15(08:44) - dedivan
dedivan | Post: 472685 - Date: 15.06.15(12:33)
DevilR Пост: 472661 От 15.Jun.2015 (11:12)
Компиляторы одного класса (например gcc) не настолько уж и разные, как кажется.

До 12 года на си писали их. после на плюсах, и ты думаешь они одинаково компилируют? Как раз в части динамического связывания.
По моему вообще перпендикулярно.
Но я не специалист практик - тут я полный ноль, просто еще давно у самых истоков - вот там чего то ковырял , то что сейчас уже идеологией программирования стало.
Я гляжу ты единственный из линуксоидов понял, что я не линух хочу обидеть,
А его мамашу- потаскушку от нее все дыры. От компиляции.
Вот ты знаешь хоть один компилятор гнуса, который разработывался бы с точки зрения защиты, а не быстродействия или сокращения кода?


Можно просто смотреть версию подгружаемой библиотеки и отказываться грузить неправильную.

Да версию каку хочешь написать можно.

Интересно другое - именно фиксированное распределение вызовов по памяти.
Или что то там динамическое бывает?

_________________
я плохого не посоветую
- Правка 15.06.15(12:34) - dedivan
dedivan | Post: 472725 - Date: 15.06.15(14:26)
DevilR Пост: 472695 От 15.Jun.2015 (14:04)
Система выделяет память, настраивает таблицы вызовов


Это уроваень выше- меня интересует нижний- как компилятор выделяет адреса.

DevilR Пост: 472661 От 15.Jun.2015 (11:12)
- у каждой программы есть свое адресное пространство и своя таблица экспортируемых функций.

То есть еще на этапе компиляции идет распределение адресов.




И все. За выходы за пределы отвечает сам CPU - именно он и сигнализирует ОС о проблеме. А уже ОС решает, что с этим делать.


Ну это ты уж со зла на него наговариваешь.
Если процессор чем то занят- он делает только одно дело и не может ничего сигнализировать.

_________________
я плохого не посоветую
dedivan | Post: 472740 - Date: 15.06.15(14:51)
DevilR Пост: 472736 От 15.Jun.2015 (15:43)
Там просто все - есть таймер, который переключает контекст задач.

А вот на момент создания процесса, запускающий процесс распределяет память


Вот и я про то- что линух переключается 100 раз в секунду.
За один тик он может сделать около 10 млн операций- тут можно успеть все что хочешь сделать. и контроль идет только во время переключения,
когда может быть уже поздно.

А вот про момент создания - давай поподробнее- откудаось берет инфу куда затолкнуть процкесс и сколько ему нужно- из самого процесса?
Инфа вставлена на этапе компиляции?



_________________
я плохого не посоветую
MPR | Post: 472760 - Date: 15.06.15(17:08)
dedivan Пост: 472649 От 15.Jun.2015 (02:32)
Вопрос- ядро будет загружать новый экземпляр библиотеки или воспользуется имеющимся?

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



dedivan | Post: 472771 - Date: 15.06.15(20:47)
MPR Пост: 472760 От 15.Jun.2015 (18:08)
(кстати еще не факт что она вообще выполняется в памяти вызывающего процесса, ....



Вот уже близко подоборались.
А неуверенность оттого, что в книжках часто пишут про разные уровни абстракции. и часто их путают.
Библиотека может сидеть в физической памяти и одна, а представляться в виртуальной в нескольких экземплярах и в разных местах.
Это надо проверять- сделать инжекцию в одну из библиотек в памяти и повызывать ее из разных процессов.
Инжекцию допустим самую простую- какой то битик дергать а кто то считать будет.

_________________
я плохого не посоветую
dedivan | Post: 472774 - Date: 15.06.15(21:30)
Вот это как раз и пробовать надо. юзерскую модифицировать, а потом посмотроеть
какой ядро пользуется.
Ядерную модифицировать- смотреть какая у юзера будет.

И не путайте- динамическое связывание идет при компиляции- ось тут совсем не при чем.


_________________
я плохого не посоветую
dedivan | Post: 472778 - Date: 15.06.15(22:24)
DevilR Пост: 472776 От 15.Jun.2015 (22:57)
Ошибка в архитектуре - это интересно.


Это не ошибка, это с самого начала в проекте кроме парадного входа и запасной пожарный вход.
Ну или как решетки на окнах- и от воров не особо защищают и при пожаре погубить могут.


_________________
я плохого не посоветую
dedivan | Post: 472781 - Date: 15.06.15(22:40)
DevilR Пост: 472776 От 15.Jun.2015 (22:57)
Все вызовы библиотек явно видны - там волшебства нет.


это ты наверное свистишь или путаешь- не системные библиотеки линуха.
а сишные библиотеки.

_________________
я плохого не посоветую
dedivan | Post: 472785 - Date: 15.06.15(23:11)
Понятно, значит не понимаем друг друга.
Давай посмотрим- какую нить функцию ядра.

/*
* linux/kernel/panic.c
*
* Copyright (C) 1991, 1992 Linus Torvalds
*/

/*
* This function is used through-out the kernel (including mm and fs)
* to indicate a major problem.
*/
#include <linux/debug_locks.h>
#include <linux/interrupt.h>
#include <linux/kallsyms.h>
#include <linux/notifier.h>
#include <linux/module.h>
#include <linux/random.h>
#include <linux/reboot.h>
#include <linux/delay.h>
#include <linux/kexec.h>
#include <linux/sched.h>
#include <linux/sysrq.h>
#include <linux/init.h>
#include <linux/nmi.h>
#include <linux/dmi.h>


Все заголовки библиотек- линуксовые, выберем одну из них

#ifndef _LINUX_DELAY_H
#define _LINUX_DELAY_H

/*
* Copyright (C) 1993 Linus Torvalds
*
* Delay routines, using a pre-computed "loops_per_jiffy" value.
*/

#include <linux/kernel.h>

extern unsigned long loops_per_jiffy;

#include <asm/delay.h>


Опять все линуксовое и асм .

#ifndef _LINUX_KERNEL_H
#define _LINUX_KERNEL_H

/*
* 'kernel.h' contains some often-used function prototypes etc
*/

#ifdef __KERNEL__

#include <stdarg.h>
#include <linux/linkage.h>
#include <linux/stddef.h>
#include <linux/types.h>
#include <linux/compiler.h>
#include <linux/bitops.h>
#include <linux/log2.h>
#include <linux/typecheck.h>
#include <linux/ratelimit.h>
#include <linux/dynamic_debug.h>
#include <asm/byteorder.h>
#include <asm/bug.h>


Вот наконец появилась одна сишная библиотека.
#include <stdarg.h>
И то- это заголовки-библиотеки там дальше - и они будут линковаться к общему
коду совсем по другим правилам- не по правилам линуха а по своим внутренним
взаимосвязям , что уже прописаны в гнусе с самого начала.
Там не интересует для чего компилируетсяи программа- для линуха или винды.


_________________
я плохого не посоветую
dedivan | Post: 472789 - Date: 15.06.15(23:37)
DevilR Пост: 472787 От 16.Jun.2015 (00:21)
Какой в этом всем смысл?


Вот теперь логику включаем.
Языковые библиотеки должны размещаться в памяти по одним правилам,
а системные по своим. Системными система командует, а языковыми
она не командует, иначе простая программа не найдет их.
Это как раз и подтверждает практика, когда смена версии компилятора приводит к незапуску программ, а система не может сообщить программе куда она переместила вызовы.
То есть вызовы именно сишной библиотеки распределяет компилятор,
и они должны быть стандартными.
Вот и с чего все началось- я задал вопрос- где эти вызовы размещены
в реальной системе.
Есть подозрение, что похоже как в досе- в первом мегабайте памяти-
от нуля и до какого то значения типа вызовов прерываний доса.
только тут вместо доса - функции си.


_________________
я плохого не посоветую
dedivan | Post: 472821 - Date: 16.06.15(06:37)
DevilR Пост: 472799 От 16.Jun.2015 (01:54)
Программы то все время улучшаются.


Это сказка для бедных. Давай смотреть что в реальности. Из приведенных выше заголовков видно
Объектов нет, в основном весь код представляет из себя структуры- указатели на другие указатели.
И когда проц продерется сквозь эту паутину взаимных ссылок-
И только в самом конце реальные объекты- куски машинного исполняемого кода.
А вся таблица перекрестных ссылок - должна быть общей, каждый процесс пользуется одними и теми же заголовками,
На этапе компиляции сначала собирается эта большая таблица ссылок и компилятор вставляет в программы и модули адреса реальных ссылок на эту таблицу.
Эта таблица - как пасьянс должна сходиться. Перемещать ее врядли перемещают, это надо каждый раз вызывать компилятор, и раскладывать весь пасьянс по новой. Компилятор 2-3 часа компилирует ядро- это он не асмовые команды в машинный код транслитует- это секунды занимает - а именно раскладывает пасьянс из перекрестных ссылок.
Это собственно и есть операционная система- а куски реального кода- это всего лишь объекты языка

У Вас нет прав скачивать этот файл. Зарегистрируйтесь .
_________________
я плохого не посоветую
- Правка 16.06.15(11:17) - dedivan
dedivan | Post: 472829 - Date: 16.06.15(11:11)
DevilR Пост: 472827 От 16.Jun.2015 (11:29)
на своей рабочей машине - 57.9 секунд.


На первом пеньке 100 мгц?


_________________
я плохого не посоветую
<][ 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 ][>
У Вас нет прав отвечать в этой теме.
Форум - Новые технологии - Сделай сам - Операционная система Linux. Вопросы без ответа. - Стр 9

Главная | Содержание | Форум | Файлы | Поиск | Контакт