Welcome 微信登录

首页 / 操作系统 / Linux

Java 中关于信号的处理在Linux下的实现

Java 中关于信号的处理在Linux下的实现

Linux 的线程和信号基于 NPTL 的线程库,多线程应用中的每个线程有自己独特的线程 ID,并共享同一个进程ID。应用程序可以通过调用 kill(getpid(),signo) 将信号发送到进程,如果进程中当前正在执行的线程没有阻碍此信号,则会被中断,线号处理函数会在此线程的上下文背景中执行。应用程序也可以通过调用 pthread_kill(pthread_t thread, int sig)将信号发送给指定的线程,则线号处理函数会在此指定线程的上下文...
Linux内核信号处理机制介绍

Linux内核信号处理机制介绍

本文简单介绍下Linux信号处理机制,为介绍二进制翻译下信号处理机制做一个铺垫。本文主要参考书目《Linux内核源代码情景分析》《独辟蹊径品内核:Linux内核源代码导读》首先,先说一下什么是信号。信号本质上是在软件层次上对中断机制的一种模拟,其主要有以下几种来源:程序错误:除零,非法内存访问… 外部信号:终端Ctrl-C产生SGINT信号,定时器到期产生SIGALRM… 显式请求:kill函数允许进程发送任何信号给其他进程或进程组。 在Linux下,可以...
Java 工具(jmap,jstack)在Linux上的源码分析(一)流程图

Java 工具(jmap,jstack)在Linux上的源码分析(一)流程图

在我们常用的Jstack, Jmap 用于分析java虚拟机的状态的工具,通过起另一个虚拟机通过运行sun.tools包下的java文件,去跟踪另一个虚拟机的状态。相关阅读:http://www.linuxidc.com/Linux/2012-01/51213.htm与 http://www.linuxidc.com/Linux/2012-01/51216.htm如果让你设计一个跟踪另一个进程的方法,你也通常会考虑这几种常用的方式。第一种,就是通知被跟踪的...
JVM Thread stop 的源码分析

JVM Thread stop 的源码分析

在JVM, Thread.stop 是被阻止的方法,看原语义“该方法具有固有的不安全性。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查ThreadDeath异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。stop的许多使用都应由只修改某些变量以指示目标线程应该停止运行的代码来取代。目标线程应定期检查该变量,并且如果该变量指示...
Java 中自旋锁的实现

Java 中自旋锁的实现

Java中初始是使用mutex互斥锁,因为互斥锁是会线程等待挂起,而对获取锁后的操作时间比较短暂的应用场景来说,这样的锁会让竞争锁的线程不停的park,unpark 的操作,这样的系统的调用性能是非常糟糕的,为了提高锁的性能,java 在6 默认使用了自旋锁。在Linux中本身就已经提供了自旋锁的系统调用,在glibc-2.9中就有它的比较简单的实现方法intpthread_spin_lock(lock)pthread_spinlock_t*lock;{a...
Java 工具(jmap,jstack)在Linux上的源码分析(四)safe point

Java 工具(jmap,jstack)在Linux上的源码分析(四)safe point

safe point 顾明思意,就是安全点,当需要jvm做一些操作的时候,需要把当前正在运行的线程进入一个安全点的状态(也可以说停止状态),这样才能做一些安全的操作,比如线程的dump,堆栈的信息。在jvm里面通常vm_thread(我们一直在谈论的做一些属于vm 份内事情的线程) 和cms_thread(内存回收的线程)做的操作,是需要将其他的线程通过调用SafepointSynchronize::begin 和 SafepointSynchronize...
使用Spring进行切面(AOP)编程

使用Spring进行切面(AOP)编程

一、 AOP理论AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。u 横切性关注点对哪些方法进行拦截,拦截该方法后怎么处理,这些关注就称之为横切面关注点。u Aspect(切面)指横切...
利用Maven搭建Spring开发环境

利用Maven搭建Spring开发环境

一、 概要说明最近几天在测试Spring3.0的AOP功能,在测试功能之前,首先是要搭建出Spring3.0的开发功能。开始去官网下载Spring的相关jar包,但是这些jar包中还是会需要其他的一些jar包,于是又手动的去下载其他的相关jar包。这样也可以搭建出开发环境,但是需要频繁的去下载缺少的jar包,很麻烦。这里,我们可以还有一个更好的办法,采用maven来管理我们的工程,让maven来自动为我们去下载相关版本的jar包,具体的配置如下。二、 下载...
手把手教你写Linux I2C设备驱动

手把手教你写Linux I2C设备驱动

Linux I2C驱动是嵌入式Linux驱动开发人员经常需要编写的一种驱动,因为凡是系统中使用到的I2C设备,几乎都需要编写相应的I2C驱动去配置和控制它,例如 RTC实时时钟芯片、音视频采集芯片、音视频输出芯片、EEROM芯片、AD/DA转换芯片等等。 Linux I2C驱动涉及的知识点还是挺多的,主要分为Linux I2C的总线驱动(I2C BUS Driver)和设备驱动(I2C Clients Driver),本文主要关注如何快速地完成一个具体的...
<< 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 >>