【转】Linux模式设计5-位图操作】的更多相关文章

通过位图提供的两种状态可以在非常节约内存的情况下表示开关变量,并且同类这类变量可以紧凑而高效的统一进行处理.有很多内核子系统都需要位图的支持,但是不同的情况又需要不同的位图个数,比如SMP系统上的CPU位图cpumask的位数位NR_CPUS,而内存管理区的位图数为MAX_ZONES_PER_ZONELIST.但是所有的位图都要转换为基本的数据类型,比如int,short等,Linux将定义位图的功能集中到一个名为DECLARE_BITMAP的宏. include/linux/types.h #…
http://blog.chinaunix.net/uid/20608849/cid-25333-list-2.html…
Vi / Vim编辑器-编辑器工作模式.vi编辑操作 推荐一个很好的学习指南:http://www.oschina.net/translate/learn-vim-progressively 一.编辑器的三种工作模式 Vi / Vim是全屏幕编辑器,正因为这种特性,通常Vi分为三种模式:一般模式.编辑模式.命令行命令模式. (1)     一般模式Normal Mode(common Mode, c-Mode) Vi处理文件时,进入该文件就是一般模式,此模式中输入的任何字符皆被视为指令.可以用方…
<Linux内核设计与实现>第13章阅读总结 [edited by 5216lwr] 一.虚拟文件系统概述 1.虚拟文件系统 (也称作虚拟文件交换或VF)作为内核子系统,为用户空间程序提供了文件和文件系统相关的接口.通过虚拟文件系统,程序可以利用标准的Uinx 系统调用对不同的文件系统,甚至不同介质上的文件系统进行读写操作. 2.通用原理 之所以可以使用这种通用接口(VF)对所有类型的文件系统进行操作,是因为内核在它的底层文件系统接口上建立了一个抽象层. 该抽象层使Linux 能够支持各种文件…
<Linux内核设计与实现>课本第四章自学笔记 进程调度 By20135203齐岳 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵塞或者睡眠状态,实际不被投入执行,这些任务尽管位于内存,但是并不处于可运行状态. 多任务系统分为两种: 抢占式多任务:Linux提供了抢占式的多任务模式,由调度程序来决定什么时候停止一个进程的运行. 现代操作系统提供:动态时间片计算的方式:可配置的计算策略 非抢占式多任务:除非进程自己主动停止运行,否则会一直…
<Linux内核设计与实现>课本学习笔记 By20135203齐岳 一.Linux内核简介 Unix内核的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆文件,对数据和设备的操作都是通过一套相同的系统调用接口进行的. Unix内核和相关的系统工具都是用C语言编写成的. Unix进程创建非常迅速. Unix提供了一套简单而稳定的进程间通信原语. Unix现在已经发展为一个支持抢占式多任务.多线程.虚拟内存.换页.动态链接和TCP/IP网络的现代化操作系统. 操作系统…
<Linux内核设计与实现> Chapter4 读书笔记 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统. 一.多任务 多任务操作系统就是能同时并发地交互执行多个进程的操作系统. 多任务系统可以划分为两类: 非抢占式多任务 进程会一直执行直到自己主动停止运行 抢占式多任务 Linux/Unix使用的是抢占式的方式:强制的挂起进程的动作就叫做抢占. 像所有unix的变体和许多其他现代操作系统一样,Linux提…
<Linux内核设计与实现> 第一二章学习笔记 第一章 Linux内核简介 1.1 Unix的历史 Unix的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆文件,对数据和设备的操作都是通过一套相同的系统调用接口进行的. Unix内核和相关的系统工具都是用C语言编写成的. Unix进程创建非常迅速. Unix提供了一套简单而稳定的进程间通信原语. Unix现在已经发展为一个支持抢占式多任务.多线程.虚拟内存.换页.动态链接和TCP/IP网络的现代化操作系统. 1.…
<Linux内核设计与实现>第四章学习笔记           ——进程调度 姓名:王玮怡  学号:20135116 一.多任务 1.多任务操作系统的含义 多任务操作系统就是能同时并发地交互执行多个进程的操作系统. 无论在单处理器或者多处理器机器上,多任务操作系统都能使多个进程处于堵塞或者睡眠状态,也就是说,实际上不被投入执行,直到工作确实就绪. 相反,这些进程利用内核阻塞自己,直到某一事件(键盘输入.网络数据.过一段时间等)发生. 2.多任务操作系统的分类 非抢占式多任务 抢占式多任务 3.…
Linux内核设计期中总结 ● 知识点 一.计算机是如何工作的 计算机是按照冯·诺依曼存储程序的原理. 在执行程序时须先将要执行的相关程序和数据放入内存储器中,在执行程序时CPU根据当前程序指针寄存器的内容取出指令并执行指令,然后再取出下一条指令并执行,如此循环下去直到程序结束指令时才停止执行.其工作过程就是不断地取指令和执行指令的过程,最后将计算的结果放入指令指定的存储器地址中. 计算机工作过程中所要涉及的计算机硬件部件有内存储器.指令寄存器.指令译码器.计算器.控制器.运算器和输入/输出设备…
                                                                    <Linux内核设计与实现>第四章学习笔记——进程调度 姓名:高艺桐  学号:20135109 一.多任务 1.多任务操作系统的含义 多任务操作系统就是能同时并发地交互执行多个进程的操作系统. 无论在单处理器或者多处理器机器上,多任务操作系统都能使多个进程处于堵塞或者睡眠状态,也就是说,实际上不被投入执行,直到工作确实就绪. 相反,这些进程利用内核阻塞自己,直…
<Linux内核设计与实现>Chapter 1 读书笔记 一.Unix的特点 Unix从Multics中产生,是一个强大.健壮和稳定的操作系统. 特点 1.很简洁 2.在Unix系统中,所有的东西都当做文件对待.这种抽象使对数据和对设备的操作都是通过一套相同的系统调用借口来进行的:open(),read(),write(),lseek()和close() 3.Unix内核和相关的系统工具软件用C语言编写而成——该特点使其具备出色的平台可移植性 4.Unix进程创建非常快速简洁,目标在于一次执行…
chapter1 Linux内核简介 前言:Unix是一个具有相似应用程序编程接口(API)并且基于相似设计理念的操作系统家族. 1.1 Unix的历史 1.Unix演化版实现了任务管理.换页机制.TCP/IP等新的特性. 2.Unix的特点: Unix很简洁,仅仅提供几百个系统调用并且有一个非常明确的设计目的: 在Unix中,所有的东西都被当做文件对待. Unix的内核和相关的系统工具软件是用C语言编写的,具有强大的移植能力 Unix的进程创建非常迅速,并且有一个非常独特的fork()系统调用…
这篇笔记记录了以下几个知识点: 1.目前常见的操作系统及分类,虚拟机 2.Linux操作系统背景知识,Windows和Linux两个操作系统的对比 3.在虚拟机中安装Ubuntu系统的详细步骤 OS(Operation System操作系统) 操作系统的作用: 承上启下的系统软件 根据用户分类 单用户操作系统: 指一台计算机在同一时间 只能由一个用户 使用,一个用户独自享用系统的全部硬件和软件资源 Windows XP 之前的版本都是单用户操作系统,比如windows98,dos操作系统 多用户…
在前一章也提到过,之所以中断会分成上下两部分,是由于中断对时限的要求非常高,需要尽快的响应硬件. 主要内容: 中断下半部处理 实现中断下半部的机制 总结中断下半部的实现 中断实现示例 1. 中断下半部处理 那么对于一个中断,如何划分上下两部分呢?哪些处理放在上半部,哪些处理放在下半部? 这里有一些经验可供借鉴: 如果一个任务对时间十分敏感,将其放在上半部 如果一个任务和硬件有关,将其放在上半部 如果一个任务要保证不被其他中断打断,将其放在上半部 其他所有任务,考虑放在下半部 2. 实现中断下半部…
定时器和时间管理 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要. 主要内容: 系统时间 定时器 定时器相关概念 定时器执行流程 实现程序延迟的方法 定时器和延迟的例子 1. 系统时间 系统中管理的时间有2种:实际时间和定时器. 1.1  实际时间 实际时间就是现实中钟表上显示的时间,其实内核中并不常用这个时间,主要是用户空间的程序有时需要获取当前时间,所以内核中也管理着这个时间.实际时间的获取是在开机后…
内核简介  本篇简单介绍内核相关的基本概念. 主要内容: 单内核和微内核 内核版本号 1. 单内核和微内核   原理 优势 劣势 单内核 整个内核都在一个大内核地址空间上运行. 1. 简单.2. 高效:所有内核都在一个大的地址空间上,所以内核各个功能之间的调用和调用函数类似,几乎没有性能开销. 一个功能的崩溃会导致整个内核无法使用. 微内核 内核按功能被划分成各个独立的过程.每个过程独立的运行在自己的地址空间上. 1. 安全:内核的各种服务独立运行,一种服务挂了不会影响其他服务. 内核各个服务之…
写这篇的目的,还是要把整个过程完整的记录下来,特别是小细节的地方,通常很多情况是一知半解,平时不实践操作只凭看是没有用的,所以做这个行业就是要多动手,多学习,多思考慢慢你的思路也会打开.练就自己的学习能力和动手能力很重要.由于时间比较仓促,难免会有遗漏的点,我每一篇文章都可能会进行相关的纠正,包括格…
关于Repository模式,在这篇文章中有介绍,Entity Framework返回IEnumerable还是IQueryable? 这篇文章介绍的是使用Entity Framework实现的Repositoy模式设计,欢迎各位拍砖. 阅读目录: 一.实现的思路和结构图 二.Repository设计具体的实现代码 三.Repository设计的具体的使用 四.总结 一,实现的思路和结构图 总结一下,Repository在实际使用中,有下面三种特点: Repository的共同性 有一些公共的方…
<Linux内核设计与实现>CHAPTER17阅读梳理 [学习时间:3.5hours] [学习内容:设备类型,模块,内核对象,sysfs] 个人思考部分见[]标出的部分 一.课堂讲解整理&思考 1.什么是模块?为什么需要模块?它和设备有什么关系? 首先,一个操作系统(这里以Linux系统为例)会关联很多设备,从大家比较熟悉的键盘.打印机,到硬盘.光盘,再到比较专业的一些电路板设备.机械设备以及其他设备:操作系统必须能够向这些设备发出有效指令以便于操控,同时还要根据各个设备能接受的指令差…
<Linux内核设计与实现>课本第十八章自学笔记 By20135203齐岳 通过打印来调试 printk()是内核提供的格式化打印函数,除了和C库提供的printf()函数功能相同外还有一些资深的特殊功能 健壮性 在任何时候内核的任何地方都能调用printk()函数,只有在终端还未初始化的时候不能调用. 在中断上下文和进程上下文中被调用 在任何持有锁时被调用 在多处理器上同时被调用,并且不必使用锁. 解决办法是提供一个变体函数early _ printk(),但这种办法在某些硬件体系结构上无法…
<Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保证了系统的稳定和安全. 实现多任务和虚拟内存.保证良好的稳定性和安全性. 系统调用是用户空间访问内核的唯一手段:除异常和陷入外,是内核唯一合法的入口. API.POSIX和C库 应用程序通过在用户空间实现的应用编程接口(API)而非直接通过系统调用来编程. POSIX是应用编程接口的一个国际标准,C库提供了P…
linux回收站设计 在windows下有一个很好的东西,那就是回收站,虽然有很多人批评它.linux不是没有回收站,很多桌面环境都可以看到是有回收站的. 这里是讨论如何设计一个回收站,而不是有没有的问题.最好的结果是将rm命令使用mv命令替代使用了. 1.设计思路 因为在linux下rm命令执行成功就直接将文件删除了,而不是将其移入回收站了,也没用给一个用于确认的命令提示,所以rm的误操作是很危险的.而使用mv命令来提供一个后悔机制,就挺好了. 我们可以设计这么一种操作,将rm命令用mv命令来…
Linux内核设计第一周 ——从汇编语言出发理解计算机工作原理 作者:宋宸宁(20135315) 一.实验过程 图1 编写songchenning5315.c文件 图2 将c文件汇编成32位机器语言 图3 将.s文件中的链接语句删除,获得最后的汇编代码 二.分析堆栈变化情况 三.总结 阐明对“计算机是如何工作的”的理解. ①计算机是依据冯诺依曼体存储结构,依据其核心思想——存储程序计算机工作模型,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作. ②从硬件的角度看,是通过总线连接C…
Linux内核设计第五周 ——扒开系统调用三层皮(下) 一.知识点总结 1.给MenuOS增加新的命令的步骤 更新menu代码到最新版 test.c中main函数里,增加MenuConfig() 增加相应的函数 make rootfs 自动编译脚本 2.gdb调试 详细介绍见第三周的学习笔记 3.系统调用在内核代码中的处理过程 (1)系统调用在内核代码中的工作机制和初始化 (2)简化后便于理解的system_call伪代码 system_call完整代码在arch/x86/kernel/entr…
第3章 进程管理 3.1 进程 1.进程 进程就是处于执行期的程序. 进程包括: 可执行程序代码 打开的文件 挂起的信号 内核内部数据 处理器状态 一个或多个具有内存映射的内存地址空间 一个或多个执行线程 用来存放全局变量的数据段 …… 实际上,进程就是正在执行的程序代码的实时结果 2.执行线程 简称线程,是在进程中活动的对象. 每个线程都拥有一个独立的程序计数器.进程栈和一组进程寄存器. 内核调度的对象是线程,而不是进程. 进程提供两种虚拟机制: 虚拟处理器和虚拟内存. 在线程之间可以共享虚拟…
<Linux内核设计与实现>CHAPTER4阅读梳理 [学习时间:3hours] [学习内容:多任务:进程调度策略:Linux中进程调度的关键问题:抢占] 个人思考部分见[]标出的部分 一.多任务 1.非抢占式多任务 进程会一直执行直到自己主动停止运行(这一步骤称为让步) 2.抢占式多任务 Linux/Unix使用的是抢占式的方式:强制的挂起进程的动作就叫做抢占.进程在被抢占之前能够运行的时间是预先设置好的(也就是进程的时间片) 二.与策略相关的概念 1.进程的消耗类型 I/O消耗型进程 进程…
<Linux内核设计与实现>CHAPTER18阅读梳理 [学习时间:2hours] [学习内容:bug的来源分析:bug调试途径] 一.bug来源 1.内核中的bug 内核中的bug表现得不像用户级程序中那么清晰——因为内核.用户以及硬件之间的交互会很微妙: 从隐藏在源代码中的错误到展现在目击者面前的bug,往往是经历一系列连锁反应的事件才可能触发的. bug二.调试方法 1.通过打印来调试 优势: 健壮性是printk()函数最容易让人们接受的一个特质(使用环境和时机很广泛): printk…
<Linux内核设计与实现>CHAPTER5阅读梳理 [学习时间:2.5hours] [学习内容:系统调用的概念.功能及实现:系统调用的创建和使用方法] CHAPTER5 系统调用 1.系统调用的作用 系统调用在用户空间和硬件设备之间提供了一个中间层: 为用户空间提供了一个硬件抽象接口: 系统调用保证了系统的稳定和安全(防止应用程序不正确地使用硬件设备): 实现多任务和虚拟内存 2.系统调用的支持方式 系统调用依靠C库支持.用户程序通过包含标准头文件并和C库链接,就可以使用系统调用. C库也实…
<Linux内核设计与实现>CHAPTER1,2阅读梳理 [学习时间:2.5hours] [学习内容:Linux内核简介——历史与现今版本:Linux内核源代码以及编译] CHAPTER1 Linux内核简介 1.Unix内核特点 十分简洁:仅提供几百个系统调用并且有明确的目的: 在Unix中,大部分东西都被(或者正致力于)被当做文件对待: Unix内核即相关系统工具软件都是用C语言编写的,这使得系统有着强大的可移植性: Unix进程创建非常迅速,目标在于一次执行保质保量地完成一个任务 2.L…