-
bdi
2016-11-22 21:27:20一、实例 Username Bill:80 ...bdi指的是bidi隔离 标签运行你设置一段文本,使其脱离其父元素的文本方向设置。 在发布用户评论或其他你无法完全控制的内容时,该标签很有用 四、属性 dir ltr/rtl/auto 可一、实例
<ul> <li>Username <bdi>Bill</bdi>:80 points</li> <li>Username <bdi>Steve</bdi>: 78 points</li> </ul>
二、浏览器支持只有火狐和chrome支持
三、定义和用法
bdi指的是bidi隔离
<bdi>标签运行你设置一段文本,使其脱离其父元素的文本方向设置。
在发布用户评论或其他你无法完全控制的内容时,该标签很有用
四、属性
dir ltr/rtl/auto 可选,规定<bdi>元素内文本的文本方向,默认为auto
-
Proyecto-BDI-源码
2021-03-27 22:32:49Proyecto-BDI -
BDI推荐模型
2015-05-07 21:04:01BDI推荐框架,这片文章讲了一个例子,将怎么利用BDI推荐框架给出基于上下文的推荐 -
BDI模型
2016-01-25 09:48:06面向主体(agent)的系统越来越具有广泛的应用价值,在理性主体(agent)的形式化过程中,通常认为主体(agent)的思维状态包括信念、愿望和意图这三个属性,因此BDI模型一直是主体(agent)建模研究的重点。 当前...面向主体(agent)的系统越来越具有广泛的应用价值,在理性主体(agent)的形式化过程中,通常认为主体(agent)的思维状态包括信念、愿望和意图这三个属性,因此BDI模型一直是主体(agent)建模研究的重点。当前主体(agent)使用的BDI模型一般都是在Cohen和Levesque的正规模态逻辑的意图模型以及Rao和Georgeff的BDI计算数逻辑模型基础上发展起来的,即侧重于形式描述信念(belief)、愿望(desire)和意图(intention),简称BDI,其本质上要解决的问题是如何确定主体(agent)的目标以及如何实现这个目标。一个BDI模型包含三种基本成分:(1) 信念(Belief)是一个包括了对世界相关的信念、与其它主体(agent)思维趋向相关的信念和自我信念的集合。信念是主体(agent)对世界的认知,包含描述环境特性的数据和描述自身功能的数据,是主体(agent)进行思维活动的基础。(2) 愿望(Desire)是主体(agent)的最初动机,是其希望达到的状态或希望保持的状态的集合。主体(agent)希望达到的状态,由此可以激发系统的规划和行动。一般来说,可以表达为主体(agent)对环境状态的一种期待和判断,也就是通过判断该状态是否成立作为Desire是否实现的标志。主体(agent)可以拥有互不相容的愿望,而且也不需要相信它的愿望是绝对可以实现的。(3) 意图(Intention)是承诺实现的愿望中选取的当前最需要完成或者最适合完成的一个,是当前主体(agent)将要正在实现的目标,它是属于思维状态的意向方向。当前意图对主体(agent)的当前动作具有指导性的作用。基于BDI模型的主体(agent)研究一般分为两个层面,一个就是理论层面,也叫做逻辑层面 -
BDI各个结构体关系
2020-08-16 17:15:14BDI各个结构体关系 每块磁盘对应着一个BDI设备,用struct backing_dev_info表示 系统上所有BDI设备通过struct list_head bdi_list;链表串在一起 一个BDI设备对应一个struct bdi_writeback结构,存放该设备需要处理...BDI各个结构体关系
- 每块磁盘对应着一个BDI设备,用struct backing_dev_info表示
- 系统上所有BDI设备通过struct list_head bdi_list;链表串在一起
- 一个BDI设备对应一个struct bdi_writeback结构,存放该设备需要处理的脏页及脏页回写函数
- struct delayed_work定义了一个延迟任务,其处理函数也就是脏页回写函数,bdi_writeback_workfn
- struct list_head b_dirty存放该BDI所有dirty inode,但回写时不是在这个链表上处理
- struct list_head b_io, b_dirty链表上的dirty inode经过dirty_expire_centisecs后,过期才会挂到该链表,进行实际的回写。而且还会对该链表排序,按分区将inode排序,因为同一块磁盘可能有多个分区,每个分区的文件系统可能不同,回写脏页的处理也不尽相同,排序是为了提供效率,避免频繁切换,同时有时候回写任务是针对特定某个分区,这样回写就更快
- struct list_head b_more_io主要是存放b_io链表处理时无法处理的inode,会先放到这里,避免一致等待inode可用,减少竞争
- struct list_head work_list链表挂的是该BDI设备所有的回写任务,比如周期回写或者background回写,以及对某个分区的单独回写。回写函数就是通过执行struct wb_writeback_work这一个一个任务,把struct list_head b_io链表中的dirty inode回写到设备。
-
BDI bdiAccess 接口定义规范
2018-05-05 10:13:54BDI bdiAccess 接口定义规范 1. Overview The bdiAccess library can be used to access the BDI functions. With this library, a user can execute the following task: • Read/Write target registers • Read/... -
BDI-1
2019-03-15 15:22:46kernel-2.6.32以后脏数据的下刷彻底取消了pdflush,而是将此部分功能添加到BDI机制中,并且是为每个设备创建了一个名为“flush-设备主次设备号”的线程,用于脏数据的下刷。 backing_dev_info结构体 struct ...kernel-2.6.32以后脏数据的下刷彻底取消了pdflush,而是将此部分功能添加到BDI机制中,并且是为每个设备创建了一个名为“flush-设备主次设备号”的线程,用于脏数据的下刷。
backing_dev_info结构体
struct backing_dev_info { struct list_head bdi_list; unsigned long ra_pages; /* max readahead in PAGE_CACHE_SIZE units */ unsigned long state; /* Always use atomic bitops on this */ unsigned int capabilities; /* Device capabilities */ congested_fn *congested_fn; /* Function pointer if device is md/dm */ void *congested_data; /* Pointer to aux data for congested func */ char *name; struct percpu_counter bdi_stat[NR_BDI_STAT_ITEMS]; unsigned long bw_time_stamp; /* last time write bw is updated */ unsigned long dirtied_stamp; unsigned long written_stamp; /* pages written at bw_time_stamp */ unsigned long write_bandwidth; /* the estimated write bandwidth */ unsigned long avg_write_bandwidth; /* further smoothed write bw */ /* * The base dirty throttle rate, re-calculated on every 200ms. * All the bdi tasks' dirty rate will be curbed under it. * @dirty_ratelimit tracks the estimated @balanced_dirty_ratelimit * in small steps and is much more smooth/stable than the latter. */ unsigned long dirty_ratelimit; unsigned long balanced_dirty_ratelimit; struct fprop_local_percpu completions; int dirty_exceeded; unsigned int min_ratio; unsigned int max_ratio, max_prop_frac; struct bdi_writeback wb; /* default writeback info for this bdi */ spinlock_t wb_lock; /* protects work_list */ struct list_head work_list; struct device *dev; struct timer_list laptop_mode_wb_timer; #ifdef CONFIG_DEBUG_FS struct dentry *debug_dir; struct dentry *debug_stats; #endif };
对应的state状态:
enum bdi_state { BDI_wb_alloc, /* Default embedded wb allocated */ 表示该设备上已经申请出一个下刷任务 BDI_async_congested, /* The async (write) queue is getting full */ BDI_sync_congested, /* The sync queue is getting full */ BDI_REGISTERED, /* bdi_register() was done */ 表示该设备已经创建了flush线程 BDI_writeback_running, /* Writeback is in progress */ BDI_unused, /* Available bits start here */ };
用于sys接口计数统计的数值:
enum bdi_stat_item { BDI_RECLAIMABLE, BDI_WRITEBACK, BDI_DIRTIED, BDI_WRITTEN, NR_BDI_STAT_ITEMS };
初始化函数blk_alloc_queue_node,初始化ra_pages、state、capabilities、unplug_io_fn、unplug_io_data、name,bdi_init函数初始化其他的值。
struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id) { struct request_queue *q; int err; q = kmem_cache_alloc_node(blk_requestq_cachep, gfp_mask | __GFP_ZERO, node_id); if (!q) return NULL; q->id = ida_simple_get(&blk_queue_ida, 0, 0, gfp_mask); if (q->id < 0) goto fail_q; q->backing_dev_info.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE; q->backing_dev_info.state = 0; q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY; q->backing_dev_info.name = "block"; q->node = node_id; err = bdi_init(&q->backing_dev_info); setup_timer(&q->backing_dev_info.laptop_mode_wb_timer, laptop_mode_timer_fn, (unsigned long) q); 设置5秒超时执行下刷函数 setup_timer(&q->timeout, blk_rq_timed_out_timer, (unsigned long) q);
backing_dev_info结构中描述每个设备的一些bdi状态信息,BDI中提供了一个sys接口,在/sys/kernel/debug/bdi目录下,每个设备以设备号区分,可以查看每个设备与bdi有关的状态等。
下面是CentOS的信息:
海思3520的内核3.10.y没有此信息,但是看内核中是由开CONFIG_DEBUG_FS宏的,也没有对应的打印,为啥?
内核启动
1. 创建名为sync_supers的线程,此线程由定时器来唤醒,此外无其他唤醒模式。每5s钟被唤醒执行一次函数sync_supers,用来下刷系统super_blocks链表中所有的元数据块信息。没看到代码实现啊?
2、定义一个默认的结构backing_dev_info,同时会创建一个线程bdi-default。
struct backing_dev_info default_backing_dev_info = { .name = "default", .ra_pages = VM_MAX_READAHEAD * 1024 / PAGE_CACHE_SIZE, .state = 0, .capabilities = BDI_CAP_MAP_COPY, }; EXPORT_SYMBOL_GPL(default_backing_dev_info);
static int __init default_bdi_init(void) { int err; bdi_wq = alloc_workqueue("writeback", WQ_MEM_RECLAIM | WQ_FREEZABLE | WQ_UNBOUND | WQ_SYSFS, 0); if (!bdi_wq) return -ENOMEM; err = bdi_init(&default_backing_dev_info); if (!err) bdi_register(&default_backing_dev_info, NULL, "default"); err = bdi_init(&noop_backing_dev_info); return err; } subsys_initcall(default_bdi_init);
3、有新的设备分区添加时,add_disk会为每个设备定义一个结构backing_dev_info,然后将此结构挂到bdi_list链表尾;
void add_disk(struct gendisk *disk) { struct backing_dev_info *bdi; /* Register BDI before referencing it from bdev */ bdi = &disk->queue->backing_dev_info; bdi_register_dev(bdi, disk_devt(disk));
int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev) { return bdi_register(bdi, NULL, "%u:%u", MAJOR(dev), MINOR(dev)); } EXPORT_SYMBOL(bdi_register_dev);
int bdi_register(struct backing_dev_info *bdi, struct device *parent, const char *fmt, ...) { va_list args; struct device *dev; if (bdi->dev) /* The driver needs to use separate queues per device */ return 0; va_start(args, fmt); dev = device_create_vargs(bdi_class, parent, MKDEV(0, 0), bdi, fmt, args); va_end(args); if (IS_ERR(dev)) return PTR_ERR(dev); bdi->dev = dev; bdi_debug_register(bdi, dev_name(dev)); set_bit(BDI_REGISTERED, &bdi->state); spin_lock_bh(&bdi_lock); list_add_tail_rcu(&bdi->bdi_list, &bdi_list); spin_unlock_bh(&bdi_lock); trace_writeback_bdi_register(bdi); return 0; } EXPORT_SYMBOL(bdi_register);
下刷动作
wb_writeback_work用来描述一次下刷任务的信息,如该次下刷任务以何种模式下刷,下刷多少数据等,多用在唤醒下刷线程之前定义。
struct wb_writeback_work { long nr_pages; struct super_block *sb; unsigned long *older_than_this; enum writeback_sync_modes sync_mode; unsigned int tagged_writepages:1; unsigned int for_kupdate:1; unsigned int range_cyclic:1; unsigned int for_background:1; enum wb_reason reason; /* why was writeback initiated? */ struct list_head list; /* pending work list */ struct completion *done; /* set if the caller waits */ };
触发下刷的操作时,可以将此work挂到一个工作队列中,由下刷线程来完成任务;也可以用此结构的信息,指导结构writeback_control中的值,然后直接调用下刷函数,完成工作任务。
-
BDI2000的配置使用
2014-11-09 16:03:27BDI2000使用文档(BDI2000的配置使用). -
HTML 的bdi标签
2019-12-16 17:07:52bdi>标签之前,建议你了解一下控制文字方向的标签:<bdo>标签 2、HTML中<bdi>标签的作用是从周围文字方向设置中隔离出来:<bdi> 标签允许您设置一段文本,使其脱离其父元素的文本方向设置。 3... -
BDI3000 ARMv8 用户手册
2018-05-05 10:39:45BDI3000 ARMv8 用户手册 bdiGDB enhances the GNU debugger (GDB), with JTAG debugging for ARMv8 based targets. With the built-in Ethernet interface you get a very fast download speed. No target ... -
HTML <bdi> 标签
2020-08-19 15:17:02bdi> 标签 bdi 指的是 bidi 隔离。 <bdi> 标签允许您设置一段文本,使其脱离其父元素的文本方向设置。 实例 <ul> <li>Username <bdi>Bill</bdi>:80 points</li> <li>... -
利用BDI代理和拓扑理论挖掘在线社交网络
2021-03-03 19:03:50利用BDI代理和拓扑理论挖掘在线社交网络 -
瑞士Abatron公司新推出BDI3000 BDM/JTAG仿真器
2020-11-24 10:42:46Abatron公司新推出BDI3000高速BDM/JTAG仿真器。这为成功BDI家族的仿真器产品增添了新的血液。BDI家族产品以高性能、灵活和极佳的产品质量享誉全球。 BDI3000的BDM接口支持的处理器有ColdFire, PowerPC 5xx/8xx,... -
BDI-Agent应用系统的集成开发环境的实现
2021-03-24 22:43:09BDI-Agent应用系统的集成开发环境的实现 -
The images /images/sample-bdi.png and /images/sample-not-bdi.png has no alt attribute
2021-01-11 01:25:51<div><p>The images /images/sample-bdi.png and /images/sample-not-bdi.png has no alt attribute, which is mandatory if I understand correctly.</p><p>该提问来源于开源项目:whatwg/html</p></div> -
基于BDI模型的多机器人智能体系统设计.pdf
2019-11-10 13:16:11基于BDI模型的多机器人智能体系统设计pdf,基于BDI模型的多机器人智能体系统设计 -
BDI Agent模型结构
2018-08-27 10:53:431. BDI的概念 主体的信念-愿望-意图(Belief-Desire-Intention, BDI)概念的哲学观点源自Bratman。 信念——Agent具有的关于环境信息、其他Agent信息和自身信息的集合。信念不同于知识,知识是为真的信念。 ... -
BDI3000 GDB中文手册
2014-01-23 16:09:33BDI3000/2000 是一款功能强大而且非常稳定耐用的JTAG/BDM仿真器,可以在 Windows/Linux平台下使用,通过以太网方式进行远程调试。它可以显示、修改通用寄存器,显 示、修改特殊功能寄存器,显示、修改RAM中的数据,... -
应急响应环境下基于BDI模型的Agent结构研究
2020-10-22 08:17:44基于Agent的应急响应建模仿真具有优越性和现实性,通过分析应急响应体系中Agent主体所应具有的特征——反应性、推理性、互动性和能动性,构建了基于BDI模型的反应+思考+通信的混合型Agent结构,并在NetLogo仿真... -
论文研究-整合贝叶斯网络的BDI模型.pdf
2019-09-13 12:44:59针对BDI模型在不确定领域应用的薄弱,提出了一种改进的BDI(Beliefs—Desires—Intentions)模型。以BDI体系结构为基础,结合贝叶斯网络,建立了智能体对可能世界的认知表示;通过贝叶斯网络推理,实现了对达成目标... -
Bdi2000仿真器中文手册
2014-11-09 11:01:30该文档可以帮助到用BDI2000进行调试的同仁。 -
BDI-3000使用手册
2013-06-26 15:26:29BDI—3000的使用手册:bdiGDB enhances the GNU debugger (GDB), with JTAG debugging for ARM11 and Cortex-A8/M3 based targets. With the built-in Ethernet interface you get a very fast code download speed.... -
Identification of lactobacillus casei-BDI and Streptococcus thermophilus by fluorescence spectra
2021-02-10 11:18:23In this letter, the differences between the fluorescence spectra of lactobacillus casei-BDI (Lc-BDI) and Streptococcus thermophilus (St) are shown, and the second-order derivative spectra are used to... -
基于Q-learning的不确定环境BDI Agent最优策略规划研究
2021-02-07 16:51:12基于Q-learning的不确定环境BDI Agent最优策略规划研究 -
基于VMD_FFT_LSTM模型的BDI指数预测_武华华.pdf
2020-09-03 10:58:07为提升非线性BDI 指数的预测效果,分析了多种预 测模型对BDI 指数的单步及多步预测结果,借助“分解-重 构-预测”思路,设计构建了VMD-FFT-LSTM 组合预测模 型. 首先,通过VMD 算法分解出BDI 指数的IMF 分量; 然 后... -
HTML <bdi> 标签
2018-09-28 11:47:01实例把用户名从周围的文本方向设置中隔离出来:<ul> <li>Username<bdi>Bill</bdi>:80points</li> <li>Username<... -
论文研究-基于跳跃时间和幅度的BDI指数波动幂律分布特性研究.pdf
2019-09-20 20:21:45论文研究-基于跳跃时间和幅度的BDI指数波动幂律分布特性研究.pdf, BDI指数是国际航运市场的风向标,摸清BDI指数波动幂律分布特性,对于进一步掌握运费规律、预测BDI趋势... -
论文研究-基于EMD-WA模型的BDI指数波动周期特征研究.pdf
2019-09-20 21:06:19论文研究-基于EMD-WA模型的BDI指数波动周期特征研究.pdf, 运用结合EMD分解和小波分析构建的EMD-WA模型,分析了国际干散货市场BDI指数的波动周期特征.通过EMD方法对BDI...