自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 导读

内存管理1. JMP指令进程调度1. 系统寄存器和数据结构2. 进程-1:定义及其结构3. 进程-2:进程上下文和中断上下文4.进程-3: fork()函数5. switch_to(n)函数并发与竞争1. 并发与竞争2. 自旋锁

2012-04-22 19:55:31 340

原创 前言

1. 关于tynew名字的说明T: WHATY: WHYN: WHENE:WHEREW: HOW在操作系统的发展中,非常讲究缘由,一个概念的提出,都有其历史背景,所以说想理解其真正的精髓,你一定要追逐起源,理解其发展的过程。在寻其本质的过程中,你就会提出各种各样的问题。而你提出问题水平代表了你对这个东西的理解程度。我把提出的问题的方式简单归纳出了5个单词

2012-04-22 10:45:36 294

原创 系统调用

i. 系统调用产生的原因为了用户空间和内核空间运行的进程进行交互,内核提供了一组接口。通过该接口,应用程序可以访问硬件设备和其他操作系统资源。这组接口就是系统调用。系统调用在用户空间进程和硬件设备之间添加了一种中间层。主要作用有三个:1.      为用户空间提供了硬件的抽象接口。把用户从学习硬件设备的低级编程特性中解放出来。2.      系统调用保证了系统的稳定和安全。内核

2012-12-03 15:53:17 1272

原创 下半部

i.  下半部1.  下半部执行与中断处理密切相关但中断处理程序本身不执行的工作。2. 为什么用下半部中断处理流程(上半部)的局限性:a) 中断处理程序以异步方式执行并且可能会打断重要代码(也有可能是其他中断处理程序)的执行。为了避免被打断的代码停止时间过长,中断处理程序执行得越快越好。b) 如果当前有一个中断处理程序正在执行,在最好的情况下,该中断同级的其他中断会被屏

2012-11-29 07:18:36 1653

转载 中断处理

作者:刘昊昱  博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/short/ 本分析LDD3第9和第10章的示例代码short。short涉及的主要知识点有通过I/O端口或I/O内存操作设备寄存器及设备内存,注册中断处理函数处理中

2012-11-23 10:58:38 1400

原创 中断

i.中断1.     中断定义:中断是一种电信号,由硬件设备生成,并直接送入中断控制器的输入引脚上。再由控制器向处理器发送相应的信号。处理器一经检测此信号,便中断自己当前的工作转而处理中断。处理器通知操作系统已经产生中断,这样操作系统开始对此中断进行适当的处理。2.     产生中断的原因:Linux内核管理连接到计算机上的硬件设备。由于在处理器和硬件设备相互通信时,处理器的速度往往比

2012-11-23 10:44:15 1449

原创 Linux内核内存分配函数

i. 分配函数的选择kmalloc():如果需要连续的物理页,可以使用此函数,这是内核中内存分配的常用方式,也是大多数情况下应该使用的内存分配方式。传递给函数的最常用的标志是GTP_ATOMIC和GTP_KERNEL。前面的标志表示进行不睡眠的高优先级分配。在中断处理程序和其他不能睡眠的代码段中需要。后面的标志可以睡眠,在没有持自旋锁的进程上下文中使用。此函数返回内核逻辑地址。get_

2012-11-23 09:58:53 4191

转载 Linux用户空间与内核空间

1.      Linux内核地址空间划分通常32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。注意这里是32位内核地址空间划分,64位内核地址空间划分是不同的。2.      Linux内核高端内存a)      由来当内核模块代码或线程访问内存时,代码中的内存地址都为逻辑地址,而对应到真正的物理内存地址,需要地址一对一的映射,如

2012-11-21 15:30:39 1470

原创 bus, device, driver 三者之间的关系

1. 总线,设备和驱动总线:一个总线是处理器和一个或多个设备之间的通道. 为设备模型的目的, 所有的设备都通过一个总线连接, 甚至当它是一个内部的虚拟的,"平台"总线。设备:设备就是连接在总线上的物理实体。设备是有功能之分的。具有相同功能的设备被归到一个类(CLASS)中.在Linux 系统中,每个设备由一个 struct device 代表。驱动:驱动程序是在CPU运行时,提供操

2012-11-21 10:34:07 4149

转载 Linux设备模型分析之kset

作者:刘昊昱  博客:http://blog.csdn.net/liuhaoyutz内核版本:2.6.36 上一篇博客我们分析了Linux设备模型中kobject的注册和使用,在这一篇文章中,我们来看一下kset的用法。首先我们看一个使用kset的例子,代码如下:[cpp] view plaincopy#include   #include   #include   #

2012-11-21 10:12:09 1520

转载 Linux设备模型分析之kobject

作者:刘昊昱  博客:http://blog.csdn.net/liuhaoyutz内核版本:2.6.36 一、kobject应用举例Linux设备模型最基本的组成元素是kobject,我们先来看一个kobject的应用例子,该程序在Ubuntu 10.10, 2.6.32-38-generic-pae内核上调试通过。[cpp] view plaincopy#inclu

2012-11-21 10:08:59 1580

原创 进程-2:进程上下文和中断上下文

1.     CPU的状态CPU总是处于以下3种状态的一种:a)       内核态,运行于进程上下文,内核代表进程运行于内核空间;b)       内核态,运行于中断上下文,内核代表硬件运行于内核空间;c)       用户态,运行于用户空间。2.     进程上下文它是一种内核所处的操作模式,此时内核代表进程执行系统调用或运行内核线程。既然代表进程,那么就用

2012-11-10 20:56:35 1376

原创 switch_to(n)函数

这篇文章我们来分析switch_to()函数, 分析的代码取自linux kernel 0.11 sched.h文件, 我们只为说明原理, 所以尽量简单. 其中代码注释参考了赵炯老师一书, 言归正传,下面来看switch_to()函数.switch_to(n)将切换当前任务到任务n.首先检测任务n是不是当前任务,是则直接退出.输入: %0 – 指向_tmp

2012-05-20 20:23:15 2551

原创 JMP指令

在读代码的时候,Jump指令用的特别多, 在中断/异常, 虚实地址转换, 任务切换等等等等,都用到了Jump指令,今天我们来讨论一下究竟Jump都做了什么事情.下面用伪指令来描述Jump做了什么事情, 又是怎么区分这些事件的JMP(SelectorType Selector, int Offset){ SegAttributes Attributes; Selecto

2012-05-20 15:59:40 1353

原创 进程-3:fork()函数

1. 示例程序#include ; #include ; main () { pid_t pid; pid=fork(); if (pid < 0) printf("error in fork!"); else if (pid == 0) printf("i am

2012-04-22 19:40:15 339

原创 进程-1: 进程定义及其结构

1. 定义进程是处于执行期的程序以及它所包含资源的总称。2.组成部分进程可分为两个部分:进程执行空间和任务状态段TSS。进程执行空间包含代码段,堆栈段和数据段,还有为各个特权级所需的独立的堆栈空间。其中Stack0中分配了task_struct 数据结构,包含了进程随需的资源:如打开的文件,进程的地址空间,挂起的信号,进程的状态,还有tss等。TSS指定

2012-04-21 21:53:47 543

原创 自旋锁

1. 定义一个自旋锁是一个互斥设备,它只能有两个值:“锁定”和“解锁”。如果锁可用,则“锁定”位被设置,而代码继续进入临界区;相反,如果锁被其他人获得,则代码进入忙循环并重复检查这个锁,直到该锁可用为止。这个循环为“自旋”2. 实现 "\n1:\t" lock " ; decb %0\n\t"

2012-04-19 20:59:33 285

原创 并发与竞争

1.      并发和竞争         用现实情况说明一下,如下图:                        如果ATM取钱或者Shopping刷卡是同时发生的,如果银行没做任何处理,则会出现如上情况。         但银行是如何防止这样的事情发生的呢?        很简单,在判断银行账户余额之前,只需冻结其账户,只能由一个人访问和操作,等这个人操作结束之后再由其

2012-04-18 20:11:54 472

原创 系统寄存器和数据结构

以下这张图包含了内存管理,进程调度和中断精髓,如果完全理解好了这张图,那么对你来说,操作系统无任何神秘感。在以后的文章,我会经常引用此图。PS: 这张图是来自Intel Volume 3A: System Programming Guide, Part 12-3 fiugre 2-1, 按照我的理解我做了一些颜色的添加,便于理解

2012-04-15 15:32:35 481

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除