Путаница в течение времени, отведенного вызовами sys () и read () - PullRequest
0 голосов
/ 18 января 2012

Приведенный ниже код просто вычисляет время, затрачиваемое на запись файла.

#include<time.h>
void main()
{
  int fp;
  long a,b;
  char *str = "Life is like that only";
  fp = open("tmp.txt",O_WRONLY,0666);
  time(&a);
  write(fp,str);
  time(&b);
 /*(b-a) should be the time taken to write
  * the file tmp.txt.
  */
  close(fp);
  return;
}

Мой вопрос заключается в том, что если у нас будет один ЦП, будет ли точное время (ба) точным или оно может бытьзависит от выполнения другого процесса, работающего параллельно.В некоторых постах здесь упоминается, что write () и read () могут рассматриваться почти как атомарные системные вызовы, как если бы они не были успешными. EINTR установлен, что просто означает попытку повторить.выполнение все остальные процессы приостановлены.

1 Ответ

0 голосов
/ 18 января 2012

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

На практике для небольшой записи в обычный файл ваш метод write (), вероятно, вернется сразу после копирования ваших данных в буфер пространства ядра, а не будет ждать, пока он полностью перейдет на диск.

...