Linux趣谈】的更多相关文章

要解释操作系统是如何工作的,首先可以用这几个关键字来简单地概括一下:冯诺依曼.堆栈机制和中断机制. 提到冯诺依曼很显然就是在说存储程序了,这大概是计算机能够运行最为基础的条件,属于基石级别的.它的基本思想就是说CPU按部就班的从代码存储器中一条一条的执行每一个指令.为了理解这个所谓的存储程序思想可以先暂时抛开函数调用机制和中断机制,就是一个简单的无需函数调用的程序,情形就像中午食堂的打菜阿姨,每次来一个人就会给他捎上一点他想要的菜,后面的队伍是“存储在内存中”的.但是计算机光是实现这样的功能可远…
参考极客时间专栏<趣谈Linux操作系统>学习笔记 核心原理篇:内存管理 趣谈Linux操作系统学习笔记:第二十讲 趣谈Linux操作系统学习笔记:第二十一讲 趣谈Linux操作系统学习笔记:第二十四讲 趣谈Linux操作系统学习笔记:第二十五讲 趣谈Linux操作系统学习笔记:第二十六讲 核心原理篇:文件系统 趣谈Linux操作系统学习笔记:第二十八讲 趣谈Linux操作系统学习笔记:第二十九讲…
前言:学习的课程来自极客时间的专栏<趣谈 Linux 操作系统>,作者用形象化的比喻和丰富的图片让课程变得比较易懂,为了避免知识看过就忘,打算通过写学习笔记的形式记录自己的学习过程. Linux 系统的相关介绍不再赘述,目前比较热门的技术,比如云计算.虚拟化.容器.大数据.人工智能,几乎都是基于 Linux 的,像团购.电商.打车.快递这些系统都是部署在服务端,也几乎都是基于 Linux 技术的.想进大公司,想学新技术,Linux 一定是一道绕不过去的坎,只有扎实掌握 Linux 操作系统相关…
作为程序员,在处理文件和输入输出的时候经常要跟CRLF和LF打交道.可能大家多少知道一些,但总是记不清楚,我也是这样的,因此写下这篇博文,作为记录. 首先,明确他们的意思:CR(回车),LF(换行).是不是有点别扭,有点难记?下面的趣谈能帮助大家记忆: CR和LF是缩写,其实他们的全称分别是:"Carriage-Return"和"Line-Feed".追本溯源的说,CR(Carriage-Return)和LF(Line-Feed)这两个词来源于打字机的发明和使用.…
Ps:建议初学者在阅读本文之前,先简要了解一下之前的几篇文章,以便于熟悉本文提到的一些关于IIS6的内容,方便理解.仅供参考. PS:为什么叫瞎说呢?我觉得自己理解的并不到位,只能是作为一个传声筒,希望能给大家一些启发,引发一些讨论,来让大家更好的理解asp.net处理原理.有错误的地方,大家一定要指正,一定不要给我面子.谢谢大家. 在之前的几篇文章中,我跟大家分享了ASP.NET应用程序生命周期的一些知识,大多是在IIS6中.随着技术的迅猛发展,IIS7逐渐的走入我们的视线,我相信未来也将全面…
在之前的文章中,我们提到过P_Module(HttpModule)这个能干的程序员哥们儿,它通过在项目经理HttpApplication那里得到的授权,插手整个应用程序级别的事件处理.所有的HttpModule都要实现IHttpModule接口,那么我们看IHttpModule的定义: namespace System.Web { public interface IHttpModule { void Dispose(); void Init(HttpApplication context);…
趣谈生成函数 =v= 今天luyouqi在洛谷随机跳题rand出来一道生成函数板子题,然后我给做了(雾 发现小伙伴们还不会生成函数,于是我试着写这篇生成函数简介.(其实我也不怎么会生成函数这么高级的东西,本篇纯属道听途说,大家看着当故事娱乐一下就好) 食用指南 笔和草算纸是推荐的食用工具 从前有一个无限长的随便一个数列\(a = \{2, 1, 4, 7, 4\}\),有一天,一个大佬说:能不能用一个函数表示这个数列呢?于是大佬把\(a\)的每一项当做一个多项式的系数,得到了多项式函数\(f(x…
本文原创是freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/9304991 从大二开始学习Linux内核,到现在已经4年了.在大学的时候,学习Linux内核仅仅是作为一种爱好,因为国内罕有人能在本科毕业之后直接从事Linux内核研发工作,而哦也从未打算读研. 学习内核是一件很有趣的事情.仅仅是出于兴趣.当很想知道命令是如何从键盘输入到计算机并且关联到进程的时候,我翻出了Linux内核的源代码.然而,面对的问题越来…
一.分段机制 1.分段机制的原理图 2.段选择子 3.段偏移量 例如,我们将上面的虚拟空间分成以下 4 个段,用 0-3 来编号.每个段在段表中有一个项,在物理空间中,段的排列如下图的右边所示. 4.段表 #define GDT_ENTRY_INIT(flags, base, limit) { { { \ .a = ((limit) & 0xffff) | (((base) & 0xffff) << 16), \ .b = (((base) & 0xff0000) &g…
一.文件系统的功能规划 1.引子 咱们花了这么长的时间,规划了会议室管理系统,这样多个项目执行的时候,隔离性可以得到保证. 但是,会议室里面被回收,会议室里面的资料就丢失了.有一些资料我们希望项目结束也能继续保存, 这就需要一个和项目运行生命周期无关的地方,可以永久保存,并且空间也要比会议室大的多. 2.图书馆和文件系统的故事 3.规划文件系统需要考虑的第一点 4.规划文件系统需要考虑的第二点 5.规划文件系统需要考虑的第三点 6.规划文件系统需要考虑的第四点 1.如何避免一定程度上的命名冲突问…
内核的启动从入口函数 start_kernel() 开始.在 init/main.c 文件中,start_kernel 相当于内核的main 函数.打开这个函数,你会发现,里面是各种各样初始化函数 XXXX_init 第一步:在操作系统里面,先要有个创始进程,有一行指令 set_task_stack_end_magic(&init_task).这里 面有一个参数 init_task,它的定义是 struct task_struct init_task = INIT_TASK(init_task)…
BIOS 在主板上,有一个东西叫ROM(Read Only Memory,只读存储器).这和咱们平常说的内存RAM(Read Access Memory,随机存取存储器)不同. 而 ROM 是只读的,上面早就固化了一些初始化的程序,也就是BIOS(Basic Input and Output System,基本输入输出系统). 在x86系统中,将1M空间最上面的0xF0000到0xFFFFF这64K映射给ROM,也就是说,到这部分地址访问的时候,会访问ROM ,当电脑刚加电的时候,会做一些重置的…
一.引子 1.计算两方面的原因 2.内存管理机制 二.独享内存空间的原理 1.会议室和物理内存的关系 和会议室一样,内存都被分成一块块儿的,都编号了号,例如3F-10就是三楼十号会议室.内存页有这样一个地址.这个地址是实实在在的地址,通过这个地址我们就能够定位到物理内存地址 2.会产生什么问题呢? 3F-10打开三个相同的程序,都执行到某一步,比方说,打开三个计算机器,用户在这三个程序的界面.上分别输入10.100.1000,如果内存中的这个位置只能保存一个数, 那应该保存那个呢?这不就冲突了吗…
一.小内存的分配基础 1.kmem_cache_alloc_node的作用 通过这段代码可以看出,它调用了kmem_cache_alloc_node函数,在task_struct的缓存区域task_struct分配了一块内存 static struct kmem_cache *task_struct_cachep; task_struct_cachep = kmem_cache_create("task_struct", arch_task_struct_size, align, SL…
一.mmap原理 在虚拟内存空间那一节,我们知道,每一个进程都有一个列表vm_area_struct,指向虚拟地址空间的不同内存块,这个变量名字叫mmap struct mm_struct { struct vm_area_struct *mmap; /* list of VMAs */ ...... } struct vm_area_struct { /* * For areas with an address space and backing store, * linkage into t…
一.内核页表 和用户态页表不同,在系统初始化的时候,我们就要创建内核页表了 我们从内核页表的根swapper_pg_dir开始找线索,在linux-5.1.3/arch/x86/include/asm/pgtable_64.h中就能找到它的定义 extern pud_t level3_kernel_pgt[512]; extern pud_t level3_ident_pgt[512]; extern pmd_t level2_kernel_pgt[512]; extern pmd_t leve…
一.引子 磁盘→盘片→磁道→扇区(每个 512 字节) ext* 定义文件系统的格式 二.inode 与块的存储 1.块 2.不用给他分配一块连续的空间 我们可以分散成一个个小块进行存放 1.优点 2.存在的问题 3.如何解决 3.inode里面有哪些信息? 至于 inode 里面有哪些信息,其实我们在内核中就有定义.你可以看下面这个数据结构. struct ext4_inode { __le16 i_mode; /* File mode */ __le16 i_uid; /* Low 16 b…
一.引子 在这之前,有一点你需要注意.解析系统调用是了解内核架构最有力力的一把钥匙,这里我们只要重点关注这几个最重要的系统调用就可以了 1.mount 系统调用用于挂载文件系统:2.open 系统调用用于打开或者创建文件,创建要在 flags 中设置 O_CREAT,对于读写要设置flags 为 O_RDWR:3.read 系统调用用于读取文件内容:4.write 系统调用用于写入文件内容. 二.挂载文件系统 想要操作文件系统,第一件事情就是挂载文件系统.…
首先,我们知道操作系统是管理和控制计算机硬件与软件资源的计算机程序.这里把操作系统想象为一个软件外包公司,其内核就相当于这家外包公司的老板,那么我们可以把自己的角色切换成这家外包公司的老板,设身处地的去理解操作系统是如何协调各种资源,帮客户做成事情的. 以鼠标双击 QQ 到运行整个过程理解操作系统: 鼠标是输入设备,鼠标双击 QQ 要通过输入设备驱动知道鼠标的动作(外包公司要通过客户对接员知道客户的需求): 鼠标双击后产生一个指令,然后会产生中断,调用一个中断处理函数,弄明白指令的含义(了解客户…
如今linux系统安全变的越来越重要了,这里我想把我平时比较常使用的一些linux下的基本的安全措施写出来和大家探讨一下,让我们的linux系统变得可靠. 1.BIOS的安全设置 这是最基本的了,也是最简单的了.一定要给你的BIOS设置密码,以防止通过在BIOS中改变启动顺序,而可以从软盘启动.这样可以阻止别有用心的试图用特殊的启动盘启动你的系统,还可以阻止别人进入BIOS改动其中的设置,使机器的硬件设置不能被别人随意改动. 2.LILO的安全设置 LILO是linux LOader的缩写,它是…
linux命令妙趣横生,喜欢敲命令行的人会深有体会,但是没有系统学习过操作系统的话,很多命令还是难以理解的.讲实在话,大多数linux爱好者常敲的都是这些方面的: 文件系统 磁盘 网络 系统状态 账户管理 自启服务管理 常用软件安装 一言蔽之,熟悉命令不等于精通操作系统,但精通操作系统,命令自然上手. 下面列举一些不是常用但与操作系统相关的命令,以此开始对操作系统的补习课. ipcs 显示 进程通信相关的共享内存.信号量.消息队列的使用量 slabtop slab内存的装态 vmstat 虚拟内…
原文地址:http://blog.chinaunix.net/uid-27164517-id-3282242.html pthread_cond_wait总和一个互斥锁结合使用.在调用pthread_cond_wait前要先获取锁.pthread_cond_wait函数执行时先自动释放指定的锁,然后等待条件变量的变化.在函数调用返回之前,自动将指定的互斥量重新锁住. int pthread_cond_signal(pthread_cond_t * cond); pthread_cond_sign…
1 选择Uboot版本号 2 移植uboot至console正常work 3 制造uImage和使用uboot指南 4 写NFC驱动器 5 uboot从nand启动引导系统 1 选择Uboot版本号 正所谓"工欲善其事,必先利其器".假设在整个过程中可以有一套友好的软硬件开发环境整个过程就比較顺利了. 戳中痛点-- 对于选择Uboot的版本号.一般人都会选择最新版本号.可是新版本号必定会有些结构上的差异.因此在选择好版本号之后,一定要细致分析一下如今的uboot  tree.然后选择合…
温馨提示:本文篇幅较长,建议读者耐心阅读,本文中的代码经过笔者精心构思,可以复制过去运行一下,观察输出结果,所有代码在python3.5.0中测试通过. 文章目录 What is 多线程? Why we choose 多线程? How to use 多线程? Thread类剖析(关键) 线程创建的方法(关键中的关键) 同步原语 锁 信号量 条件变量[^2] What is 多线程? 谈起多线程,大家或多或少地都听说过,和它黏在一起的还有两个兄弟我想大家也不会太陌生--多核和多进程1.它们之间有着…
如何查看IP地址呢? windows  查看IP地址命令  IPCONFIG LINUX    查看IP 命令   IFCONFIG   IP ADDR ifconfig 和ADDR的区别  这是一个关于NET-TOOLS和IPROUTER2的故事. IP分类 无类型域间选路(CIDR) 这是一种IP分配的一种折中方案,用来处理各类型IP 不够用或者浪费问题. 这种方式打破了原来设计的几类地址 的做法,将32位的IP地址一分为二,前面的是络号,后面的是主机号, 10.100.122.2/24 …
在之前的三篇文章中,我们还算简明扼要的学习了asp.net的整个生命周期,我们知道了一个Request进来以后先去ISAPI Filter,发现是asp.net程序后又ASPNET_ISAPI.dll这个ISAPI Extension来进行处理.在ASPNT_ISAPI创建了Worder Process后,在管道中经过HttpModule的处理来到HttpHander的手中. 我们知道P_Handler程序员使用“乾坤大挪移”对页面进行了处理后又通过管道中的HttpModule把response…
在上回书开始的时候我们提到博客园的IIS看了一眼我的请求后就直接交给ASP.NET去处理了,并且要求ASP.NET处理完之后返回HTML以供展示. 那么我们不仅要问: 1,    IIS肯定是没有眼睛的啦,那它是怎么“看”的呢? 2,    在“看”到了.aspx的页面请求后又是如何把它交给ASP.NET的呢?如果不做任何处理那它的存在又有什么意义呢? 3,    ASP.NET收到这个处理请求后又是如何做的呢?它是怎么创建Context对象又是如何“雇佣”项目经理HttpApplication…
这几天一直在看ASP.NET应用程序生命周期,真是太难了,我理解起来费了劲了,但偏偏它又是那么重要,所以我希望能给大家带来一篇容易理解又好用的文章来帮助学习ASP.NET应用程序生命周期.这篇就是了. 当你访问博客园想看我的这篇文章的时候,这个请求就被博客园的WEB SERVER(IIS)接收到了.博客园IIS看了一眼我的请求,“噢,是.aspx啊,给ASP.NET去处理吧,就把我这个请求给了ASP.NET,并且说:“这个你来处理,你处理完了之后把HTML给我,我好给邱爽一个回复”. ASP.N…
从头讲讲编码的故事.那么就让我们找个草堆坐下,先抽口烟,看看夜晚天空上的银河,然后想一想要从哪里开始讲起.嗯,也许这样开始比较好…… 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节". 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去.他们看到这样是好的,于是它们就这机器称为"计算机". 开始计算机只在美国用.八位的…
[前言介绍] iOS的一种设计模式,观察者Observer模式(也叫发布/订阅,即Publich/Subscribe模式). 观察者模式,包含了通知机制(notification)和KVO(Key-value-observing)机制. 在这本文中,我们将介绍在日常项目当中经常使用到的通知机制这一种设计模式. 通知机制 委托机制是代理“一对一”的对象之间的通信,而通知机制是广播“一对多”的对象之间的通信: 一.是什么?[生活问题例子] “短信天气预报” 当A类发送一条信息给通知中心时,注册为用户…