Какие состояния процесса учитываются во времени процессора?

Это необходимо для реальных (аппаратных) терминалов. Например, для некоторых единственный способ сбросить их - это выполнить аппаратный сброс.

Это безвредно с эмулятором терминала, и поскольку нет обычного способа определить разницу (и слишком сложно определить, может ли какая-то escape-последовательность вызвать аппаратный сброс), reset предполагает, что ваш терминал настоящий .

Задержка восходит к tset в 3BSD в 1979 году, например:

    /* output startup string */
    if (!RepOnly && !NoInit)
    {
            bufp = buf;
            if (tgetstr("is", &bufp) != 0)
                    prs(buf);
            bufp = buf;
            if (tgetstr("if", &bufp) != 0)
                    cat(buf);
            sleep(1);       /* let terminal settle down */
    }

Она несколько эволюционировала в ncurses, но с использованием того же принципа:

        if (!noinit) {
            if (send_init_strings(my_fd, &oldmode)) {
                (void) putc('\r', stderr);
                (void) fflush(stderr);
                (void) napms(1000);         /* Settle the terminal. */
            }
        }

Дополнительная литература:

  • History ( tset страница руководства)
  • History ( tput страница руководства)

2
15.03.2016, 08:48
1 ответ

Для подсчета времени важны тики процессора и тики, потраченные процессом на процессор. Если вы говорите о времени, которое процесс тратит на процессор, вы должны суммировать тики при работе в режиме пользователя и ядра.

0
27.01.2020, 22:48

Теги

Похожие вопросы