Skip to content

Instantly share code, notes, and snippets.

@mmdts
Last active September 2, 2021 04:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mmdts/99c496f4ae041ec0f94748ddb15644e4 to your computer and use it in GitHub Desktop.
Save mmdts/99c496f4ae041ec0f94748ddb15644e4 to your computer and use it in GitHub Desktop.
OS Cycleはタイマーの制度を変化する証明
delta_stat_nsec: 6886112047640834662
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_t_prog (ns): 2985844
delta_stat_nsec: 6886111528857621633
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 3999994
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 3999993
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_stat_nsec: 0
delta_t_prog (ns): 10197984
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
#include <stdlib.h>
int main () {
int i = 100; // 百回試す!
struct stat st, st_old; // 比べたいから
struct timespec tstart, tend; // いつ始めたは、いつ終わったか
system("mkdir -p ./hoge"); // tmpじゃなくて、ここで置いていこう!
clock_gettime(CLOCK_MONOTONIC, &tstart); // はじまりの時
while(i--) {
unlink("./hoge/foo");
symlink("aaa", "./hoge/foo");
st_old = st; // コピーする
stat("./hoge", &st);
printf("delta_stat_nsec: %lld\n", (st.st_mtim.tv_sec - st_old.st_mtim.tv_sec) * 1000000000llu + (st.st_mtim.tv_nsec - st_old.st_mtim.tv_nsec));
// ここは一番大事!!!!
// usleep(10); // Uncomment this line and see what happens.
}
clock_gettime(CLOCK_MONOTONIC, &tend); // 終わりの時
printf("delta_t_prog (ns): %lld\n", (tend.tv_sec - tstart.tv_sec) * 1000000000llu + tend.tv_nsec - tstart.tv_nsec);
system("rm -rf ./hoge"); // お掃除をしよう!
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment