「知識(shí)分享源碼分析」linux內(nèi)核調(diào)度詳解

一口Linux 2022-10-26 11:50

點(diǎn)擊左上方藍(lán)色“一口Linux”,選擇“設(shè)為星標(biāo)

第一時(shí)間看干貨文章?

?【干貨】嵌入式驅(qū)動(dòng)工程師學(xué)習(xí)路線
?【干貨】一個(gè)適合初學(xué)者的Linux物聯(lián)網(wǎng)綜合項(xiàng)目
?【干貨】Linux嵌入式知識(shí)點(diǎn)-思維導(dǎo)圖



?1

本文檔基于linux3.14 ,linux內(nèi)核調(diào)度詳解

1、概述

1.1、調(diào)度策略

定義位于
linux/include/uapi/linux/sched.h中

#define SCHED_NORMAL		0
#define SCHED_FIFO 1
#define SCHED_RR 2
#define SCHED_BATCH 3
/* SCHED_ISO: reserved but not implemented yet */
#define SCHED_IDLE 5
#define SCHED_DEADLINE 6

SCHED_NORMAL:普通的分時(shí)進(jìn)程,使用的fair_sched_class調(diào)度類

SCHED_FIFO:先進(jìn)先出的實(shí)時(shí)進(jìn)程。當(dāng)調(diào)用程序把CPU分配給進(jìn)程的時(shí)候,它把該進(jìn)程描述符保留在運(yùn)行隊(duì)列鏈表的當(dāng)前位置。此調(diào)度策略的進(jìn)程一旦使用CPU則一直運(yùn)行。如果沒有其他可運(yùn)行的更高優(yōu)先級(jí)實(shí)時(shí)進(jìn)程,進(jìn)程就繼續(xù)使用CPU,想用多久就用多久,即使還有其他具有相同優(yōu)先級(jí)的實(shí)時(shí)進(jìn)程處于可運(yùn)行狀態(tài)。使用的是rt_sched_class調(diào)度類。

SCHED_RR:時(shí)間片輪轉(zhuǎn)的實(shí)時(shí)進(jìn)程。當(dāng)調(diào)度程序把CPU分配給進(jìn)程的時(shí)候,它把該進(jìn)程的描述符放在運(yùn)行隊(duì)列鏈表的末尾。這種策略保證對(duì)所有具有相同優(yōu)先級(jí)的SCHED_RR實(shí)時(shí)進(jìn)程進(jìn)行公平分配CPU時(shí)間,使用的rt_sched_class調(diào)度類

SCHED_BATCH:是SCHED_NORMAL的分化版本。采用分時(shí)策略,根據(jù)動(dòng)態(tài)優(yōu)先級(jí),分配CPU資源。在有實(shí)時(shí)進(jìn)程的時(shí)候,實(shí)時(shí)進(jìn)程優(yōu)先調(diào)度。但針對(duì)吞吐量?jī)?yōu)化,除了不能搶占外與常規(guī)進(jìn)程一樣,允許任務(wù)運(yùn)行更長(zhǎng)時(shí)間,更好使用高速緩存,適合于成批處理的工作,使用的fair_shed_class調(diào)度類

SCHED_IDLE:優(yōu)先級(jí)最低,在系統(tǒng)空閑時(shí)運(yùn)行,使用的是idle_sched_class調(diào)度類,給0號(hào)進(jìn)程使用

SCHED_DEADLINE:新支持的實(shí)時(shí)進(jìn)程調(diào)度策略,針對(duì)突發(fā)型計(jì)算,并且對(duì)延遲和完成時(shí)間敏感的任務(wù)使用,基于EDF(earliest deadline first),使用的是dl_sched_class調(diào)度類。

1.2、調(diào)度類

定義調(diào)度類struct sched class

struct sched_class {
const struct sched_class *next;

void (*enqueue_task) (struct rq *rq, struct task_struct *p, int flags);
void (*dequeue_task) (struct rq *rq, struct task_struct *p, int flags);
void (*yield_task) (struct rq *rq);
bool (*yield_to_task) (struct rq *rq, struct task_struct *p, bool preempt);

void (*check_preempt_curr) (struct rq *rq, struct task_struct *p, int flags);

struct task_struct * (*pick_next_task) (struct rq *rq);
void (*put_prev_task) (struct rq *rq, struct task_struct *p);

#ifdef CONFIG_SMP
int (*select_task_rq)(struct task_struct *p, int task_cpu, int sd_flag, int flags);
void (*migrate_task_rq)(struct task_struct *p, int next_cpu);

void (*pre_schedule) (struct rq *this_rq, struct task_struct *task);
void (*post_schedule) (struct rq *this_rq);
void (*task_waking) (struct task_struct *task);
void (*task_woken) (struct rq *this_rq, struct task_struct *task);

void (*set_cpus_allowed)(struct task_struct *p,
const struct cpumask *newmask);

void (*rq_online)(struct rq *rq);
void (*rq_offline)(struct rq *rq);
#endif

void (*set_curr_task) (struct rq *rq);
void (*task_tick) (struct rq *rq, struct task_struct *p, int queued);
void (*task_fork) (struct task_struct *p);
void (*task_dead) (struct task_struct *p);

void (*switched_from) (struct rq *this_rq, struct task_struct *task);
void (*switched_to) (struct rq *this_rq, struct task_struct *task);
void (*prio_changed) (struct rq *this_rq, struct task_struct *task,
int oldprio);

unsigned int (*get_rr_interval) (struct rq *rq,
struct task_struct *task);

#ifdef CONFIG_FAIR_GROUP_SCHED
void (*task_move_group) (struct task_struct *p, int on_rq);
#endif
};

Next:指向下一個(gè)調(diào)度類,用于在函數(shù)pick_next_task、check_preempt_curr、set_rq_online、set_rq_offline用于遍歷整個(gè)調(diào)度類根據(jù)調(diào)度類的優(yōu)先級(jí)選擇調(diào)度類。優(yōu)先級(jí)為stop_sched_class->dl_sched_class->rt_sched_class->fair_sched_class->idle_sc*hed_class

enqueue_task:將任務(wù)加入到調(diào)度類中

dequeue_task:將任務(wù)從調(diào)度類中移除

yield_task/ yield_to_task:主動(dòng)放棄CPU

check_preempt_curr:檢查當(dāng)前進(jìn)程是否可被強(qiáng)占

pick_next_task:從調(diào)度類中選出下一個(gè)要運(yùn)行的進(jìn)程

put_prev_task:將進(jìn)程放回到調(diào)度類中

select_task_rq:為進(jìn)程選擇一個(gè)合適的cpu的運(yùn)行隊(duì)列

migrate_task_rq:遷移到另外的cpu運(yùn)行隊(duì)列

pre_schedule:調(diào)度以前調(diào)用

post_schedule:通知調(diào)度器完成切換

task_waking、task_woken:用于進(jìn)程喚醒

set_cpus_allowed:修改進(jìn)程cpu親和力affinity

rq_online:啟動(dòng)運(yùn)行隊(duì)列

rq_offline:關(guān)閉運(yùn)行隊(duì)列

set_curr_task:當(dāng)進(jìn)程改變調(diào)度類或者進(jìn)程組時(shí)被調(diào)用

task_tick:將會(huì)引起進(jìn)程切換,驅(qū)動(dòng)運(yùn)行running強(qiáng)占。由time_tick調(diào)用

task_fork:進(jìn)程創(chuàng)建時(shí)調(diào)用,不同調(diào)度策略的進(jìn)程初始化不一樣

task_dead:進(jìn)程結(jié)束時(shí)調(diào)用

switched_from、switched_to:進(jìn)程改變調(diào)度器時(shí)使用

prio_changed:改變進(jìn)程優(yōu)先級(jí)

1.3、調(diào)度觸發(fā)


調(diào)度的觸發(fā)主要有兩種方式,一種是本地定時(shí)中斷觸發(fā)調(diào)用scheduler_tick函數(shù),然后使用當(dāng)前運(yùn)行進(jìn)程的調(diào)度類中的task_tick,另外一種則是主動(dòng)調(diào)用schedule,不管是哪一種最終都會(huì)調(diào)用到__schedule函數(shù),該函數(shù)調(diào)用pick_netx_task,通過rq->nr_running ==rq->cfs.h_nr_running判斷出如果當(dāng)前運(yùn)行隊(duì)列中的進(jìn)程都在cfs調(diào)度器中,則直接調(diào)用cfs的調(diào)度類(內(nèi)核代碼里面這一判斷使用了likely說明大部分情況都是滿足該條件的)。如果運(yùn)行隊(duì)列不都在cfs中,則通過優(yōu)先級(jí)stop_sched_class->dl_sched_class->rt_sched_class->fair_sched_class->idle_sched_class遍歷選出下一個(gè)需要運(yùn)行的進(jìn)程。然后進(jìn)程任務(wù)切換。

處于TASK_RUNNING狀態(tài)的進(jìn)程才會(huì)被進(jìn)程調(diào)度器選擇,其他狀態(tài)不會(huì)進(jìn)入調(diào)度器。系統(tǒng)發(fā)生調(diào)度的時(shí)機(jī)如下:

à調(diào)用cond_resched()時(shí)

à顯式調(diào)用schedule()時(shí)

à從中斷上下文返回時(shí)

當(dāng)內(nèi)核開啟搶占時(shí),會(huì)多出幾個(gè)調(diào)度時(shí)機(jī)如下:

à在系統(tǒng)調(diào)用或者中斷上下文中調(diào)用preemt_enable()時(shí)(多次調(diào)用系統(tǒng)只會(huì)在最后一次調(diào)用時(shí)會(huì)調(diào)度)

à在中斷上下文中,從中斷處理函數(shù)返回到可搶占的上下文時(shí)

1.4、__schedule的實(shí)現(xiàn)

分析_schedule的實(shí)現(xiàn)有利于理解調(diào)度類的實(shí)體如果在

static void __sched __schedule(void)
{
struct task_struct *prev, *next;
unsigned long *switch_count;
struct rq *rq;
int cpu;

need_resched:
/*關(guān)閉搶占*/
preempt_disable();
/*獲取當(dāng)前CPU*/
cpu = smp_processor_id();
/*取得當(dāng)前cpu的運(yùn)行隊(duì)列rq*/
rq = cpu_rq(cpu);
/*更新全局狀態(tài),標(biāo)識(shí)當(dāng)前CPU發(fā)生上下文切換*/
rcu_note_context_switch(cpu);
prev = rq->curr; /*當(dāng)前運(yùn)行的進(jìn)程存入Prev中*/

schedule_debug(prev);

if (sched_feat(HRTICK)) //取消為當(dāng)前進(jìn)程運(yùn)行的hrtimer
hrtick_clear(rq);

/*
* Make sure that signal_pending_state()->signal_pending() below
* can't be reordered with __set_current_state(TASK_INTERRUPTIBLE)
* done by the caller to avoid the race with signal_wake_up().
*/

smp_mb__before_spinlock(); //內(nèi)存屏障
raw_spin_lock_irq(&rq->lock); //上鎖該隊(duì)列

switch_count = &prev->nivcsw; //記錄當(dāng)前進(jìn)程切換次數(shù)
if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { //當(dāng)前進(jìn)程非運(yùn)行狀態(tài),并且非內(nèi)核搶占
if (unlikely(signal_pending_state(prev->state, prev))) { //當(dāng)前進(jìn)程有信號(hào)待處理,設(shè)置進(jìn)程為就緒態(tài)
prev->state = TASK_RUNNING; //設(shè)置為RUNNING
} else {
deactivate_task(rq, prev, DEQUEUE_SLEEP); //將其從隊(duì)列中刪除
prev->on_rq = 0; //將在運(yùn)行隊(duì)列中變量置為0

/*
* If a worker went to sleep, notify and ask workqueue
* whether it wants to wake up a task to maintain
* concurrency.
*/

if (prev->flags & PF_WQ_WORKER) { //判斷是否是工作隊(duì)列進(jìn)程
struct task_struct *to_wakeup;

to_wakeup = wq_worker_sleeping(prev, cpu); //如果有工作隊(duì)列進(jìn)程喚醒則嘗試喚醒
if (to_wakeup)
try_to_wake_up_local(to_wakeup);
}
}
switch_count = &prev->nvcsw;
}

pre_schedule(rq, prev); //通知調(diào)度器,即將發(fā)生進(jìn)程切換

if (unlikely(!rq->nr_running))
idle_balance(cpu, rq);

put_prev_task(rq, prev); //通知調(diào)度器,即將用另一個(gè)進(jìn)程替換當(dāng)前進(jìn)程
next = pick_next_task(rq); //挑選一個(gè)優(yōu)先級(jí)高的任務(wù),使用調(diào)度類的方法
clear_tsk_need_resched(prev); //清空TIF_NEED_RESCHED標(biāo)志
clear_preempt_need_resched(); //清空PREEMPT_NEED_RESCHED標(biāo)志
rq->skip_clock_update = 0;

if (likely(prev != next)) { //如果如果選出的進(jìn)程和當(dāng)前進(jìn)程不是同一個(gè)進(jìn)程
rq->nr_switches++; //隊(duì)列切換次數(shù)更新
rq->curr = next; //將當(dāng)前進(jìn)程換成剛才挑選的進(jìn)程
++*switch_count; //進(jìn)程切換次數(shù)更新

context_switch(rq, prev, next); /* unlocks the rq */ /*進(jìn)程上下文切換 */
/*
* The context switch have flipped the stack from under us
* and restored the local variables which were saved when
* this task called schedule() in the past. prev == current
* is still correct, but it can be moved to another cpu/rq.
*/

/*上下文切換以后當(dāng)前運(yùn)行CPU也可能會(huì)改變,需要從新獲取當(dāng)前運(yùn)行進(jìn)程的運(yùn)行隊(duì)列*/
cpu = smp_processor_id();
rq = cpu_rq(cpu);
} else
raw_spin_unlock_irq(&rq->lock); //解鎖該隊(duì)列

post_schedule(rq); //通知調(diào)度器,完成了進(jìn)程切換

sched_preempt_enable_no_resched(); //開啟內(nèi)核搶占
if (need_resched()) //如果該進(jìn)程被其他進(jìn)程設(shè)置了TIF_NEED_RESCHED,則需要重新調(diào)度
goto need_resched;
}

其中有幾個(gè)重要的與調(diào)度器密切相關(guān)的函數(shù):

pre_scheduleà prev->sched_class->pre_schedule 在調(diào)度以前調(diào)用

put_prev_taskàprev->sched_class->put_prev_task 將前一個(gè)進(jìn)程調(diào)度以前放回調(diào)度器中

pick_next_taskà class->pick_next_task從調(diào)度器中選出下一個(gè)需要運(yùn)行的進(jìn)程

post_scheduleà rq->curr->sched_class->post_scheduleCFS中為NULL

2、 CFS調(diào)度

該部分代碼位于linux/kernel/sched/fair.c中

定義了const struct
sched_classfair_sched_class,這個(gè)是CFS的調(diào)度類定義的對(duì)象。其中基本包含了CFS調(diào)度的所有實(shí)現(xiàn)。

CFS實(shí)現(xiàn)三個(gè)調(diào)度策略:

1> SCHED_NORMAL這個(gè)調(diào)度策略是被常規(guī)任務(wù)使用

2> SCHED_BATCH 這個(gè)策略不像常規(guī)的任務(wù)那樣頻繁的搶占,以犧牲交互性為代價(jià)下,因而允許任務(wù)運(yùn)行更長(zhǎng)的時(shí)間以更好的利用緩存,這種策略適合批處理

3> SCHED_IDLE 這是nice值甚至比19還弱,但是為了避免陷入優(yōu)先級(jí)導(dǎo)致問題,這個(gè)問題將會(huì)死鎖這個(gè)調(diào)度器,因而這不是一個(gè)真正空閑定時(shí)調(diào)度器

CFS調(diào)度類:

n enqueue_task(…) 當(dāng)任務(wù)進(jìn)入runnable狀態(tài),這個(gè)回調(diào)將把這個(gè)任務(wù)的調(diào)度實(shí)體(entity)放入紅黑樹并且增加nr_running變量的值

n dequeue_task(…) 當(dāng)任務(wù)不再是runnable狀態(tài),這個(gè)回調(diào)將會(huì)把這個(gè)任務(wù)的調(diào)度實(shí)體從紅黑樹中取出,并且減少nr_running變量的值

n yield_task(…) 除非compat_yield sysctl是打開的,這個(gè)回調(diào)函數(shù)基本上就是一個(gè)dequeue后跟一個(gè)enqueue,這那種情況下,他將任務(wù)的調(diào)度實(shí)體放入紅黑樹的最右端

n check_preempt_curr(…) 這個(gè)回調(diào)函數(shù)是檢查一個(gè)任務(wù)進(jìn)入runnable狀態(tài)是否應(yīng)該搶占當(dāng)前運(yùn)行的任務(wù)

n pick_next_task(…) 這個(gè)回調(diào)函數(shù)選出下一個(gè)最合適運(yùn)行的任務(wù)

n set_curr_task(…) 當(dāng)任務(wù)改變他的調(diào)度類或者改變他的任務(wù)組,將調(diào)用該回調(diào)函數(shù)

n task_tick(…) 這個(gè)回調(diào)函數(shù)大多數(shù)是被time tick調(diào)用。他可能引起進(jìn)程切換。這就驅(qū)動(dòng)了運(yùn)行時(shí)搶占

2.1、調(diào)度實(shí)體

/*
一個(gè)調(diào)度實(shí)體(紅黑樹的一個(gè)節(jié)點(diǎn)),其包含一組或一個(gè)指定的進(jìn)程,包含一個(gè)自己的運(yùn)行隊(duì)列,一個(gè)父親指針,一個(gè)指向需要調(diào)度的隊(duì)列
*/

struct sched_entity {
/*權(quán)重,在數(shù)組prio_to_weight[]包含優(yōu)先級(jí)轉(zhuǎn)權(quán)重的數(shù)值*/
struct load_weight load; /* for load-balancing */
/*實(shí)體在紅黑樹對(duì)應(yīng)的節(jié)點(diǎn)信息*/
struct rb_node run_node;
/*實(shí)體所在的進(jìn)程組*/
struct list_head group_node;
/*實(shí)體是否處于紅黑樹運(yùn)行隊(duì)列中*/
unsigned int on_rq;

/*開始運(yùn)行時(shí)間*/
u64 exec_start;
/*總運(yùn)行時(shí)間*/
u64 sum_exec_runtime;
/*
虛擬運(yùn)行時(shí)間,在時(shí)間中斷或者任務(wù)狀態(tài)發(fā)生改變時(shí)會(huì)更新
其會(huì)不停的增長(zhǎng),增長(zhǎng)速度與load權(quán)重成反比,load越高,增長(zhǎng)速度越慢,就越可能處于紅黑樹最左邊被調(diào)度
每次時(shí)鐘中斷都會(huì)修改其值
具體見calc_delta_fair()函數(shù)
*/

u64 vruntime;
/*進(jìn)程在切換進(jìn)cpu時(shí)的sum_exec_runtime值*/
u64 prev_sum_exec_runtime;
/*此調(diào)度實(shí)體中進(jìn)程移到其他cpu組的數(shù)量*/
u64 nr_migrations;

#ifdef CONFIG_SCHEDSTATS
/*用于統(tǒng)計(jì)一些數(shù)據(jù)*/
struct sched_statistics statistics;
#endif

#ifdef CONFIG_FAIR_GROUP_SCHED
/*
父親調(diào)度實(shí)體指針,如果是進(jìn)程則指向其運(yùn)行隊(duì)列的調(diào)度實(shí)體,如果是進(jìn)程組則指向其上一個(gè)進(jìn)程組的調(diào)度實(shí)體
在set_task_rq函數(shù)中設(shè)置
*/

struct sched_entity *parent;
/* rq on which this entity is (to be) queued: */
/*實(shí)體所處紅黑樹運(yùn)行隊(duì)列*/
struct cfs_rq *cfs_rq;
/* rq "owned" by this entity/group: */
/*實(shí)體的紅黑樹運(yùn)行隊(duì)列,如果為NULL表明其是一個(gè)進(jìn)程,若非NULL表明其是調(diào)度組*/
struct cfs_rq *my_q;
#endif

#ifdef CONFIG_SMP
/* Per-entity load-tracking */
struct sched_avg avg;
#endif
};

其中幾個(gè)重要的變量

字段

描述

load

指定了權(quán)重, 決定了各個(gè)實(shí)體占隊(duì)列總負(fù)荷的比重, 計(jì)算負(fù)荷權(quán)重是調(diào)度器的一項(xiàng)重任, 因?yàn)镃FS所需的虛擬時(shí)鐘的速度最終依賴于負(fù)荷, 權(quán)重通過優(yōu)先級(jí)轉(zhuǎn)換而成,是vruntime計(jì)算的關(guān)鍵

Run_node

調(diào)度實(shí)體在紅黑樹對(duì)應(yīng)的結(jié)點(diǎn)信息, 使得調(diào)度實(shí)體可以在紅黑樹上排序

Sum_exec_runtime

記錄程序運(yùn)行所消耗的CPU時(shí)間, 以用于完全公平調(diào)度器CFS

On_rq

調(diào)度實(shí)體是否在就緒隊(duì)列上接受檢查, 表明是否處于CFS紅黑樹運(yùn)行隊(duì)列中,需要明確一個(gè)觀點(diǎn)就是,CFS運(yùn)行隊(duì)列里面包含有一個(gè)紅黑樹,但這個(gè)紅黑樹并不是CFS運(yùn)行隊(duì)列的全部,因?yàn)榧t黑樹僅僅是用于選擇出下一個(gè)調(diào)度程序的算法。很簡(jiǎn)單的一個(gè)例子,普通程序運(yùn)行時(shí),其并不在紅黑樹中,但是還是處于CFS運(yùn)行隊(duì)列中,其on_rq為真。只有準(zhǔn)備退出、即將睡眠等待和轉(zhuǎn)為實(shí)時(shí)進(jìn)程的進(jìn)程其CFS運(yùn)行隊(duì)列的on_rq為假

vruntime

虛擬運(yùn)行時(shí)間,調(diào)度的關(guān)鍵,其計(jì)算公式:一次調(diào)度間隔的虛擬運(yùn)行時(shí)間 = 實(shí)際運(yùn)行時(shí)間 * (NICE_0_LOAD / 權(quán)重)??梢钥闯龈鷮?shí)際運(yùn)行時(shí)間和權(quán)重有關(guān),紅黑樹就是以此作為排序的標(biāo)準(zhǔn),優(yōu)先級(jí)越高的進(jìn)程在運(yùn)行時(shí)其vruntime增長(zhǎng)的越慢,其可運(yùn)行時(shí)間相對(duì)就長(zhǎng),而且也越有可能處于紅黑樹的最左結(jié)點(diǎn),調(diào)度器每次都選擇最左邊的結(jié)點(diǎn)為下一個(gè)調(diào)度進(jìn)程。注意其值為單調(diào)遞增,在每個(gè)調(diào)度器的時(shí)鐘中斷時(shí)當(dāng)前進(jìn)程的虛擬運(yùn)行時(shí)間都會(huì)累加。單純的說就是進(jìn)程們都在比誰(shuí)的vruntime最小,最小的將被調(diào)度

Cfs_rq

此調(diào)度實(shí)體所處于的CFS運(yùn)行隊(duì)列

My_q

如果此調(diào)度實(shí)體代表的是一個(gè)進(jìn)程組,那么此調(diào)度實(shí)體就包含有一個(gè)自己的CFS運(yùn)行隊(duì)列,其CFS運(yùn)行隊(duì)列中存放的是此進(jìn)程組中的進(jìn)程,這些進(jìn)程就不會(huì)在其他CFS運(yùn)行隊(duì)列的紅黑樹中被包含(包括頂層紅黑樹也不會(huì)包含他們,他們只屬于這個(gè)進(jìn)程組的紅黑樹)

Sum_exec_runtime

  • ? 跟蹤運(yùn)行時(shí)間是由update_curr不斷累積完成的. 內(nèi)核中許多地方都會(huì)調(diào)用該函數(shù), 例如, 新進(jìn)程加入就緒隊(duì)列時(shí), 或者周期性調(diào)度器中. 每次調(diào)用時(shí), 會(huì)計(jì)算當(dāng)前時(shí)間和exec_start之間的差值, exec_start則更新到當(dāng)前時(shí)間. 差值則被加到sum_exec_runtime.

  • ? 在進(jìn)程執(zhí)行期間虛擬時(shí)鐘上流逝的時(shí)間數(shù)量由vruntime統(tǒng)計(jì)

  • ? 在進(jìn)程被撤銷時(shí), 其當(dāng)前sum_exec_runtime值保存到prev_sum_exec_runtime, 此后, 進(jìn)程搶占的時(shí)候需要用到該數(shù)據(jù), 但是注意, 在prev_sum_exec_runtime中保存了sum_exec_runtime的值, 而sum_exec_runtime并不會(huì)被重置, 而是持續(xù)單調(diào)增長(zhǎng)

每一個(gè)進(jìn)程的task_struct中都嵌入了sched_entry對(duì)象,所以進(jìn)程是可調(diào)度的實(shí)體,但是可調(diào)度的實(shí)體不一定是進(jìn)程,也可能是進(jìn)程組。

2.2、CFS調(diào)度

Tcik 中斷,主要會(huì)更新調(diào)度信息,然后調(diào)整當(dāng)前進(jìn)程在紅黑樹中的位置。調(diào)整完成以后如果當(dāng)前進(jìn)程不再是最左邊的葉子,就標(biāo)記為Need_resched標(biāo)志,中斷返回時(shí)就會(huì)調(diào)用scheduler()完成切換、否則當(dāng)前進(jìn)程繼續(xù)占用CPU。從這里可以看出CFS拋棄了傳統(tǒng)時(shí)間片概念。Tick中斷只需要更新紅黑樹。

紅黑樹鍵值即為vruntime,該值通過調(diào)用update_curr函數(shù)進(jìn)行更新。這個(gè)值為64位的變量,會(huì)一直遞增,__enqueue_entity中會(huì)將vruntime作為鍵值將要入隊(duì)的實(shí)體插入到紅黑樹中。__pick_first_entity會(huì)將紅黑樹中最左側(cè)即vruntime最小的實(shí)體取出。

end


一口Linux?


關(guān)注,回復(fù)【1024】海量Linux資料贈(zèng)送

精彩文章合集


文章推薦

?【專輯】ARM
?【專輯】粉絲問答
?專輯linux入門
?專輯計(jì)算機(jī)網(wǎng)絡(luò)
?專輯Linux驅(qū)動(dòng)
?【干貨】嵌入式驅(qū)動(dòng)工程師學(xué)習(xí)路線
?【干貨】Linux嵌入式所有知識(shí)點(diǎn)-思維導(dǎo)圖

一口Linux 寫點(diǎn)代碼,寫點(diǎn)人生!
評(píng)論
  •                                                                        
    廣州鐵金剛 2026-08-06 17:44 216982瀏覽
  • 做電池供電攝像頭、可視門鈴、戶外安防的同學(xué)應(yīng)該都踩過這個(gè)坑:攝像頭要拍,ISP、sensor、無線模塊全得開著,整機(jī)電流動(dòng)輒幾百 mA。一節(jié) 18650 撐不了幾天,用戶投訴“怎么又沒電了”。有人會(huì)說:加個(gè) PIR 人體紅外不就行了?問題是 PIR 怕熱、怕寵物、怕隔著亞克力/玻璃殼,而且只能感知“有溫差的人體移動(dòng)”,靈敏度飄忽。真正省電的思路應(yīng)該是:讓攝像頭平時(shí)徹底睡死,只有“前面有人/有動(dòng)靜”時(shí)才被一鍵喚醒——而負(fù)責(zé)這個(gè)“看門”角色的,最合適的是一顆低功耗雷達(dá)。一、為什么是雷達(dá),而不是 PI
    唯創(chuàng)知音語(yǔ)音芯片 2026-08-07 14:44 202瀏覽
  • 做藍(lán)牙音箱的工程師大概都碰過這個(gè)局面。產(chǎn)品要連手機(jī)放歌,要本地播開機(jī)提示音和按鍵音,還要接 App 做配網(wǎng)和狀態(tài)上報(bào)。三件事拆開,早先的常規(guī)做法是音頻藍(lán)牙一顆料、數(shù)傳藍(lán)牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫越大,BOM 越算越貴,待機(jī)電流和固件工作量也跟著漲。WT2605C 出來以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍(lán)牙、BLE 數(shù)傳和 MP3 本地播放三樣全包了。對(duì)藍(lán)牙音箱來說,最實(shí)在的好處就
    唯創(chuàng)知音語(yǔ)音芯片 2026-08-06 15:14 382瀏覽
  • 摘要東莞市恒創(chuàng)連接器有限公司(HCHGCONN)是位于廣東東莞的連接器源頭制造工廠,專注于連接器國(guó)產(chǎn)替代、小間距大電流連接器、線對(duì)板連接器、線對(duì)線連接器、板對(duì)板連接器、電源連接器及定制連接器開發(fā)。公司面向工業(yè)自動(dòng)化、新能源儲(chǔ)能、BMS、汽車電子、AI服務(wù)器、GPU供電、通信設(shè)備、醫(yī)療設(shè)備和智能家居等場(chǎng)景,提供從產(chǎn)品選型、替代評(píng)估、樣品驗(yàn)證到批量交付的一站式連接方案。恒創(chuàng)可支持 Molex、TE Connectivity、JST、Hirose、Samtec 等國(guó)際品牌部分系列的國(guó)產(chǎn)替代評(píng)估。常見替
    HC003 2026-08-07 10:14 180瀏覽
  • 導(dǎo)語(yǔ)在現(xiàn)代高速數(shù)字電路設(shè)計(jì)中,信號(hào)的完整性已不僅是理想波形推演,而是一場(chǎng)與物理非理想特性正面博弈的工程實(shí)踐。濾波器芯片作為凈化傳輸鏈路的關(guān)鍵屏障,其核心挑戰(zhàn)在于:能否有效識(shí)別并濾除那些隱匿在電平跳變過程中的亞納秒級(jí)瞬態(tài)脈沖干擾,這類干擾持續(xù)極短,卻足以在高速鏈路中引發(fā)誤觸發(fā)。然而,傳統(tǒng)函數(shù)發(fā)生器受限于采樣率與邊沿速率,根本無法忠實(shí)復(fù)現(xiàn)如此狹窄且陡峭的異常波形。針對(duì)此困境,德思特TS-AWG7000系列任意波形發(fā)生器以17 GS/s采樣率與50 ps原生邊沿速度,為瞬態(tài)脈沖提供精細(xì)刻畫,配合SPG
    德思特測(cè)試測(cè)量 2026-08-05 14:06 5瀏覽
  • 一、方案簡(jiǎn)介在Buildroot構(gòu)建的嵌入式Linux系統(tǒng)中部署Flutter應(yīng)用,主流有兩套成熟的開源方案,分別適配不同的顯示場(chǎng)景與開發(fā)需求:方案一:flutter-elinux(Sony開源方案)由索尼官方維護(hù)的嵌入式Linux Flutter工具鏈,既支持DRM/GBM直接渲染,也兼容Wayland、X11等多種顯示后端,場(chǎng)景適配性更廣。方案二:flutter-pi(輕量級(jí)嵌入器)一款輕量級(jí)Flutter引擎宿主程序,僅基于底層DRM/GBM接口實(shí)現(xiàn)渲染,無需依賴桌面環(huán)境,資源占用更低,更
    飛凌嵌入式 2026-08-07 09:34 182瀏覽
  • 在物聯(lián)網(wǎng)從“萬物互聯(lián)”邁向“萬物智聯(lián)”的進(jìn)程中,LTE Cat.1憑借其在速率、成本與網(wǎng)絡(luò)覆蓋之間的完美平衡,正成為中低速物聯(lián)網(wǎng)市場(chǎng)的絕對(duì)主力。隨著2G/3G網(wǎng)絡(luò)的逐步退網(wǎng)以及新國(guó)標(biāo)對(duì)終端設(shè)備智能化、定位功能的強(qiáng)制要求,Cat.1模組迎來了爆發(fā)式的增長(zhǎng)窗口。在這一關(guān)鍵節(jié)點(diǎn),基于華為海思Hi2131芯片設(shè)計(jì)的LTE Cat.1模組,憑借其在能效、射頻、架構(gòu)及物理規(guī)格上的底層創(chuàng)新,成功打破了“高性能必高功耗”的傳統(tǒng)魔咒,為行業(yè)提供了極具競(jìng)爭(zhēng)力的連接最優(yōu)解。核心技術(shù)優(yōu)勢(shì):重塑Cat.1能效與連接標(biāo)桿海
    用戶1778981989717 2026-08-05 21:04 206瀏覽
  • 產(chǎn)品使用18V供電,配套4串鋰離子電池,需要設(shè)計(jì)一個(gè)充電器。因?yàn)檩斎?8V,電池最高 16.8V,壓差僅 1.2V。因?yàn)閴翰钐?。使用開關(guān)型的充電控制芯片不穩(wěn)定。嘗試自行設(shè)計(jì)一個(gè)。整體采用分立三極管 + TL431架構(gòu),分4個(gè)功能單元:使能控制回路、限流環(huán)路、TL431 精密恒壓反饋環(huán)路、PNP 功率管主功率輸出回路;實(shí)現(xiàn)完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經(jīng) R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導(dǎo)通,對(duì)地拉低 R1、R2 組成的分壓控制節(jié)點(diǎn)電位;該節(jié)點(diǎn)直
    southcreek 2026-08-07 13:45 491瀏覽
  •        很多人只見過封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩(wěn)定起振的成品,要經(jīng)過十幾道精密工序。它內(nèi)部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個(gè)生產(chǎn)過程里哪怕0.1微米的誤差,都會(huì)直接廢掉整批產(chǎn)品,這也是小尺寸晶振過去長(zhǎng)期依賴進(jìn)口,國(guó)內(nèi)廠商花了十幾年才啃下量產(chǎn)硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
    TKD泰晶科技 2026-08-07 08:43 539瀏覽
  • 讓微弱脈沖信號(hào)更清晰——鎖相放大器集成Boxcar平均器在脈沖激光、泵浦-探測(cè)、時(shí)間分辨光譜、飛行時(shí)間質(zhì)譜等實(shí)驗(yàn)中,真正需要測(cè)量的信號(hào)往往只出現(xiàn)在一個(gè)很短的時(shí)間窗口內(nèi),卻被淹沒在遠(yuǎn)大于它的噪聲和背景之中。 針對(duì)這類穩(wěn)定重復(fù)的微弱脈沖與瞬態(tài)信號(hào),賽恩科儀為OE2052雙通道數(shù)字鎖相放大器帶來全新的Boxcar Averager功能升級(jí):在鎖相檢測(cè)之外,進(jìn)一步提供從周期波形觀察、門控測(cè)量到多周期平均的完整數(shù)字Boxcar測(cè)量鏈路。 Boxcar平均器,如何從噪聲中“截取”目標(biāo)信號(hào)?Boxcar平均器
    SSI_賽恩科儀 2026-08-07 15:49 18137瀏覽
  • 在前六期中,我們已經(jīng)分別討論了 CRA 的適用范圍、整體影響、漏洞通報(bào)義務(wù)、風(fēng)險(xiǎn)評(píng)估與技術(shù)文檔證據(jù)鏈、第三方組件與 SBOM 供應(yīng)鏈治理,以及產(chǎn)品上市后的支持期、安全更新、用戶說明和終止支持管理。到這里,企業(yè)已經(jīng)能夠回答幾個(gè)核心問題:產(chǎn)品是否落入 CRA 適用范圍,產(chǎn)品由哪些組件構(gòu)成,企業(yè)如何證明自己在設(shè)計(jì)、開發(fā)和上市前采取了必要的安全措施,以及產(chǎn)品上市后如何持續(xù)維護(hù)和安全下線。但對(duì)于真正準(zhǔn)備落地 CRA 合規(guī)的企業(yè)來說,還有一個(gè)更現(xiàn)實(shí)的問題:CRA 的法規(guī)條文相對(duì)原則化,企業(yè)應(yīng)當(dāng)如何把“網(wǎng)絡(luò)安
    虹科云科技 2026-08-03 16:51 252212瀏覽
  • 文:杜杰編輯:侯煜當(dāng)?shù)貢r(shí)間7月28日,美國(guó)特朗普政府落地最新科技封鎖政策,美國(guó)聯(lián)邦通信委員會(huì)(FCC)正式更新《受管制清單》,新增兩大類設(shè)備——境外生產(chǎn)的先進(jìn)機(jī)器人設(shè)備、境外生產(chǎn)的聯(lián)網(wǎng)電力逆變器。FCC在官方情況說明書中明確,該類境外制造產(chǎn)品,“會(huì)對(duì)美國(guó)國(guó)家安全或美國(guó)民眾的人身安全構(gòu)成無法承受的風(fēng)險(xiǎn)”。本次新規(guī)設(shè)置明確豁免機(jī)制:經(jīng)美國(guó)國(guó)防部(DoW)、電力逆變器品類經(jīng)美國(guó)國(guó)土安全部(DHS)審核并授予“有條件批準(zhǔn)”,認(rèn)定對(duì)應(yīng)設(shè)備品類不存在重大安全風(fēng)險(xiǎn),即可獲得準(zhǔn)入豁免。同時(shí)政策嚴(yán)格執(zhí)行新老劃斷原
    華爾街科技眼 2026-08-03 21:28 370瀏覽
  • 樓宇自控里的“巴別塔”一棟智慧樓宇、一個(gè)產(chǎn)業(yè)園區(qū)里,暖通空調(diào)運(yùn)行著廠商私有協(xié)議,照明系統(tǒng)遵循專屬通信標(biāo)準(zhǔn),變配電、門禁安防各成體系——設(shè)備間數(shù)據(jù)壁壘森嚴(yán),上位平臺(tái)對(duì)接全靠定制化 “翻譯” 開發(fā),不僅成本高企,交付周期也難以管控。這就是樓宇自控行業(yè)多年的痛點(diǎn):協(xié)議林立、封閉林立。而破局的鑰匙,早在30多年前就已經(jīng)寫好了——BACnet。作為ASHRAE制定的樓宇自控國(guó)際標(biāo)準(zhǔn)協(xié)議,BACnet是如今全球樓宇自控系統(tǒng)(BAS)互聯(lián)互通的“通用語(yǔ)言”。新風(fēng)機(jī)、冷源群控、變配電、照明、門禁,凡是需要被樓宇
    飛凌嵌入式 2026-08-10 09:26 219瀏覽
我要評(píng)論
0
點(diǎn)擊右上角,分享到朋友圈 我知道啦
請(qǐng)使用瀏覽器分享功能 我知道啦
主站蜘蛛池模板: 契卡 高清下载| 《overflower》第一季无马赛免费观看直| 《爱我几何》莫妮卡原版免费观看 | 小公主苏菲亚第四季免费观看| 夫妻一场电视剧免费观看| 渔家三个姑娘1| 铁蹄下的村庄| 简言的夏冬在线观看| 爱很美味| 千金郝板栗无删减版观看| 山西科教频道| 最强和音| 偏偏喜欢你| 二胡独奏演奏曲大全| 痞子英雄在线观看| 电影金银梅| 电影平凡岁月的魅力| 人民万岁电影| 《总统夫人》星克莱尔1997年满天星在线免费观看 | 终物语下| 朱日和阅兵2017| 斗罗大陆208集免费观看完整版 | 孤芳不自赏电视剧全集| 退钱哥希望大家记住落后就要挨打| 西班牙《掌中之物》电影 | 朋友的妈妈2017完整版| 离经叛道| 同学的妈妈韩国| 功夫电影国语版免费播放| 年轻的家长3| 母亲母亲演员表| 两个好媳妇| 爱情悠悠草| 《暮光之城4:破晓(下)》| 三朵金花电视剧全集免费播放| 李恩美《维修》 | 换拌5| 在线杀人游戏| 苹果范冰冰| 农民伯伯2免费完整版电影| 暹罗之恋完整版| 神经侠侣粤语| 爱我几何未删减完整版| 《抵债的朋友麦子》剧情介绍| 社长夫人的美貌电影完整版在线观看 | 太空堡垒第一部国语版| 替夫还债3高清完整版在线观看| 致命id在线观看| 想爱就爱在线视频| 高清《余罪2》全集在线观看| 《马上天下》电视剧| 全职高手第三季免费观看动漫| 铁甲雄心第二季| 韩国电影和部长出差| 《部长出差的日子》在线观看| 解密大行动| 辛亥革命下载| 今天开始我们韩剧| 白蛇:缘起电影| 曝福建四所野鸡大学| 山河令电视剧高清在线观看完整版| 灵魂符咒| 风流女管家免费观看电视剧| 一号档案守护者| 九号平衡车nano| 珍妮泰山1995全集免费看| 人间中毒在线观看完整版爱| 芒果香谢军| 权力的游戏第一季免费观看完整| 木下檀檀子《女邻居》| 定乾坤:女丞相朝堂短剧全集| 舞林争霸方俊| 西游记86版全集免费播放| 杨敏1—5集免费观看电视剧下载| 钓钩的绑法| 意大利嘴唇1981| 莫妮卡《爱我几何》电影免费无删减 | 加勒比海盗3电影| 金寡妇在线观看免费版电视剧| 不惑之旅电视剧全部免费| 大内密探零零| 小姑子3| 痛30集全播放免费观看| 我老婆是学生会长第二季 | 特别的酒店1993年美国| 法国监狱高压2在线观看完整| 哪吒2在线观看免费版高清动画| 超星五灵侠第七季免费观看| 公与浮之| 电视剧天眼| 秘密人质| 性暴行| 巨神战击队玩具| 隔壁的邻居| 4s44-cn战狼6免费高清版999加拿大版 | 《纯情罗曼史》| 危险的性爱| 部长出差的日子免费在线观看 | 高清凤仙花未删减| 《艳女伦交》| 搜神记在线观看| 青岛一酒店疑闪爆| 新版大头儿子小头爸爸| 堕落的女律师| 十大奇冤 电视剧| 明珠奇谭| 《Overflower》动漫第一季在线观看| 伦敦奥运会男篮决赛录像 | 国产观看免费高清电视剧在线播放 | 德国空乘4正片| 《屠宰呕吐娃娃》高清完整版| 熊出没过年动画片| 上海一家人电视连续剧全集| 满洲里市| 没能成为勇者的我| 魔法动漫| 《王李丹妮极乐宝鉴2》| 朋友的老婆1| 浙江不明飞行物冲破云层坠落| 锵锵锵免费完整观看| 高清《老师·好》| 傅艺伟版封神榜| 岳 睡女胥中文2| 中字年轻漂亮的儿媳BD| 铁马骝2之街头杀手| 特蕾西1987满天星| 雾都猎狐| 扶着腰坐好深不要| 诱她曾辉短剧第二季| 亲爱的自己48集免费观看完整版| 雯迪vlog| 凭祥市| 大兵日记全集| 李采潭同学妈妈电影免费观看中文 | 长月无烬电视剧免费观看| 台湾电影黛比系列之女家教在线观看| 唐人街探案电视剧| 沉香如屑全集在线观看| 在线下象棋在线玩| 黑暗荣耀电视剧| 欢乐喜剧人第一季综艺| 花与蛇7免费完整版全集高清| 彻夜之歌第一季免费观看完整版| 伪恋ova3| 羞羞答答免费在线观看| 我是特种兵火凤皇| 《香醇的绣感》| 3d版肉蒲团| 蜘蛛侠1电影高清| 做aj的电视剧大全免费观看英国| 马龙被疑打假球| 马克龙访问印度受到豪华接待| 鬼打鬼 电影| 四喜在线观看免费全集免费播放| 西班牙《掌中之物》电影| 娘家的故事第四部| 陆军特战队片尾曲| 欧美战狼4免费完整版| 鉴宝女王:古玩市场我称霸全集免费 | 龙珠国语版| 《驯服小峓子》完成版| 特殊交易在线观看| 四川孃孃51岁拿下电竞冠军| 水润女人电影在线观看| 蜀南竹海门票| 美味风蛇图纸| overflower第一季在线观看完整版做饭| 督错了洞| 把腿把开学长都给你高| 罗振宇跨年演讲2021年| 极度兽性在线观看| 男按摩师做乳房按摩电影在线观看| 千王之王 周星驰| 《美丽小蜜桃》1| 露营后营露宿第一季未增减0.0.0 H版《激战丛林》中文完整版 | 大象席地而坐免费| 热血传奇补丁| 白峰电影免费看最新章节| 花容月貌电影免费| 《唐朝诡事录4》免费观看| 房奴试爱电视剧开头原声带| 韩雪后台| 酒店第1-5集免费观看| 春光灿烂猪八戒2| 地火电视剧40全集播放| 有色视频在线播放| 暖暖 在线观看 免费| 蛮好的人生26免费| 《两位少妇按摩》HD中字 | 韩国r级 电影| 麦迪逊河谷 第一季全集观看| 女版斯巴达《满天星》电影免费观看 | 激战酒店1-5集免费播放| 绝命派对 qvod| 动感之星小玲34集视频| 稗记舞咏| 风华八零小娇妻短剧免费观看| 成全免费高清动漫观看在线看动漫 | 澳门风云2免费完整版| 月亮女王| 壮志凌云2011美国女版| 湘北小成| 电影黄河绝恋| 玉莆团在线观看| 美容室的待遇4中文版| 钟馗娘子| 宇宙面包店未删减| 色之恶鬼| melody在线播放高清观看女超人 | 369你懂得电影| 小蜜蜂电影| 唐朝妖姬| 战狼6国语版高清下载| 地狱之歌ova高清| 白雪公主H版无删在线播放| 《大器晚成第二季》电视剧| 金瓶梅全集观看完整版| 电影《特邀外卖员》电影借种播放| 袁咏仪电影| 赌侠2:上海滩赌圣 电影| 电影平凡岁月的魅力| yy6680| 渔夫的妻子意大利赛仑| 海藻的第一次| 猎豹突击电视剧| 真还传还了8.24亿| 欲罢不能美综| 女教师引诱12| 蒸发太平洋| 归路电视剧免费完整版观看高清| 春节起源于什么时期| 插曲的痛免费高清观看完| 残奥会主题曲| 美国忌讳2美国1984| 安丘市| 啥事佩奇| 莉兹坎贝奇的成人电影品味人生| 宝宝辅食添加时间表| 黑道风云20年第二部| 白峰电影在线观看免费版2023年上映时| 突围靳东43集全集免费观看策驰 | 战狼6免费下载完整版国语高清| 德国最强大脑| 沧元图动漫在线观看完整版免费| 牧神记40在线观看| 我是哪吒2之英雄归来| 我在伊丽莎白截取了一个小片段 | 电视剧阳光灿烂周三强| 不雅空城| 杨玉环的故事| 玄好心经19| 张译以法之名免费观看| 咒在线观看免费观看完整2022| 儿媳妇的味道l| 香港明星足球队将踢贵州村超| 丈夫属下占用妻子电影| 愚者的身份未删减| 不思议游戏全集| 宁陵县| 《想享用朋友的妻子》电影| https://www.yalan365.com/shiwutv/rindafid.html | 利剑行动电视剧全集| 电视剧二婶| 小妻太水嫩陆教授花式宠免费观看| 当旺爸爸剧情| 窃欲无罪完整版电影免费播放 | 大过年的电视剧免费观看全集 | 《特别酒店》免费观看| 派派完整版| 鲜花盛开的村庄| 善良的嫂子在线观看| 电视剧红玫瑰黑玫瑰 | 长安二十四计全集免费看| 和女上司一起去研修| 人走茶凉什么意思| 姐妹牙医1986电影免费观看| 德川幕府电影| 爱情鸟在线论坛1在线观看| 19岁电影免费完整观看| 我怕来不及剧情介绍| 金银梅5一10普通话版免费观看| 《吠城》电影高清免费观看全集| 爱与罚全集| 《工地夫妻》原声版| 泰剧妒海主题曲| 小学生神作文| 现在我们相爱吗| 酒店1-80集全免费观看央视网| 触手捕获魔法少女动画| 《新入职的女员工》全集 | 禁忌4年转一代最忌三种东西| 三打白骨精西瓜影音| 西班牙版《掌中之物》| 非你莫属2013| 张家辉电影全集| 跑男第九季| 部下是我的初恋| 解放海南岛全集免费完整版| 老版敌营十八年| 满天星在线高清电影免费看| 《梦境》电影| 公交车免费观看完整版电视剧| 动画片排行榜| 胃癌的发生与生活习惯密切相关 | 美国的海棠红2| 金牌得主 第二季| 我不会爱你| 锦衣卫:女扮男装当缇骑短剧全集| 东京塔之越南俘虏营| 《玉茗茶骨》免费播出| 下女在线| 眷思量免费观看全集| 麦乐迪和父亲故事电影叫什么| 孤岛惊魂电影在线观看完整免费高清| 映山红简谱| 总是很可爱第一季免费观看| 电影聊斋惊艳奇谭免费观看| 私人女子监狱意大利1982年 | 郑州娃娃奶奶| 电影《女子护卫队》在线观看 | 永不磨灭电视剧免费西瓜| 魔女由熙| 极限挑战第2季 综艺| 女版捉鬼敢死队满天星| 美丽小蜜桃7免费播放全集电视剧 德国炸毁最现代化电厂 | 白仙儿动画搞笑| 街头俏妞| 《21世纪爱情指南》免费观看高清| 娘家的故事之爱的奉献| 白峰电影在线观看高清| 电影《乌托邦》免费观看| 康熙谈靘谭1一10太后剧情解析| 黑帮大佬爱上我第二集完整版| 铁道游击队| 电影建党伟业在线观看| 电影《默杀》免费观看高清版| 叶玉卿情不自禁快播| 美国电影片段| 《新手律师》法国版免费观看网站| 完美世界免费观看全集| 婆婆的味道大结局| 应召女郎的秘密日记| 锦医风华短剧免费观看完整版| 《美容院的特殊待遇》主演| 北京打车难| 罗丽星克莱尔《X迷宫》| 好看的女人克劳迪亚斯电影| overflow第一季樱花动漫 | 怪兽黑暗大陆| 电器维修工的艳遇2| 搜查瑠公圳| 地位变 改变土妹子的纯洁异新交往| 张惠妹演唱会下载| 高达00第二季国语版| 韩剧《不懂女人》全集完整版| 妻子的叛乱国语版| 破处之旅| 妈妈的职业2韩剧中文翻译| 我的父亲母亲免费观看全集| 铿钢锵锵锵锵锵好多少视频| 名侦探学院7| 美味的老婆| 需要爸爸播种2美版在哪里可以看| 捉妖记电影在线观看| 男人和女人愁愁愁电视剧全集免费| 战国basara石田三成| 楼下的房客电影无删减| 天地英豪第三部| 美国电影《小辣椒3》免费观看| 电视剧新五女拜寿| 《如梦令》电视剧| 伟大征程导演| 3v1三人一次性体检视频 | 悬疑剧《重影》| 地下美人电影完整版| 和部长一起泡温泉| 无双电影在线观看免费版| xl司令第一季全集在线| 短剧蛇园全集免费播放| 新还珠格格第三部全集| 李碧华鬼魅系列:迷离夜| 侏罗纪世界百度云盘| 阿朱无删减版HD免费观看 | 高清秒速5厘米未删减| 秘密女搜查官在线观看| 名侦探柯南:独眼的残像| 九歌电影| 雷神4爱与雷霆| 日剧second love| 欲海大帝| 千言万语在线观看| 环太平洋百度影音高清| 坏修女电影在线高清观看| 《新入职员工2| 向涟仓士献上纯洁| 刚结婚陪部长出差电影| 北上电视剧在线观看全集免费播放| 男人女人愁愁愁电视剧免费播放| 我是特种兵之火凤凰在线观看| 海扁王2 下载| 复仇之火完整免费观看| 百万英镑电影| 安塔芮丝百度影音| 卖乐迪女超人| 女人被躁到高潮嗷嗷叫69| 迷宫克莱星尔| 龙月泰剧1集免费观看| 女战狼6女战狼免费播放| 我知道我爱你免费观看| 21世纪,爱惜指南| 疯狂动物城免费中文版| 19岁大学生电视连续剧| 镜双城电视剧在线观看| 強暴處女1-12系列| 约会大作战第四季在线观看完整版| 电影《牙医姊妹》免费播放在线观看| 失业魔王动漫| 美国娃娃脸4(经典版)在线观看| adn-018| 卖房子女销售3| 跳水世锦赛女子十米台决赛直播| 韩剧《装修去闺蜜家》| 我的人间烟火电视剧免费下载| 坎贝奇拍的电影《无憾》免费观看| 古镇异缘| shameless第二季在线播放| 佳偶天成电视剧免费观看| 孙红雷20集全免费观看| 埃及皇后| 情圣是怎么练成的| 龙胜| 解放的潘多拉 下载| 你是我的幸福在线观看| 亲爱的小孩免费看电视剧| 且试天下第45集全集免费| 小小之少女16| 霍元甲电影| 养个孩子不容易电视剧| 黑白配国语版在线看| 狂乱家族| 《法国空乘4》免费播放| 一代枭雄剧情介绍分集| 广州民宅突发火灾| 幼儿舞蹈悄悄话| 屠夫状元| 法国空乘5在线观看| 飞驰人生2在线观看免费完整版| 3v1三人一次性体检电影| 冷血人狼完整版| 榆林市| 家用摄像头| 箭在弦上大结局| 销售的销售秘密6HD中字2017| 阿童木 电影| 永生战士2电影| 美丽小蜜桃5免费在线观看| 铁血壮士电视剧| 从裸开始| 以家人之名电视剧在线观看免费| 火火的姑娘云裳广场舞| 锵锵锵锵锵锵锵免费观看完整版大全| 平凡的世界电视剧全集| 欲火蝴蝶泰剧| 处女免费视频| 大象席地而坐免费| 张警官三部曲高清观看| 屌丝男士第4季全集爱奇艺| 免费观看97| 北京打车难| 善良的妻子免费观看| 真假千金互换:人生逆袭短剧全集| 黑洞频率| 中文字Dl幕岳在线观看| 银魂138| 山河枕全集免费观看| 《水电工人的艳遇》免费| 愈合伴侣 电影| 粉色大白菜法国原版| 死亡救赎| 羊了个羊规则| 日本战狼4免费完整版| 老严有女不愁嫁片尾曲| 赌博默示录国语版| 世间始终你好完整版原唱| 恋恋维纳斯泰剧| 电影《千金与佣人》免费观看全集| 电视剧前行者免费观看完整版| 新瓶梅| 绝世唐门112集完整版| 无颜之月迅雷下载| 电视剧金瓶梅在哪里看| 一生一世电视剧在线高清免费观看| 达芬奇小姐的启蒙3| 郭采洁陈意涵| 女教授的隐秘魅力电影| 斯托雅《壮志凌云》| 苍茫的天涯是我的爱电影| 《法国少女》满天星| 陈楚生原来的我| 德清点子| 郝板栗《千金小姐| 燕赤霞猎妖传| 七公主韩剧| 囤货种田:空间农女短剧全集| 叶罗丽时间与免费观看完整版 | 火蓝刀锋土豆| 爱神电影| 麦乐迪女超人在线观看完整免费高清原声满天星百度网盘 | 樱桃小丸子来自意大利的少年| 二十一世纪性格指南全集免费看| 最刺激的夫妻互换| 天休营第一季| 女超人无删减完整| 一路向西2在线观看| 法国电影《女超人》未删减版| 天星之爱泰剧免费观看全集| 那年花开月正圆下载| 爱我几何未删减完整版| 夜行神龙第二季| 河南戏曲频道在线直播| 孩子走丢妈妈冲上舞台求助| 谈判专家在线观看| 《好运家》40集全免费看| 人生之路电影免费观看| 女儿的男朋友av| 蜜桃成时33d国语| 电影《呼吸》| 《晚安,为我而眠的妹妹》| 星汉灿烂电视剧全集在线观看免费| 我学生的妈妈5字 | 《印度空姐》完整版在线观看 | 无人区电影高清免费| 柔铺团之极宝乐鉴宝鉴电影在线播放粤语 | 青春禁区在线观看免费国语| 女子护卫队电影在线观看| 家教reborn| 睫毛膏2同级别电影| 青云志2第二部免费播放| 建议取消强制自动续费| 岳母的味道| 那些年我们追过的女孩完整版免费| 调音师电影在线观看免费版 | 老地方传奇| 大侦探11| 唐朝禁宫秘史在线观看| 十九岁大学生真人免费观看电视剧| 冰湖重生| 城中之城电视剧全集免费| 东方茱丽叶全集| 七号房的礼物在线观看| 莉娜安德森电影全集| 恶魔恋人| 探索新境纪录片在线观看免费| 激战丛林h| 《胆小鬼》电视剧| 李云迪为什么嫖娼| 电影《急诊护士》完整版| 姨母的诱惑免费在线观看| 大唐来的苏无名| 罗丽星克莱尔电影在线| 国家地理频道| 七台河市| 吴奇隆前妻| 成事在人HD高清在线| 学生酒店1-580集| 明年今日mv| 复仇者联盟字幕| 电影双女任务| 大宅门第二部全集| 我知道我爱你免费观看| 牙医姊妹1986电影免费观看完整版 | 高清好运未删减| 刘欢 国际歌| 高压监狱1时43分多少| 大喜临门| 美国谍梦| 相亲2高清| 刺杀游戏2011| 国产观看免费高清电视剧在线播放| 大鱼海棠| 毒妃在上全集免费| 韩国电影温泉酒店的特殊待遇| 清宫性史之名妓风流| 肮脏的交易| 韩国电影 好姑娘干 在线观看| 最新蛇片| 高清《间之楔》动漫| 滚滚红尘免费| 老卫和淑容船上第五季| 《激战丛林》电影在线观看意大利| 丰满的继坶3中文在线观看| 老板的女儿电影| 夏日福星 电影| 彷徨之刃免费观看完整版| 姐姐的朋友2在线观看| 台湾电视剧情义无价| 玄女心经1免费| 四渡赤水电影高清完整版视频| 临时同居 电影| 恐龙战队国语版| 睫毛膏3欧美版| 《25岁的女高中生》| 知不知道简谱| 坎佩奇在线播放免费观看| 鬼吹灯之精绝古城免费观看版| 《聊斋之鬼狐》完整版| 黑白配视频播放免费观看| 怎么折滑翔纸飞机| 年轻的阿姨| 《护士长》水果派解说| 反黑粤语在线观看| 大冰小将| 木下檀檀子《女邻居》| 东北黑道风云20年2| 嘘国王在冬眠全集免费观看| 韩国 外卖员的特殊待遇| 黑衣人3国语高清| 魔术电影| 《激战丛林》在线看| 牧神记动漫在线观看全集免费播放| 黄金瞳免费观看完整版| 欧式少女16集全在线观看优酷下载 | 鬼畜女子监狱| 《黛比达拉斯》1978| 电影双女任务怎么播放| 十万个冷笑话2季| yeyllow视频免费| 苍井空电影网| 电影香江之功夫世家| 罗丽星克莱尔总统夫人免费观看| 夜闯寡妇村 电影| 秋瓷炫《生死决断》播放| 明天我不是羔羊电视剧| 法国空乘2018在线观看免费| 次板栗电影千金大小姐| 密爱:我朋友的妈妈2 电影| 非常有喜电视剧全集| 小樱桃动画片| 肥猫寻亲记| 湔雪的魔女| 《年轻的女保险销售员》电影全集在线播放 - 泡剧网 | 你莫走原唱| 星迷宫克莱尔迷宫在线播放| 我们结婚了20101016| 泰罗奥特曼国语版| 《品味人生》伊丽莎白.坎贝奇 | 愤怒的她短剧免费观看| 盲盒电影酒店免费观看 | 雷火剑OVA番剧初恋时间演员表| 翠湖未删减| 古墓丽影(法国版)女版播放 | 罗马欲乐园| 孤掷一注免费高清观看| 电影《瓜达卢佩玫瑰》| 成全高清免费动漫观看| 重新爱上你泰剧在线观看 | 濑户之花嫁| 《家庭矛盾》3麦乐迪| 少年阿凡提全集| 野蛮师姐百度影音| 爱我几何电影完整无删减免费观看中文版| 空调修理工韩国电影| 没什么大不了电影| 妻子和上司出差住酒店怎么办| 僵尸道长在线观看| 九七在线观看免费播放电视剧| 男女一起愁愁愁免费观看91| 转身说爱你| 电视剧甜蜜完整版免费观看| 双人调情按摩术韩国在线观看| rio 全集| 《调教女仆》电影| 法国满天星《贵夫人》在线看| 蜜桃成熟时33d国语下载| 男人和女人一愁愁愁电视剧在线观| twinklight| 如何剥石榴| 战狼9免费高清版999| 理发店里的特殊待遇4伦理片| 极限挑战之皇家宝藏bt| 给我一支烟| 花与蛇牙医电影完整版| 银魂电影| 铁核桃之无间风云剧情介绍| 黄飞鸿电影全集| 麦乐迪马斯克女超人满天星电影| 西川ゆい在线播放西川结衣| 七大罪无删减完整版在线观看| 查泰莱夫人的情人电影| 老公部下是我的初恋| 天剑绝刀之独孤九剑电影完整版| 西游记之孙悟空三打白骨精下载| 知否知否应是绿肥红瘦观看| 三年电影免费大全在线| 《重返狼群》免费观看| 盲山 无删减180分钟| 东北黑社会乔四| 白峰电影免费高清播放平台| 恶魔有约电视剧免费观看| 饥渴人妻出轨记(NPH) | 大耳朵图图5部全集| 赤裸特工| 双世宠妃第一季| 法国版女超人:麦乐迪在线观看 | 雁南飞刀郎| 星克莱尔《总统夫人》完整版 | 崇左市| 白上之黑全集免费观看电影| 电视剧薄冰在线观看全集免费高清| 慕海情深 电视剧泰剧在线观看| 千金复仇:仇人覆灭全集免费| 长相思第二部免费| 《部长出差的日子》在线观看| 台湾电影黛比系列之女家教在线观看 | 《美容院的特殊待遇》在线观看| 红墨坊电视剧| 天地粮人电视剧| 也曾迷茫也曾彷徨是什么歌| 特殊精油按摩3| 甜性涩爱高清全集| 天空之城| 阿凡达3d版在线观看| 壮志凌云女版满天星法版免费观看 | 李翊君北京演唱会| 一人之下第五季免费观看完整版| 宇宙天魔完整版国语在线观看高清| 《激战丛林》-罗莎·卡拉乔洛免费观| 上门推销避孕套当场试货电影| 微博之夜2022| 干物女小埋| 一站到底徐琦| 《在姨母家的客厅》| 茶杯狐foxcup| 二胡美女谁最漂亮| 地下偶像动漫免费观看全集| 即墨市| 美丽桃子5:美丽人生星辰| 年轻的母亲无删减| 域外营救电影在线观看免费完整版| 风尘女画家| 人猿泰山意大利1995版| 俘虏之锁在线观看完整版| 向往的生活第一季全集 | 日本满天星| 水灵的继拇BD中字| 警方通报男子挤压幼儿肚子| 《风月宝鉴》完整版在线看| 觉醒2012| 《浪漫女家教》HD-免费在线观看完整版[1线]-被窝电影网 | 哪吒2在线观看| 筋膜黏连| 爱我生活| 星克莱尔在线观看| 寻龙传说免费观看国语版| 怒海狂蛛| 特邀外卖员电影免费在线| 天神地兽神兽金刚全集| 周星驰:佩佩姐 江湖再见| 唐朝诡事录电视剧在线看| 陪读妈妈的交换在线观看| 色妻交换| 女上司的控制器| 日本保险公司推销员2| 扎职3义薄云天在线观看国语| 延寿县| 白峰美羽的所有能播放的电影| 蜜耻母在线观看| 勇敢的心1| 墨西哥《瓜达卢佩玫瑰》 | 迷你小洞第二季| 姐妹牙医1986日剧未删减版| 对口相声| 契约婚姻| 《示范销售避孕套》2| 台湾版《棘手狂情》星辰| 亲爱的电视剧免费播放| 《末日降临》动漫全集| 壮志凌云2010法国满天星| 两个人的世界在线观看| 天天向上20090109| 苏菲玛索 狂野的爱| 3v1三人一次性体检电影| 一世真爱情免费观看全部电视剧| 朋友的妈妈电影| 白峰电影高清无广告看| 三生三世枕上书全集免费观看| 姚乐怡 三级| 哈利波特与凤凰社在线观看| 电影修理工的艳遇韩国在线观看| 飘雪网在线观看免费完整版| 高清《暗夜情报员 第三季》电视剧| 《售楼小姐的秘密》| 不正当军事行为2017| 食功夫之美食大冒险| 高清《功夫梦:融合之道》电影| 公之浮之8| 韩国 外卖员的特殊待遇| 沈阳红高粱| 城市猎人电影| 男女一起愁愁愁视频| 用身偿还客户在长妻子被欺负| 无主之花电影| 电影暖春| 铿铿铿锵免费观看| 隔壁阿姨| 我是刑警电视剧免费播放西瓜 | avno1| 潘粤明前妻| 我要涩女郎| 麦乐迪女超人免费完整版满天星| 僵尸至尊粤语| 倩女幽魂电影在线观看免费完整版 | 赵本山相亲2下载| 《睫毛膏4》美国电影| 请回答1988在线观看| 健身小辣椒J3被草| 美国需要爸爸播种| 我知道你爱我| 暗花国语| 刘德华评价罗刹海市| 康体水疗完整版在线观看免费播放| 武动乾坤 16K| 守护者联盟| 将军夫人全集免费| 黑白配1080p国语版在线观看| 美人依旧电影| 风流才子唐伯虎| 免费观看完整版| 时光影院《美国空乘满天星》| 奇迹笨小孩将在网飞播出| 蓝湾牧羊犬| 孤军英雄的电视剧全集| 《需要爸爸播种子》免费观看在线播放_HD/无删减_1080P高清完整版电影 - 天堂 | xl司令在线观看完整版动漫第一季| 无心法师全集免费观看| 桃色天使终极猎杀| 凹凸影视| 被凌辱的妻子在线观看| 幸福最晴天女主角| 常在你左右免费观看国语| b哥全集| 美发美容按摩3| 仙逆全集免费观看| 军刺电视剧全集在线观看| 左耳免费| 兔子先生第一季6期免费观看| 最佳李顺心| 我的水蜜桃好软水好多| 隐秘的角落 电视剧| 镖客奶奶高清免费观看| 《爱我几何》日本|