首页 > 其他分享 >20201318李兴昕学习笔记八

20201318李兴昕学习笔记八

时间:2022-10-22 10:00:37浏览次数:48  
标签:定时器 tv printf 李兴昕 笔记 20201318 timer time include

第五章:定时器及时钟服务

知识点归纳总结:

本章讨论了定时器和定时器服务;介绍了硬件定时器的原理和基于Intel x86的PC中的硬件定时器;

讲解了CPU操作和中断处理;描述了Linux中与定时器相关的系统调用、库函数和定时器服务命令;

探讨了进程间隔定时器、定时器生成的信号,并通过示例演示了进程间隔定时器。编程项目的目的是要在一个多任务处理系统中实现定时器、定时器中断和间隔定时器。

多任务处理系统作为一个Linux进程运行,该系统是Linux进程内并发任务的一个虚拟CPU, Linux进程的实时模式间隔定时器被设计为定期生成S1GALRM信号,充当虚拟CPU的定时器中断,虚拟CPU使用SIGALRM信号捕捉器作为定时器的中断处理程序。


其中让我最有收获的几个部分如下:

  • CPU操作
  • 中断处理
  • 时钟服务函数
  • 间隔计时器
  • 编程项目样例代码

时钟服务函数:

gettimeofday()使用gettimeofday()来查看当前时间,这个函数会计算从1970年1月1号00:00(UTC)到当前的时间跨度。 > 说明:在使用gettimeofday()函数时,第二个参数一般都为空,因为我们一般都只是为了获得当前时间,而不用获得timezone的数值
其函数原型如下:

#include <sys/time.h>
// 调用成功返回0,失败返回-1
int gettimeofday(struct timeval *tv, struct timezone *tz);
struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};

示例代码:

/************gettimeofday.c file**********/
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <time.h>

struct timeval t;

int main()
{
    gettimeofday(&t,NULL);
    printf("sec=%ld usec=%d\n",t.tv_sec,t.tv_usec);
    printf("%s",(char *)ctime(&t.tv_sec));
}

实践截图:

image

time系统调用

time_t time(time_t *t)
以秒为单位返回当前时间。如果参数t不是NULL,还会将时间存储在t指向的内存中。 time系统调用具有一定的局限性,只提供以秒为单位的分辨率,而不是以微秒为单位。

#include <stdio.h>
#include <time.h>

time_t start, end;

int main()
{
    int i;
    start = time(NULL);
    printf("start = %ld\n", start);
    for ( i = 0; i < 123456789; i++)
    {
        end = time(NULL);
    }
    printf("end = %ld time = %ld\n",end ,end-start);
}

image

time 和 date 命令

  • date:打印或设置系统日期和时间。
  • time:报告进程在用户模式和系统模式下的执行时间和总时间。
  • hwclock:查询并设置硬件时钟(RTC),也可以通过BIOS来完成。

间隔定时器

定时器仅在进程以 用户模式执行时才减少计时。该定时器设置为完成最初100毫秒计时后开始计时:然后,它以1秒为周期运行。当定时器计时减少为0时,它会向进程发出一个SIGVTALRM ( 26 )信 号。如果进程未安装该信号的捕捉器,将会对该信号进行默认处理,即终止:在这种情况 下,进程将以信号数26终止。如果进程安装了信号捕捉器.Linux内核会让进程执行信号 捕捉器,以用户模式处理信号、在间隔时间开始之前,程序通过以下代码安装SIGVTALRM 信号的信号捕捉器.

#include <signal.h>
#include <stdio.h>
#include <sys/time.h>

int count = 0;
struct itimerval t;

void timer_handler(int sig)
{
    printf("timer_handler : signal = %d count = %d\n", sig, ++count);
    if(count>=8)
    {
        printf("cancel timer\n");
        t.it_value.tv_sec = 0;
        t.it_value.tv_usec = 0;
        setitimer(ITIMER_VIRTUAL, &t ,NULL);
    }
}

int main()
{
    struct itimerval timer;
    signal(SIGVTALRM, timer_handler);
    timer.it_value.tv_sec = 0;
    timer.it_value.tv_usec = 10000;

    timer.it_interval.tv_sec = 1;
    timer.it_interval.tv_usec = 0;
    setitimer(ITIMER_VIRTUAL, &timer,NULL);
    printf("looping : enter Control-C to terminate\n");
    while(1);
}

image

标签:定时器,tv,printf,李兴昕,笔记,20201318,timer,time,include
From: https://www.cnblogs.com/shady545/p/16815420.html

相关文章

  • 珂朵莉树学习笔记
    0x00前言0x01关于其命名  最开始出现在CodeforcesRound#449(Div.1)C题上,这位珂学家在题解中用了一种玄学的数据结构解题,开始命名为ODT树(OldDriverTree,老......
  • Newtonsoft.Json笔记 -JToken、JObject、JArray详解
    在原来解析json数据是,一般都是用反序列化来实现json数据的解读,这需要首先知道json数据的结构并且建立相应的类才能反序列化,一旦遇到动态的json数据,这种方法就不使用。为了......
  • Vue笔记3 计算属性 ES6语法、作用域闭包var/let/const、v-if/v-else/v-else-if 、v-sh
              闭包                    事件冒泡 阻止默认事件        key="username"......
  • JodeTime的笔记
    Jode-TimeJode-Time介绍任何企业应用程序都需要处理时间问题。应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径。使用JDK完......
  • Pytorch学习笔记
    两大强大的工具函数:1.dir(),打开一个包,输出包内含有的其他子类2.help(),帮助文档1help(torch.cuda.is_available)2Helponfunctionis_availableinmoduletorch.cuda......
  • 正则表达式笔记
    几次想学但是都没学会……现在作业要用就还是硬着头皮学一下吧部分材料源于这个我一开始还不太能理解这怎么配这么多stars,后面才发现stars给的是这个基本语法开始和结......
  • 6.824笔记2
    线程为每一个prc请求使用一个线程,当请求回收的时候,线程继续运作,多线程能能够开启多个网络请求,形成io并发并行化,线程用来实现并行化异步编程,事件驱动编程,又一个线程,一个循......
  • Vue笔记2 v-bind,截图软件snipaste、computed
                                              ......
  • c语言—调试篇—笔记
    调试#include<stdio.h>intmain(){char*p="hellobit.";printf("%s\n",p);return0;}#include<stdio.h>intmain(){inti=0;intarr[10]={0};for(i=0;i<=12;i++......
  • 自然语言处理学习笔记-lecture07-句法分析01
    句法分析(syntacticparsing)的任务就是识别句子的句法结构(syntacticstructure)。包含短语结构分析(Phraseparsing)和依存句法分析(Dependencyparsing)短语结构分析......