↑↑↓↓←→←→ⒷⒶ Войти !bnw Сегодня Клубы
Оказывается, инженеры AMD64 подложили большую свинью быстрым песочницам и эмуляторам в юзерспейсе, запретив сегментацию даже в x86 программах. В нормальной x86 OS можно запрограммировать LDT как больше нравится, загрузить селекторы в сегментные регистры и, таким образом, получить эмулируемое окружение, например, Xbox или Linux, и даже долбаный fork(), от которого всё никак не откажутся в пользу pthread_create() и posix_spawn(), вполне реализуем без глюков (как в Cygwin), так как внутри эмулируемого окружения расположение нулевого смещения можно выбрать так, чтобы невыгружаемые страницы не занимали место, на котором в форкаемом процессе было что–то другое. В эмуляторе Xbox LDT используется, так как форматы fs:[...] на Windows и Xbox отличаются. А ещё есть программы, которые для противодействия отладке работают на изменённых селекторах. И всё это шмяк — и не работает. В принципе нельзя сделать, чтоб работало как раньше. Только fs и gs можно программировать. Единственное решение в юзерспейсе — патчить код на лету, как это делает vx86. А ещё узнал, что для 64битной Windows нет coLinux.
Рекомендовали: @o01eg @goren @lockie
#BN2E23 / @octagram / 4506 дней назад

@matimatik Даже Лисперы отрекаются от call/cc: http://okmij.org/ftp/continuations/against-callcc.html > This generality or perhaps the hypnotism of `entering a room once, and yet leaving it twice', or the ease with which call/cc lets us write incomprehensible code resisting local reasoning have made call/cc a cult symbol, something that every cool implementer must aspire to. Где должны быть потоки, пусть будут потоки. Где должны быть процессы, пусть posix_spawn() будет вместо fork()/exec(). Всё равно ведь не на всех устройствах MMU есть. Не нравится тем, что в форкнутом процессе происходит хрен знает что. В современном приложении типа Mozilla Firefox или Open Office открыты сетевые дескрипторы, базы данных могут читаться как с сети, так и из файлов, и, помимо потока, делающего fork(), есть другие потоки, возможно, удерживающие мьютексы и ждущие condition variables. Большинство из перечисленного предполагает эксклюзивный доступ. Два соединения с БД MySQL по одному сокету не будут работать. Дочерний процесс, порождённый fork(), подобен пассажирам самолёта из «Лангольеров» Стивена Кинга. Всё с виду такое же, но ничем нельзя воспользоваться. Лучшее, что они могут сделать после fork() — это забрать в свой самолёт небольшое количество шмоток (например, переменные среды из памяти родительского процесса) и улететь в exec(). Не нравится тем, что Wine смог окружение Windows перенести на Linux, а окружение Linux на Windows нормально так и не перенесли. Позавчера и вчера я изучал устройство Wine, потом устройство Cygwin.
#BN2E23/5DP / @octagram --> #BN2E23/4W1 / 4506 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.