首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ICS lab9 TinyShell 的10条建议

    0.仔细看pdf,尤其是hint部分。 1.先抄书上的代码,然后再添加书上没有的功能。做到一定程度后,测试已有的功能,要不然不好改正。注意规范输出格式。 2.WNOHANG,这个不用说了。 3.调用deletejob和更改state都应改放进sigchld_handler中,sigint和sigtstp的handler应该仅仅捕获信号并传给前台的进程组。 4.waitpid也应该只在sigchld_handler中出现,而且必须仅仅出现一次。waitfg中不应该调用waitpid,否则会和sigchld_handler产生回收竞争。 5.发送sigint,sigtstp,以及sigcont信号时要注意,传进-pid而不是pid,以便发送给整个进程组。否则trace11,12,13会有麻烦。子进程fork之后execve之前,注意要setgpid(0, 0)。 6.由于你的sigchld_handler要处理stop的进程,所以要加上WUNTRACED。然后循环里要分情况判断WIFEXITED,WIFSIGNALED,WIFSTOPPED。这三个函数会特别有用。 7.fg进程最多只有一个,所以一旦产生就必须调用waitfg,do_bgfg函数里也是。 8.一定要注意使用sigprocmask,pdf中也写了。由于addjob在eval中调用,deletejob在sigchld_handler中调用,很可能出现add之前就delete的情况。所以要在fork之前调用sigprocmask,屏蔽掉sigchld信号,然后add之后再解除。由于子进程也屏蔽掉了这个信号,所以要在fork之后execve之前解除掉。 9.waitfg的循环里注意调用sleep。

    011

    强劲的Linux Trace工具:bpftrace (DTrace 2.0) for Linux 2018

    译者注:原作者是大名鼎鼎的性能分析专家:Brendan Gregg,现在工作在Netflix,之前工作在Sun,在Sun公司的时候,他就做了大量的性能分析和tracing相关的工作,在Sun的Solaris上存在一种传说中的性能分析和Debug神器: Dtrace,然而,可惜的是,在我们现在的Linux操作系统上并没有Dtrace神器(这可能是因为Dtrace是从Soloris操作系统的衍生品无法迁移到别的操作系统上),Brendan Gregg 在Netflix后,继续利用他的业余时间,利用他曾经在Soloris上的性能分析经验,和对Dtrace工具的理解,研发基于Linux操作系统上的上类似于Dtrace的工具,曾经他在早期的kernel版本上基于perf研发了perf-tools工具,后面在eBPF进入kernel后,开始基于eBPF做性能工具研发的工作,比如bcc工具集,最近又参与了bpftrace的工具。本文主要是Brendan Gregg在介绍 bpftrace在2018年的开发进展,以及对bpftrace的介绍和对Dtrace的区别介绍。

    01
    领券