![](https://img-blog.csdnimg.cn/20190829152653317.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux
专注Linux内核
鹏鹏~
NUAAer
展开
-
操作系统-课堂笔记-磁盘调度(南航)
磁盘寻址方式CHS寻址工作原理CHS全称:Cylinder-Head-Sector即柱面/磁头/扇区 寻址方式,是早期IBM PC架构上用来进行磁盘寻址的方法。来张图下面分别介绍C, H, S首先是C:Cylinder译为柱面,即一个圆柱的切面,切成一个空心柱形,切记不要将C理解成了柱面,不然下面算寻址空间就算不对了。H:Head译为磁头,上图所示,现在只需要知道一个盘面一般有...原创 2019-05-20 00:29:26 · 1452 阅读 · 1 评论 -
宏内核和微内核介绍
宏内核和微内核的基本概念 宏内核:简单来说,就是把很多东西都集成进内核,例如linux内核,除了最基本的进程、线程管理、内存管理外,文件系统,驱动,网络协议等等都在内核里面。将内核从整体上作为一个大过程实现,并同时运行在一个单独的地址空间。所有的内核服务都在一个地址空间运行,相互之间直接调用函数,简单高效。优点:效率高缺点:稳定性差、开发过程中的bug经常会导致整个系统挂掉...原创 2019-08-28 18:47:44 · 7867 阅读 · 0 评论 -
操作系统-复习-考题预测及解析-期末考试(南航)
考题预测及解析首先声明一点:从长远角度看,前面博客中讲的研究思路更重要!从考试角度看,这篇博客就足够了,因为考点几乎是固定的!另外,上篇博客写于期中考试前,这篇博客写在期末考试前!时间:2019/7/4考点由于笔者从开始到现在从来没有看过课本,一直跟着老师PPT和思路来,所以重点的顺序就按照老师讲的顺序来!进程部分...原创 2019-07-04 10:25:11 · 3003 阅读 · 3 评论 -
操作系统-课堂笔记-IO(南航)
文章目录IOIO硬件IO设备的发展历史IO设备怎么和CPU、内存连接?IO设备的典型构成使用IO设备的典型协议1.轮询2.中断两种方案对比3.DMA控制器IO应用接口IO内核子系统xv6中的IOIO先回忆下冯诺依曼计算机的五大部件:运算器、控制器、存储器、输入、输出运算器我们没讲,是算数逻辑单元控制器就是CPU,进程是CPU的抽象,这是我们的重点内容存储器:分为内存和外存,内存的分配方...原创 2019-07-03 23:25:49 · 1054 阅读 · 0 评论 -
操作系统-课堂笔记-strace的使用(南航)
文章目录系统调用-strace的使用声明简介使用strace一个简单的例子再来一个简单的例子如果绑定到进程strace的统计功能研究fread/fwrite的内部实现课外讨论系统调用-strace的使用声明本章和考试完全无关,老师讲strace的目的可以简单理解成帮助我们提升技术视野,篇幅不长,可略读简介strace是什么?一个简单的跟踪系统调用执行的工具可以从开始到结束跟踪二进制...原创 2019-07-03 20:19:06 · 628 阅读 · 0 评论 -
操作系统-课堂笔记-系统调用(南航)
文章目录系统调用系统调用功能概述1.什么是系统调用?2.系统调用提供哪些功能?3.提供系统调用有何优点?系统调用的处理过程system_call()函数sys_call_table在看看系统调用号系统调用和普通函数调用对比系统命令和内核函数系统调用的实例分析系统调用的参数传递如何增加一个系统调用小结系统调用系统调用功能概述1.什么是系统调用?OS内核中都有一组实现系统功能的过程,系统调用...原创 2019-07-03 17:14:21 · 718 阅读 · 0 评论 -
操作系统-课堂笔记-虚拟文件系统VFS(南航)
文章目录虚拟文件系统VFS简介VFS的作用举例说明VFS都支持哪些文件系统类型?1.基于磁盘的文件系统,它们管理在本地磁盘分区中可用的存储空间2.网络文件系统:用于访问属于其他网络计算机的文件系统所包含的文件3.特殊文件系统实现细节1.VFS中通用文件模型概念2.VFS所处理的系统调用proc虚拟文件系统VFS简介什么是虚拟文件系统?VFS是一个软件层,用来处理与Unix标准文件系统相关...原创 2019-07-03 15:46:26 · 926 阅读 · 0 评论 -
操作系统-课堂笔记-EXT2文件系统(南航)
文章目录EXT2文件系统简介1.什么是EXT2文件系统2.EXT家族和我们之前将的文件系统有什么关系?EXT系统的核心设计数据存放区1.inode-索引节点2.inode table3.block数据区块中介数据(metadata)1.superblock-超级块2.block group区块群组3.block bitmap4.inode bitmap5.group descriptorEXT2...原创 2019-07-03 14:30:57 · 614 阅读 · 0 评论 -
操作系统-课堂笔记-内存管理续(南航)
内存管理续Linux0.11版内核中页表初始化虚拟内存分段机制1.Linux0.11版内核中启动时页表初始化过程声明Linux0.11版内核只能管理16M内存,一个页4KB,那么一个页表可管理4MB内存,所以只需要4个页表即可管理所有内存,然后加一个页目录(一级页表、外表)。所以设置页表的时候需要设置:一个页目录+4个页表首先看下有关数据的声明:/* * linux/bo...原创 2019-06-11 23:58:33 · 852 阅读 · 0 评论 -
第一章-概述-UNIX操作系统设计-读书笔记
这一小节忘记用markdown写了,有点乱,后面使用markdown排版,会好很多!UNIX的系统结构:UNIX V系统中,有64个系统调用,其中32个是常用的。shell是什么程序?命令解释程序!!!shell把命令行的第一个字解释称命令名,对所有命令,shell都创建子进程,子进程执行与该名字相联系的命令。把命令行中其余字视为该命令的参数。shell允许三类命令:1. 可执行...原创 2019-08-29 14:00:48 · 456 阅读 · 0 评论 -
第二章:核心导言-Unix操作系统设计-读书笔记
文章目录第二章 核心导言UNIX操作系统的体系结构系统概念介绍文件子系统概述进程进程上下文进程状态状态转换睡眠与唤醒核心数据结构---思想层面系统管理本章小结第二章 核心导言UNIX操作系统的体系结构核心框图,给出各种模块及他们之间的相互关系,其中文件系统和进程管理是最核心部分:翻译成系统调用界面有点low,应该是系统调用接口叭,为什么将存储管理放置到进程管理当中呢,应该切分出来叭,毕竟...原创 2019-08-29 14:22:35 · 361 阅读 · 0 评论 -
第5章 文件系统的系统调用-2 - Unix操作系统设计-读书笔记
文章目录第五章 文件系统的系统调用5.3系统调用write算法描述实例讲解注意事项5.4文件和记录的上锁5.5文件的输入/输出位置的调整lseek5.6系统调用close5.7文件的建立creat算法描述关键点解读5.8特殊文件的建立mknod算法描述5.9改变目录及根chdir,chroot算法描述注意事项第五章 文件系统的系统调用5.3系统调用write算法描述语法格式:number=...原创 2019-08-30 15:55:44 · 526 阅读 · 0 评论 -
第5章 文件系统的系统调用-1 - Unix操作系统设计-读书笔记
文章目录第五章 文件系统的系统调用5.1系统调用open算法描述实例讲解5.2系统调用read算法描述实例讲解小结第五章 文件系统的系统调用先介绍存取已存在的文件的系统调用,如open, read, write, lseek, close然后介绍创建新文件的系统调用,如creat, mkmod然后管理索引节点和文件系统的系统调用:chdir, chroot, chown, chmod, s...原创 2019-08-30 13:54:22 · 515 阅读 · 0 评论 -
操作系统-Linux内核系列
文章目录引言读书笔记未来计划引言这也是一个系列博客,当然并不是教程系列,可能缺乏连贯性和系统性;我将笔记分享出来的目的是:一是为了我个人复习,二是分享给大家;目前已经能确定的是,该系列博客会包含三本书的读书笔记:《Linux内核完全注释》,《Unix操作系统设计》,《Linux内核情景分析》建议阅读顺序是:《Unix操作系统设计》 — Unix系统的设计方案《Linux内核完全注释...原创 2019-08-29 15:22:36 · 1742 阅读 · 0 评论 -
Unix操作系统设计-读书笔记
文章目录引言说明结构各章节目录引言为什么要读这本书,这本书可以说是非常有年代了,具体是哪年发布的我没有考证,不过Linus当年写Linux的时候就是参考的本书。我是在读Linux0.11版源码的时候,发现buffer.c里的很多算法并不是很好理解,而且算法细节均没有注释,以及算法的原因也没有解释,所以就去读这本书了;不读不知道,一读吓一跳,发现Linux0.11版的buffer.c就是将本...原创 2019-08-29 14:50:44 · 545 阅读 · 0 评论 -
知识补充-用户、用户组的概念
什么是用户组?1. 其实很简单,就相当于分组嘛2. 比如说,某个服务器有很多用户,有些用户做相同的项目、有些用户做不同的项目3. 那么就可以将做相同项目的用户集中起来,形成用户组的概念4. 形成组的概念有什么好处?5. 方便管理项目文件的访问权限咯;为什么要补充这里的知识,还记得某些命令吗?chmod 777 xxx.sh这是什么意思?查看文件信息时rwx-rwx-rwx是什么意...原创 2019-08-29 14:48:08 · 554 阅读 · 0 评论 -
抢占式和非抢占式
抢占式内核与半抢占式内核的不同 Linux2.4只实现了“有条件抢占式”的调度。它的缺点在于:当进程在内核态时,调度的时机有局限。就是只能在xxx的前夕。例如:当外部来一中断,中断程序过程完后,需要一个用户进程B对此进行进一步的处理(响应IP包数据)。此时进程A正在使用系统调用进入了内核态。那么等到A从系统调用返回之际,内核进行调度,B才有可能运行。假设A的系统调用占用了CPU的时间为T...原创 2019-08-29 14:42:45 · 7428 阅读 · 0 评论 -
第四章 文件的内部表示-Unix操作系统设计-读书笔记
文章目录第四章 文件的内部表示索引节点对索引节点的存取释放索引节点正规文件的结构目录路径名到索引节点的转换超级块为新文件分配索引节点磁盘块的分配其他文件类型本章小结习题数组下标从0开始,那么为什么索引节点号是从1开始的呢?iget中睡眠,醒来为什么重新开始循环描述算法,将内存索引节点作为输入,并修改相应的磁盘索引节点iget和iput没有要求提高处理机执行级别以封锁中断,这意味着什么?怎么样才能高...原创 2019-08-29 14:40:28 · 734 阅读 · 0 评论 -
第三章 数据缓冲区高速缓存-Unix操作系统设计-读书笔记
文章目录第三章 数据缓冲区高速缓存缓冲首部---buffer_head缓冲池的结构缓冲区的检索-getblk1 该块在散列队列中,并且它的缓冲区是空闲的2 散列队列中找不到,从空闲表中分配一个3 散列队列中找不到,从空闲表中分配了一个缓冲区4 散列队列中找不到,并且空表缓冲区表已空5 散列队列中找到,但它的缓冲区当前为忙读磁盘块与写磁盘块读块写块延迟写的作用高速缓冲的优点和缺点习题最好的散列函数是...原创 2019-08-29 14:25:51 · 606 阅读 · 0 评论 -
操作系统-课堂笔记-内存管理(南航)
内存管理操作系统内核的几大模块:进程调度算是核心模块,本系列博客的大部分内容都在讲解进程调度模块,从本篇开始讲解内存管理,大概用一篇博客就能搞定,但是篇幅可能有点长,也可能分成两篇。回顾进程的内存抽象:我觉得这张图已经看了无数次了,还是再讲解下:每个进程有text段:存放代码data段:存放全局变量和静态变量heap区:new, malloc从此处申请空间stack区:存放...原创 2019-06-11 19:54:49 · 1299 阅读 · 0 评论 -
操作系统-课堂笔记-线程(南航)
线程之前我们都是以进程为单位进行探究的,其实现代操作系统调度单位都是线程。我们之前以进程为单位进行探究有助于简化问题,帮助我们建立知识体系,下面我们介绍线程。回顾先回顾下我们进程部分讲的内容:进程的概念进程的内存抽象进程的状态及转移PCB与进程切换进程的创建与终止进程通信进程通信的原因消息传递、共享内存、管道进程在操作系统如何表示?进程是如何调度的?...原创 2019-06-10 19:42:03 · 920 阅读 · 0 评论 -
操作系统-课堂笔记-死锁(南航)
死锁什么是死锁?什么是死锁?你们一定知道,看图(原谅我这个gif拍的不怎么漂亮,伪装者24集27分):三人互指算不算死锁(斜眼笑),1让2放枪,2说要3先放,3说不放,emmmm,如果不太形象就当看热闹了叭!还有几个例子可以看看:哲学家进餐问题:一共五根筷子,五个哲学家 一人拿了一根,死锁了。还有交通死锁:所以什么是死锁呢?A set of processes is in a...原创 2019-06-10 15:30:46 · 902 阅读 · 0 评论 -
操作系统-课堂笔记系列博客(南航)-考研or期末
操作系统课堂笔记简介写此系列博客的初衷我们操作系统老师讲的真的非常好,所以将所获得知识记录保存起来。既能起到分享的作用,又能帮助笔者复习。知识来源NUAA-刘老师。推荐参考资料《操作系统精髓与设计原理(原书第6版)》PDF中文版.pdf 提取码:wi9h《Linux内核完全注释-赵炯编著》 提取码:4teu我的另外一系列博客:Linux内核完全注释-读书笔记目录 - 持续...原创 2019-06-20 18:07:57 · 6870 阅读 · 10 评论 -
第四章 初始化程序init(main.c)
初始化程序是不是很激动,马上就能见到main.c程序啦。原创 2019-05-26 13:54:36 · 847 阅读 · 0 评论 -
Linux内核完全注释:第三章 内核引导启动程序-head.s讲解
续上篇博客Linux内核完全注释:第三章 内核引导启动程序-setup.s讲解功能描述源码解析原创 2019-05-25 19:56:15 · 832 阅读 · 0 评论 -
操作系统-虚拟内存、虚拟地址空间机制
操作系统-虚拟内存有关操作系统的设计,都是在解决一个问题,即:如果让计算机高效安全的运行多道程序。本文要解决哪些问题为何虚拟地址可以起到这样的作用:512M内存的机器,可跑1G大小的游戏?虚拟内存技术体现了哪些设计原则?虚拟内存简介虚拟内存有哪些能力?给所有进程提供一致的地址空间,每个进程都认为自己是在独占使用单机系统的存储资源—如何实现呢?为何能有这种效果保护每个进程的地址...原创 2019-04-07 20:15:44 · 2823 阅读 · 0 评论 -
ubuntu18.04+paddlepaddle-gpu+nvidia驱动(GTX 960M)+CUDA8+CUDNNv7踩坑日记
前言:近日参加百度-东大冬令营,虽然百度给我们提供了云环境,但是之前买了游戏本,显卡放着不用感觉挺可惜的,所以坚持要配一下GPU版本的paddlepaddle:WARNING:坑多,慎入,如果顺利还好说,不顺利可能要一天多才能搞好。踩坑历程:1、关于ubuntu升级:本来使用ubuntu16.04,但是鉴于程序员爱debug的性格,一时冲动升级到ubuntu18.04,,于是乎...原创 2019-01-20 18:33:16 · 1740 阅读 · 0 评论 -
Linux内核完全注释:第三章 内核引导启动程序-bootsect.s讲解
内核引导启动程序文件结构知识补充BIOS:计算机启动最开始执行的BIOS程序,BIOS(Basic Input Output System).使一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息结合boot/目录下程序讲解计算机启动流程PC的电源开机后,80x86结构...原创 2019-05-21 00:24:06 · 1760 阅读 · 2 评论 -
Linux内核完全注释:第二章 Linux内核体系结构
Linux内核体系结构Linux内核模式操作系统内核结构模式分为整体式的单内核结构和层次式的微内核结构。Linux0.11为单内核结构,后期的Linux一如既往的是单内核结构,但是其吸收的微内核结构的优点。单内核机构中操作系统提供服务的流程为:int x80系统调用使CPU从用户态陷入内核态根据参数值调用特定的系统调用服务程序这些服务程序根据需要再调用底层的支持函数以完成特定的功...原创 2019-05-19 20:17:45 · 2448 阅读 · 1 评论 -
Linux内核完全注释-读书笔记-目录
Linux内核完全注释声明此博客为笔者读书笔记,书籍是:《Linux内核完全注释》赵炯编著写此博客目的:方便自己复习提供给大家一个简洁,精华版的Linux内核完全注释读Linux源码意义何在这一点不是很好说,而且国内很多童鞋们都认为意义不大,没有对底层知识的认可感和危机感。这里主要记录我的读书笔记,不对其进行论证,有兴趣可以去了解关于底层知识的重要性。仁者见仁,智者见智,互联...原创 2019-05-19 20:00:44 · 2470 阅读 · 2 评论 -
操作系统-课堂笔记-概述(南航)
概述为何要学操作系统?操作系统是三大系统类课程之一:计算机组成原理 - 提供重要的抽象:指令集编译原理操作系统 - 提供的最重要的抽象:进程从下述几个问题看操作系统EXE,ELF是什么?运行一个EXE到底发生了什么?关于C库函数:printf, scanf, gets用的那么多,那么他们是怎么实现的呢?fread和read的区别是什么?回归古老时代的一个问题:一台512M内...原创 2019-05-23 18:13:38 · 1844 阅读 · 1 评论 -
操作系统-课堂笔记-进程概述(南航)
进程概述1.引言首先引入问题,进程是怎么产生的,为什么需要进程?我们先回到古老的裸机编程时代,即没有操作系统的时代,我们写的代码(汇编)直接跑在硬件之上。裸机编程自由度很大,即内存可以供我们随意使用自由使用内存带来一个问题:CPU可能会混淆数据与指令,如果产生混淆会产生无法预料的结果自由使用内存带来的另外一个问题:我们的程序可以修改自身,比如修改内存中某一位置的数据,那么可能就将自己...原创 2019-05-28 17:08:15 · 1620 阅读 · 0 评论 -
操作系统-复习-考题预测及解析-期中考试
考题预测及解析首先声明一点:从长远角度看,前面博客中讲的研究思路更重要从考试角度看,这篇博客就足够了,因为考点几乎是固定的重点声明首先声明重点多道程序设计技术!进程状态转移,什么会导致状态的转移?进程同步:PV操作(重点),这里多做几个题目吧!进程通信:论述消息传递和共享内存的区别线程:论述多进程、多线程的优劣CPU调度算法(大概五分左右),算(带权)周转时间死锁部分...原创 2019-06-19 23:45:30 · 7065 阅读 · 0 评论 -
操作系统-课堂笔记-实时调度(南航)
实时调度(续CPU调度)什么是实时?首先讲一下实时的定义和要求:实时系统指系统的计算正确性不仅仅取决于计算的逻辑正确性,还却决于产生结果的时间。如果未满足系统的时间约束,则认为系统失效,也可认为没有得到正确的计算结果。以Win10为例:我们笔记本现在的CPU已经很强大了,为什么这么说呢?因为CPU利用率经常很低,最起码日常在10%以下,后台运行网易云音乐+TIM:我们在日常使用...原创 2019-06-10 11:34:19 · 1350 阅读 · 1 评论 -
操作系统-课堂笔记-CPU调度(南航)
CPU调度复习内存抽象:进程的状态转移:进程通信:共享内存、消息传递、管道进程调度进程调度分为三类:低级调度:也称为进程调度、短程调度,作用:决定就绪队列中的哪些进程应该获得CPU。中级调度:也称为中程调度,作用:使暂时不能运行的进程从内存调至外存,进入就绪驻外存状态或挂起状态。 目的:提高内存利用率和系统吞吐量。高级调度:又称为作业调度、长程调度、接纳调度,作用:把外...原创 2019-06-09 20:44:23 · 1395 阅读 · 0 评论 -
操作系统-课堂笔记-进程通信(南航)
进程通信引言进程之间为何需要通信?概述中第六个问题提到,如果一个C/Java程序想要使用matlab来分析数据,那么程序之间怎么传输数据?—正是进程通信其他应用:多进程排序,排序还需要多进程?如果1万条数据,那么直接一个函数排序就OK。如果10亿条呢?—使用多进程排序算法,需要使用进程间通信。网络服务器大多都是多进程的,多个进程之间是需要传递数据的。思考如何实现进程通信很容易想到...原创 2019-06-09 16:34:50 · 725 阅读 · 0 评论 -
操作系统-课堂笔记-信号量(南航)
上篇博客地址进程同步-信号量本节目录信号量的两种实现方式:整型信号量、记录型信号量信号量的应用:互斥、同步、前趋关系信号量集信号量应用:生产者消费者问题、哲学家进餐问题信号量的两种实现方式上一篇博客中我们已经讲到了一种信号量的实现方式,那是一种记录型信号量,现在我们来探讨下两种信号量实现方式的不同。整型信号量:整型信号量的实现方式:wait(s){ while(s<...原创 2019-06-09 15:07:41 · 3508 阅读 · 4 评论 -
操作系统-课堂笔记-进程同步(南航)
进程同步上一篇博客引言课程概述中讲过一个汇编指令执行顺序的问题:该问题是由于引入分时方式而引起的,本节将讨论为了解决上述问题,历史上都出现过哪些解决方案。如何鉴别分时操作系统引起的问题再看一个例子:上面的程序是一个多进程服务器,代码是有问题的,我们来分析下问题在哪里。首先多进程体现在使用了fork(),多进程常见的问题是“共享变量问题”,那么上述代码中有没有共享变量呢?很显然...原创 2019-06-09 00:37:51 · 1266 阅读 · 5 评论 -
操作系统-课堂笔记-文件系统(南航)
文件系统引言我们以探究式的方式来讲解文件系统:从零开始,提出最基本的需求,设计最基本版本的文件系统。然后不断迭代,从而引出现代操作系统使用的文件系统。首先思考下什么是文件?首先,文件是用来保存数据的,那么数据保存在了哪里呢?保存在了磁盘中即文件和磁盘是有关的,那么两者是什么关系呢?文件是操作系统对磁盘(一级永久性存储介质)的抽象为什么要讲文件以及磁盘的关系呢?我们说...原创 2019-07-03 10:45:08 · 2058 阅读 · 1 评论 -
操作系统-课堂笔记-程序装入链接(南航)
程序装入链接程序装入引言首先明确下从.c程序到跑在计算机中都经历了什么过程?首先将.c程序编译编译以后由于使用了各个模块,需要进行链接操作链接完成以后,生成了exe文件,需要将其装入内存中,此即装入我们双击一个exe文件,其实就是触发了装入装入以后就交给操作系统来完成(包括进程创建等过程)至此我们就知道了从.c到跑在计算机中的程序都经历了哪些过程后面讲解虚拟内存的时候需要用...原创 2019-06-13 11:56:00 · 1213 阅读 · 1 评论