Linux中命令格式为: command [options选项] [arguments参数] //中括号代表是可选的,即有些命令不需要选项也不需要参数 ls或ls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略 cheat命令提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能. find查找一个文件在系统中的什么位置,locate是神速版本的find(Windows下有个Everything工具和locate类似). grep 可以对文件全文检…
第三章 程序的机器级表示 3.1历史观点 Intel处理器的换代:8086——80286——i386——i486——Pentium——PentiumPro——PentiumII——PentiumIII——Pentium4——Pentium4E——Core2——Corei7. 这些所有的代都是Intel系列的,Intel系列本身有很多名字,比如x86,比如IA32,Intel系列中64位扩展称为x86-64.最常用的是x86.也就是说x86就是Intel每一代处理器的统称. 8086和80286的…
20135316王剑桥<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC 1000029000 一.可执行程序是怎么得来的? 编译器预处理(负责把include的文件包含进来及宏替换等工作):编译成汇编代码:编译器编译成目标代码:再链接成可执行文件:操作系统加载到内存中来执行 hello.o和hello文件都是ELF格式的 二.目标文件的格式(ELF可执行可链接) ABI(应用程序二进制接口) 可重定位主要是.o文件 可执行文件加载的主…
20135316王剑桥 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC 1000029000 三个法宝:存储程序计算机.函数调用堆栈.中断. 两把宝剑:中断上下文和进程上下文切换. 内核启动相关代码基本都在init目录下. Linux内核的核心代码在kernel目录中. -S:在CPU开始运行之前将其冻结: -s:如果不想使用1234端口,泽可以使用-gdb tcp:xxxx来代替. 重点理解相关目录内容 arch/ 该目录中包含和…
20135316王剑桥 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC 1000029000 1.内核态:在高执行级别,代码可以执行特权指令,访问任意的物理地址,这种CPU执行级别就对应着内核态.而在相应的低级别执行状态下,代码的掌控范围会受到限制.只能在对应级别允许的范围内活动.从而保证真个系统更稳定. 2.Intel x86的CPU有四种不同执行级别0-3,Linux只使用其中的0和3来分别表示内核态和用户态. 3.Cs寄存器的…
王剑桥Linux内核学习笔记 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 计算机是如何工作的 个人理解:计算机就是通过和用户进行交互,执行用户的指令,这些指令存放在内存中,通过寄存器存储,堆栈变化,来一步步顺序执行. 一.存储程序计算机工作模型 1.冯诺依曼体系结构-存储程序计算机 硬件角度(主板):通过cpu中IP寄存器指向一个代码段运行某些指令: 寄存区,指向内存的某一块区域(代码段) IP:16位cp…
4.1.1程序员的可见的状态 ———— Y86的每条指令都会读取或修改处理器状态的某些部分,称为程序员可见状态.如图1所示. 1.程序寄存器(Program registers): %eax, %ecx, %edx, %ebx, %esi,%edi, %esp和%ebp.都是32位的. 2.条件码(Condition codes): ZF(零标志), SF(符号标志), OF(溢出标志).用来保存最近的算术或逻辑指令造成的影响. 3.程序计数器(PC):存放当前正在执行的地址. 4.存储器(Me…
关于who 功能说明:显示目前登入系统的用户信息. 语 法:who [-Himqsw][--help][--version][am i][记录文件] 补充说明:执行这项指令可得知目前有那些用户登入系统,单独执行who指令会列出登入帐号,使用的 终端机,登入时间以及从何处登入或正在使用哪个X显示器. 参 数: -H或--heading 显示各栏位的标题信息列. -i或-u或--idle 显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何…
getenv函数 1.获得环境变量值的函数 2.参数是环境变量名name,例如"HOME"或者"PATH".如果环境变量存在,那么getenv函数会返回环境变量值,即value的首地址:如果环境变量不存在,那么getenv函数返回NULL setenv函数 1.修改或添加环境变量的函数 2.将name设置成value   1.如果name在环境中不存在,那么很好办,在环境中添加这个新的变量就OK. setenv函数必须在environment list中增加一个新的…
第十二章并发编程 1.如果逻辑控制流在时间上重叠,那么它们就是并发的.这种现象,称为并发(concurrency). 2.为了允许服务器同时为大量客户端服务,比较好的方法是:创建并发服务器,为每个客户端创建各自独立的逻辑流.现代OS提供的常用构造并发的方法有: 进程和线程. 1)每个逻辑流都是一个进程,由内核来调度维护.每个进程都有独立的虚拟地址空间,控制流通过IPC机制来进行通信. 2)线程:运行在单一进程上下文中的逻辑流,由内核进行调度,共享同一进程的虚拟地址空间. 由于进程控制和IPC的开…