15、调度(上):如何制定项目管理流程?前几节,我们介绍了task_struct数据结构。它就像项目管理系统一样,可以帮项目经理维护项目运行过程中的各类信息,但这并不意味着项目管理工作就完事大吉了。task_struct仅仅能够解决“看到”的问题,咱们还要解决如何制定流程,进行项目调度的问...2025-10-31
14、进程数据结构(下):项目多了就需要项目管理系统上两节,我们解读了task_struct的大部分的成员变量。这样一个任务执行的方方面面,都可以很好地管理起来,但是其中有一个问题我们没有谈。在程序执行过程中,一旦调用到系统调用,就需要进入内核继续执行。那如何将用户态的执行和内核态的执行串起来呢? 这...2025-10-31
13、进程数据结构(中):项目多了就需要项目管理系统上一节我们讲了,task_struct这个结构非常长。由此我们可以看出,Linux内核的任务管理是非常复杂的。上一节,我们只是讲了一部分,今天我们接着来解析剩下的部分。 运行统计信息作为项目经理,你肯定需要了解项目的运行情况。例如,有的员工很长时间都...2025-10-31
12、进程数据结构(上):项目多了就需要项目管理系统前面两节,我们讲了如何使用系统调用,创建进程和线程。你是不是觉得进程和线程管理,还挺复杂的呢?如此复杂的体系,在内核里面应该如何管理呢? 有的进程只有一个线程,有的进程有多个线程,它们都需要由内核分配CPU来干活。可是CPU总共就这么几个,应该怎么管...2025-10-31
11、线程:如何让复杂的项目并行执行?上一节我们讲了如何创建进程,这一节我们来看如何创建线程。 为什么要有线程?其实,对于任何一个进程来讲,即便我们没有主动去创建线程,进程也是默认有一个主线程的。线程是负责执行二进制指令的,它会根据项目执行计划书,一行一行执行下去。进程要比线程管的宽多了...2025-10-31