这个专栏是专注于入了职场之后,对写论文能力要求和技巧经验的一些总结。
在职场不同于在学习等科研院所,更多要求的是发出论文,而不是发高水平论文。
文章列表:
【程序员读论文】为什么要读论文?
【程序员读论文】题外篇:怎么读论文
【程序员读论文】推荐一款OCR软件,识别PDF论文上的文字
简简单单的科研秘籍
论文专利博客写作总结
如何写一篇科研论文
英文学术论文写作有哪些经验心得?
一个博士生接受怎样的训练是完整、全面的科研训练?
科研大牛们怎么读文献?
作为审稿人,你什么情况下会选择拒稿?
哪些思维方式是你刻意训练过的?
首次申上青年基金的一些感悟(综合多位基金评审专家意见)【投稿作品展】
传统学科怎么和深度学习领域结合
【程序员读论文】LeCun, Y., Bengio, Y. & Hinton, G. Deep learning. Nature 521, 436–444 (2015).
【论文】论文阅读记录
摘要:随着多核处理器在嵌入式领域广泛使用,在提升装备处理性能的同时也带来了一系列不确定性问题(主要是有啥没解决的问题)。为了提高多核实时操作系统中任务调度的确定性,本文针对确定性调度的影响因素,结合当前分区调度和多核调度的优点(用了啥方法或技术)设计出一种确定性多核任务调度的理论方法,主要包括资源的静态配置、空间分区在多核上的部署分配、时间分区的设计和时间同步,并将在锐华高安全操作系统实现中加以实践应用(获得了什么效果)。
关键词:任务调度;确定性;分时分区;嵌入式操作系统;锐华高安全操作系统
摘要是一篇论文的点睛之笔,是一个mini paper。
摘要的句式模板一般是 背景介绍(主要是有啥没解决的问题)+ 研究方法介绍(用了啥方法或技术)+ 主要结论(获得了什么效果)。
引言
多核处理器在提升装备处理性能的同时也带来了一系列不确定性问题,并直接影响装备的实时性、可靠性,相比单核系统,多核并行系统在总线、内存等诸多核间资源同步、任务在不同核上高度并发,使得多核并行系统在确定性保障技术上有着更高的挑战口。当前通过认证的具有高可信度、高安全的实时系统中,系统软件设计仍然停留在单核系统上,例如在航空操作系统中,为了保证关键任务调度时的安全,设计者在多核心中只保留一个处理器运行安全关键的任务,其他处理器核心将被关闭。为此,非常有必要在多核实时操作系统上设计一种确定性的调度方法以保证操作系统的安全性和实时性。
引言的作用就是系统性地向读者介绍该篇论文的研究背景、创新点、采用理论及方法等,核心是吸引读者阅读,通常是对于全文内容的高度概括!
几乎所有教你如何写Introduction的,都告诉你有一种叫做“漏斗式”的方法,我理解的漏斗式写作方法就是依次写好这5个部分,已达到逐层聚焦的作用:
①大背景大帽子:例如汽车保有量逐年提高,排放问题日益凸显。
②文献综述:通常有三方向导向(结果导向、方法导向和理论导向),技巧是把引用文献的摘要换个说法表述,如果引用文献较多,建议把类似的放在一起说,也可以列个表格。
③提出未知/存在问题:比如已有研究结果不一致、理论计算公式不准确、模型参数设置不合理、研究内容覆盖度不够,又出现了新问题等等,总之就是“挑前人的刺儿”!
④提出本研究的主要关注点及研究目的
⑤高度概括本文研究内容及方法,即材料与方法部分精炼
1相关背景研究
1.1分区调度
在符合ARINC653标准的分区操作系统中,分区有两层概念,一层是空间分区,另一层是时间分区。
空间分区可以将内存划分为互不重叠的内存区域,使得每个分区都有自己独有的存储空间,程序在分区中运行时可以将虚拟地址映射到独有存储空间的物理地址,从而减少不同分区内程序之间的相互干扰。
时间分区是指系统时间被分为多个时间窗口,每个分区占用至少一个时间窗口。通过时间分区的方法使得不同分区运行时间可预测,提高分区内程序运行的实时性、准确性、可预测性。
在符合ARINC653标准的系统中任务调度使用两层调度的方法,上层调度为分区间调度,下层调度为分区内调度。
分区间调度的基本单位是分区,通过分区参数设计【3】、时间片算法的改进等对调度算法进行改进和提高。
分区内调度类似于单核实时操作系统中使用的调度算法,如最早截止时间优先算法、先来先服务算法、最低松弛度优先算法等幻。
1.2多核架构调度目前操作系统有三种多核架构处理方式,每种架构调度有不同的要求和方法。
①对称多处理(Symmetric MultiProcessing,SMP)架构:一个操作系统实例同时管理多个处理器核,应用任务可以在不同处理器之间进行迁移。SMP结构的操作系统最大的特点就是资源共享,每个任务都可以被任意一个CPU执行,任务之间可以通过共享内存进行高效通信。
②非对称多处理(Asymmetric MultiProcessing,AMP)
架构:每个处理器核上运行独立操作系统实例,各个操作系统都有自己独占的资源,其他资源由其他系统专享或者分配给各个系统专用,每个处理器核上运行的程序与在一个单独操作系统上运行类似。
③绑定多处理(Bound MultiProcessing,BMP)架构:
一个操作系统实例同时管理多个处理器核,但是每个应用任务被绑定在特定的处理器核上,无法在不同的处理器核上进行迁移。2确定性调度影响因素及解决办法
根据适航认证标准DO-297的描述,多核确定性是指多核并行系统对给定输人的响应必须是可预测的,响应的结果在规定的时间段内产生,并具有一定程度的可重复性。因此,通常说多核并行系统是确定的,仅当系统满足以下条件:
①行为完整性:指在正常条件下系统能够正确执行,并且在系统发生内部异常时,行为也是可预测的;
②WCET分析:任务的最坏情况执行时间是可预测的;
③资源需求:软件对其运行环境所使用的资源有明确的界限;
④健壮性分区:使用分区架构时,必须保证每个分区的行为和性能不被其他分区影响。
多处理器技术是一个复杂的系统性架构,同时运行在不同处理器核心上的并行任务对共享资源无序抢占带来了任务执行的不确定性问题5.多核共享存储模型带来了多核存储访问的不确定性问题,当各个处理器核心对同一块内存并行访问时,各个处理器核心的内存访问顺序是不可预测的,这会导致程序读取或者写人的数据不是程序设计时预想的流程,会产生未知的程序运行行为,破坏系统的安全运行对上述存在的问题,在多核实时分区操作系统中利用分区机制进行时空隔离可以对Cache、内存、I/O等硬件及虚拟地址、互异锁、线程等软件资源进行有效划分。在编译生成操作系统前,采用静态配置时间调度表的方式解决调度不确定性问题及静态配置任务执行所需资源,减少任务并行运行中因共享资源而相互干扰。通过分区与一个或者多个核进行绑定,缓解任务竞争处理器的不确定性问题。通过为分区分配时间窗口和进行分区的时间同步,提高任务调度时间上的准确性、实时性和执行效率。
**材料与方法(Materials and Methods)部分其实是最容易被忽略的一个部分,但是其实这一部分是非常关键的,是整篇论文的根基!**第一,这一章是审稿人看的最仔细的,直接会影响到审稿人对这篇文章相关结论可信度的判断,如果试验设计上有缺陷,那得出的结论的结论即使再好,那也是没有任何意义的,应该会直接被拒稿!第二,这一章是文献阅读者最关心的一章,也就是按照你的方法他可以复现你的研究,而“可重复性”是科研工作中最重要的一环。
所以这一章必须要高度重视,一定要写的通俗易懂,直接了当,以便让审稿人和读者第一时间掌握你的整套试验流程,一方面可以提高你的文献录用率,另一方面可以提高你文献的引用率!
通常情况下SCI论文可以分为试验类研究还是模拟仿真类类研究两大类,以我个人的经验,通常材料与方法部分采用三段式结构。
**试验类研究:**①试验对象/所用设备的描述(车辆的基本参数、排放设备、油耗设备的具体型号及参数等);②试验工况设定/试验流程描述(采用控制变量法,固定哪些参数?变化哪些参数?一共选择多少个工况点?测试循环是什么?);③试验结果处理方法(试验误差的处理)。
**仿真模拟类研究:**①模型介绍及验证(网格划分,子模型选择,参数设定,所使用的公式、模型精度等)②仿真工况设定(采用控制变量法,固定哪些参数?变化哪些参数?一共选择多少个工况点?测试循环是什么?)③结果分析方法
为方便说明,除文字外建议添加示意图以及表格辅助说明,例如:试验设备照片,试验材料照片,试验流程图,工况设定表等。
需要强调的是:工况设定和试验流程部分一定要给出足够的细节,详细再详细,越是掖着藏着越会引起审稿人的怀疑,适得其反!另外,工况设定一定要有原因,为什么要选这几个工况进行研究,在我的SCI投稿经历中,80%的审稿人会问这个工况为什么要这么设定,所以必须要给出足够的说明工况设定的依据,而核心无外乎两点:一是之前的研究者都是这么设定的,二是这个工况与实际情况最为相符!
3多核实时调度确定性设计
常见的多核CPU处理器一般提供硬件机制保证每个处理器核上的Cache一致性,不同核之间数据共享的效率较高,因此运行于多核CPU上的操作系统多采用SMP或BMP架构。而在多核DSP处理器上一般硬件不提供不同处理器核之间的Cache一致性保障机制,因此运行于多核DSP处理器上的操作系统多采用AMP架构。AMP架构也可应用于多核CPU上,以实现不同关键应用等级的隔离锐华多核嵌入式操作系统基于分区架构,为了分别满足国产多核CPU处理器、国产多核DSP处理器,以及特定应用的要求,研制的多核操作系统支持AMP、BMP、 SMP三种多核架构处理方式,本文在已有成果的基础上设计多核确定性实时调度的确定性保障机制,以应用于锐华高安全操作系统研发设计中。
3.1资源静态配置
与桌面系统不同,嵌入式操作系统通常使用静态配置的方式对资源进行配置。在操作系统初始化时,用户根据资源配置工具输入的数据(如任务数量、资源数量、定时器数量等),操作系统根据预定义规则,以生成的配置数据为输入,编译生成满足特定需求的嵌入式操作系统。对分区的配置包括分区时间调度表,分区所处的处理器核,分区物理起始地址和分区大小,分区中的线程数量、互压信号量数量等,以保证分区的时空隔离特性,在一定程度上解决了系统资源和行为在调度过程中的不确定性问题。
3.2分区在多核上的分配部署
多分区操作系统在多核上运行,核心是如何将不同的分区分配到各个处理器核上进行部署。对于SMP和AMP的不同架构,分区和核之间的分配关系也有所不同。(1)SMP架构
采用SMP架构,一个分区能被分配在所有核上,并且在某个时刻独享资源。在一个分区内,任务可以在不同的核上并行执行。在该种架构下,由于分区间的执行是按照时间片轮流执行的,在下个分区开始运行前必须保存上一个分区的上下文,所以分区间不存在共享资源的干扰。但是,同一个分区内的不同任务间存在共享资源冲突,其示意图如图1所示。该种架构下,一个分区的故障不会蔓延到其他分区中,从而保证分区的健壮性。
(2)AMP架构
AMP架构下,每个分区被分配在一个指定的核上,该分区内的所有任务都运行在该核上。不同的分区运行在不同的核上。不同的分区能够并行执行,但每个分区内的进程是顺序执行的,其示意图如图2所示。
本文所设计的新型多核分区架构使多核嵌人式操作系统同时支持SMP和AMP的应用,如图3所示。对于AMP应用,绑定在一个固定核上运行;对于SMP应用,可以在多个核上运行。分区内的任务只能在分区绑定的核上执行,不能在其他核上被调度。
3.3时间分区的设计与时间同步
时间分区设计以ARINC653为标准,分区间优先级一样,以分区为调度的基本单位,分区在操作系统建立的主时间框架中占用至少一个时间窗口,分区间采用基于时间调度表的静态配置调度策略,每个处理器核维护一组调度表,根据系统预先配置选择一个调度表进行调度,默认情况下选择第一个调度表。时间调度表为一组时间窗口,每个时间窗口包括起始时间、持续时间、分区标识符等,并用双向链表方式来实现时间窗口。调度表的结构如图4所示。
为了保证不同处理器上的调度操作能够在时间上同步,采用一个全局的时钟源来同步各个处理器,并在每个时间框起始点对各个核的时间进行同步,确保本地调度表和全局时间的一致性来保证同步。本方案中采用本地时间驱动调度表,然后通知调度表全局时间,并保证本地时间和全局时间的偏差在一个可以接受的范围之内。调度表可以同步启动也可以异步启动。同步启动就是仅当本地时间和全局时间同步后调度表才会启动。异步启动不需要这种同步,可以通过两种方式进行重新同步:硬同步和平滑同步。所谓硬同步就是当得知全局时间后,在调度表结束时把本地时间设为全局时间,在调度表下次启动时获得同步。平滑同步就是在被告知全局时间后在每个调度点之间根据事先设定的量进行时间调整直到完成同步。
从时间角度看分区间调度,其示意图如图5所示,分区一、三、四和七各自绑定在一个核上运行,而分二、五、六在多个核上运行。为了保障分区的健壮性和执行时间的确定性,结合考虑不同分区的关键等级,使得高安全关键等级分区可独占处理器,从而消除核间干扰。在分区内,任务调度可以采取基于固定优先级的抢占式调度保障确定性。通过这样的时间分区设计和时间同步使得任务调度在时间上是确定和可预测的。
讨论部分的核心是对造成试验结果变化的的深层次原因进行分析,**这一部分的核心技巧是是建立逻辑链条!**对于新手学弟学妹来说整理出一条条的逻辑链条是写SCI论文的最大难点!我自己亲测有效的方法就是在别人的论文里找逻辑链条,然后综合多篇文章的逻辑链条,找出自己的逻辑链条,然后再结合我自己归纳的“跷跷板”理论,基本可以应付90%的SCI写作!
结语
对于多核处理器上的安全关键应用,最大的挑战是多核干扰。本文设计的调度方案既可以像SMP一样在上层共享操作系统资源,又可以使用AMP用于核心事件的快速响应,这样的设计方法既保留了SMP方便易用、易于配置和负载均衡的能力,又实现AMP确定性和高性能等优点。同时时间分区的设计和时间同步使得安全性至关重要的应用程序行为是可预测的,进一步增强了多核操作系统的确定性、安全性、实时性和高效性。贴
结论部分是SCI论文中最好写的一个部分,说白了就是我们小学时候就学过的“缩写”!缩写什么?缩写的就是结果与讨论部分(Results & Discussion)每一个小标题下的内容,通常的结构是先来一个“小帽子”,再把主要结论逐一列出,具体如下:
**小帽子:**对研究背景、研究内容和研究方法的进行一个概述,相当于对材料与方法部分的缩写。最后来一句:The main findings are as follows或者Main conlusions can be drawn from this work, as follows,逐条引出结论
**结论分条列出(3-5条):**每条100字以内为宜,简单说是对于结果与讨论部分每个子标题内容的一个缩写。
**全文总结或展望:**有的SCI论文还会在分条列出主要结论后,再用1-2句做一个全文总结,有的也会对未来的研究进行展望,该部分是可选项。
论文十问是可以快速理解论文主旨的一套框架。
Q1 论文试图解决什么问题?
Q2 这是否是一个新的问题?
Q3 这篇文章要验证一个什么科学假设?
Q4 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?
Q5 论文中提到的解决方案之关键是什么?
Q6 论文中的实验是如何设计的?
Q7 用于定量评估的数据集是什么?代码有没有开源?
Q8 论文中的实验及结果有没有很好地支持需要验证的科学假设?
Q9 这篇论文到底有什么贡献?
Q10 下一步呢?有什么工作可以继续深入?