Windows11操作系统是什么类型的操作系统,如果是复合性的操作系统,各部分是什么类型的,如何去验证,给我个思路和代码例子

我想问一下对于win11操作系统,或者说现在操作系统如何分清它的的work or task(屏蔽不能发)调度或者说进程管理等等是采用分时的那一套,还是多道批处理系统那一套,或者是其他一种新的东西,能不能写代码去验证这个问题,毕竟现代都是多核CPU,而且速度又很快,会不会出现现在创建进程后,去除误差,所用毫秒数差不多,有没有人知道这个问题,我去百度上搜了,没有,知网我在校外进不去,而且好像没有这个课题,请大家多多帮忙解答,囊中羞涩

对于当前的操作系统,进程调度通常采用分时调度的方式。分时调度系统是指将 CPU 的时间分配给多个进程,使得所有进程都能得到执行的机会,从而实现公平的调度。

这种调度方式通常是通过时间片轮转的方式实现的,即将 CPU 的时间分成若干个时间片,每个进程每次执行一个时间片的时间,然后把 CPU 时间分配给下一个进程。这样,所有进程都能得到公平的调度。

与此同时,当前的操作系统也通常会支持多线程,也就是说,一个进程可以包含多个线程,每个线程在多核 CPU 系统中,操作系统会根据 CPU 核数来调度进程或线程,使得所有核都能得到充分利用。这种调度方式叫做并行调度。

对于 Windows 11 操作系统,其进程调度机制采用的是分时调度的方式,并支持多线程。

如果你想通过代码验证进程调度的方式,可以使用操作系统提供的 API,例如 Windows 中的 GetProcessAffinityMask 函数可以用来获取进程可以在哪些 CPU 上运行。

下面是一个简单的代码示例,可以用来获取当前进程的 CPU 亲和性(即进程可以在哪些 CPU 上运行):

#include <windows.h>
#include <stdio.h>

int main()
{
    DWORD_PTR processMask, systemMask;
    GetProcessAffinityMask(GetCurrentProcess(), &processMask, &systemMask);
    printf("Process affinity mask: %llu\n", processMask);
    printf("System affinity mask: %llu\n", systemMask);
    return 0;
}

在上面的代码中,GetProcessAffinityMask 函数可以用来获取当前进程的 CPU 亲和性。它的第一个参数是进程的句柄,通过 GetCurrentProcess 函数可以获取当前进程的句柄。第二个参数是一个指向 DWORD_PTR 类型变量的指针,用来保存进程可以在哪些 CPU 上运行的亲和性掩码。第三个参数是一个指向 DWORD_PTR 类型变量的指针,用来保存系统可用的 CPU 的亲和性掩码。

在上面的代码中,我们使用 printf 函数来输出进程的 CPU 亲和性掩码和系统的 CPU 亲和性掩码。通过这些信息,我们可以了解当前进程能够在哪些 CPU 上运行,从而判断当前操作系统的进程调度方式。

另外,还可以使用其他 API 函数来了解进程调度的情况,例如 GetProcessPriorityClass 函数可以用来获取进程的优先级,SetProcessAffinityMask 函数可以用来设置进程的 CPU 亲和性,以及 SetThreadAffinityMask 函数可以用来设置线程的 CPU 亲和性等。这些函数都可以帮助我们了解当前操作系统的进程调度情况。

此外,还可以使用系统命令或工具来查看进程调度的情况。例如,在 Windows 系统中,可以使用 tasklist 命令来查看当前运行的进程信息,包括进程名、PID、优先级、内存使用情况等。还可以使用 Process Explorer 工具来查看更为详细的进程信息,包括 CPU 亲和性、内存常数、线程信息等。

当前的操作系统(包括 Windows 11)一般采用分时调度系统,而不是多道批处理系统。

分时调度系统是指,操作系统会把 CPU 时间划分成若干个时间片,每个进程在运行时都会有一个时间片,在这个时间片内可以使用 CPU 进行计算。当一个进程使用完自己的时间片后,操作系统会调度下一个进程使用 CPU。这样,所有的进程都会有机会使用 CPU,从而使得多个进程可以并发运行。

多道批处理系统是一种早期的调度系统,它是指操作系统会将多个任务按照顺序进行调度,每个任务在运行时都会把 CPU 占用完,直到这个任务完成,才会调度下一个任务使用 CPU。这样,后面的任务必须等待前面的任务完成后才能开始运行,因此,多道批处理系统无法让多个任务同时运行,导致效率较低。

如果您想要验证当前操作系统是否采用分时调度系统,可以尝试创建多个进程,然后通过记录进程开始和结束的时间来观察是否存在误差。如果当前操作系统采用分时调度系统,那么每个进程都会有一个固定的时间片,在这个时间片内进行计算,因此可能会出现误差。如果当前操作系统采用多道批处理系统,那么每个进程都会占用 CPU 直到完成,因此不会出现误差。

注意,如果您使用的是多核 CPU,那么可能会有多个 CPU 核心同时运行多个进程,因此在这种情况下,同一时刻可能会有多个进程同时使用 CPU,这就会导致分时调度系统中的误差变得更小。

希望这些信息能帮助您了解当前操作系统的调度系统。

win11系统正式版介绍
可以借鉴下
https://blog.csdn.net/qq_29508575/article/details/120722406