Tag: 调度

具有实时优先级的pthreads

我需要管理具有不同优先级的线程池,因此我编写了以下线程启动过程: static int startup(thrd_t *thrd, thrd_sync_t *sync, int prio) { pthread_attr_t attr; int err; struct sched_param param = { .sched_priority = prio }; assert(pthread_attr_init(&attr) == 0); assert(pthread_attr_setschedpolicy(&attr, SCHED_FIFO) == 0); assert(pthread_attr_setschedparam(&attr, &param) == 0); err = pthread_create(&thrd->handler, &attr, thread_routine, (void *)thrd); pthread_attr_destroy(&attr); return err; } 原则上,不应允许非特权用户执行此代码:pthread_create()调用应返回EPERM,因为运行具有高优先级的线程具有安全隐患。 出乎意料的是,它适用于普通用户,但它根本不尊重给定的优先级。 我尝试通过删除pthread_attr_t并在创建线程后设置调度属性来修改代码: static int startup(thrd_t *thrd, thrd_sync_t *sync, int […]

如何在C语言中使用sched_getaffinity和sched_setaffinity?

我在尝试着: 使用处理器固定同时运行16个副本(每个核心2个副本) 在处理器固定(每个核心2个副本)的同时运行8个副本,并在某个function表示function1完成后将处理器核心翻转到最远的核心。 我面临的问题是如何选择最远的处理器。 有些朋友建议使用sched_getaffinity和sched_setaffinity,但我认为没有找到任何好的例子。

类调度到布尔可满足性最终部分

我几个星期以来一直在一个非常有趣的项目上工作但不幸的是背景非常复杂。 我已经问了3个问题: 类调度到布尔可满足性[多项式时间减少]最终部分 (这里) 类调度到布尔可满足性[多项式时间减少]第2部分 类调度到布尔可满足性[多项式时间缩减] 在他们两个中,我得到了答案(再次感谢@Amit),但现在到了最后一部分,谁将使这个项目可用:) 我现在可以管理: N个时间间隔。 C课程。 T老师。 S房间。 我的约束如下: 2名教师不能同时在同一个房间。 2门课程不能同时在同一个房间。 教师只能教授特定课程。 有些课程只能在特定的时间间隔内进行。 所以这是现在,我的结果: 但是这里是我要添加的最后一部分:我想管理一组学生,具有以下约束: 一个小组只有一些课程要做。 2个小组可以同时在同一个房间内进行特定课程(例如Magistral课程) 同样,我成功地隔离了约束,但我不知道如何将此约束转换为“时间间隔不应重叠”约束。 在此先感谢,祝贺,

可以确定fork()的执行顺序吗?

我正在练习教科书“操作系统概念第7版”,我对fork()工作方式有点困惑。 根据我的理解, fork()创建一个与其父进程并发运行的子进程。 但是,我们如何确切知道哪个进程首先运行? 我的意思是执行的顺序。 问题 使用fork()系统调用编写C程序,该系统调用在子进程中生成Fibonacci序列。 序列号将在命令行中提供。 这是我的解决方案: #include #include #include #include void display_fibonacci_sequence( int n ) { int i = 0; int a = 1; int b = 1; int value; printf( “%d, %d, “, a, b ); for( ;i < n – 2; ++i ) { value = a + b; printf( […]