深入理解Linux内核 学习笔记(1)
1.用户和用户组
每个用户是一个或多个用户组的一名成员,组由唯一的用户组标识符(user group ID)标识。每个文件的相关权限也恰好与一个组相对应。
root为超级用户,
2.模块
为了达到微内核理论上的很多优点而又不影响性能, Linux内核提供了模块(module)。模块是一个目标文件,其代码可以在运行时链接到内核或从内核解除链接。这种目标代码通常由一~组函数组成,用来实现文件系统、驱动程序或其他内核上层功能。与微内核操作系统的外层不同,模块不是作为一个特殊的进程执行的。就向是一个静态链接的内核函数-样,代表当前进程在内核态下执行。
3.文件目录
路径名由斜杠及- -列指向文件的目录名交替组成。如果路径名的第一个字符是斜杠,那么这个路径就是所谓的绝对路径,因为它的起点是根目录。否则,如果第- -项是目录名或文件名,那么这个路径就是所谓的相对路径,因为它的起点是进程的当前目录。
当标识文件名时,也用符号“."和“.”。 它们分别标识当前工作目录和父目录。如果当前工作目录是根目录,“.”和“.." 就是一致的。
4.硬链接和软连接
硬链接ln P1 P2,不允许对目录,不允许对不同种文件系统
软链接 ln -s P1 P2。
软连接只记录了链接文件的目录关系,硬链接相当于复制了一份文件,之后的文件修改也会对硬链接文件同步进行
5.文件类型
Unix文件可以是下列类型之一:
普通文件(regular file)
目录
符号链接
面向块的设备文件(block -oriented device file)
面向字符的设备文件(character- oriented device file)
管道(pipe) 和命名管道(named pipe) ( 也叫FIFO)
套接字(socket)
6,特殊线程
内核线程:运行在内核地址空间,不与用户交互,通常在启动时创建一直活跃直到系统关闭。
7.可重入内核
内核要是可重入的,即内核运行程序当需要磁盘请求时,可以让磁盘控制器去处理请求并恢复执行其他进程,然后等处理完再回来执行这个进程。
管只修改局部变量不改全局的
RAM的三个功能:
满足内核对缓存、描述符及其他动态内核数据结构的请求。
满足进程对一般内存区域的请求及对文件的内存映射的请求。
用高速缓存的方法从磁盘及其他缓神设备获得较好的性能。
RAM是有限的,必须在请求类型之间平衡。临界极限时可用页框回收算法。虚拟内存必须解决的一个主要问题是内存碎片。
内核内存分配器(KMA)应有特点:
必须快。实际上,这是最重要的属性,因为它由所有的内核子系统调用(包括中断处理程序)。
必须把内存的浪费减到最少。
必须努力碱轻内存的碎片(fragmentation) 问题。
必须能与其他内存管理子系统合作,以便借用和释放页框。
算法:
资源图分配算法( allocator)
2的幂次方空闲链表
McKusick- Karels分配算法
伏伴{Buddy)系統
Mach的区域(Zone)分配算法:
Dynix分配算法
Solaris的slab分配算法
脏缓冲区的概念:(内存中)缓冲区内容与对应磁盘块的内容不一样
设备驱动程序: 可以把设备的代码写成模块,动态装入内核,通过接口规范增加设备,不用时也可以卸载该模块
深入理解Linux内核 学习笔记(1)的更多相关文章
- 深入理解Linux内核 学习笔记(5)
第五章 定时测量 内核必须显式地与三种时钟打交道:实时时钟(Real Time Clock, RTC).时间标记计数器(Time Stamp Counter, TSC)及可编程间隔定时器( Prog ...
- 深入理解Linux内核 学习笔记(4)
第四章 中断和异常 中断通常被分为同步中断和异步中断,同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断异步中断是由其他硬件设备依照CPU时 ...
- 深入理解Linux内核 学习笔记(3)
第三章 进程 可以看到很多熟悉的结构体 进程状态: 可运行状态(TASK_ RUNNING) 进程要么在CPU上执行,要么准备执行. 可巾断的等待状态(TASK_ INTERRUPTIBLE) 进程被 ...
- 深入理解Linux内核 学习笔记(2)
第二章 :内存寻址 略.基本同计算机组成原理中的讲述 内核代码和数据结构会存储在一个保留的页框中. 常规Linux安装在RAM物理地址0x00100000开始的地方.因为:页框0是由BIOS使用,存放 ...
- 深入理解Linux内核 学习笔记(8)
第八章 系统调用 API定义了一个给定的服务:系统调用是通过软中断向内核发出一个明确的请求. API可能不调用系统调用,也可能调用多个系统调用. Linux系统调用必须通过执行int 0x80,系统调 ...
- 20135316王剑桥Linux内核学习笔记
王剑桥Linux内核学习笔记 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 计算机是如何工作的 个人理 ...
- Linux内核学习笔记-2.进程管理
原创文章,转载请注明:Linux内核学习笔记-2.进程管理) By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- Linux内核学习笔记-1.简介和入门
原创文章,转载请注明:Linux内核学习笔记-1.简介和入门 By Lucio.Yang 部分内容来自:Linux Kernel Development(Third Edition),Robert L ...
- Linux内核学习笔记二——进程
Linux内核学习笔记二——进程 一 进程与线程 进程就是处于执行期的程序,包含了独立地址空间,多个执行线程等资源. 线程是进程中活动的对象,每个线程都拥有独立的程序计数器.进程栈和一组进程寄存器 ...
随机推荐
- BZOJ_1485_[HNOI2009]有趣的数列_卡特兰数
BZOJ_1485_[HNOI2009]有趣的数列_卡特兰数 Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ ...
- BZOJ_4864_[BeiJing 2017 Wc]神秘物质_Splay
BZOJ4864_[BeiJing 2017 Wc]神秘物质_Splay Description 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天 ...
- nginx+php安装
1.环境概述 虚拟机系统:CentOS Linux release 7.3.1611 (Core) 宿主机系统:Mac Sierra version 10.12.3 nginx:1.10.3 php: ...
- CentOS7 安装Redis 单机版
1,下载Redis4.0.9 进入Redis中文网的下载页面 http://www.redis.cn/download.html 2,上传压缩包到linux系统 cd /user/local/java ...
- springboot读取自定义配置文件节点
今天和大家分享的是自定义配置信息的读取:近期有写博客这样的计划,分别交叉来写springboot方面和springcloud方面的文章,因为springboot预计的篇章很多,这样cloud的文章就需 ...
- API 测试的具体实现
目录 API 测试的具体实现 基于 Spring Boot 构建的 API 使用 cURL 命令行工具进行测试 使用图形界面工具 Postman 进行测试 如何应对复杂场景的 API 测试? 总结 A ...
- DBA_OBJECTS
类型:View Owner:SYS 内容:记录了数据库中所有的对象 字段: OWNER:对象的Owner OBJECT_NAME:对象名称 SUBOBJECT_NAME:对象的子对象名字,例如分区 O ...
- Netty4.x整合SpringBoot2.x使用Protobuf3详解
前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容.Protobuf会介绍下用法,至于Netty在netty 之 telnet HelloWor ...
- HWPushDemo【华为推送集成,基于2.6.1.301版本】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个Demo只是记录华为推送的集成,不能运行. 另外,因为可能用到存储权限,所以还需要搭配运行时权限申请功能. 使用步骤 一.项目组 ...
- Vue.js 学习笔记 第1章 初识Vue.js
本篇目录: 1.1 Vue.js 是什么 1.2 如何使用Vue.js 本章主要介绍与Vue.js有关的一些概念与技术,并帮助你了解它们背后相关的工作原理. 通过对本章的学习,即使从未接触过Vue.j ...