精华内容
下载资源
问答
  • 客户年度规划思路框架@思维导图

    客户年度规划思路框架@思维导图
    在这里插入图片描述

    展开全文
  • Pintos——Project 1思路框架

    千次阅读 2018-04-21 11:41:23
    Pintos—Project1思路框架 (UCB版本..单Proj 1而言, 就fix-pointed.h 不太一样。。其他都是一样的。) Pintos—Project1思路框架 分析整个运作的流程: 一.从分析何时会触发线程切换(重新schedule)入手: 二....

    Pintos—Project1思路框架

    (UCB版本..单Proj 1而言, 就fix-pointed.h 不太一样。。其他都是一样的。)

    分析整个运作的流程:

    整体来说 就是不要急于出手= =,先花点时间理清整体的脉络,分析线程的切换是怎么进行的,就绪队列是怎么产生的/改变的——这些都握在你手里,之后要花些时间看test的文件,安静的debug,刚不住了 出去蹦跶几下,调整下思绪。
    一些point: 写完一段就make || 画画图 || 谨慎考虑什么时候该加锁,而什么时候又不应该加锁 || 记得初始化 || 保证一些值在范围内
    主要的几个文件:
    /src/thread/thread.c(h)
    /src/device/timer.c(h)
    /src/thread/interrupt.c(h)
    /src/thread/synch.c(h)

    /src/thread/fixed-point.c(h)
    /src/tests/thread/对应的test文件
    /src/lib/kernel/list.c(h)


    (其实这一部分应该放在最后,只简单提下思路)
    part I.
    简单来说 就是在 计数,block。 数到了 unblock。(thread里添加个attribute 来计数,每次tick全局检查一下)
    =========》thread里添加个成员来计数


    part II.
    (牢记,一个线程block的时候只会等着一把锁,thread_set_priority只发生在当前线程,所以priority发生改变的情况不多)
    对于thread所需要做的调整:
    1.每个thread要设置一个基础的base_priority和一个当前的priority,以应对set
    2.考虑到释放锁的时候需要观察所有捐献的priority, 所以需要把所有hold的lock保存在一个list里.

    对于lock 没有任何添加东西的必要。
    donate的基本思路:
    lock_acquire:
    将thread放到lock的list里,然后不停回溯lock_holder 调整priority 直到顶层,依次放入就绪队列,切
    lock_release:
    只要调整当前线程的priority = max(base_priority, max(该线程每个hold的锁中 找寻优先级最高的thread)的priroity) ,切
    cond 这部分。。也类似
    cond_wait:
    考虑到一个线程即使处于wait中,优先级也可能发生改变,所以只要将当前线程插入waiters尾部即可,只需要signal时sort一下。
    cond_signal:
    先对waiters进行sort,然后sema_up首个
    thread_set_priority:
    触发这个的时候,不会同时发生优先级捐赠。。因为还没碰到锁。
    总是改变base_priority
    如果(priority比当前priority 大)
      提升当前priority
    否则
      调整当前线程的priority = max(base_priority, max(该线程每个hold的锁中 找寻优先级最高的thread的priority))
    注:原priority 可能是base_priority ,set之后可能又要与捐赠的优先级竞争


    lock部分我选择插入的时候直接放尾部,release的时候再逐个寻找优先级最高thread,因为priority可能在插入之后发生改变
    cond部分当然也可以选择按priority插入,在priority change的时候update一下(remove,insert?sort?应该是sort快。)–效率没仔细忖量,若有心,可以思索下。


    part III.
    这一部分,要用到fixed_point.h
    ——对于公共变量操作时, 注意interrupt——
    停用priority捐赠、set
    需要添加:全局的load_avg,每个线程 recent_cpu , nice
    更新周期:
    timer_ticks() % 4 == 0:
    priority = PRI_MAX - (recent_cpu/4) - (nice * 2) (虽然recent_cpu除了当前线程都是1s更新一次,但是考虑到set_nice。还是要都更新一次) 
    priority改变了= =所以要sort一次ready_list
    timer_ticks() % TIMER_FREQ == 0: 
    load_avg = (59/60) * load_avg + (1/60) * ready_threads
    recent_cpu = (2 * load_avg)/(2 * load_avg + 1) * recent_cpu + nice


    一.从分析何时会触发线程切换(重新schedule)入手:


    thread_block
    thread_exit      —————>    schedule   —————>   thread_schedule_tail
    thread_yield

    在这一系列运作之后,线程完成了重排。(thread.c)


    再看那些情况会分别导致thread_block, thread_yield发生
    sema_down/
    lock_acquire     —————>    thread_block
    timer_sleep



    priority的改变(set/donate/lock_release)
    thread_create     —————>    thread_yield
    timer_interrupt


    二.分析何时会导致就绪队列改变

    1.priority改变
    set:
    由于set只能由当前线程对自己的priority进行操作, 所以只需要简单的在set结束后,将当前线程重新排回ready_list,
    然后thread_yield进行切换
    注意,排回去的时候要排到同样priority的尾部。


    2.donate:
    donate的发生是由于lock_acquire触发,
    (lock)  waiting      waiting         waiting        waiting
    当前线程 ———–> 上一线程 ———> 再上一级线程 ———–> 最上级线程 ———-> NULL

    可以考虑一次性回溯到lock_waiting的顶部,把每次上一级线程放回ready_list,放完后thread_yield进行切换
    注意: 此时每次排回去,都要排到同样priority顶部


    3.lock_release:
    将当前线程的priority调整到MAX(其base_priority, 所有等待其释放锁的线程的最高priority)
    其中 所有等待其释放锁的线程的最高priority 可以由以下两点获得
    i. 建立一个list locks,保存线程hold的lock
    ii.在每个线程lock_acquire的时候,如果进入block状态,将该线程按priority插入lock->waiters
    (注意:由于一个线程进入block后,依然会因为别的线程donate而改变priority,所以没必要有序插入,而选择在取lock priority的时候排序)


    4.thread_unblock()
    简单的将线程按priority排入ready_list即可
    附:thread_block()并不会改变ready_list.

    三.时钟中断


    8254触发时钟中断  ————>  intr_handler  (———–>  timer_interrupt   ———–>
    thread_tick    ————> …)

    简单来说就是 8254触发了中断,然后intr_handler被call, 开始处理中断,进入timer_interrupt,
    ====> 标志着tick了一下
    我们需要在timer_interrupt里处理的有:
    ticks ++
    thread_tick():时间片是否用完了?
    part I(第一部分)
    sleep的线程有没有该起床的了?
    part III(第三部分)
    对于recent_cpu/load_avg/priority的更新。

    四.整个过程的开始

    thread_init()
    1.ready_list, all_list, lock的初始化
    2.将此刻正在运行的线程命名为main
    3.后面呢- -都懂的。
    Set up a thread structure for the running thread


    分了几天写。。所以可能看起来有点累赘吧- -就这样吧,,欢迎拍砖= = 准备朝proj 2奋斗(或者可能就崩了)
    https://www.cnblogs.com/laiy/p/pintos_project1_thread.html –>这位作者写的很详细= =,但是有些地方我觉得应该调整(本文都写了, 见仁见智吧)= =
    “`

    展开全文
  • ML之FE:结合Kaggle比赛的某一案例细究特征工程(Feature Engineering)思路框架 目录 Feature Engineering思路框架 1、结合Kaggle比赛的某一案例细究Feature Engineering思路框架 2、Feature Engineering思路...

    ML之FE:结合Kaggle比赛的某一案例细究特征工程(Feature Engineering)思路框架

     

     

    目录

    Feature Engineering思路框架

    1、结合Kaggle比赛的某一案例细究Feature Engineering思路框架

    2、Feature Engineering思路


     

     

    Feature Engineering思路框架

    1、结合Kaggle比赛的某一案例细究Feature Engineering思路框架

    2、Feature Engineering思路

    preview

     

    相关文章推荐

    Github
    特征工程到底是什么?
     

    展开全文
  • 内网渗透思路框架

    2020-11-13 12:51:58
    记录整理了内网中遇到的一些常见场景和攻击方式,主要以框架的方式整理出来便于分析学习,以和诸位打工人同飨! 内网渗透导图

    记录整理了内网中遇到的一些常见场景和攻击方式,主要以框架的方式整理出来便于分析学习,以和诸位打工人同飨!

    Updating……

    展开全文
  • 2021华为软件精英挑战赛,思路框架。 1.对数据初始化封装 服务器 用集合来进行封装,集合由字符串和数组组成键值对 {"服务器型号":[cpu内核,内存,硬件价格,能耗]} 例如: {"NV603":[92 324 53800 500]"} ...
  • ML之多分类预测:以某个数据集为例从0到1深入理解科学预测之多分类问题的思路框架 目录 一、总体思路框架 二、各个步骤详细说明 一、总体思路框架 二、各个步骤详细说明 ...
  • ML之回归预测:以某个数据集为例从0到1深入理解科学预测之回归(实数值年龄预测)问题的思路框架 目录 1、总体思路架构图 2、各个步骤详细图 1、总体思路架构图 2、各个步骤详细图 ....
  • ML之回归预测:以某个数据集为例从0到1深入理解科学预测之回归(实数值评分预测)问题的思路框架 相关文章ML之PLiR之LARS:利用LARS算法求解ElasticNet回归类型问题(实数值评分预测) 目录 1、总体思路架构图 2...
  • 产品设计思路框架

    千次阅读 2014-10-17 10:11:02
    最近看了很多产品方案,各种各样的职位,有产品,有设计,有运营,有研发,甚至还有客服,有几个特别明显的地方,就是每个职类的人想方案的时候都是围绕着本身职类来想的,比如设计人员策划方案的时候就会扣住很多...
  • 来源:https://www.shiyanlou.com/courses/1/labs/1/document
  • ML之二分类预测:以岩石水雷数据集(RockMine)为例从0到1深入理解科学预测之分类问题的思路框架(特征工程详细步骤+分类模型设计) 目录 一、总体思路框架 二、特征工程详细步骤(特征分析与特征处理) 1、获取...
  • 我们知道:写一份好的运营方案并能够落地...不能头痛医头,脚痛医脚,眉毛胡子一把抓,我们需要一份好的业务运营优化分析框架来指导我们,以保证最终的效率和效果。 下面我们以大家都比较熟悉的快递业务进行阐述,承...
  • 网上很多整合SSM博客文章并不能让初探ssm的同学思路完全的清晰,可以试着关掉整合教程,摇两下头骨,哈一大口气,就在万事具备的时候,开整,这个时候你可能思路全无 ~中招了咩~ ,还有一些同学依旧在使用eclipse...
  • backbone框架思路

    2016-04-18 17:29:00
    作为一个初学者,虽然网上有它的官方文档,但是都是讲的一些方法,思路分析的却对初学者来说,看得晕乎乎的。现在就把自己对这个框架的理解记录在此。 转载于:...
  • 网站框架思路

    2018-08-31 18:59:16
    学了大多框架,累,最终自己写算了 API 纯后端,所以有数据返回JSON; html+JS+JQ+css 美台美工需要什么,就到API去获取,尽量多的东西静态化 有不同意见的,多帮我提一下,...
  • SSM框架整合思路

    2019-06-10 19:49:35
    SSM框架整合思路简单整理: Spring整合mybaties Spring整合springmvc 整合思路参考图 三层 实现SSM整合的过程 Maven+spring4.3+springmvc4.3+mybatis3.2+mysql 创建工程:并使用包组织分层架构 添加三大框架的支持...
  • ssm框架整合思路

    2019-12-18 11:33:38
    ssm框架整合思路 转载:https://blog.csdn.net/u010758410/article/details/80145521
  • 手写orm框架思路

    2019-07-26 14:32:58
    orm框架思路: 分为两步,第一步,解析sql,封装完整可执行业务sql。第二步,封装链接池,封装方法。 解析sql: sql文件配置到xml文件中, 通过dom,sax进行xml文件解析,解析过程中会对逻辑运行标签进行运算...
  • 配置框架整改思路

    2015-04-05 10:10:36
    原则:当前只提疑问和思路,只关注框架和概念,不关注细节和实现。 目标:做到框架和业务的最大限度的解耦,以便于问题的界定和定位,减轻框架的负担,提高框架敏捷性。 1.模板的适配和解析:  当前:框架提供扩展...
  • 框架搭建思路

    2018-05-20 21:35:17
    首先创建ui包 在里面创建base包,创建基类BaseContract和BasePresenterBaseContractpackage com.example.a1512qmvp.ui.base; /** * 所有Presenter的积累,实现了BaseContract.BasePresenter接口 ...
  • UGUI框架思路梳理

    2019-09-26 23:45:06
    UGUI框架思路梳理UI面板情景设计 UI面板情景设计 有一个UI主面板, MainPannel, 主面板上有几个图标,分别是 任务,背包,战斗,技能等按钮,点击按钮,弹出相应的子面板,如何设计? 示例图片: 把每一个UIPannnel...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,995
精华内容 7,998
关键字:

思路框架