Test and Set Lock

Тема в разделе "WASM.OS.DEVEL", создана пользователем Hell_Knight, 9 сен 2010.

  1. Hell_Knight

    Hell_Knight New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    51
    почитывал я Таненбаума (Современные операционные системы) об операционных системах и наткунлся на такую вот штуку, как tsl и lock (раздел про многопоточность)
    решил же я потестировать эту инструкцию, но тут выяснилось что компилятор(fasm) не знает такой инструкции...
    я конечно понимаю, что можно сделать вместо tsl, xchg что будет впринципе почти одно и тоже...
    из принципа интересно, на каком компиляторе эта инструкция будет работать ?
     
  2. Satsura

    Satsura S4(uR4 __r00tw0rm__

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    374
    Адрес:
    Узбекистон, бляать!!11 :D
    >>почитывал я Таненбаума (Современные операционные системы) об операционных системах и наткунлся на такую вот штуку, как tsl и lock (раздел про многопоточность)
    решил же я потестировать эту инструкцию, но тут выяснилось что компилятор(fasm) не знает такой инструкции...
    я конечно понимаю, что можно сделать вместо tsl, xchg что будет впринципе почти одно и тоже...
    из принципа интересно, на каком компиляторе эта инструкция будет работать ?

    - MASM ?)) Или тот же FASM (благо сорцы открытые) добавьте инструкцию tsl с параметрами в define's list ;)
     
  3. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Код инструкции в студию... Может, имелась в виду CMPXCHG?
     
  4. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Phantom_84
    Там скорее всего речь вообще идёт об абстрактной инструкции с указанным эффектом, а не об инструкции конкретного процессора.
     
  5. Satsura

    Satsura S4(uR4 __r00tw0rm__

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    374
    Адрес:
    Узбекистон, бляать!!11 :D
    >>Там скорее всего речь вообще идёт об абстрактной инструкции с указанным эффектом, а не об инструкции конкретного процессора.
    - Ага, только сейчас скачал эту книгу , посмотрел. Так вот единственное что он может сделать добавить tsl инструкцию[мнемокод] с параметрами в дэфайн лист инструкций FASM.
     
  6. Medstrax

    Medstrax Забанен

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    673
    Бред
     
  7. Hell_Knight

    Hell_Knight New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2009
    Сообщения:
    51
    у этой инструкции идея такова:
    есть мол, некоторая перменная lock
    если lock принимает значение в 1, то блокируется шина памяти для других процессоров
    и выполняющийся процесс может работать в своей критической области
    TSL считывает инструкцию в регистр, и устанавливает значение lock в 1 (тобишь изолируемся от внешнего мира ;) )
    далее мы проверяем что было в lock (нас уже никто не прервет, всё заблокировано)
    если 1, то до нас уже заблокировали... и уходим
    если 0, то выполняем всё что нужно и возвращаем назад переменной lock значение 0

    примерный код:
    Код (Text):
    1. enter_region:
    2.    TSL   REGISTER, LOCK   ; копирование LOCK в регистр с присвоением в 1
    3.    CMP  REGISTER, 0
    4.    JNE   enter_region
    5.  
    6.    ; some code...
    7.  
    8.    RET
    9.    
    10.    
    11. leave_region:      ; выход из критической области
    12.    MOV LOCK, 0
    13.    RET
     
  8. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    В x86 аналог TSL - XCHG