Новые книги

Эта книга о том, как продвигать большие сложные проекты. Здесь рассмотрено SEO в самом широком понимании, включая не только информационный поиск, но также PR, маркетинг и работу с контентом вообще. Подробно описываются технологии и подходы, которые непопулярны на рынке. Она о том, как продвигать сайт командой, провести исследование, разработать стратегию и внедрить разработанные технологии в работу.

Книга будет интересна настоящим и будущим владельцам или руководителям больших интернет-магазинов и порталов, руководителям отделов продвижения, специалистам, а также всем, кто интересуется SEO.
Вниманию читателя предлагается двадцать увлекательных интервью Иосифа Гольмана с российскими и зарубежными мастерами рекламы: Олегом Ощепковым, Эркеном Кагаровым, Петером Небелем, Владом Васюхиным, Ириной Морозовой, Алексеем Голиковым и другими. В суждениях, примерах из жизни, биографиях известных в нашей стране профессионалов как в зеркале отражаются не только история, но и состояние, болевые точки, потенциал и перспективы современной российской рекламы.

Эта книга будет полезна всем, кто интересуется рекламой, кто ее использует и кто на ней зарабатывает.

11.6 УПРАЖНЕНИЯ

 

11.6 УПРАЖНЕНИЯ

1. Что произойдет в том случае, если в программе debug будет отсутствовать вызов функции wait (Рисунок 11.3)? (Намек: возможны два исхода.)

2. С помощью функции ptrace отладчик считывает данные из пространства трассируемого процесса по одному слову за одну операцию. Какие изменения следует произвести в ядре операционной системы для того, чтобы увеличить количество считываемых слов? Какие изменения при этом необходимо сделать в самой функции ptrace?

3. Расширьте область действия функции ptrace так, чтобы в качестве параметра pid можно было указывать идентификатор процесса, не являющегося потомком текущего процесса. Подумайте над вопросами, связанными с защитой информации: При каких обстоятельствах процессу может быть позволено читать данные из адресного пространства другого, произвольного процесса? При каких обстоятельствах разрешается вести запись в адресное пространство другого процесса?

4. Организуйте из функций работы с сообщениями библиотеку пользовательского уровня с использованием обычных файлов, поименованных каналов и элементов блокировки. Создавая очередь сообщений, откройте управляющий файл для записи в него информации о состоянии очереди; защитите файл с помощью средств захвата файлов и других удобных для вас механизмов. Посылая сообщение данного типа, создавайте поименованный канал для всех сообщений этого типа, если такого канала еще не было, и передавайте сообщение через него (с подсчетом переданных байт). Управляющий файл должен соотносить тип сообщения с именем поименованного канала. При чтении сообщений управляющий файл направляет процесс к соответствующему поименованному каналу. Сравните эту схему с механизмом, описанным в настоящей главе, по эффективности, сложности реализации и функциональным возможностям.

5. Какие действия пытается выполнить программа, представленная на Рисунке 11.22?

*6. Напишите программу, которая подключала бы область разделяемой памяти слишком близко к вершине стека задачи и позволяла бы стеку при увеличении пересекать границу разделяемой области. В какой момент произойдет фатальная ошибка памяти?

7. Используйте в программе, представленной на Рисунке 11.14, флаг IPC_NOWAIT, реализуя условный тип семафора. Продемонстрируйте, как за счет этого можно избежать возникновения взаимных блокировок.

8. Покажите, как операции над семафорами типа P и V реализуются при работе с поименованными каналами. Как бы вы реализовали операцию P условного типа?

9. Составьте программы захвата ресурсов, использующие (а) поименованные каналы, (б) системные функции creat и unlink, (в) функции обмена сообщениями. Проведите сравнительный анализ их эффективности.

10. На практических примерах работы с поименованными каналами сравните эффективность использования функций обмена сообщениями, с одной стороны, с функциями read и write, с другой.

11. Сравните на конкретных программах скорость передачи данных при работе с разделяемой памятью и при использовании механизма обмена сообщениями. Программы, использующие разделяемую память, для синхронизации завершения операций чтения-записи должны опираться на семафоры.

   
     #include <sys/types.h>                                     
     #include <sys/ipc.h>                                       
     #include <sys/msg.h>                                       
     #define ALLTYPES 0                                         
                                                                
     main()                                                     
     {                                                          
        struct msgform                                          
        {                                                       
            long mtype;                                         
            char mtext[1024];                                   
        } msg;                                                  
        register unsigned int id;                               
                                                                
        for (id = 0; ; id++)                                    
            while (msgrcv(id,&msg,1024,ALLTYPES,IPC_NOWAIT) > 0)
                  ;                                             
     }                                                          

Рисунок 11.22

Предыдущая глава || Оглавление