文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux调度使用的数据结构和重要函数

Linux调度使用的数据结构和重要函数

时间:2006-03-06  来源:ChinaE_OS

调度使用的数据结构

1:runqueue

Runqueu是调度器中非常重要的一个数据结构,每个CPU都有自己的runqueue。

 

 

对队列都有初始化、添加、删除等功能。

1:运行队列:Linux系统为处于就绪态的进程的队列,只有在这个队列中的进程才有机会获得CPU。

2:等待队列:,Linux系统也为处于睡眠态的进程组建了一个队列。 

 

requeue

Type

Name

Description

spinlock_t

lock

保护进程列表的自旋锁

unsigned long

nr_running

runqueue 列表中可运行进程数。

unsigned long

cpu_load

基于runqueue平均进程数的CPU 加载因子

unsigned long

nr_switches

CPU运行的进程切换次数

unsigned long

nr_uninterruptible

曾经在runqueue但是现在处于 TASK_UNINTERRUPTIBLE 状态的进程数

unsigned long

expired_timestamp

老进程已经插入expired列表中的时间

unsigned long long

timestamp_last_tick

最后一次时钟中断的Timestamp值

task_t *

curr

当前运行进程描述符的指针

task_t *

idle

进程描述符指针,指向当前CPU的swappe进程

struct mm_struct *

prev_mm

在进程却换工程中,保存正被替换的进程的地址空间

prio_array_t *

active

指向激活进程列表(arrays 中的一个)

prio_array_t *

expired

指向expired进程列表(arrays 中的一个)

prio_array_t [2]

arrays

激活和expired进程的2维数组,每个prio_array_t代表一组可运行进程,140个双向列表,静态bitmap以及这组进程的counter.

int

best_expired_prio

在expired进程中最低的静态优先级

atomic_t

nr_iowait

曾经在runqueue但是现在正在等待I/O操作完成的进程数

struct sched_domain *

sd

指向当前CPU的基本调度域

int

active_balance

标志一些进程将被从一个requeue转移到其他requeue队列

int

push_cpu

没有使用

task_t *

migration_thread

内核转移线程的进程描述符

struct list_head

migration_queue

将被从requeue中转移的进程列表

 

九:调度使用的重要函数

调度需要一系列函数配合完成调度这一功能,其中最重要的如下:

调度重要函数

scheduler_tick

更新当前进程的time_slice。该函数有两种调用途径:
1:timer,调用频率为HZ,并且在关中断的情况下调用。
2:fork代码,当改变父进程的timeslice时。

try_to_wake_up

唤醒sleep进程。当进程不在可运行队列时,将其放在可运行队列。

recalc_task_prio

更新进程的动态优先级

schedule

选择一个进程运行

load_balance

保持多系统下runqueue平衡。检查当前CPU,保证一个域中runqueue平衡。

相关阅读 更多 +
排行榜 更多 +
试着飞手游下载

试着飞手游下载

休闲益智 下载
血染小镇(功能菜单)中文版下载

血染小镇(功能菜单)中文版下载

飞行射击 下载
泰坦之旅高爆版下载

泰坦之旅高爆版下载

角色扮演 下载