主要观点总结
本文主要介绍了进程为什么需要睡眠与唤醒功能,详细分析了进程睡眠与唤醒的实现原理。包括进程在操作系统中的执行上下文概念,进程相关的资源,以及进程睡眠与唤醒的必要性。同时,文章还详细阐述了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 时间。但有时候进程的执行需要某些资源提供数据来源,而这些资源可能需要从外部获取。如在网络程序中
………………………………