操作系统后备时间

2020-04-06 21:12:31 IT_flying625 阅读数 903
  • 操作系统(一)

    工作以后,繁重的工作压力导致我们没有充足的时间准备软考--网络工程师这门考试。700多页的教程,十几年的真题,无数的模拟题搞得大家眼花缭乱,不知如何下手备考。本门课程紧抓考生痛点,按照短期、速效、重点突出...

    2523课时 0分钟 245人学习 徐朋
    免费试看

系统时钟,硬件时钟(后备时钟,实时时钟),网络时钟  辨析

 

1. 系统时钟

系统时钟即为我们看到的操作系统上显示的时间。

系统时钟在电脑开机的时候进行初始化,通过对硬件时钟的“拷贝”完成初始化

注意:这里所说的拷贝  并不是指完全的复制。

linux默认把后备时钟当成GMT+0时间,windows则和BIOS完全相同。
 

系统时钟可以通过网络时钟进行同步,在windows系统中,系统默认每隔一段时间会和网络时钟校正同步一次。

如图:

 

 

 

2. 硬件时钟

BIOS界面显示的时钟,又称为后备时钟或者实时时钟,之所以这样称呼,是因为硬件时钟不会因为断电或者关机而停止运行,硬件时钟的运行依赖于主板上纽扣电池运转。

3. 网络时钟

网络时钟即互联网上统一的时钟。

 

References:

https://www.cnblogs.com/sky-heaven/p/5220873.html

https://www.cnblogs.com/jingzhishen/p/4225765.html

https://blog.csdn.net/gatieme/article/details/51883981

2016-06-08 15:20:35 dongyanxia1000 阅读数 3157
  • 操作系统(一)

    工作以后,繁重的工作压力导致我们没有充足的时间准备软考--网络工程师这门考试。700多页的教程,十几年的真题,无数的模拟题搞得大家眼花缭乱,不知如何下手备考。本门课程紧抓考生痛点,按照短期、速效、重点突出...

    2523课时 0分钟 245人学习 徐朋
    免费试看

按照操作系统的功能特征可以将操作系统分为3种基本类型:

批处理操作系统、分时操作系统和实时操作系统。

1)批处理操作系统

作业是用户在一次解题或一个事务处理过程中要求计算机系统所做工作的集合。包括用户程序、所需的数据及命令等。

单道批处理操作系统是早期计算机系统中配置的一种操作系统类型,其工作流程大致如下:

-- 用户将作业交给系统操作员--->

-- 系统操作员将若干待处理的作业合成一批并输入传送到外存---->

-- 批处理操作系统按一定的原则选择其中的一道作业进入内存并使之运行---->

-- 当作业运行完成或出现错误而无法再进行下去时--->

-- 由系统输出有关信息并调入下一道作业运行。

如此反复处理,直至这一批作业全部处理完毕为止。

单道批处理操作系统大大减少了人工操作的时间,提高了机器的利用率。但因内存中只有一道作业在运行,

当作业发出I/O请求时,CPU必须等待I/O的完成。因为I/O设备的低速性,致使CPU的利用率也很低。

为了改善CPU的利用率,引入了多道程序设计技术。形成了多道批处理操作系统。

在多道批处理操作系统中,不仅内存中可以同时有多道作业在运行,而且作业可随时(不一定集中成批)被接受进入系统,

并存放在外存中形成后备作业队列,然后由操作系统按一定的原则从后备作业队列中调入一道或多道作业进入内存运行。

批处理系统的不足是无交互性,即用户一旦将作业提交给系统后就失去了对作业运行的控制能力。

2)分时操作系统

在分时操作系统中,一台计算机和许多终端设备连接。

--- 每个用户通过自己的终端向系统发出命令,请求完成某项工作。

--- 系统分析从终端设备发来的命令,完成用户提出的请求。

--- 用户根据系统提供的运行结果,向系统提出下一步请求。

这样重复上述交互会话过程,直到用户完成全部工作为止。

------ 在操作系统中采用分时技术就形成了分时操作系统。分时技术是指把处理器的运行时间分成很短的时间片,按时间片轮流把处理器

         分配给各终端作业使用。(时间片轮转法)

------ 若某个终端作业在分配给它的时间片内不能完成其计算,则暂停该终端作业的运行,把处理器让给另一个终端作业使用,

         等待下一轮时再继续其运行。

------ 由于计算机速度很快,各终端作业运行轮转的也很快,这使得每个终端用户感觉自己在独自使用该计算机

------ 当系统中除了终端型作业还有批处理作业时,应赋予终端型作业较高的优先权,并将它们排成一个高优先权队列;

------ 而将批处理作业另外排成一个队列。平时轮转运行高优先权队列的作业,以保证终端用户的请求能获得及时响应,仅当该队列为空时,

        才运行批处理队列中的作业。

3)实时操作系统

实时操作系统是随着计算机应用于实时控制实时信息处理领域而发展起来的另一种操作系统。

实时操作系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致的工作。

实时操作系统对响应时间的要求比分时操作系统更高,一般要求秒级、毫秒级甚至微秒级的响应时间。

在实时信息处理系统中,计算机能及时接收从远程终端发来的服务请求,根据用户提出的请求对信息进行检索和处理,

并在很短时间内对用户做出回答。如机票订购系统,情报检索系统等,都属于实时信息处理系统。

实时操作系统的主要特点是:响应及时可靠性高

如果一个操作系统兼有批处理、分时和实时系统三者或其中两者的功能,则称这样的操作系统为通用操作系统

2016-05-17 10:05:19 rikeyone 阅读数 2624
  • 操作系统(一)

    工作以后,繁重的工作压力导致我们没有充足的时间准备软考--网络工程师这门考试。700多页的教程,十几年的真题,无数的模拟题搞得大家眼花缭乱,不知如何下手备考。本门课程紧抓考生痛点,按照短期、速效、重点突出...

    2523课时 0分钟 245人学习 徐朋
    免费试看



(一)Linux系统中的时间

 

rtc

由rtc芯片提供的时间,可以转换为格林尼治时间,linux中把这一类时间称为wall time,墙上时间。rtc时间由rtc芯片来维护更新,它通常由一个专门的计时硬件来实现,软件可以读取该硬件来获得年月日、时分秒等时间信息。rtc时间是可持续计时的,通常硬件上会加上一个后备电池供电,这样即使系统关闭,rtc时间依然是正常更新的,这样就可以保证下次系统起来的时候可以从rtc芯片中,重新读取到正确的墙上时间。

xtime

linux系统时间是用从Epoch(1970年1月1日00:00:00 UTC)开始所经过的时间来表示,比如unix时间戳就是从Epoch开始所经过的秒数。注意这里使用的是UTC世界统一时间标准来计算的,它也是一种墙上时间。

monotonic time

单调增长的系统运行时间(ntp影响其单调性), 记录的是从系统启动以来到当前的时间间隔,它不会像xtime一样可以被用户修改而发生跳变。不过该时间不计算休眠时间。

raw monotonic time

raw monotonic time: 该时间与monotonic时间类似,也是单调递增的时间,唯一的不同是,raw monotonic time不会受到NTP时间调整的影响,它代表着系统独立时钟硬件对时间的统计。

boot time 

它代表着系统上电后的总时间,包括了休眠时间。

 

ntp服务会全部影响到上面提到的几种时间类型。ntp就是为了校正时间的服务,为了每次启动都能正确修改,所以rtc要更新,为了使当前时间也修改生效,所以xtime也要更新。

 

(二)时间操作函数

 

RTC时间操作:

1.rtc时间是由rtc硬件控制的,所以在linux中想要修改和获取rtc时间就只能通过驱动的接口来获取和修改。

int rtc_test(void)
{
struct rtc_time rtc;
int fd = -1;
int ret = -1;

fd = open("/dev/rtc0", O_RDWR);
if (fd < 0)
{ 
    return -1;
}
ret = ioctl(fd, RTC_RD_TIME, &rtc);
if (ret < 0) {
    return -1;
}
printf("\nCurrentRTC data/time is %d-%d-%d, %02d:%02d:%02d.\n", 
    rtc.tm_mday, rtc.tm_mon + 1, rtc.tm_year + 1900, rtc.tm_hour, rtc.tm_min, rtc.tm_sec);

ret = ioctl(fd, RTC_SET_TIME, &rtc);
if (ret < 0) {
    return -1;
}
return 0;
} 

 

 

2.除了上面这种方式操作rtc时间以外,linux中也有一个命令可以简化rtc时间操作,hwclock,比如,可以通过system("hwclock -w");系统调用来把xtime设置到rtc硬件。

 

墙上时间(realtime、xtime):

linux系统中主要使用的就是xtime,它是系统运行的基础,很多程序都是依赖于xtime来运行的,接下来将介绍将如何操作xtime。

1.获取、设置微秒级别的时间:

    #include <sys/time.h>
    #include <unistd.h>

      struct timeval
       {
              inttv_sec;
              inttv_usec;
       }; 

int gettimeofday(struct timeval *tv, struct timezone *tz);
int settimeofday(const struct timeval *tv, const struct timezone *gz);
功能描述:

gettimeofday()获取当前时间,有tv指向的结构体返回。

settimeofday()把当前时间设成由tv指向的结构体数据。当前地区信息则设成tz指向的结构体数据。

 

2.获取秒级别的时间

typedef  long  time_t;

time_ttime(time_t *t);

如果tnon-null,它将会把时间值填入t

 

3.内核2.6版本后新增的clock api接口

获取纳秒级别的时间

 

struct  timespec{ 

  time_t tv_sec; /*s*/  

  long tv_nsec; /*纳秒ns*/ 
};

 

int clock_getres(clockid_t clk_id , struct timespec *res);

int clock_gettime(clockid_t clk_id , struct timespec *tp);

int clock_settime(clockid_t clk_id 、 const struct timespec *tp);

编译连接时采用-lrt才能编译通过。

clk_id可选参数:

CLOCK_REALTIME

系统全局的实时时钟.设置此时钟需要合适的权限.

CLOCK_MONOTONIC

只能被读取,无法被设置,表示 monotonic 时间起点.

CLOCK_PROCESS_CPUTIME_ID

从 cpu 每进程的高分辨率计时器.

CLOCK_THREAD_CPUTIME_ID

线程的特定 cpu 时间时钟.

 

系统启动时,会首先从rtc中读取rtc时间,并设置给xtime,而当ntp对系统时间进行更新时,首先设置xtime,然后调用hwclock设置到rtc硬件中。xtime根据需要的精度,可以通过上面几个接口来选择使用。

 

 

 

 

 

2016-04-22 10:13:18 u011080472 阅读数 20813
  • 操作系统(一)

    工作以后,繁重的工作压力导致我们没有充足的时间准备软考--网络工程师这门考试。700多页的教程,十几年的真题,无数的模拟题搞得大家眼花缭乱,不知如何下手备考。本门课程紧抓考生痛点,按照短期、速效、重点突出...

    2523课时 0分钟 245人学习 徐朋
    免费试看

调度性能的衡量

面向用户

周转时间短

周转时间,指作业从提交系统开始,直到作业完成为止的时间间隔。周转时间细分包括:

  1. 作业在外存后备队列中的等待时间
  2. 作业调入内存后创建的相应进程在就绪队列中的等待时间
  3. 进程在CPU上执行的时间
  4. 进程等待某些操作完成后的时间

其中2、3、4在一个作业的整个处理过程中可能会发生多次。

带权周转时间是指作业周转时间与作业实际运行服务时间的比值。平均周转时间和平均带权周转时间是衡量批处理系统调度算法的重要准则。

响应时间快

响应时间,从用户提交请求开始,直达系统首次产生响应为止的时间间隔。是衡量分时系统调度算法的重要准则。

截止时间的保证

开始截止时间,指某任务必须开始执行的最迟时间。完成截止时间,指某任务必须完成的最迟时间。对于比较严格的实时系统,调度算法必须做到这一点,否则后果严重。

优先权

批处理系统、分时系统、实时系统都可以优先执行优先级别更高的作业。

面向系统

系统吞吐量高

系统吞吐量,系统在单位时间内所能完成的总的工作量,它与批处理系统中的作业长短有关。短作业执行时间短,吞吐量高,长作业相反。

CPU利用率

资源的平衡利用

调度的相关时间

  • 服务时间:作业需要运行的时间
  • 完成时间 = 开始时间 + 服务时间
  • 等待时间 = 开始时间 - 提交时间
  • 周转时间 = 完成时间 - 提交时间
  • 带权周转时间 = 周转时间 / 服务时间
  • 响应比 = (等待时间 + 服务时间) / 服务时间 = 等待时间/服务时间 + 1

调度算法

先来先服务

先来先服务调度算法(First Come First Served, FCFS)是最简单的调度算法,可以用于作业调度和进程调度。按照作业进入系统后备作业队列的先后次序来挑选作业,加入就绪队列,等待执行。

算例:假设系统中有4个作业,到达时间分别为8、8.5、9、9.5,服务时间分别为2、0.5、0.1、0.2,FCFS的调度为:

FCFS调度算法算例

FCFS是非抢占式的,易于实现,效率不高,性能不好,有利于长作业(CPU繁忙性)而不利于短作业(I/O繁忙性)。

短作业优先

短作业优先调度算法(Short Job First)用于进程调度时又被称为短进程优先调度算法(Short Process First),该算法既可以用于作业调度,又可以用于进程调度。

在作业调度中,该算法每次从后备作业队列中挑选估计服务时间最短的一个或几个作业,将他们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中的原理类似。

算例:假设系统中有4个作业,到达时间分别为8、8.5、9、9.5,服务时间分别为2、0.5、0.1、0.2,SJF的调度为:

SJF调度算法算例

SJF是非抢占式的,优先照顾短作业,具有很好的性能,降低平均等待时间,提高吞吐量。但是不利于长作业,长作业可能一直处于等待状态,出现饥饿现象;完全未考虑作业的优先紧迫程度,不能用于实时系统

最短剩余时间优先

SJF本身是非抢占式的,用于抢占式调度系统时,对应的算法陈伟最短剩余时间优先调度算法。

该算法首先按照作业的服务时间挑选最短的作业运行,在该作业运行期间,一旦有新作业到达系统,并且该新作业的服务时间比当前运行作业的剩余服务时间短,则发生抢占;否则,当前作业继续运行。该算法确保一旦新的短作业或短进程进入系统,能够很快得到处理。

算例:假设系统中有4个作业,到达时间分别为8、8.5、9、9.5,服务时间分别为2、0.5、0.1、0.2,SJF的调度为:

最短剩余时间优先调度算法算例

由于频繁的抢占和进程切换,系统开销大,该算法实现代价高,一般用于实时系统。

高响应比优先

高响应比优先调度算法(Highest Reponse Ratio First, HRRF)是非抢占式的,主要用于作业调度。

基本思想:每次进行作业调度时,先计算后备作业队列中每个作业的响应比,挑选最高的作业投入系统运行。

响应比 = (等待时间 + 服务时间) / 服务时间 = 等待时间 / 服务时间 + 1

算例:假设系统中有4个作业,到达时间分别为8、8.5、9、9.5,服务时间分别为2、0.5、0.1、0.2,SJF的调度为:

HRRF调度算法算例

由响应比分析可知,该算法介于FCFS和SJF之间,但是每次需要计算每个作业的响应比,增加系统开销。

优先级

每次挑选优先级最高的一个或几个调入,可以用于作业调度和进程调度。分为非抢占式和抢占式。

时间片轮转

用于分时系统的进程调度。

基本思想:系统将CPU处理时间划分为若干个时间片(q),进程按照到达先后顺序排列。每次调度选择队首的进程,执行完1个时间片q后,计时器发出时钟中断请求,该进程移至队尾。以后每次调度都是如此。该算法能在给定的时间内响应所有用户的而请求,达到分时系统的目的。

其性能主要取决于时间片q的大小,q太大,则所有的进程在1个时间片完成,退外围FCFS;太小则进程频繁切换,系统开销大。

时间片轮转调度算法1

时间片轮转调度算法2

时间片轮转调度算法3

时间片轮转调度算法4

该算法简单有效,常用于分时系统,但不利于I/O频繁的而紧凑,由于这种进程用不完一个时间片,就因为等待I/O操作而被阻塞,当I/O操作结束后,只能插入到就绪队列的末尾,等待下一轮调度。

参考

  1. 温静,计算机操作系统原理,武汉大学出版社

目录

2019-11-11 17:02:16 qq_42192693 阅读数 395
  • 操作系统(一)

    工作以后,繁重的工作压力导致我们没有充足的时间准备软考--网络工程师这门考试。700多页的教程,十几年的真题,无数的模拟题搞得大家眼花缭乱,不知如何下手备考。本门课程紧抓考生痛点,按照短期、速效、重点突出...

    2523课时 0分钟 245人学习 徐朋
    免费试看

一,周转时间类

周转时间

作业被提交给系统开始,到作业完成为止的这段时间间隔。

包括:

  1. 作业在外存后备队列上的等待作业调度的时间,
  2. 进程在就绪队列上等待进程调度的时间,
  3. 进程在CPU上执行的时间,
  4. 进程等待IO操作完成的时间

平均周转时间

多个作业的周转时间的平均值

带权周转时间

作业的周转时间与系统为它提供服务的时间之比

 平均带权周转时间

多个作业的带权周转时间的平均值

二,其他时间

到达时间:进程到达等待队列/CPU的时间

开始时间:进程进入CPU的时间

完成时间:进程出去CPU的时间

服务时间:进程在CPU中运行的时间

等待时间:进程在等待队列的时间

三,公式

周转时间=等待时间+服务时间=完成时间-到达时间

平均周转时间=各个作业周转时间之和/作业数

带权周转时间=周转时间/服务时间

平均带权周转时间=各个作业带权周转时间之和/作业数

四,例子

进程:

进程 到达时间 服务时间
A 8.0 2.0
B 8.5 0.5
C 9.0 0.1
D 9.5 0.2

运行:

次序 进程 到达时间 服务时间 等待时间 开始时间 完成时间 周转时间
1 A 8.0 2.0 0.0 8.0 10.0 2.0
2 B 8.5 0.5 1.5 10.0 10.5 2.0
3 C 9.0 0.1 1.5 10.5 10.6 1.6
4 D 9.5 0.2 1.1 10.6 10.8 1.3


 

 

 

 

 

 

 

 

 

操作系统的概念

阅读数 1226