我需要根据加权循环法返回不同的值,以便20中的1得到A,20中的1得到B,其余的转到C.
所以:
A => 5%
B => 5%
C => 90%
Run Code Online (Sandbox Code Playgroud)
这是一个似乎有用的基本版本:
import random
x = random.randint(1, 100)
if x <= 5:
return 'A'
elif x > 5 and x <= 10:
return 'B'
else:
return 'C'
Run Code Online (Sandbox Code Playgroud)
这个算法是否正确?如果是这样,可以改进吗?
今天早上我读到了Linux实时调度.根据Robert Love的"Linux系统编程"一书,有两个主要的调度.一个是SCHED_FIFO,fifo,第二个是循环法SCHED_RR.我理解了fifo和rr算法是如何工作的.但是,由于我们有系统调用,
sched_setscheduler (pid_t pid, int policy, const struct sched_parem *sp)
Run Code Online (Sandbox Code Playgroud)
我们可以为我们的流程明确设置调度策略.所以在某些情况下,由root运行的两个进程可以有不同的调度策略.作为一个具有SCHED_FIFO和另一个具有SCHED_RR并具有相同优先级的进程.在那种情况下,将首先选择哪个流程?FIFO分类过程或RR分类过程?为什么?
考虑这种情况.有三个过程A,B,C.所有人都有同样的优先权.A和B是RR分类过程,C是FIFO分类过程.A和B是可运行的(因此两者都在一段时间内交替运行).目前A正在运行.现在C变得可运行了.在这种情况下,是否
1. A will preempt for C, or
2. A will run until its timeslice goes zero and let C run. Or
3. A will run until its timeslice goes zero and let B run.
a) here after B runs till its timeslice becomes zero and let C run or
b) after B runs till its timeslice becomes zero and let A run again (then C will starve …
Run Code Online (Sandbox Code Playgroud) 场景:
对于包含3个元素[A,B,C]的列表:
您可以根据需要循环访问它.并且还有一个额外的计数功能记录每个元素的访问计数.
例如,如果访问它7次,应返回:
[A, B, C, A, B, C, A]
并具有以下每个元素的访问计数:
+–––––––––––+–––––––––––––––+ | Element | Access count | +–––––––––––––––––––––––––––+ | A | 3 | +–––––––––––––––––––––––––––+ | B | 2 | +–––––––––––––––––––––––––––+ | C | 2 | +–––––––––––+–––––––––––––––+
任何回应将不胜感激.
问候.
更新
添加另一个允许调用者指定应该过滤的元素列表的附加函数.仍然使用7次访问作为示例,过滤[C]:
[A, B, A, B, A, B, A]
+–––––––––––+–––––––––––––––+ | Element | Access count | +–––––––––––––––––––––––––––+ | A | 4 | +–––––––––––––––––––––––––––+ | B | 3 | +–––––––––––––––––––––––––––+ | C | 0 | +–––––––––––+–––––––––––––––+
并且,随后对getNextOne()的调用应始终获取访问计数低的模拟(模拟负载平衡的访问计数实现).因此,如果第二个调用者尝试访问它10次,则应返回:
[C, C, C, …
在基于优先级的循环算法中,当在较低优先级处理(P2)处理期间到达较高优先级处理(假设P1)时,必须抢占P2并且替代地处理P1.对?
然后,如果,在特定时间量之后(例如10ms)
是P1继续处理?(因为P1具有更高的优先级)
或P1被抢占并且调度程序发送P2(因为在循环中,在时间量之后,必须切换作业)
我认为第二个想法是对的,但是书让我感到困惑.(操作系统概念国际版本练习5.8)
非常感谢
我在实现这个小循环项目时遇到了一些麻烦.我尝试做的是生成游戏的预览日历
那我想输出;
第1天:第1队与第2队; 第3队与第4队; Team 5vs Team 6;
第2天第1队与第4队; 第6队与第3队; 第2队与第5队;
直到锦标赛结束;
这是我到目前为止所获得的代码,但是我很难让第一个团队修复而阵列的其余部分旋转......:
static void Main(string[] args)
{
string[] ListTeam = new string[] {"Equipe1", "Equipe2", "Equipe3", "Equipe4", "Equipe5", "Equipe6"};
IList<Match> ListMatch = new List<Match>();
it NumberOfDays = (ListTeam.Count()-1);
int y = 2;
for (int i = 1; i <= NumberOfDays; i++)
{
Console.WriteLine("\nDay {0} : \n",i);
Console.WriteLine(ListTeam[0].ToString() + " VS " + ListTeam[i].ToString());
for (y =ListTeam.Count(); y>0 ; y--)
{
Console.WriteLine(ListTeam[y].ToString() + " VS " + ListTeam[y+1].ToString());
y++; …
Run Code Online (Sandbox Code Playgroud) 我需要编写一个循环算法来计划加载到n个端点?
所以,如果我有服务器A,B和C.
我想确保为我得到的每个请求循环遍历它们.我如何在C#中执行此操作?
如果循环调度程序的时间片非常大(比如太大),我应该在操作系统中获得什么样的性能影响?
我唯一的想法是,需要大量时间的流程会受益,但大多数流程会占用少量时间,因此会导致延迟完成所有较小的流程?
示例:时间片为50,过程P1 = 400,P2 = 10,P3 = 150,P4 = 20,P5 = 10,P6 = 10
这是我最好的猜测我想知道,如果时间片太小或太大,你们有什么可以分享的.
我有一个客户表,并希望以循环方式为每个客户分配销售人员.
Customers
--CustomerID
--FName
--SalespersonID
Salesperson
--SalespersonID
--FName
Run Code Online (Sandbox Code Playgroud)
所以,如果我有15个客户和5个销售人员,我希望最终结果看起来像这样:
CustomerID -- FName -- SalespersonID
1 -- A -- 1
2 -- B -- 2
3 -- C -- 3
4 -- D -- 4
5 -- E -- 5
6 -- F -- 1
7 -- G -- 2
8 -- H -- 3
9 -- I -- 4
10 -- J -- 5
11 -- K -- 1
12 -- L -- 2
13 -- M -- 3
14 …
Run Code Online (Sandbox Code Playgroud) 我在 STM32F4DISCOVERY 板上运行 FreeRTOS,我有以下代码:
xTaskCreate( vTask1, "Task 1", 200, NULL, 1, NULL );
xTaskCreate( vTask2, "Task 2", 200, NULL, 1, NULL );
vTaskStartScheduler();
Run Code Online (Sandbox Code Playgroud)
其中 vTask1 是这个函数:
void vTask1( void *pvParameters )
{
volatile unsigned long ul;
for( ;; )
{
LED_On(0);
for( ul = 0; ul < mainDELAY_LOOP_COUNT; ul++ )
{
}
LED_On(2);
LED_Off(0);
}
}
Run Code Online (Sandbox Code Playgroud)
vTask2 有几乎相同的代码:
void vTask2( void *pvParameters )
{
const char *pcTaskName = "Task 2 is running\n";
volatile unsigned long ul;
for( ;; )
{ …
Run Code Online (Sandbox Code Playgroud) operating-system scheduling round-robin freertos stm32f4discovery
我有一个名为 items 的集合,其中包含三个文档。
{
_id: 1,
item: "Pencil"
}
{
_id: 1,
item: "Pen"
}
{
_id: 1,
item: "Sharpner"
}
Run Code Online (Sandbox Code Playgroud)
我如何查询以循环方式获取文档?考虑一下我同时收到多个用户请求。
所以一个人应该得到Pencil ,另一个人会得到Pen,然后另一个人会得到Sharpner。
然后从第一个重新开始。
如果改变模式是一种选择,我也准备好了。
round-robin ×10
scheduling ×3
algorithm ×2
c# ×2
c ×1
fifo ×1
freertos ×1
iterator ×1
java ×1
kernel ×1
linux ×1
mongodb ×1
python ×1
sql ×1
sql-update ×1