Linux内核同步笔记 几个基本概念 - 临界区(critical region):访问和操作共享数据的代码段: - 原子操作:操作在执行中不被打断,要么不执行,要么执行完: - 竞争条件: 两个线程处于同一个临界区内执行,对数据同时访问或操作,称之为竞争: - 同步(synchronization):避免并发和防止竞争条件成为同步. 预防死锁 - 按顺序加锁,使用嵌套锁时,必须注意按顺序加锁,可以防止拥抱类死锁. - 防止饥饿 - 不要重复请求同一个锁 - 设计力求简单. 原子操作 原子操作可…
内核同步 同步介绍 同步的概念 临界区:也称为临界段,就是訪问和操作共享数据的代码段. 竞争条件: 2个或2个以上线程在临界区里同一时候运行的时候,就构成了竞争条件. 所谓同步.事实上防止在临界区中形成竞争条件. 假设临界区里是原子操作(即整个操作完毕前不会被打断),那么自然就不会出竞争条件.但在实际应用中.临界区中的代码往往不会那么简单,所以为了保持同步,引入了锁机制.但又会产生一些关于锁的问题. 死锁产生的条件:要有一个或多个运行线程和一个或多个资源,每一个线程都在等待当中的一个资源.但全部…
第一章 linux内核简介 每个处理器在任何时间点上的活动必然概括为下列三者: 运行于用户空间,执行用户进程 运行于内核空间,处于进程上下文,代表某个特定的进程执行 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断 Linux内核与传统的Unix系统之间的差异: linux内核可以抢占 linux内核并不区分线程和其他一般进程 linux提供具有设备类的面向对象的设备模型.热插拔事件,以及用户空间的设备文件系统 linx忽略了一些被认为设计得很拙劣的unix特性,及难以实现的过…
一.相关历史 1. Unix内核的特点 简洁:仅提供系统调用并有一个非常明确的设计目的 抽象:几乎所有东西都被当做文件 可移植性:使用C语言编写,使得其在各种硬件体系架构面前都具备令人惊异的移植能力 进程:创建迅速,一次执行保质保量地完成一个任务:独特的fork系统调用 清晰的层次化结构:策略和机制分离的理念,简单的进程间通信元语把单一目的的程序方便地组合在一起 2. 关于Linux内核 自由/开源的软件 类Unix系统:设计思想相似. 一切皆文件 特定的单一用途 & 简单的组合方式 二.操作系…
读完这本书回过头才发现, 第一篇笔记居然是 2012年8月发的, 将近一年半的时间才看完这本书(汗!!!). 为了方便以后查看, 做个<Linux内核设计与实现>读书笔记 的目录: <Linux内核设计与实现>读书笔记(一)-内核简介 <Linux内核设计与实现>读书笔记(二)- 内核开发的准备 <Linux内核设计与实现>读书笔记(三)- Linux的进程 <Linux内核设计与实现>读书笔记(四)- 进程的调度 <Linux内核设计与实…
Linux内核设计第七周 ——可执行程序的装载 第一部分 知识点总结 一.预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 编译链接的过程 预处理阶段 gcc -E -o XX.cpp XX.c -m32 XX.cpp是预处理文件 编译器生成汇编代码阶段 gcc -x cpp-output -S -o hello.s hello.cpp -m32 XX.s是汇编代码 汇编器生成目标代码阶段 gcc -x assembler -c hello.s -o hello.o -m32 XX…
<Linux内核设计与实现>CHAPTER18阅读梳理 [学习时间:2hours] [学习内容:bug的来源分析:bug调试途径] 一.bug来源 1.内核中的bug 内核中的bug表现得不像用户级程序中那么清晰——因为内核.用户以及硬件之间的交互会很微妙: 从隐藏在源代码中的错误到展现在目击者面前的bug,往往是经历一系列连锁反应的事件才可能触发的. bug二.调试方法 1.通过打印来调试 优势: 健壮性是printk()函数最容易让人们接受的一个特质(使用环境和时机很广泛): printk…
<Linux内核设计与实现>课本学习笔记 By20135203齐岳 一.Linux内核简介 Unix内核的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆文件,对数据和设备的操作都是通过一套相同的系统调用接口进行的. Unix内核和相关的系统工具都是用C语言编写成的. Unix进程创建非常迅速. Unix提供了一套简单而稳定的进程间通信原语. Unix现在已经发展为一个支持抢占式多任务.多线程.虚拟内存.换页.动态链接和TCP/IP网络的现代化操作系统. 操作系统…
一.获取内核源码 1. Git git实际上是一种开源的分布式版本控制工具. Linux作为一个开源的内核,其源代码也可以用git下载和管理 - 获取最新提交到版本树的一个副本 - $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git - 下载代码后,更新自己的分支到最新分支 - $ git pull 2.安装内核源代码 压缩形式为bzip2:$ tar xvjf linux-x.y.z.…
一.第一章 1. Unix内核的特点简洁:仅提供系统调用并有一个非常明确的设计目的抽象:几乎所有东西都被当做文件可移植性:使用C语言编写,使得其在各种硬件体系架构面前都具备令人惊异的移植能力进程:创建迅速,一次执行保质保量地完成一个任务:独特的fork系统调用清晰的层次化结构:策略和机制分离的理念,简单的进程间通信元语把单一目的的程序方便地组合在一起.一切皆文件2.操作系统与内核操作系统:整个系统中负责完成最基本功能和系统管理的部分.内核:响应中断的中断服务程序:管理多个进程,分享处理器时间调度…