Minix3信号处理分析】的更多相关文章

进程的信号处理的相关结构 PM中存放着所有进程的进程描述符,在一个进程描述符中,有一个指针,指向一个sigaction结构二维数组中的一项,表示这个进程所有信号的操作.一个sigaction结构包含信号处理函数的起始地址,执行期间需要屏蔽的信号,以及表示如何处理信号的标志 代表一个进程对单个信号操作的Sigaction结构如下 进程描述符结构为mproc如下 信号处理流程 1.寻找接收信号的进程 进程A要发送信号,需要传入一个proc_id,指明接收信号的进程.PM中有一个数组,存放着所有进程的…
MINIX3 进程调度分析  5.1MINIX3 进程调度概要  MINIX3 的进程调度还是非常简单的,调度算法是非常短小的,其目的就是体现 了一个简单和高效的设计原则,当然简单和高效其实很难并存,整体而言,就是 一个多队列调度算法,根据优先级来放到相应的位置.  我们现在来看下整个图示:(下面这个图其实就是 MINIX3 初始化时用户还没有 创建进程时所显示的图),在层次一,被认为是系统层,级别最高,是包括 system 和 clock 任务,之后第 2 层就是 tty(终端进程,在 I/O…
一个操作系统的分析是属于一个非常庞大的工程,操作系统就像是一个人造的 人,每一个模块想完全发挥功效,很有可能需要很多模块的支持才能够实现.所 以在分析 MINIX3 时,我认为同时看多个模块对于理解 MINIX3 是有好处的,特 别是因为 MINIX3 是采用微内核结构,也就造成阅读源码的一个比较大的障碍. 在此我统领的描述下 MINIX3 和 PM 部分内容,给读者 MINIX3 形成一个整体的 导读框架: 1 MINIX3 采用微内核结构,什么是微内核呢?MINIX3 设计者认为除了部分非…
High-Speed Tracking with Kernelized Correlation Filters 的翻译与分析 基于核相关滤波器的高速目标跟踪方法,简称KCF 写在前面,之所以对这篇文章进行精细的阅读,是因为这篇文章极其重要,在目标跟踪领域石破天惊的一篇论文,后来在此论文基础上又相继出现了很多基于KCF的文章,因此文章好比作大厦的基石,深度学习,长短记忆等框架网络也可以在KCF上进行增添模块,并能够达到较好的效果,因此我将深入学习这篇文章,并在此与大家分享,由于学识有限,难免有些谬…
PM 时钟机制 10.1 Minix3 PM 时钟机制概述在 MINIX3 中,除了前面所讲到的 CLOCK 时钟,在 pm 中也是维持了一个时钟, 我们暂且不分析为啥要这么做,我就分析是怎么实现这个 PM 时钟监视器.我可 以这么肯定的说,这个时钟监视器只是一个虚幻的时钟监视器,最终还是得内核 时钟来完成这个工作,但是这个时钟监视器还是很有用的.我分析下 PM 时钟监 视器的工作过程: 如果用户需要用到时钟的相关功能,用户进程就会告诉 pm 我需要设定一个时钟 警告器来告诉我在未来的多长时间给…
这是自己最近学习Linux系统编程之后写的一个练手的小程序,能很好地复习系统编程中的进程管理.信号.管道.文件等内容. 通过回顾写的过程中遇到的问题的形式记录程序的关键点,最后给出完整程序代码. 0. Tinyshell的功能 这个简易的shell解释器可以解析磁盘命令,支持管道和输入输出重定向,内置命令只实现了exit,可以判定后台执行命令(&),但未实现bg功能(后台命令直接返回). 1. shell是如何运行程序的 基本的模式就是主进程从键盘获取命令.解析命令,并fork出子进程执行相应的…
MINIX3  内核整体架构回顾及内核定 性分析 12.1 注意事项 由于本文档不对 I/O 文件系统做出分析,所以在此不对 MINIX3 整体做出一个分 析,本章主要是针对内核进程分析.并且这里的模型建立是非常理想化的. 12.2 MINIX3 架构 MINIX3 的设计理念就是设计一个比当前主流的系统更加稳定和可靠系统.从而 MINIX3 也就是提出一个非常经典的模式:就是系统服务器进程的概念.这些系 统服务器进程是外核的一部分,但是可以和内核通信.最为重要的设计理念是这 些服务器进程既然作…
MINIX3 进程通信分析 6.1MINIX3 进程通信概要 MINIX3 的进程通信是 MINIX3 内核部分最重要的一个部件,我个人认为其实这 是内核中的“内核”,怎么来理解这个概念呢?其实 MINIX3 进程间通信部件的 实行不完全依赖任何一个部件,这个在后面会详细的看到.Minix3  实现进程通 信的方法是----消息机制.何为消息机制呢? 就是进程 A 有消息发送进程 B,希望进程 B 给进程 A 一个服务,进程 A 和 B 在 这里就发生了进程间的通信 注意这里的消息机制其实是不受…
MINIX3 内核时钟分析  4.1 内核时钟概要  先想想为什么 OS 需要时钟?时钟是异步的一个非常重要的标志,设想一下,如 果我们的应用程序需要在多少秒后将触发某个程序或者进程,我们该怎么做到? 就需要一个时钟的鼎力相助才能完成这个项工作.我的意思非常明确,就是说内 核时钟就是一个非常重要的部件,它可以完成分时系统的调度功能,同时它也能 为应用程序提供一个非常方便的异步处理问题的功能  现在我们简要的来看下时钟芯片的构造基本原理,如果需要了解详细的时钟芯 片,可以参考 intel 时钟芯片…
新看看官方demo的libevent如何使用信号 int called = 0; static void signal_cb(int fd, short event, void *arg) { struct event *signal = arg; printf("%s: got signal %d\n", __func__, EVENT_SIGNAL(signal)); if (called >= 2) event_del(signal); called++; } int ma…
MINIX3 系统任务分析  7.1 MINIX3 系统任务概要  MINIX3 怎么来给用户提供丰富的服务呢?除了中断,异常处理,除了时钟服务. 程序员总是希望一个操作系统给他提供足够的服务,使得他能够做出更加高效安 全的程序来.在 MINIX3 中,它提供了一种系统任务机制.这个机制的作用就是 介绍任何想调用系统调用的函数消息,之后将其进行一个精准的处理,使得其能 够对程序员提供帮助.  MINIX3 整体架构设计成 C/ S 模型,以 PM 为例,PM 其实在 MINIX3 看来就是 就是…
前言: 本贴写于2016年12与15日,UK.最近在学习EMD(Empirical Mode Decomposition)和HHT(Hilbert-Huang Transform)多分辨信号处理,FQ回百度(好奇怪,哪儿的墙)寻找资源,然而却发现大部分的资料对于基于Matlab的EMD的介绍和安装介绍,不够详细,而且在安装和使用过程中遇到的问题也未能总结一二,然而,还有一些C某DN的作者,Goolge免费的资源你要大家5分去下载?起码也得1分,本贴介绍的资源下载,放在C某DN,每个资源1分(为满…
本文转自http://www.ibm.com/developerworks/cn/linux/kernel/l-thread/ 支持原创.尊重原创,分享知识! 自从多线程编程的概念出现在 Linux 中以来,Linux 多线应用的发展总是与两个问题脱不开干系:兼容性.效率.本文从线程模型入手,通过分析目前 Linux 平台上最流行的 LinuxThreads 线程库的实现及其不足,描述了 Linux 社区是如何看待和解决兼容性和效率这两个问题的. 一.基础知识:线程和进程 按照教科书上的定义,进…
节前某个部门的测试环境反馈tomcat会意外退出,我们到实际环境排查后发现不是jvm crash,日志里有进程销毁的记录,从pause到destory的整个过程: org.apache.coyote.AbstractProtocol pause Pausing ProtocolHandler org.apache.catalina.core.StandardService stopInternal Stopping service Catalina org.apache.coyote.Abstr…
linux下程序对SIGSEGV信号的默认处理方式是产生coredump并终止程序,可以参考man 7 signal Signal Value Action Comment ────────────────────────────────────────────────────────────────────── SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT…
前面一章我们已经说过C语言存在的一些问题和它晦涩的地方,让我们对这门神奇的语言有了更深的了解.现在这一章则集中精力来讨论C语言的声明,分为三块,首先是说明C语言声明晦涩难懂的原因和声明是如何形成的,其次就是学习怎样对C语言的声明进行分析,另外本文将详细来探讨一个分析C语言声明的工具--cdecl,分析和编写它的源代码. C语言的声明晦涩难懂这一点应该是名不虚传的,比如说下面这个声明: void (*signal(int sig, void(*func) (int)))(int); 这可不是吓人的…
libevent源码分析 转自:http://www.cnblogs.com/hustcat/archive/2010/08/31/1814022.html 这两天没事,看了一下Memcached和libevent的源码,做个小总结. 1.入门 1.1.概述Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库.Libevent有几个显著的亮点: (1)事件驱动(event-driven),高性能:(2)轻量级,专注于网络,不如 ACE 那么臃肿庞…
在数字信号处理中常常需要用到离散傅立叶变换(DFT),以获取信号的频域特征.尽管传统的DFT算法能够获取信号频域特征,但是算法计算量大,耗时长,不利于计算机实时对信号进行处理.因此至DFT被发现以来,在很长的一段时间内都不能被应用到实际的工程项目中,直到一种快速的离散傅立叶计算方法--FFT,被发现,离散傅立叶变换才在实际的工程中得到广泛应用.需要强调的是,FFT并不是一种新的频域特征获取方式,而是DFT的一种快速实现算法.本文就FFT的原理以及具体实现过程进行详尽讲解. DFT计算公式 本文不…
傅立叶变换.拉普拉斯变换.Z变换最全攻略 作者:时间:2015-07-19来源:网络       傅立叶变换.拉普拉斯变换.Z变换的联系?他们的本质和区别是什么?为什么要进行这些变换.研究的都是什么?从几方面讨论下. 本文引用地址:http://www.eepw.com.cn/article/277444.htm 这三种变换都非常重要!任何理工学科都不可避免需要这些变换. 傅立叶变换,拉普拉斯变换,Z变换的意义 [傅里叶变换]在物理学.数论.组合数学.信号处理.概率论.统计学.密码学.声学.光学…
1.Eigen 是一个线性算术的C++模板库,包括:vectors, matrices, 以及相关算法.功能强大.快速.优雅以及支持多平台. http://www.oschina.net/p/armadillo+cpp+library 2.Armadillo C++ Library 是一种C++的线性代数库(矩阵数学)以取得良好的平衡速度与易用性.整数,浮点,而复杂的数字支持,以及一个子集,三角和统计功能.各种矩阵分解是通过可选的集成 与LAPACK和Atlas 库.延迟评价方法,基于模板元编程…
另,线程的资源占用可见:http://www.cnblogs.com/charlesblc/p/6242111.html 进程 & 线程的很多知识可以看这里:http://www.cnblogs.com/charlesblc/p/6135666.html 线程一直是分系统级线程和用户级线程,也就是所谓的 1:1线程模型和 1:n线程模型.注意Linux2.4版本之前pthread用的LinuxThread实现,和Linux2.5以后pthread用的NPTL(据说比较好支持了POSIX线程标准)…
一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench使用C语言编写,下面是其下载链接: http://home.tiscali.cz/~cz210552/webbench.html 说到这里,我赶脚非常有必要给这个网站局部一个截图,如下图: 第一次看到这张图片,着实吃了一精!居然是2004年最后一次更新,我和我的小伙伴们都惊呆了.不过既然现在大家还都…
转自:http://www.360doc.com/content/13/0124/08/9008018_262076786.shtml   SODB 数据比特串-->最原始的编码数据 RBSP 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit“1”)若干比特“0”,以便字节对齐. EBSP 扩展字节序列载荷-- >在RBSP基础上填加了仿校验字节(0X03)它的原因是: 在NALU加到Annexb上时,需要填加每组NALU之前的开始码…
给进程设置僵尸状态的目的是维护子进程的信息,以便父进程在以后某个时间获取.这些信息包括子进程的进程ID.终止状态以及资源利用信息(CPU时间,内存使用量等等).如果一个进程终止,而该进程有子进程处于僵尸状态,那么它的所有僵尸子进程的父进程ID将被重置为1(init进程).继承这些子进程的init进程将清理它们(init进程将wait它们,从而去除僵尸状态). 但通常情况下,我们是不愿意留存僵尸进程的,它们占用内核中的空间,最终可能导致我们耗尽进程资源.那么为什么会产生僵尸进程以及如何避免产生僵尸…
http://blog.163.com/he_junwei/blog/static/1979376462014021105242552/ http://www.ibm.com/developerworks/cn/linux/l-cn-signalsec/   Linux 多线程应用中编写安全的信号处理函数 在开发多线程应用时,开发人员一般都会考虑线程安全,会使用 pthread_mutex 去保护全局变量.如果应用中使用了信号,而且信号的产生不是因为程序运行出错,而是程序逻辑需要,譬如 SIGU…
Linux信号(signal) 机制分析 [摘要]本文分析了Linux内核对于信号的实现机制和应用层的相关处理.首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理.接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等.最后介绍了应用层的相关处理,主要包括信号处理函数的安装.信号的发送.屏蔽阻塞等,最后给了几个简单的应用实例. [关键字]软中断信号,signal,sigaction,kill,sigqueue,settimer,sigmask,sigprocma…
3.1 INTEL 保护模式概要 先要说明一个问题:不是 MINIX3 一定要设置这个保护模式,但是在 386 平台上, 引入了这个保护模式机制,MINIX3 不得不设立相关保护模式的内容.由于 386 平台的保护模式是一个极其复杂的过程,建议读者参考相关文献如 INTEL 编程 手册卷 3A,我在这里做一个简要的介绍: 首先理解什么是保护模式,说道保护模式,我们马上应该想到实模式,何谓实模 式呢?实模式是 386 一个历史包袱,在当年开发 8088.8086 时,为了能够在 16 位的寄存器的…
一.前言 因为近期项目中开始使用Redis,为了更好的理解Redis并应用在适合的业务场景,需要对Redis设计与实现深入的理解. 我分析流程是按照从main进入,逐步深入分析Redis的启动流程.同时根据Redis初始化的流程,理解Redis各个模块的功能及原理. 二.redis启动流程 1.初始化server变量,设置redis相关的默认值 2.读入配置文件,同时接收命令行中传入的参数,替换服务器设置的默认值 3.初始化服务器功能模块.在这一步初始化了包括进程信号处理.客户端链表.共享对象.…
linux环境下tcpdump源代码分析 原文时间 2013-10-11 13:13:02  CSDN博客 原文链接  http://blog.csdn.net/han_dawei/article/details/12615199 主题 Tcpdump源码分析 作者:韩大卫 @ 吉林师范大学 tcpdump.c 是tcpdump 工具的main.c, 本文旨对tcpdump的框架有简单了解,只展示linux平台使用的一部分核心代码. Tcpdump 的使用目的就是打印出指定条件的报文,即使有再多…
错误情况及原因分析 前两天看APUE的时候,有个程序要自己制作一个sleep程序,结果在这个程序中就出现了在信号处理函数中调用longjmp函数的情况,结果就出现了错误,具体错误是啥呢,请参见下面这段程序: /* * 在信号处理函数中调用longjmp的错误情况 */ #include <errno.h> #include <setjmp.h> #include <signal.h> #include <string.h> #include <stdl…