
LDK
Linux学习之路
这个作者很懒,什么都没留下…
展开
-
第九章 内核同步介绍
临界区所谓临界区就是访问和操作共享数据的代码段。多个执行线程并发访问同一个资源通常是不安全的,为了避免在临界区中并发访问,编程者必须保证这些代码原子的执行——也就是说,操作在执行结束前不可被打断,就如同临界区是一个不可分割的指令一样。竞争如果两个执行线程有可能处于同一个临界区中执行,那么这就是程序的一个Bug,如果这种情况确实发生了,我们就称它为竞争条件。同步避免并发和防止竞争条件称为同步。内核同步原创 2017-02-04 18:43:59 · 672 阅读 · 0 评论 -
第十章 内核同步方法
原子操作原子正数操作定义一个 atomic_t 类型的数据方法很平常,你还可以在定义它时给它设定初值:atomic_t v; //定义vatomic_t u = ATOMIC_INIT(0); //定义u并把它初始化为0atomic_set(&v, 4); //v = 4 atomic_add(2, &v);原创 2017-02-04 19:44:02 · 862 阅读 · 0 评论 -
第一章 Linux内核简介
1.1 Unix 特点Unix 很简洁,不像其他动辄几千个系统调用并且设计目的不明确的系统,Unix 仅仅提供几百个系统调用并且有一个非常明确的设计目的。Unix 中所有的东西都被当作文件对待。Unix 内核和相关的系统工具软件是用 C 语言编写而成。Unix 进程创建非常迅速,并且有一个非常独特的 fork()系统调用。1.2 Linux 简介Linux 是类 Unix 系统,但它不是原创 2017-01-30 16:32:58 · 933 阅读 · 0 评论 -
第二章 从内核出发
内核开发的特点:内核编程时既不能访问 C 库,也不能访问标准的 C 头文件。内核编程时必须使用 GNU C。内河编程时缺乏像用户空间的那样的内核保护机制。内核编程时难以执行浮点数运算。内核给每一个进程只有一个很小的定长堆栈。由于内核支持异步中断、抢占和 SMP,因此必须时刻注意内核同步和并发。要考虑可移植性的重要性。1、无 libc 库抑或无标准头文件 对内核来说完整的 C 库——原创 2017-01-30 16:40:41 · 644 阅读 · 0 评论 -
第三章 进程管理
1、进程和线程 进程就是出于执行期的程序,但进程并不仅仅局限于一段可执行代码。通常还要包括其它资源,像打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存空间地址及一个或多个执行线程,当然还包括用来存放全局变量的数据段等。 执行线程,简称线程,是在进程中活动的对象,每个线程拥有独立的程序计数器、进程栈和一组进程寄存器。内核调度的对象是线程,而不是进程。 对 L原创 2017-01-31 22:01:38 · 648 阅读 · 0 评论 -
第四章 进程的调度
1. 什么是调度现在的操作系统都是多任务的,为了能让更多的任务能同时在系统上更好的运行,需要一个管理程序来管理计算机上同时运行的各个任务(也就是进程)。这个管理程序就是调度程序,它的功能说起来很简单:决定哪些进程运行,哪些进程等待决定每个进程运行多长时间 此外,为了获得更好的用户体验,运行中的进程还可以立即被其他更紧急的进程打断。总之,调度是一个平衡的过程。一方面,它要保证各个运行的进程能够原创 2017-01-31 22:15:30 · 818 阅读 · 0 评论 -
第五章 系统调用
什么是系统调用系统调用在用户进程和硬件设备之间添加了一个中间层。该层的作用有三个:首先,它为用户空间提供了一种硬件抽象接口,举例来说,当需要读写文件的时候,应用程序就可以不去管磁盘类型和介质,甚至不用去管文件所在的文件系统是那种类型。第二,系统调用保证了系统的稳定和安全。作为硬件设备和应用程序之间的中间人,内核可以基于权限、用户类型和其它一些规则对需要进行的访问进行裁决。第三,每个进程都运行在原创 2017-02-01 21:34:15 · 772 阅读 · 0 评论 -
第七章 中断和中断处理
什么是中断中断本质上是一种特殊的电信号,由硬件设备发向处理器,处理器接收到中断后,会马上向操作系统反应此信号到来。硬件设备产生中断的时候并不考虑处理器的时钟同步,因此中断是异步的,换句话说中断随时可能产生。什么是异常异常一般由处理器本身引起(异常是同步中断),比如运算中的除0操作。中断处理程序——中断上下文、原子上下文中断处理程序与其他内核函数的真正区别在于,中断处理程序是被内核调用来相应中断的,而原创 2017-02-01 21:46:41 · 1023 阅读 · 1 评论 -
第八章 下半部和推后执行的工作
上半部的局限性:中断处理程序以异步方式执行,并且它有可能打断其他重要代码(甚至包括其他中断处理程序)的执行,因此中断处理程序应该越快越好。如果当前有一个中断处理程序正在执行,在最好的情况下(如果IRQF_DISABLED没有被设置),与该中断同级的其他中断被屏蔽,在最坏的情况下(设置了IRQF_DISABLED),当前处理器上所有其他中断都会被屏蔽。因为禁止中断后硬件与操作系统无法通信,因此,中原创 2017-02-02 20:24:24 · 737 阅读 · 1 评论