This chapter introduces some conception about kernel synchronization generally. Critical Regions: Code paths that access and manipulate shared data. Race Condition: Two threads of execution to be simultaneously executing within the same critical regi…
这一章我们研究四种主要的数据结构: linked lists, queues, maps, binary trees. Linked Lists:(<linux/list.h>) 在linux中,并不是直接将某个结构体作为链表的节点,而是在该结构中插入一个链表的节点.借助container_of()这个宏,我们可以轻松的找到包含给定成员变量的父结构. Linux kernel中一般使用的是循环双链表. 正常遍历使用的是list_for_each()宏,但是当遍历过程中删除某个表项时就有可能出错…
目录 . 内核锁机制 . 同步与互斥 . 锁定内存总线原子操作 . 信号量 . 自旋锁 . RCU机制 . PERCPU变量 . 内存和优化屏障 . 读者/写者锁 . 大内核锁 . 互斥量 1. 内核锁机制 内核可以不受限制地访问整个地址空间,在多处理器系统上(或类似地,在启用了内核抢占的单处理器上),这会引起一些问题,如果几个处理器同时处于核心态(即CPU正在执行内核区代码).则理论上它们可以同时访问同一个数据结构,这会造成竞态条件为了解决这个问题,内核使用了由锁组成的细粒度网络,来明确地保护…
In 2.6.x, there are 3 mechanisms for implementing a bottom half: softirqs, tasklets and work queues. Here's the comparison: Softirqs: Softirqs are statically allocated at compile time. It is represented by the softirq_action structure, which is defin…
Recently I realized my English is still far from good. So in order to improve my English, I must not only read in English, but also think and write in English. I know I'm gonna make a lot of mistake in using English, but everything has a process so I…
在Linux中,处理器所作的事可以归纳为3种情况: 1.In user-space, executing user code in a process; 2.In kernel-space, in process context, executing on behalf of a specific process; 3.In kernel-space, in interrupt context, not associated with a process, handling an interru…
Regarding correctness, programmers routinely use testing to gain confidence that their programs works as intended, but as famously stated by Dijkstra: “Program testing can be used to show the presence of bugs, but never to show their absence.” Ideall…
http://www.codemachine.com/courses.html#kerdbg Windows Kernel Internals for Security Researchers This course takes a deep dive into the internals of the Windows kernel from a security perspective. Attendees learn about behind the scenes working of va…
库文件 先从我们熟悉的c库入手,理解系统调用(system call).c代码中调用printf函数,经历了以下调用过程:   最终输出的功能由内核中write调用完成,c库封装了系统调用. 对于以下hello world程序: #include int main() { printf("Hello world.\n"); return ; } 我们可以使用ldd查看程序依赖的库文件: linux # ldd hello linux-vdso.so. => (0x00007fff…
调度器完成以下任务: 时钟中断(或类似的定时器)时间内刷新进程的时间片,设置进程调度标志 系统调用返回或中断完成时检查调度标志 schedule函数 内核代码中完成进程调度的函数为schedule(),该函数中包含以下调用: put_prev_task(rq, prev); next = pick_next_task(rq); context_switch(rq, prev, next); schedule首先将当前执行函数放入运行队列,然后选择下一个要运行的进程(怎么选择下一个进程,这部分就是…
Introduction The RPM Package Manager (RPM) is an open packaging system that runs on Fedora as well as other Linux and UNIX systems. Red Hat and the Fedora Project encourage other vendors to use RPM for their own products. RPM is distributed under the…
1. Detecting Performance Issues 2. Scripting Strategies 3. The Benefits of Batching 4. Kickstart Your Art 5. Faster Physics 6. Dynamic Graphics 7. Masterful Memory Management 8. Tactical Tips and Tricks 1. Detecting Performance Issues  The Unity Prof…
CMSIS 到底是什么? 先来看看ARM公司对CMSIS的定义: ARM® Cortex™ 微控制器软件接口标准 (CMSIS) 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层. CMSIS 可实现与处理器和外设之间的一致且简单的软件接口,从而简化软件的重用,缩短微控制器开发人员新手的学习过程,并缩短新设备的上市时间. 软件的创建是嵌入式产品行业的一个主要成本因素.通过跨所有 Cortex-M 芯片供应商产品将软件接口标准化(尤其是在创建新项目或将现有软件迁移到新设备时),可以大大降…
In the last chapter we learned that deep neural networks are often much harder to train than shallow neural networks. That's unfortunate, since we have good reason to believe that if we could train deep nets they'd be much more powerful than shallow…
看到Max Welling教授主页上有不少学习notes,收藏一下吧,其最近出版了一本书呢还,还没看过. http://www.ics.uci.edu/~welling/classnotes/classnotes.html Statistical Estimation [ps]- bayesian estimation- maximum a posteriori (MAP) estimation- maximum likelihood (ML) estimation- Bias/Variance…
Environmental introduction System Kernel : -.el6.x86_64 Source Server : 192.168.7.1 Target Server : 192.168.7.10 Target Server Configure 1.Close SElinux sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config setenforce 2.configure i…
JVM 对 Java 有多重要,对程序员面试有多重要,这些不用多说. 如果你还没意识到学 JVM 的必要性,或者不知道怎么学 JVM,那么看完这篇文章,你就能知道答案了. 曾经的我很不屑于学 JVM,但是后来发现不学不行.这就像和媳妇吵架之后我不想道歉一样,不道歉那是不可能的,道歉是早晚的事儿,逃不掉. 后来我明白了: 认怂越晚,结局越惨. 但是我学的时候才知道:JVM,你太过分了,太难学了! 我的学习过程可以说非常坎坷,不过经历坎坷之后,我倒是发现学 JVM 的门道很多. 以我的经验加上和同行…
How This Book Is Organized 本书组织结构 Programming Entity Framework, Second Edition, focuses on two ways for you to learn. If you learn best by example, you’ll find many walkthroughs and code samples throughout the book; if you’re always looking for the b…
节选:Programming Microsoft Visual Basic 6.0 1999 The Data Access Saga All the new database-related capacities in Visual Basic 6 are based on Microsoft ActiveX Data Objects (ADO), a technology that lets you access any database or data source, as long as…
Milan Ikits University of Utah Joe Kniss University of Utah Aaron Lefohn University of California, Davis Charles Hansen University of Utah This chapter presents texture-based volume rendering techniques that are used for visualizing three-dimensional…
Linux kernel coding style This is a short document describing the preferred coding style for the linux kernel. Coding style is very personal, and I won't _force_ my views on anybody, but this is what goes for anything that I have to be able to mainta…
Topics Introduction (starting with old devices) How to handle a new Firmware How to set up your Mac and Device for Vuln Research/Exploit Development How to boot own Kernels How to patch own Code into the Kernel How to write Code for your iDevice Low…
老李分享: Oracle Performance Tuning Overview 翻译   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200. 1 性能优化概述 This chapter provides an introduction toperformance tuning and contains the following secti…
1.1.1 chrony简介 Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确. 它由两个程序组成:chronyd和chronyc. chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步.它确定计算机增减时间的比率,并对此进行补偿.   chrony是CentOS7.x上自带的时间同步软件 1.1.2 chrony的操作 # yum install -y chrony -->安装服务 # systemctl start…
Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确. 它由两个程序组成:chronyd和chronyc. chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步.它确定计算机增减时间的比率,并对此进行补偿. chronyc提供了一个用户界面,用于监控性能并进行多样化的配置.它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作. Chrony时间同步程序特点: 准确的时间同步: Chrony 是网络…
关于chrony Chrony是一个开源的自由软件,像CentOS7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步.相对于NTP时间同步软件,占据很大优势.其用法也很简单. Chrony有两个核心组件,分别是:chronyd:是守护进程,主要用于调整内核中运行的系统时间和时间服务器同步.它确定计算机增减时间的比率,并对此进行调整补偿.chronyc:提供一个用户界面,用于监控性能并进行多…
many Machine Learning problems involve thousands or even millions of features for each training instance. not only does this make training extremely slow,it can also make it much harder to find a good solution. this problem is often referred to as th…
0x00 概述 容器集群对时间同步要求高,实际使用环境中必须确保集群中所有系统时间保持一致,openstack官方也推荐使用chrony代替ntp做时间同步. Chrony是一个开源的自由软件,像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步.相对于NTP时间同步软件,占据很大优势. 需要注意的是,配置完/etc/chrony.conf后,需重启chrony服务,否则可能…
显示时,有三个参数,前两个必填,第几页,一页多少个size,第三个参数默认可以不填. 但是发现这个方法已经过时了,通过查看它的源码发现,新方法为静态方法PageRequest of(page,size) 分页是从第0也开始的 Spring项目使用JPA进行数据库操作可以极大的简化开发,下面我将用一个完整的Demo为大家展示分页查询并显示在前台页面首先来说一下分页和排序所用到的Page.Pageable接口和Sort类都是什么 JpaRepository提供了两个和分页和排序有关的查询 List…
一 Chrony概览 1.1 Chrony简介 Chrony是一个开源的自由软件,是网络世界协议(NTP)的另一种实现,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确. 它由两个程序组成:chronyd和chronyc. chronyd:一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步.它确定计算机增减时间的比率,并对此进行补偿. chronyc提供了一个用户界面,用于监控性能并进行多样化的配置.它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程…