最近做一些相关的视频输出,对于保留framebuffer内存使用情况不是很清楚,现在找了一些资料整理出,准备使用.if (希望看到使用)  goto   用法: 对于一个系统来讲,会有非常多的外设,那么这些外设的管理都是通过CPU完毕.那么CPU在这个过程中是怎样找到外设的呢? 虽然在一个系统中会有诸多的外设,在每一个外设的接口电路中会有多个port.可是假设系统可以每一个port都被赋予一个详细的地址值.那么在系统中就能轻易的找到不论什么一个外设.系统在管理的时候.无论是内存还是外设都须要分配…
最近在做视频输出相关的东西,对于预留给framebuffer的内存使用不是很清楚,现在找到一些资料整理一下,以备使用.if (想看使用方法)  goto   使用方法: 对于一个系统来讲,会有很多的外设,那么这些外设的管理都是通过CPU完成.那么CPU在这个过程中是如何找到外设的呢? 尽管在一个系统中会有诸多的外设,在每个外设的接口电路中会有多个端口.但是如果系统能够每个端口都被赋予一个具体的地址值,那么在系统中就能轻易的找到任何一个外设.系统在管理的时候,不管是内存还是外设都需要分配一个内存地…
最近开始学习Linux驱动程序,将内存映射和ioremap,mmap函数相关资料进行了整理 一,内存映射  对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB. 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间.用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC0000000),3GB到4GB为内核空间, 1.不管是在用户空间还是在内核空间…
<Linux内核分析>第一周学习笔记 计算机是如何工作的 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1. 存储程序计算机工作模型 1.1 冯诺依曼体系结构 冯诺依曼体系结构,即具有存储程序的计算机的体系结构.超级计算机都可以用这种体系描述. 1.2 存储程序计算机工作模型 从硬件上看:CPU与内存之间由总线连接,CPU中一个关键寄存器IP(在16位CPU中叫IP,…
<Linux内核分析>第二周学习笔记 操作系统是如何工作的 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1. 前言 计算机是如何工作的? 三个法宝: 存储程序计算机:所有计算机基础性的逻辑框架. 堆栈:高级语言的起点,函数调用需要堆栈机制. 中断机制:多道系统的基础,是计算机效率提升的关键. 2. 函数调用堆栈 2.1 堆栈 堆栈是C语言程序运行时必须的一个记录调用…
简单来说,硬件驱动程序一方面分布在Linux内核中,另一方面分布在用户空间的硬件抽象层中.接着,在Ubuntu上为Android系统编写Linux内核驱动程序(老罗学习笔记1)一文中举例子说明了如何在Linux内核编写驱动程序.在这一篇文章中,我们将继续介绍Android系统硬件驱动程序的另一方面实现,即如何在硬件抽象层中增加硬件模块来和内核驱动程序交互.在这篇文章中,我们还将学习到如何在Android系统创建设备文件时用类似Linux的udev规则修改设备文件模式的方法. 一. 参照在Ubun…
<Linux内核分析>第四周学习笔记 扒开系统调用的三层皮(上) 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.用户态.内核态和中断 用户态.内核态和中断处理过程 1. 通过库函数完成系统调用:库函数将系统调用封装起来. 2. 用户态与内核态 内核态:一般现代CPU有几种指令执行级别.在高执行级别下,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别对应…
Linux内核分析第七周学习笔记--Linux内核如何装载和启动一个可执行程序 zl + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 由源代码生成可执行文件 预处理 => 编译 => 汇编 => 链接 gcc -E hello.c -o hello.i gcc –S hello.i –o hello.s gcc –c hello.s –o hello.o gcc…
linux内核分析第五周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给MenuOS增加time和time-asm命令 把menu删除: rm menu -rf 强制删除 重新克隆一个新的Menu: 进入Menu,用makerootfs自动编译生成根文件系统,同时还自动启动MenuOS 增加了两个命令:time和time_a…
linux内核分析第三周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 # 构造一个简单的Linux系统MenuOS 上周回顾: 计算机三大法宝 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑 中断上下文的切换 进程上下文的切换 Linux内核源码简介 我们关注的部分 arch/x86目录下的代码 init/main.c中s…
Linux内核分析第六周学习笔记--分析Linux内核创建一个新进程的过程 zl + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程的两种虚拟机制:虚拟处理器,虚拟内存 任务队列:链表每一项都是进程描述符结构. 进程描述符描述内容:打开的文件,进程地址空间,挂起信号,进程状态 Linux通过slab分配器分配task_struct结构,达到对象复用和缓存着色. 进程标识值:内核通过唯一的PID来标识每个进…
Linux 内核分析第八周学习笔记 zl + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程调度的时机 直接调用:中断处理过程(包括时钟中断,I/O中断,系统调用和异常) 返回用户态时调用:根据need_resched标记调用 内核线程可以主动调用也可以被动调用 用户态线程仅能在陷入内核态后,即在中断处理过程中调度 进程上下文 用户地址空间:代码,数据,堆栈等 控制信息:进程描…
我的博客主要用来存放我的学习笔记,如有侵权,请与我练习,我会立刻删除.学习参考:http://www.cnblogs.com/yuanfang/archive/2010/12/24/1916231.html 感谢博友的分享.1.块设备 块设备将数据按照固定块大小的块中,每个块的大小通常在512字节到32768字节之间,磁盘.SD卡都是常见的块设备. 2.字符设备和块设备的区别: 字符设备 块设备 ---------------------------------------------- 按字节…
这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相比,无论是技术层次还是更高的理论都有较大差距.但是这不影响,快速花点时间简单过一遍. 然后在对<Systems Performance>进行详细的学习. 由于Ubuntu测试验证更合适,所以在Ubuntu(16.04)+Kernel(4.10.0)环境下做了下面的实验. 全书共9章:1~4章着重于内存的使用,尽量降低进程的内存使用量,定位和发现内存泄露…
原文地址:dev/dsp 声卡学习笔记">linux dev/dsp 声卡学习笔记作者:ziyou飞翔       无论是从声卡读取数据,或是向声卡写入数据,事实上都具有特定的格式(format),默认为8位无符号数据.单声道.8KHz采样率,如果默认值无法达到要求,可以通过ioctl系统调用来改变它们.通常说来,在应用程序中打开设备文件/dev/dsp之后,接下去就应该为其设置恰当的格式,然后才能从声卡读取或者写入数据.   下面的代码示范了如何以只写方式打开声卡进行放音(playbac…
基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可以让整个系统的运行更加平稳.今天要与大家分享一下限流算法和C#版本的组件. 一.令牌桶算法: 令牌桶算法的基本过程如下: 假如用户配置的平均发送速率为r,则每隔1/r秒速率将一个令牌被加入到桶中: 假设桶最多可以存发b个令牌.当桶中的令牌达到上限后,丢弃令牌. 当一个有请求到达时,首先去令牌桶获取令…
LINUX内核分析第六周学习总结 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一.进程的描述 1.操作系统三大功能 进程管理 内存管理 文件系统 最核心的是进程管理 2.进程的作用 将信号.进程间通信.内存管理和文件系统联系起来 3.进程控制块PCB--task_struct 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符…
简介 此笔记为<鸟哥的Linux私房菜·基础学习篇>中部分章节的学习笔记. 目录 0 计算机概论 1 Linux是什么与如何学习 2 主机规划与磁盘分区 3 安装CentOS7.x 4 首次登入与在线求助 5 Linux的文件权限与目录配置 6 Linux文件与目录管理 7 Linux磁盘与文件系统管理 8 文件与文件系统的压缩 9 vim程序编辑器 10 认识与学习BASH…
本篇文章是根据刘遄老师的<linux就该这么学>中个人易忘知识点的读书笔记,结合的是个人弱点,可能不适合广大的网友同学,并在此声明本篇文章只是用于学习之用,绝无侵犯版权之意 linux就该这么学 第二章 新手必须掌握的命令 5.wget命令 wget命令用于在终端中下载网络文件,格式为"wget [参数] 下载地址". wget命令的参数以及作用 参数 作用 -b 后台下载模式 -P 下载到指定目录 -t 最大尝试次数 -c 断点续传 -p 下载页面内所有资源,包括图片.视…
实验一 Linux系统简介 一.Linux 为何物 Linux 就是一个操作系统,Linux 也就是系统调用和内核那两层. 二.Linux 历史简介 操作系统始于二十世纪 50 年代,当时的操作系统能运行批处理程序.批处理程序不需要用户的交互,它从文件或者穿孔卡片读取数据,然后输出到另外一个文件或者打印机. 二十世纪六十年代初,交互式操作系统开始流行.它不仅仅可以交互,还能使多个用户从不同的终端同时操作主机.这样的操作系统被称作分时操作系统,它的出现对批处理操作系统是个极大的挑战.许多人尝试开发…
这里,我们不会为真实的硬件设备编写内核驱动程序.为了方便描述为Android系统编写内核驱动程序的过程,我们使用一个虚拟的硬件设备,这个设备只有一个4字节的寄存器,它可读可写.想起我们第一次学习程序语言时,都喜欢用“Hello, World”作为例子,这里,我们就把这个虚拟的设备命名为“hello”,而这个内核驱动程序也命名为hello驱动程序.其实,Android内核驱动程序和一般Linux内核驱动程序的编写方法是一样的,都是以Linux模块的形式实现的,具体可参考前面Android学习启动篇…
计算机原理概念: 1.CPU和内存中的存储单元通信线路称为总线(BUS),总线是被指令和数据复用的,所以也称为前端总线. 2.计算机中计算频率的时间标准即晶体振荡器原理,精确计算时间长度,根据相同的时间统计变化的次数,即保持时钟同步. 3.每一个芯片在厂家生产时都有一个以微码(汇编语言)形式存在内置接口,完成一定意义上的智能操作. 4.CPU中控制器在未从存储器中提取全部数据交给运算器运算的过程中,已提取的数据存放 的位置叫寄存器,全部数据提取完之后才交给运算器进行运算(举例:1+1=?). 5…
今天开始学习,开始做笔记,希望自己能坚持下去 参考链接:https://www.linuxprobe.com/chapter-04.html vim编辑器 Linux系统中通用的文本编辑器 vi的升级版本:着色 三种模式 命令模式:控制光标移动,文本复制.粘贴.删除等操作 输入模式:输入文本信息 末行模式:保存或退出文档,以及设置编辑环境 模式切换 i 在光标前插入 I 定位到行首插入 o(小写) 在光标所在行下一行插入 O(大写) 在光标所在行上一行插入 a 在光标后插入 A 在行尾插入 常用…
第八周 进程的切换和系统的一般执行过程 一.进程切换的关键代码switch_to分析 1.进程调度与进程调度的时机分析 (1)进程分类 第一种分类 I/O-bound:等待I/O CPU-bound:大量占用CPU进行计算 第二种分类 交互式进程(shell) 实时进程 批处理进程 (2)进程调度策略 调度策略:是一组规则,它们决定什么时候以怎样的方式选择一个新进程运行 Linux的调度基于分时和优先级. Linux的进程根据优先级排队 根据特定的算法计算出进程的优先级,用一个值表示 这个值表示…
一.学习目标 1. 了解常见的存储技术(RAM.ROM.磁盘.固态硬盘等) 2. 理解局部性原理 3. 理解缓存思想 4. 理解局部性原理和缓存思想在存储层次结构中的应用 5. 高速缓存的原理和应用 二.学习任务 1. 阅读教材,完成课后练习(书中有参考答案) 重点:6.2 6.3 6.4  6.8 6.9 6.10 6.11 6.12 6.13 2. 考核:练习题把数据变换一下 3. 实验:需要动手的到实验楼中练习一下 三.学习资源 1. 教材:第六章<存储器层次结构> 2. 课程资料:位信…
  实验内核版本:0.11 ◆ 从开机到main函数的三步: ① 启动BIOS,准备实模式下的中断向量表和中断服务程序: ② 从启动盘加载OS程序到内存中,加载OS程序的工作就是利用第一步中的中断服务程序实现的: ③ 为执行保护模式下32位的main函数做过渡工作. ➩ Intel将所有80x86系列的CPU硬件都设计为加电即进入16位实模式状态运行: ➩ 将CPU硬件逻辑设计为在加电瞬间强行将CS置为0xFFFF,IP置为0x0000,即是CS:IP指向了0xFFFF0这个地址: 整个过程是一…
一.进程(或者称为“任务”)简介 进程是OS最基本的抽象之一,通常进程包括“可执行程序代码”,“其他资源”(如:打开的文件,挂起的信号,内核内部数据,处理器状态,地址空间,一个或多个执行线程等) 二.执行线程简介 执行线程(或称线程)是进程中活动的对象,内核调度的对象是线程,而不是进程,每个线程中都有一个独立的程序计数器,进程栈,进程寄存器 三.进程虚拟机制简介 进程提供了两种虚拟机制(后面的章节,我们还会学习哈-): 1.虚拟处理器:给进程一种假象,让这些进程觉得自己独享处理器(这个需要控制好…
前面的一篇文章中简单的描写叙述了一下内存映射的内容,http://blog.csdn.net/codectq/article/details/25658813,这篇文章作为用户把内存规划好之后,在用户空间使用IOCTL对设备进行控制时的经常使用函数的代码摘录.兴许我会把这部分完好起来. #ifdefCONFIG_MMU externunsigned long __must_check __copy_from_user(void *to, const void __user *from,unsig…
1.虚拟机WMware 通过镜像安装CentOS 7系统(自行百度操作 虚拟机+镜像+安装一套都有) //安装时需要配置网络 //root设置密码   即为登录系统的账号和密码 2. C++ 环境设置  //yum指令是真的好用 //安装gcc yum install gcc-c++ //查看gcc安装版本(验证是否安装成功) gcc -v //创建并编写test.cpp vim test.cpp //按A键  Insert #include<iostream> int main() { st…
20135313吴子怡.北京电子科技学院 chapter1 知识点梳理 一.Linux内核源代码简介 (视频中对目录下的文件进行了简介,记录如下) arch目录 占有相当庞大的空间 arch/x86目录下的代码是需要重点关注的. arch下其他目录可以删掉. init目录 内核启动相关的基本代码基本都在init目录下. main.c 文件中有一个start_kernel函数,初始化Linux内核的起点,这个函数相当于普通c程序的main函数. kernel目录 Linux内核的核心代码在kern…