目录 . 内核锁机制 . 同步与互斥 . 锁定内存总线原子操作 . 信号量 . 自旋锁 . RCU机制 . PERCPU变量 . 内存和优化屏障 . 读者/写者锁 . 大内核锁 . 互斥量 1. 内核锁机制 内核可以不受限制地访问整个地址空间,在多处理器系统上(或类似地,在启用了内核抢占的单处理器上),这会引起一些问题,如果几个处理器同时处于核心态(即CPU正在执行内核区代码).则理论上它们可以同时访问同一个数据结构,这会造成竞态条件为了解决这个问题,内核使用了由锁组成的细粒度网络,来明确地保护…
目录 一.进阶命令 二.系统命令 三.压缩和归档 3.1.归档 3.2.压缩 3.3.归档并压缩 归档.接档:tar -cf.tar -tvf 压缩.解压:gzip.gunzip 归档并压缩:tar -czf 接档并解压:tar -xzf 一.进阶命令 find //列出当前目录以及子目录(包括隐藏文件) | //管道符,作用:前一个命令输出结果,作为后一个命令的输入 grep //文本搜索工具,例:gerp bash for99.sh 在for99.sh中搜索带有bash的行 //ll | g…
一.文件系统 操作系统通过文件系统管理文件及数据,磁盘或分区需要创建文件系统之后,才能被操作系统所用,创建文件系统的过程又称之为格式化.没有文件系统的设备又称之为裸设备(raw),某些环境会需要裸设备,例如安装 Oracle 时会需要裸设备. 1. 常见的文件系统类型 常见的文件系统有 fat32.NTFS.ext2.ext3.ext4.xfs.HFS 等.其中,fat32 和 NTFS 是 Windows 中的文件系统,ext2.ext3.ext4.xfs.HFS 是 Linux 中的文件系统…
一.硬盘 硬盘的功能相当简单但很重要,它负责记录系统所需要的各种数据.硬盘记录数据有两个方面,一个是硬件方面的存储原理和结构,另外一方面则是软件方面的数据和文件系统.硬盘的主要行为就是数据的存放和取出. 构成硬盘的基本元件,主要可以分为实际存储数据用的磁盘(Plat Platter).读取数据用的磁头(Head).帮助磁头搜寻读取位置的马达等等,这些元件构成一个能够在不同磁盘上的任意位置读取数据的结构体. 二.磁盘(Plat Platter) 磁盘是硬盘中真正用来存储信息的部分,外观上如同圆盘一…
目录 . 系统调用简介 . 系统调用跟踪调试 . 系统调用内核源码分析 1. 系统调用简介 关于系统调用的基本原理,请参阅另一篇文章,本文的主要目标是从内核源代码的角度来学习一下系统调用在底层的内核中是如何实现的 Relevant Link: http://www.cnblogs.com/LittleHann/p/3850653.html http://www.kerneltravel.net/journal/iv/syscall.htm http://zjuedward.blog.51cto.…
UNIX发展史 肯·汤姆森开发出linux. 肯·汤姆森的同事丹尼斯·里奇在1971年开发了C语言. 操作系统 公司 硬件平台 AIX IBM PowerPC HP-UX HP PA-RISC Solaris Sun SPARC Linux Red Hat Linux,Ubuntu等 Linux IA(Intel,AMD,Cyrix,RISK等) Linux发展史 1991年 芬兰大学生Linus开发.logo企鹅:有说法说是因为企鹅属于南极不属于任何国家,就像Linux.还有说法是芬兰吉祥物是…
Logout    退出系统 Gedit     文本编辑器工具 Uname –r 查看内核版本信息,uname –a 比较详细 Cat /proc/cpuinfo      查看CPU Cat /proc/meminfo    查看内存 Hostname     查看主机名 Ifconfig eth0 查看eth0 IP地址 Alias ls=’ls –ll’     设置别名 查看当前终端的路径:tty 查看当前shell:echo $SHELL 当前系统下的全部shell:Cat /etc…
一.文件浏览 cat 查看文件内容 more 以翻页形式查看文件内容(只能向下翻页) less 以翻页形式查看文件内容(可以上下翻页) head 查看文件的头几行(默认10行) tail 查看文件的尾几行(默认10行) 二.正则匹配打印行 命令 grep 用来全局匹配正则表达式并打印所在行: grep 'mingc' /etc/passwd 在该文件中匹配mingc的用户信息并打印所在行 find / -user mingc | grep ".*\.png$" 查找mingc的所有pn…
一.默认权限 每一个终端都有一个 umask 属性,是用来确定新建文件或目录的默认权限的“掩码”(mask 有“掩码”的含义,至于 u,后面说). Linux 中一般有默认的权限掩码,使用命令 umask 用以查看或设置: umask 查看默认掩码 umask 0022 设置默认掩码 一般地,普通用户(uid 为 500 以上)的权限掩码默认为 0002,root 用户(uid 为 0)的权限掩码默认为 0022. 如果新建了一个文件或目录,那么这个文件或目录的默认权限等于 文件或目录的默认最高…
一.用户.组 1. 用户 当我们使用 Linux 时,需要以一个用户的身份登录,一个进程也需要以一个用户的身份运行.用户限制使用者或进程可以使用或不可以使用哪些资源. 2. 组 组用来方便地管理用户. 每个用户拥有唯一 uid,操作系统实际使用的是用户 ID,而不是用户名 每个用户属于一个主组,属于一个或多个附属组 每个组拥有一个 gid 每个进程以一个用户身份运行,并受该用户可访问的资源限制 每个可登陆用户拥有一个特定的 Shell 二.用户 用户 ID 为 32 位,从 0 开始, 但是为了…
一.获取帮助 Linux 提供了极为详细的帮助工具和文档,通过查阅相关文档,可以大大减少需要记忆的东西并提高效率. 二.--help参数 几乎所有命令都可以使用 -h 或 --help 参数获取命令的详细信息. 三.man命令 man 命令使 Linux 中最为常见的帮助命令,将要获取帮助的命令作为参数执行 man 命令,就可以获取相应的文档帮助. man 文档分为很多类型: 类型 描述 1 用户命令 2 内核系统调用 3 库函数 4 特殊文件设备 5 文件格式和规范 6 游戏 7 规范.标准和…
一.挂载操作 磁盘或分区创建好文件系统后,需要挂载到一个目录才能够使用. Windows 或 Mac 系统会进行自动挂载,一旦创建好文件系统后会自动挂载到系统上,Windows 上称之为 C 盘.D 盘等. Linux 需要手动挂载或配置系统进行自动挂载,/mnt 是文件系统的挂载目录(mnt 是 mount “挂载”的缩写). 二.mount命令 在 Linux 中,我们通过 mount 命令将格式化好的磁盘或分区挂载到一个目录上: mount /dev/sda3(要挂载的分区) /mnt(挂…
一.树状目录结构 Linux 文件系统是一个倒置的单根树状结构.文件系统的根为"/":文件名严格区分大小写:路径使用"/"分割(Windows 中使用"\"). 树状目录结构图如下: 以下是对上图中各个目录的解释: 目录 描述 / 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中 /bin Binary 的缩写,这个目录存放着最经常使用的命令 /boot 存放着 Linu…
一.日期时间 命令 date 查看.设置当前系统时间: date -u 格林威治时间 date %Y-%m-%d 显示格式化的时间 date -s "23:00" 使用 -s 参数设置.修改时间 命令 hwclock 或 clock 显示硬件时钟时间 命令 cal 查看日历 命令 uptime 查看系统启动后运行时间,也可查看系统负载(过去1分钟.5分钟.15分钟的负载) 二.输出.查看命令 命令 echo 回显输入的内容 命令 cat 显示文件内容 命令 head 显示文件的头几行(…
一.复制文件.目录 使用 cp 命令复制文件或目录: $ cp 源文件(夹)目标文件(夹) 常用参数: -r 递归复制整个目录树 -v 显示复制过程的详细信息 二.移动.重命名文件或目录 通过 mv 命令移动或重命名文件或目录: $ mv 文件 目标目录 如果指定文件名,则可以重命名文件. 三.创建.删除文件 通过 touch  目录可以创建一个空文件或更新文件时间: $ touch test.md 通过 rm 命令可以删除文件或目录: $ rm test.md 常用参数: -i 交互删除,删除…
行文结构如下: 用户和用户组 Linux文件权限概念 Linux目录配置 重点回顾 1.用户与用户组 Linux是个多用户.多任务的系统,可能有多人同时使用这台机器进行工作,为了考虑每个人的隐私和工作环境,“文件所有者”角色既用户角色显得相当重要.另外,如果有2个组同时在一台机器上开发,但是这2个组有竞争关系.需要相互隔离对方,杜绝访问自己的资源,但是自己组成员可以访问本组资源.这就引出了用户与用户组的概念. 在Linux系统中,每一个文件都有用户(User).用户组(Group).其他人(Ot…
Linux课程---14.linux下lamp环境如何安装 一.总结 一句话总结: 要按顺序安装,比如apache需要在php之前安装, 一.安装 gcc 编译器 二.卸载 rpm 安装的 http 和 mysql 软件 三.编译安装 php 依赖包 四.安装 apache 软件 五.安装 mysql 软件 六.安装 php 软件 七.让 Apache 支持 PHP 扩展库 八.安装 pdo-mysql 模块软件 1.linux服务进程常用命令? pstree netstat -tunpl to…
目录 1.Linux严格区分大小写 2.Linux一切皆文件 3.Linux不靠扩展名区分文件类型 4.Linux中所有的存储设备都必须在挂载之后才能使用 5.Windows下的程序不能直接在Linux中使用 这篇文章主要罗列Windows系统和Linux系统最常见的一些区别. 1.Linux严格区分大小写 Linux是严格区分大小写的,这一点和Windows系统不一样,所以操作时要注意区分大小写. 包括文件名和目录名.命令.命令选项.配置文件设置选项等. Tips: Linux系统中大写的不多…
Linux 27 岁了!盘点 Linux 的 27 件趣事 许多人认为10月5日是 Linux 系统的周年纪念日,因为这是 Linux 在1991年首次对外公布的时间.不过,你可能不知道的是,早在1991年8月25日,当年还是大学生的 Linus Torvalds 就向 comp.os.minix 新闻组的人透露了由于“业余爱好”他正在研究操作系统的消息.因此,该时间也被许多爱好者视为 Linux 的真正诞生日期. 为纪念 Linux 27 岁诞辰,OMG Ubuntu 列出了 27 个与 Li…
catalog . 程序功能概述 . 感染文件 . 前置知识 . 获取ROOT权限: Linux Kernel <= - Local Privilege Escalation 1. 程序功能概述 . 得到root权限 . 感染文件 . 进行破坏 Relevant Link: https://github.com/karottc/linux-virus 2. 感染文件 该病毒采取感染.C源代码文件的方式进行传播感染,即在每个被感染的源代码的主函数中插入恶意函数的调用,以及在文件的其他位置插入恶意逻…
前言 近期几个月将Linux Kernel的大概研究了一下,以下须要进行深入具体的分析.主要将以S3C2440的一块开发板为硬件实体.大概包含例如以下内容: 1 bootloader分析,以uboot为主,结合详细开发板的情况.我的目标是解释清楚uboot的工作原理(说实话,分析过程中不太想被硬件绑架,可是须要以一个实际的样例 来做分析) 2 kernel部分,这就非常多内容了.打算从kernel启动的流程開始分析. 3 除kernel本身外,还有非常多的知识,比如ld的输入script分析等,…
一.前言 本文没有什么框架性的东西,就是按照__create_page_tables代码的执行路径走读一遍,记录在初始化阶段,内核是如何创建内核运行需要的页表过程.想要了解一些概述性的.框架性的东西可以参考内存初始化文档. 本文的代码来自ARM64,内核版本是4.4.6,此外,阅读本文最好熟悉ARMv8中翻译表描述符的格式. 二.create_table_entry 这个宏定义主要是用来创建一个中间level的translation table中的描述符.如果用linux的术语,就是创建PGD.…
n this article I will show you how to install Linux Kernel 3.10 on Ubuntu 13.10 Saucy Salamander, Ubuntu 13.04 Raring Ringtail, Ubuntu 12.10 Quantal Quetzal, Ubuntu 12.04 Precise Pangolin, Linux Mint 16 Petra, Linux Mint 15 Olivia, Linux Mint 14 Nadi…
上次介绍了Linus Torvalds, 这次介绍他开发的「内核」. 经常听人提到「Linux kernel」,但如果被问到「kernel究竟是什么?」的话,会出乎意料的觉得难以回答. 那么,kernel到底是什么呢?「kernel」翻译过来就是「核心」的意思,简单来说,「Linux的核心程序就是Linux kernel」. 其实严格来说,「Linux」就是指「Linux kernel」.(最近,「Linux发行版」简称为「Linux」的情况越来越多) 将Linux kernel解释成「系统核心…
这是内核自带的文档,讲解ARM芯片的内存是如何布局的!比较简单,对于初学者可以看一下!但要想深入理解Linux内存管理,建议还是找几本好书看看,如深入理解Linux虚拟内存,嵌入系统分析,Linux内核分析及程序设计等:  Kernel Memory Layout on ARM Linux Linux在ARM平台上的内存布局 Russell King <rmk@arm.linux.org.uk>       November 17, 2005 (2.6.15) This document de…
在Linux中,给kernel传递参数以控制其行为总共有三种方法: 1.build kernel之时的各个configuration选项. 2.当kernel启动之时,可以参数在kernel被GRUB或LILO等启动程序调用之时传递给kernel. 3.在kernel运行时,修改/proc或/sys目录下的文件. 这里我简单讲的就是第二种方式了,kernel在grub中配置的启动参数. 首先,kernel有哪些参数呢? 在linux的源代码中,有这样的一个文档Documentation/kern…
注:本文是对众多博客的学习和总结,可能存在理解错误.请带着怀疑的眼光,同时如果有错误希望能指出. 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 本文讨论的背景是Linux环境下的network IO. 一 概念说明 在进行解释之前,首先要说明几个概念:- 用户空间和内核空间- 进程切换- 进程的阻塞- 文件描述符- 缓存 I/O 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统…
电脑,计算机已经成为我们生活中必不可少的一部分.无论是大型的超级计算机,还是手机般小巧的终端设备,都跑着一个操作系统.正是这些操作系统,让那些硬件和芯片得意组合起来,让那些软件得以运行,让我们的世界在科技的领域里一次又一次的享受生活 我们熟知的操作系统大概都是windows系列,近年来Apple的成功,让MacOS也逐渐走进普通用户.在服务器领域,恐怕Linux是无人不知无人不晓.他们都是操作系统,也在自己的领域里独领风骚.这都还得益于另外一个古董级别的操作系统--Unix,虽然说古董级别,只是…
相关学习资料 linux内核设计与实现+原书第3版.pdf(.3章) 深入linux内核架构(中文版).pdf 深入理解linux内核中文第三版.pdf <独辟蹊径品内核Linux内核源代码导读> http://www.yanyulin.info/pages/2013/11/linux0.html http://blog.csdn.net/ddna/article/details/4958058 http://www.cnblogs.com/coolgestar02/archive/2010/…
第二章. Linux 如何学习 最近更新日期:2009/08/06 1. Linux当前的应用角色 1.1 企业环境的利用 1.2 个人环境的使用 Linux当前的应用角色 在第一章Linux是什么当中,我们谈到了Linux相关的历史, 与简单的介绍了一下Linux这个『Kernel』与Linux distributions等等. 而在开始进入Linux的基础学习之前,我们有必要了解一下应该要如何有效的学习Linux! 但在谈到Linux如何学习之前,我们得就Linux目前的一般应用来说明一下,…