Статус нашего сайта: |
ICQ Information Center |
ICQ SHOP 5-значные 6-значные 7-значные 8-значные 9-значные Rippers List ОПЛАТА СТАТЬИ СЕКРЕТЫ HELP CENTER OWNED LIST РОЗЫСК!New! ICQ РЕЛИЗЫ Протоколы ICQ LOL ;-) Настройка компьютера Аватарки Смайлики СОФТ Mail Checkers Bruteforces ICQTeam Soft 8thWonder Soft Other Progs ICQ Patches Miranda ICQ ФорумАрхив! ВАШ АККАУНТ ICQ LiveJournal
РекламаНаш канал:irc.icqinfo.ru |
Таненбаум Э.- Архитектура компьютера. стр.39536. В программе, показанной в листинге 6.1, имеет место фатальная гонка, так как два программных потока бесконтрольно обращаются к общим переменным. При этом не задействуются ни семафоры, ни какие-либо другие методики взаимного исключения. Запустите эту программу, и вы увидите, что через некоторое время она зависнет. Если она все же не зависнет, попробуйте сделать код более уязвимым, разместив между операторами корректировки значений m. in и т.out и операторами их проверки какие-нибудь вычисления. Какой объем вычислений нужно ввести в эту программу, чтобы она зависала, скажем, раз в час? 37. Напишите программу для UNIX или Windows ХР, которая на входе получает имя каталога. Программа должна печатать список файлов этого каталога, каждый файл на отдельной строке, а после имени файла — его размер. Имена файлов должны располагаться в том порядке, в котором они располагаются в каталоге. Неиспользованные слоты в каталоги должны выводиться с пометкой (не использован). Глава 7 Уровень ассемблера В главах 4, 5 и 6 мы обсуждали три уровня, которые можно встретить в архитектуре большинства современных компьютеров. В этой главе речь пойдет о еще одном уровне, который также присутствует в архитектуре практически всех современных машин. Это — уровень ассемблера. Этот уровень существенно отличается от трех предыдущих, поскольку он реализуется путем трансляции, а не интерпретации. Для перевода пользовательских программ с одного языка программирования на другой разработаны специальные программы, которые называются трансляторами. Язык, на котором изначально была написана программа, называется входным, или исходным, языком, а язык, на который она транслируется, — выходным, или целевым. И входной, и выходной языки определяют содержание уровней иерархии. Если имеется процессор, который может выполнять программы, написанные на входном языке, то нет необходимости транслировать исходную программу на другой язык. Трансляция требуется в том случае, если есть процессор (реализованный ап-паратно или программно) для выходного языка, но нет процессора для входного языка. Если трансляция выполнена правильно, то оттранслированная программа будет давать точно такие же результаты, что и исходная (если бы существовал подходящий для нее процессор). Следовательно, имеется возможность организовать новый уровень, который сначала будет транслировать программы, написанные для выходного уровня, а затем сам их выполнять. Важно понимать разницу между трансляцией и интерпретацией1. При трансляции исходная программа на входном языке сразу не выполняется. Сначала она преобразуется в эквивалентную программу, так называемую объектную, или исполняемую двоичную, программу, которая выполняется только после завершения трансляции. То есть при трансляции нужно пройти два шага: 1. Создание эквивалентной программы на выходном языке. 2. Выполнение полученной программы. Эти два шага выполняются не одновременно. Второй шаг начинается только после завершения первого. В интерпретации есть только один шаг: выполнение исходной программы. Никакой эквивалентной программы порождать не нужно, хотя иногда для упрощения интерпретации исходная программа преобразуется в промежуточную форму (например, в ^уа-код). |