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

自己动手计算TSS Enrichment score

所谓TSS Enrichment score, 其实是所有基因TSS位点测序深度的平均值。...要计算这个值,需要两个文件,一个是bam文件,保存了测序深度信息,另外一个是参考基因组TSS位点文件,可以从gtf文件中提取得到,记录了TSS位点的染色体位置。...根据这个矩阵可以绘制TSS两侧reads分布图, 也可以计算TSS Enrichment score。 deeptools就是采用了上述策略,用法如下 ?...通过deeotools可以直接出图,tss.matrix.txt文件保存了matrix的纯文本信息,可以读取这个文件计算TSS Enrichment score。...该脚本计算TSS Enrichment score, 并绘制TSS两侧read的分布图。相比deeptools,在计算coverage的过程中进行了归一化,核心代码如下 ?

3.2K20

Linux内核13-进程切换

本文就研究Linux内核的进程切换。我们首先理解几个概念。 1.1 硬件上下文 我们知道每个进程都有自己的地址空间,但是所有的进程却共享CPU寄存器。...旧版本的linux利用x86架构提供的硬件支持,并通过远程调转指令(GNU-ljump;Intel-jmp far)进行进程切换,跳转到下一个进程的任务状态段(TSS)描述符。...1.2 任务状态段-TSS x86架构包含一个特殊的段寄存器,称为任务状态段(TSS),用来保存硬件上下文内容。尽管Linux不使用硬件上下文切换,但还是给每个不同CPU建立一个TSS。...在Linux的设计中,每个CPU就只有一个TSS,所以,Busy位总是设为1。换句话说,Linux中Type域一般为11。...显然不能保存在TSS中,因为Linux为每个CPU就建立了一个TSS,而不是为每个进程建立TSS

1.8K20

操作系统进程的实现---中---05

下面先来看看sys_fork执行完后的代码 将当前线程PCB赋值给eax 判断PCB的状态是否为0,在linux 0.11中,0是就绪状态,而非0是阻塞状态 如果调用了相关sys_read和...内核–进程的调度schedule和switch_to解析 任务状态段TSSTSS描述符、局部描述符表LDT及LDT描述符 Linux 0.11用tss切换,但也可以 用栈切换,因为tss中的信息可以...; 先来看看Linux 0.11中switch_to的完整源码实现 switch_to() (sched.h 第173行) /********************************...首先,将当前父进程的eip和cs放在tss中,说明子进程一会如果执行的话,会从父进程在中断进入内核态时,压入栈中的eip和cs处开始执行 然后eax设置为了0,这一点很重要 因为linux 0.11...然后通过其文件头中定义的信息,就可以找到该文件的入口地址处 然后,通过iret中断返回后,eip会被设置为hello.exe程序的地址,因此子进程就直接去执行该hello程序了 ---- 小结 Linux

76360

理解进程的新建和执行过程

本文以linux0.11版本为基础,分析进程的内存布局,现代版本已经发生比较大的变化,都是很多原理都是类似的。.../* * Entry into gdt where to find first TSS. 0-nul, 1-cs, 2-ds, 3-syscall * 4-TSS0, 5-LDT0, 6-TSS1...etc ... */ #define FIRST_TSS_ENTRY 4 #define FIRST_LDT_ENTRY (FIRST_TSS_ENTRY+1) // 第一个tss选择子的偏移是4<<...3,4乘以8,等于32,即从GDT的偏移为32开始算,第一个进程的n是0,tss是32 #define _TSS(n) ((((unsigned long) n)<<4)+(FIRST_TSS_ENTRY...执行进程的时候,根据进程号,算出tss在gdt的索引,然后把索引里指向的tss里的上下文也加载到对应的寄存器,tss信息中的ldt索引首先从gdt找到进程ldt结构体数据的首地址,即desc_struct

71020

时间系统、进程的调度与切换

三、进程切换 由于i386 CPU 要求软件设置TR 及TSSLinux 内核只不过“走过场”地设置TR 及TSS,以满足CPU 的要求。...我们知道,新任务的内核栈指针(SS0 和ESP0)应当取自当前任务的TSS,可是,Linux 中并不是每个任务就有一个TSS,而是每个CPU 只有一个TSS。...Intel 原来的意图是让TR 的内容随着任务的切换而走马灯似地换,而在Linux 内核中却成了只更换TSS 中的SS0 和ESP0,而不更换TSS 本身,也就是根本不更换TR 的内容。...这是因为,改变TSS 中SS0 和ESP0 所化的开销比通过装入TR 以更换一个TSS 要小得多。因此,在Linux内核中,TSS 并不是属于某个进程的资源,而是全局性的公共资源。...在多处理机的情况下,尽管内核中确实有多个TSS,但是每个CPU 仍旧只有一个TSS

2.3K00
领券