Новые книги

Ошибки совершают все, даже ведущие компании. То, как сотрудники исправляют эти ошибки, — вот что отличает лидеров сервиса от всех остальных. Компенсация — это больше, чем извинения. Компенсировать — значит дать клиенту что-нибудь ценное и тем самым показать, что он для вас действительно важен. Довольные и лояльные клиенты не только останутся с вами, но и будут рекламировать вашу продукцию всем вокруг. В этой книге Джон Шоул — признанный гуру в области сервиса — дает конкретные рекомендации и приводит примеры того, как создать в компании систему компенсации, нацеленную на формирование лояльности клиентов.

Книга предназначена для специалистов по продажам, сотрудников отделов по обслуживанию клиентов и всем, кто стремится оказывать качественный сервис.
Впервые о вредном влиянии компьютеров на здоровье заговорили почти одновременно с их появлением. Что и понятно: компьютеры того времени очень сложно назвать безвредными, особенно по сравнению с современными моделями Однако и сейчас даже безопасные на первый взгляд компьютеры негативно действуют на наше здоровье.

В этой книге рассмотрено возможное влияние компьютера на организм человека. Описывается, как правильно установить компьютер и организовать рабочее место, чтобы максимально «разгрузить» позвоночник и не напрягать кисти рук; как работать в Интернете, чтобы избежать проблем с нервной системой; как играть в компьютерные игры, чтобы не пострадала психика. Отдельно рассказывается о том, как компьютер влияет на здоровье детей и беременных. Кроме того, в книге описаны полезные программы, призванные сохранить наше здоровье (их демоверсии вы можете найти на прилагаемом компакт–диске).

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

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

5.3 WRIТЕ

 

5.3 WRIТЕ

Синтаксис вызова системной функции write (писать):

   number = write(fd,buffer,count);

где переменные fd, buffer, count и number имеют тот же смысл, что и для вызова системной функции read. Алгоритм записи в обычный файл похож на алгоритм чтения из обычного файла. Однако, если в файле отсутствует блок, соответствующий смещению в байтах до места, куда должна производиться запись, ядро выделяет блок, используя алгоритм alloc, и присваивает ему номер в соответствии с точным указанием места в таблице содержимого индекса. Если смещение в байтах совпадает со смещением для блока косвенной адресации, ядру, возможно, придется выделить несколько блоков для использования их в качестве блоков косвенной адресации и информационных блоков. Индекс блокируется на все время выполнения функции write, так как ядро может изменить индекс, выделяя новые блоки; разрешение другим процессам обращаться к файлу может разрушить индекс, если несколько процессов выделяют блоки одновременно, используя одни и те же значения смещений. Когда запись завершается, ядро корректирует размер файла в индексе, если файл увеличился в размере.


  #include <fcntl.h>                                         
     main()                                                     
     {                                                          
         int fd1,fd2;                                           
         char buf1[512],buf2[512];                              
                                                                
         fd1 = open("/etc/passwd",O_RDONLY);                    
         fd2 = open("/etc/passwd",O_RDONLY);                   |
         read(fd1,buf1,sizeof(buf1));                           
         read(fd2,buf2,sizeof(buf2));                          |
     }                                                         

Рисунок 5.9. Чтение из файла с использованием двух дескрипторов

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

Так же, как в алгоритме read, ядро входит в цикл, записывая на диск по одному блоку на каждой итерации. При этом на каждой итерации ядро определяет, будет ли производиться запись целого блока или только его части. Если записывается только часть блока, ядро в первую очередь считывает блок с диска для того, чтобы не затереть те части, которые остались без изменений, а если записывается целый блок, ядру не нужно читать весь блок, так как в любом случае оно затрет предыдущее содержимое блока. Запись осуществляется поблочно, однако ядро использует отложенную запись (раздел 3.4) данных на диск, запоминая их в кеше на случай, если они понадобятся вскоре другому процессу для чтения или записи, а также для того, чтобы избежать лишних обращений к диску. Отложенная запись, вероятно, наиболее эффективна для каналов, так как другой процесс читает канал и удаляет из него данные (раздел 5.12). Но даже для обычных файлов отложенная запись эффективна, если файл создается временно и вскоре будет прочитан. Например, многие программы, такие как редакторы и электронная почта, создают временные файлы в каталоге "/tmp" и быстро удаляют их. Использование отложенной записи может сократить количество обращений к диску для записи во временные файлы.

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