[ВХОД]

Главная | Содержание | Форум | Флуд | Файлы | Поиск | Контакт
NAVIG
О форуме
Резонансные генераторы
Магнитные генераторы
Механические центробежные (вихревые) генераторы
Торсионные генераторы
Электростатические генераторы
Водородные генераторы
Ветро- и гидро- и солнечные генераторы
Струйные технологии
Торнадо и смерчи
Экономия топлива
Транспорт
Гравитация и антигравитация
Оружие
Нейтронная физика
Научные идеи, теории, предположения...
Прочие идеи (разные)
Новые технологии
Коммерческие вопросы
Барахолка
Патентный отдел
Сделай сам. Советы.
Конструкторское бюро
мобильная версия
Печатать страницу
Поделиться...

Яндекс.Директ
Форум - Новые технологии - Сделай сам - Операционная система 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 ][>
Модератор: dedivan
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 ][>
У Вас нет прав отвечать в этой теме.
Форум - Новые технологии - Сделай сам - Операционная система Linux. Вопросы без ответа. - Стр 9

Главная | Содержание | Форум | Флуд | Файлы | Поиск | Контакт
Valid XHTML 1.0 Transitional Valid XHTML 1.0 Transitional
Генерация страницы: 0.014 сек