Новые книги

У большинства руководителей отсутствует представление о бизнес-инструментах и системах, за счет которых создается дополнительная ценность для клиентов, увеличивается качество обслуживания, растут продажи, повышается исполнительская дисциплина. Основная задача этой книги – сформировать понимание этих систем и бизнес-инструментов.

В этой книге рассказывается о том, за счет каких инструментов достигается рост продаж и как не допустить фатальных ошибок при внедрении CRM-системы.

Как не растянуть сроки внедрения на годы и бюджет – на миллионы рублей? Как выбрать лучшее программное решение под задачи вашего бизнеса? Автор подробно описывает пошаговый план автоматизации и стандартизации управления отношениями с клиентами.
GNU Emacs is the most popular and widespread of the Emacs family of editors. It is also the most powerful and flexible. Unlike all other text editors, GNU Emacs is a complete working environment—you can stay within Emacs all day without leaving.

, 3rd Edition tells readers how to get started with the GNU Emacs editor. It is a thorough guide that will also "grow" with you: as you become more proficient, this book will help you learn how to use Emacs more effectively. It takes you from basic Emacs usage (simple text editing) to moderately complicated customization and programming.The third edition of

describes Emacs 21.3 from the ground up, including new user interface features such as an icon-based toolbar and an interactive interface to Emacs customization. A new chapter details how to install and run Emacs on Mac OS X, Windows, and Linux, including tips for using Emacs effectively on those platforms.

, third edition, covers:

Learning GNU Emacs

Learning GNU Emacs

Learning GNU Emacs

• How to edit files with Emacs

• Using the operating system shell through Emacs

• How to use multiple buffers, windows, and frames

• Customizing Emacs interactively and through startup files

• Writing macros to circumvent repetitious tasks

• Emacs as a programming environment for Java, C++, and Perl, among others

• Using Emacs as an integrated development environment (IDE)

• Integrating Emacs with CVS, Subversion and other change control systems for projects with multiple developers

• Writing HTML, XHTML, and XML with Emacs

• The basics of Emacs Lisp

The book is aimed at new Emacs users, whether or not they are programmers. Also useful for readers switching from other Emacs implementations to GNU Emacs.

8.5 УПРАЖНЕНИЯ

 

8.5 УПРАЖНЕНИЯ

  1. При переводе процессов в состояние приостанова ядро назначает процессу, ожидающему снятия блокировки с индекса, более высокий приоритет по сравнению с процессом, ожидающим освобождения буфера. Точно так же, процессы, ожидающие ввода с терминала, получают более высокий приоритет по сравнению с процессами, ожидающими возможности производить вывод на терминал. Объясните причины такого поведения ядра.
  2. * В алгоритме обработки прерываний по таймеру предусмотрен пересчет приоритетов и перезапуск процессов на выполнение с интервалом в 1 секунду. Придумайте алгоритм, в котором интервал перезапуска динамически меняется в зависимости от степени загрузки системы. Перевесит ли выигрыш усилия по усложнению алгоритма?
  3. В шестой редакции системы UNIX для расчета продолжительности ИЦП текущим процессом используется следующая формула:
        decay(ИЦП) = max (пороговый приоритет, ИЦП-10);

    а в седьмой редакции:

        decay(ИЦП) = .8 * ИЦП;


    Приоритет процесса в обеих редакциях вычисляется по формуле:

        приоритет = ИЦП/16 + (базовый уровень приоритета);


    Повторите пример на Рисунке 8.4, используя приведенные формулы.

  4. Проделайте еще раз пример на Рисунке 8.4 с семью процессами вместо трех, а затем измените частоту прерываний по таймеру с 60 на 100 прерываний в секунду. Прокомментируйте результат.
  5. Разработайте схему, в которой система накладывает ограничение на продолжительность выполнения процесса, при превышении которого процесс завершается. Каким образом пользователь должен отличать такой процесс от процессов, для которых не должны существовать подобные ограничения? Каким образом должна работать схема, если единственным условием является ее запуск из shell'а?
  6. Когда процесс выполняет системную функцию wait и обнаруживает прекратившего существование потомка, ядро приплюсовывает к его ИЦП значение поля ИЦП потомка. Чем объясняется такое "наказание" процесса-родителя?
  7. Команда nice запускает последующую команду с передачей ей указанного значения, например:
        nice 6 nroff -mm big_memo > output


    Напишите на языке Си программу, реализующую команду nice.

  8. Проследите на примере Рисунка 8.4, каким образом будет осуществляться диспетчеризация процессов в том случае, если значение, передаваемое функцией nice для процесса A, равно 5 или -5.
  9. Проведите эксперимент с системной функцией renice x y, где x - код идентификации процесса (активного), а y - новое значение nice для указанного процесса.
  10. Вернемся к примеру, приведенному на Рисунке 8.6. Предположим, что группе, в которую входит процесс A, выделяется 33% процессорного времени, а группе, в которую входит процесс B, - 66% процессорного времени. В какой последовательности будут исполняться процессы? Обобщите алгоритм вычисления приоритетов таким образом, чтобы значение группового ИЦП усреднялось.
  11. Выполните команду date. Команда без аргументов выводит текущую дату:
    указав аргумент, например:
        date mmddhhmmyy


    (супер)пользователь может установить текущую дату в системе (соответственно, месяц, число, часы, минуты и год). Так,

        date 0911205084


    устанавливает в качестве текущего времени 11 сентября 1984 года 8:50 пополудни.

  12. В программах можно использовать функцию пользовательского уровня sleep:
        sleep(seconds);


    с помощью которой выполнение программы приостанавливается на указанное число секунд. Разработайте ее алгоритм, в котором используйте системные функции alarm и pause. Что произойдет, если процесс вызовет функцию alarm раньше функции sleep? Рассмотрите две возможности: 1) действие ранее вызванной функции alarm истекает в то время, когда процесс находится в состоянии приостанова, 2) действие ранее вызванной функции alarm истекает после завершения функции sleep.

  13. * Обратимся еще раз к последней проблеме. Ядро может выполнить переключение контекста во время исполнения функции sleep между вызовами alarm и pause. Тогда есть опасность, что процесс получит сигнал alarm до того, как вызовет функцию pause. Что произойдет в этом случае? Как вовремя распознать эту ситуацию?

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