专栏名称: Linux爱好者
伯乐在线旗下账号,「Linux爱好者」专注分享 Linux/Unix 相关内容,包括:工具资源、使用技巧、课程书籍等。
目录
相关文章推荐
今天看啥  ›  专栏  ›  Linux爱好者

细说进程为什么需要睡眠?

Linux爱好者  · 公众号  · linux  · 2024-10-09 09:00
    

主要观点总结

本文主要介绍了进程为什么需要睡眠与唤醒功能,详细分析了进程睡眠与唤醒的实现原理。包括进程在操作系统中的执行上下文概念,进程相关的资源,以及进程睡眠与唤醒的必要性。同时,文章还详细阐述了Linux系统中睡眠与唤醒机制的实现,包括睡眠函数的使用和实现,以及唤醒进程的实现原理。

关键观点总结

关键观点1: 进程是操作系统中的执行上下文,包括要执行的代码和相关的资源。

进程相关的资源包括使用的内存、打开的文件、使用的CPU时间等。执行的代码与其相关的资源组成了执行上下文。

关键观点2: 进程为什么需要睡眠?

由于CPU是执行代码的主体,执行进程的代码需要占用CPU时间。但有时进程的执行需要某些资源提供数据来源,而这些资源可能需要从外部获取,如网络程序中,服务器需要等待客户端发生请求才能进行下一步操作。因此,服务端程序需要通过睡眠与通知的方式等待客户端的请求。

关键观点3: Linux系统中进程睡眠与唤醒机制的实现。

Linux内核中很多系统调用和内核函数都可能导致进程睡眠,如I/O相关的系统调用、sleep类内核函数等。在Linux内核中,如果想让一个进程进入睡眠状态,可以调用schedule_timeout_interruptible()内核函数。其实现主要包括将进程设置为可中断睡眠状态、调用schedule_timeout()函数使进程真正进入睡眠状态、定时器到期后触发调用process_timeout()函数唤醒进程等。


文章预览

进程是操作系统中的  执行上下文 。说白了, 执行上下文  包括了要执行的代码与其相关的资源。要执行的代码比较容易理解,就是我们编写的程序代码,例如: int  total =  10  +  20 ; 上面的代码将 10 加 20 的结果赋值给  total  变量,这就是进程要执行的代码。 而进程相关的资源包括: 使用的内存 、 打开的文件 、 使用的CPU时间  等等。执行的代码与其相关的资源组成了  执行上下文 ,也称为  进程 。如果将人比作为进程的话,那么我们的日常行为对应的就是执行代码,而我们拥有的各种社会资源(如金钱、房产、车子等)对应的就是进程占用的资源。 进程为什么需要睡眠 由于 CPU 是执行代码的主体,所以执行进程的代码需要占用 CPU 时间。但有时候进程的执行需要某些资源提供数据来源,而这些资源可能需要从外部获取。如在网络程序中 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览