Автор :::SYDAR'::: задал вопрос в разделе Другие языки и технологии
Приоритеты процессов в Linux и получил лучший ответ
Ответ от Владимир Б.[гуру]
В языке программирования C, да и в ассемблере x86, число 0 является положительным.
К примеру возмем любую ячейку памяти, и любое число, вмещаемое в 1 байт, те 8бит, те допускающая 256 комбинаций (за бинарным представлением - на википедию) .
Напомню, машине абсолютно по барабану какой ток находится в ячейке. Но она гарантированно может его сравнить и удержать. Вся память (RAM) организована ввиде адресуемых ячеек, в которых храниться информация.
Ноль объявляется стартовой точкой, с него начинаем считать, тк его както надо представить (именно поэтому проблема 2000года программерами и математиками видится поразному) .
0,1,2....255.
Это позволяет представлять только положительные числа, и это самый древний способ.
Почему не загнать ноль в конец и начать считать с единицы? (1,2,3...255,0). Все можно, но тогда не сможем нормально вычитать 1 из 1. Сложно будет.
Но срочно потребовалось добавить возможность посчета компьютером и отрицательных значений.
Для представления отрицательных значений, для числа опять таки вписывающегося в один байт, делается хитрость.
Диапазон сужается до 128 значений на плюс (0...127),оставшиеся 128 отводятся минус (-1...-128). Стартуем с нуля как и выше.
0,1,2,3....127,-128,-127,-126....-1
Тоесть идем от нуля до 127, а затем начинается обратный отсчет минусовых значений, с предельного до минимального (-1).
Почему именно так?
Для того чтобы можно было из 0(ноля) вычесть скажем 10 и получить -10. Тоесть пойти назад.
К томуже если организовать отрицательные числа подругому, то будет или сложно считать, или не будет совместимости с более старым, только-положительным типом представления чисел (описан выше) .
Вот так и работает, начиная с 8088 и кончая современными i7/Phenom 2.
Ячейки увеличились. С 8бит (1 байта) , до 16, 32, 64х и даже 128 битных чисел. Но принцип остался одним. Только хранимые диапазоны возросли.
Лирическое отступление 🙂
Да, именно поэтому в играх (и в реальных электронных банках) , если шагнуть за ноль, стать беднее ноля, то на голову обрушится МАКСИМАЛЬНО возможно хранимая сумма.
И наоборот тоже работает, вмиг Билл положив один доллар к 127 миллиардам становится бомжом с отрицательными 128 миллионами.
Или же сумма выходит нормальная, отрицательная (-1). Это зависит только от того как проинструктировал программист вывод программой значений. Пометил ли он число как знаковое или как беззнаковое.
И знает ли он о пределах этой ячейки, не переполняет ли он ее.
Надеюсь с нулем в качестве основы ясно. Вернемся к баранам.
ИМХО то что за основу взят не только-положительный способ представления скорее удобство для человека, чем для машины (ей все-равно) .
А удобство в том, что можно прописать некий "нормальный" приоритет, все что по эту сторону реки можно подтормаживать (и это может делать и не root)
А по ту сторону (отрицательные) более критичные для системы, менять их может только root, да и вписывается это в концепцию разграничения прав в UNIX системе.
Судите сами:
1) системные компоненты (в /bin, /lib, /sbin) и userland, некритичные (в /usr/bin, /usr/lib, /usr/sbin)
2) рут с папкой в /root и остальные с папками в /home
3) начиная с процессоров 386(386 protected mode), разграничение инструкций на привилегированные (т. н. кольцо 0) и непривилегированные (кольца 1,2), Unix насколько знаю очень давно имел этот концепт, и он отлично вписался. Да и винда этим с winnt пользуется, все антивири работают в нулевом кольце, как и вири/руткиты тоже)) )
Если говорить просто, можно легко переделать и в 0-39, но это будет повендячному) А видеть приоритет твоих програм (как простой пользователь) запущенных в ноле (0) намного логичней чем, откуда ни возьмись, в двадцатке. Сразу возникнет вопрос, а почему я немогу сдвинуть в 19? А почему не в ноль, давай в ноль)
Это уже винда будет. Система-нипель.
охринеть как всё сложно однако, +100 Shinobi TeNo за объяснение ))
кстати поправочка: не от -19 до 20, а от - 20 до 20 )) у меня так 😉
Лагает The Long Dark FPS если врубить ультра около 45, что делать? Графикой игра не блещет
убери ультра и не будь графистом
андрей болдырев
(841)
есть более
подробнее...
Объясните пожалуйста кратко и тезисно, в чём различия между ОС windows, unix и linux?
А вас что в википедии забанили?
подробнее...
Что такое "зонтичные патенты"? Когда появился этот термин?
Американские "патентные тролли" НИЧЕГО общего с "зонтичными патентами- а ля рус" не имеют.
подробнее...
Как зделать из образа iso загрузочную флешку.
Сделать загрузочную флешку из ISO-образа нам поможет кроссплатформенная программа UNetBootin,
подробнее...
как пользоваться диском аварийного восстановления в касперском? создал, а применить не могу.
Загрузка компьютера с помощью диска аварийного восстановления
Если в результате вирусной атаки
подробнее...
что такое чипсет
такая квадратнетькая штучка на мамке размером с
подробнее...
Правда ли, что один поток выполняется на одном ядре процессора? Или он может выполняться ядрами параллельно?
по-моему один поток может выполняться параллельно на нескольких ядрах-хотя могу и
подробнее...
Как установить Windows c BIOS ASUS UEFI bios utility?
bios utility, это программа прошивки BIOS
Break®
Искусственный Интеллект
подробнее...
установка Windows 7 на ASUS X550C c предусмотренной Windows 8
у тебя юефи, выключи заводские настройки от неё и всё полетит
вкладка 3тья с права вроде
подробнее...