Linux 休眠(使linux休眠)

2023-04-28 19:21
win10系统长时间睡眠会关机吗?

更新一下:这个答案有点过时了,现在最新的Windows应该不存在这个问题了。升级win10后,我也遇到了类似的问题:合上笔记本的盖子待机,再打开时可能就死机了,界面卡住,需要长按电源键关机才行。

而且遇到蓝屏的几率也比以前大多了,错误代码通常显示是驱动造成的。

我习惯了合上盖子就走人,可是如果死机,之前的打开的工作页面就都没了,还容易造成数据丢失。看了前面的许多答案,又觉得不想那么麻烦的折腾了。但我无意中找到了一个简单的解决办法:彻底关闭win10的休眠功能。

如果注意到win10在待机后,短时间内唤醒只需要动几下鼠标或者按一下电源键就会立刻进入登录界面;而长时间待机后再打开,跟你关机后再开机是一样的,计算机会从BIOS开始启动。

这其实是win10 的两种待机模式,可以立刻进入登录界面的叫做“睡眠”,此时系统是不会切断内存供电的;而超过一定时间(默认好像是180分钟)后,系统就会进入叫做”休眠“的模式,内存中的数据被保存到硬盘中,计算机彻底断电,此时跟关机已经没有什么大的区别了。

在控制面板-电源选项-编辑计划设置-高级电源设置中把“睡眠”的选项中休眠调整为从不,“电源按键和盖子”选项中也都设为睡眠,这样使得无论你是使用电池还是电源,系统都不会自动进入休眠模式。

这样,我发现系统唤醒后就可以立刻进入登录界面,也不会发生死机的现象了。

休眠模式相对于睡眠模式的节能优势并不大,还省去了唤醒后的等待时间。

你仍然可以主动休眠,或者在其他电源计划中设置休眠以备不时之需。

这样设置后对我个人又有了一些额外的好处。

我在笔记本上装了win10和Linux的双系统,以前休眠唤醒时还要经过系统选择的界面,又增加了很多时间。

更重要的是,win10休眠或开启快速启动关机时,会禁止非Windows访问它的磁盘。

我之前关闭快速启动或者重新启动都不好使,现在我发现这个问题也解决了。在Windows很好的解决这些问题之前,这算是一个不错的权宜之计吧。

sleep命令使用教程?

使用权限 : 所有使用者

使用方式 : sleep number

说明 : sleep 可以用来将目前动作延迟一段时间

参数说明 :

--help : 显示辅助讯息

--version : 显示版本编号

number : 时间长度,后面可接 s、m、h 或 d

其中 s 为秒,m 为 分钟,h 为小时,d 为日数

例子 :

显示目前时间后延迟 1 分钟,之后再次显示时间 :

date;sleep 1m;date

这个命令更多应用于shell脚本编程里和程序里

如下面的一段程序:

应用程序:

#include <syswait.h>

usleep(n) //n微秒

Sleep(n)//n毫秒

sleep(n)//n秒

驱动程序:

#include <linux/delay.h>

mdelay(n) //milliseconds 其实现

#ifdef notdef

#define mdelay(n) (

{unsigned long msec=(n); while (msec--) udelay(1000);})

#else

#define mdelay(n) (

(__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) :

({unsigned long msec=(n); while (msec--) udelay(1000);}))

#endif

调用asm/delay.h的udelay,udelay应该是纳秒级的延时

Dos:

sleep(1); //停留1秒

delay(100); //停留100毫秒

Windows:

Sleep(100); //停留100毫秒

Linux:

sleep(1); //停留1秒

usleep(1000); //停留1毫秒

每一个平台不太一样,最好自己定义一套跨平台的宏进行控制

秒还是微秒?关于延时函数sleep()

因为要写一段代码,需要用到sleep()函数,在我印象中,sleep(10)好像是休眠10微秒,结果却是休眠了10秒(在Linux下)。觉得很奇怪,因为头儿也记得好像是微秒为单位的。所以就查了一下。

原来linux下的sleep函数原型为:

unsigned int sleep(unsigned int seconds);

而MFC中的Sleep函数原型为:

void Sleep(DWORD dwMilliseconds);

也就是说,Linux下(使用的gcc的库),sleep()函数是以秒为单位的,sleep(1);就是休眠1秒。而MFC下的sleep()函数是以微秒为单位的,sleep(1000);才是休眠1秒。原来如此啊。而如果在Linux下也用微妙为单位休眠,可以使用线程休眠函数:void usleep(unsigned long usec);当然,使用的时候别忘记#include <system.h>哦。

另外值得一提的是,linux下还有个delay()函数,原型为extern void delay(unsigned int msec);它可以延时msec*4毫秒,也就是如果想延时一秒钟的话,可以这么用 delay(250)。

linux内核信号的实现原理?

从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随Linux从单处理器到对称多处理器的过渡;伴随着从非抢占内核到抢占内核的过度。Linux的锁机制越来越有效,也越来越复杂。Linux的内核锁主要是自旋锁和信号量。自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行。自旋锁可以在任何时刻防止多于一个的执行线程同时进入临界区。Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。这时处理器获得自由去执行其它代码。当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号量。

手机休眠会怎么样?

手机休眠会让你手机得到一个临时的修正,让这些零部件在全身为你服务的同时达到一个修整的时间,这样在你换妾手机睡眠之后,手机的性能得到一个充分的运用。并且在手机休眠的过程中,会让你电池续航能力变得更强。但睡眠之中可能有一些及时的通讯数据就接收不到了。

linux设备休眠的方式?

常用的休眠方式有freeze,standby, mem, disk

freeze: 冻结I/O设备,将它们置于低功耗状态,使处理器进入空闲状态,唤醒最快,耗电比其它standby, mem, disk方式高

standby:除了冻结I/O设备外,还会暂停系统,唤醒较快,耗电比其它 mem, disk方式高

mem: 将运行状态数据存到内存,并关闭外设,进入等待模式,唤醒较慢,耗电比disk方式高

disk: 将运行状态数据存到硬盘,然后关机,唤醒最慢