linux
fay8048
关注互联网的软件工程师
展开
-
读内核笔记索引
2011年5月24日,我开始读内核。自认为智商平庸,虽然为这已经准备8个月,(小第还在大学,所以8个月已经很长啦,因为在学校学习是全天的),所以还是不敢读2点多的版本,赵炯老师的书的出发点就是我正需要的,书写的很牛逼,可以看出是做这真正在踏实做研究。我读的是《linux内核完全剖析--基于0.12内核》。在学习中会遇到很多问题,但我坚信最后都会解决的,在此记下这些曾经困扰我的问题和比较经典的知识点。不敢说全部正确或认识全面,但我会尽量做到。不想写教材,我没那么牛逼,1在以后的时候会很快找到解决问题的关键。2原创 2011-05-31 10:46:00 · 919 阅读 · 0 评论 -
linux中 中断控制表 的组成内容
I、硬件提供的中断机制和约定 一.中断向量寻址: 硬件提供可供256个服务程序中断进入的入口,即中断向量; 中断向量在保护模式下的实现机制是中断描述符表idt,idt的位置由idtr确定,idtr是个48位的寄存器,高32位是idt的基址,低16位为idt的界限(通常为2转载 2011-07-24 23:27:06 · 1293 阅读 · 0 评论 -
task_struct /inlcude/linux/sched.h
task_struct在linux的定义如下:struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ struct thread_info转载 2011-07-26 19:53:53 · 2308 阅读 · 0 评论 -
seg指令 <在内核源码bootsect.s中出现>
bootsect.S分析一文中有这样一段代码:seg fslds si,(bx) ! ds:si是源地址;!! 将fs:bx地址所指的指针值放入ds:si中;看到这里有点晕:ds:si是源地址?不管了,先Google一下。找到资料:关于SEG 指令 http://hi.baid转载 2011-07-20 08:18:36 · 5324 阅读 · 2 评论 -
bootsect.s中关于取得磁盘驱动参数
关于bootsect.s保存每磁道扇区数的问题81 ! Get disk drive parameters, specifically nr of sectors/track! 取磁盘驱动器的参数,特别是每道的扇区数量。! 取磁盘驱动器参数INT 0x13 调用格式和返回信息如下原创 2011-07-21 21:05:39 · 1455 阅读 · 0 评论 -
sys_call.s中系统调用
_system_call: 85 push %ds 86 push %es 87 push %fs 88 pushl %eax # save the orig_eax 89原创 2011-07-27 18:08:32 · 2239 阅读 · 0 评论 -
关于sys_call.s的部分疑问
呵呵赵老师回答真简洁,把问题解释的也很明白:直接把邮件复制来1. 是的。2. 若接收信号,就可能被干掉。3. 尽快处理信号。 > 小弟正在读linux0.12内核> 读到系统调用时有疑问实在不能解决,向赵炯老师请教,我把这两段程序都复制了。>原创 2011-08-10 17:38:24 · 991 阅读 · 0 评论 -
switch_to及ret_from_sys_call控制任务的切换与返回
switch_to及ret_from_sys_call控制任务的切换与返回 当进程A在用户态下执行着,出现了系统调用(int 0x80),CPU转而执行_system_call(system_call.s L80)中断处理过程, _system_call转载 2011-08-10 17:41:46 · 816 阅读 · 0 评论 -
/proc/sys/net/ipv4/下各项的意义
/proc/sys/net/ipv4/icmp_timeexceed_rate这个在traceroute时导致著名的“Solaris middle star”。这个文件控制发送ICMP Time Exceeded消息的比率。/proc/sys/net/ipv4/igmp_max_memberships主机上最多有多少个igmp (多播)套接字进行监听。/proc/sys/net/i转载 2012-02-09 16:47:05 · 1118 阅读 · 0 评论 -
wait&waitpid
wait的函数原型是: #include#include pid_t wait(int *status) 进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程, wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一转载 2012-03-07 16:36:16 · 619 阅读 · 0 评论 -
signal函数
signal函数的使用signal系统函数调用提供了一种最简单的范例。然而,由于C原形声明的缘故使它看起来比实际复杂。signal函数将一个给定的函数和一个特定的信号联系。这里是FreeBSD中的定义(和一个typedef一起):引用: typedef void (*sig_t) (int); sig_t signal(int sig, sig_t func);原创 2012-03-07 16:38:24 · 1323 阅读 · 0 评论 -
U盘写入镜像安装Ubuntu_打造Win7、XP、Ubuntu独立三系统
Win7、XP、Ubuntu独立三系统共存:PS-1:U盘写入镜像安装与光盘安装完全一样,而且节能环保、方便快捷。PS-2:本文是将XP系统、Ubuntu系统的引导都交由Win7分区的引导项来引导,至于先前的Win7与XP双系统,有两种方案:①先装XP后装Win7,无须解释,Win7会自动处理好引导。②先装Win7后装XP,装好后进入XP,运行BCDautofix 1.2.2软件修转载 2012-10-11 10:22:51 · 3836 阅读 · 0 评论 -
UBUNTU 12.04 JDK
第一步:下载jdk-7-linux-i586.tar.gz[plain] view plaincopywget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz (注:如果下载不下来,建议使用迅雷下载,然后拷贝到Linux系统上。)第二步:解压安装转载 2012-10-12 11:08:53 · 687 阅读 · 0 评论 -
ubuntu12.04下txt文件乱码如何解决?
gsettings set org.gnome.gedit.preferences.encodings auto-detected "['GB18030', 'GB2312', 'GBK', 'UTF-8', 'BIG5', 'CURRENT', 'UTF-16']"gsettings set org.gnome.gedit.preferences.encodings shown-in-m原创 2012-10-27 10:12:10 · 631 阅读 · 0 评论 -
git
GitHub For WindowsGitHub for Windows 是一个 Metro 风格应用程序,集成了自包含版本的 Git,bash 命令行 shell,PowerShell 的 posh-git 扩展。GitHub 为 Windows 用户提供了一个基本的图形前端去处理大部分常用版本控制任务,可以创建版本库,向本地版本库递交补丁,在本地和远程版本库之间同步。微软也通过CodePl原创 2014-01-23 23:30:41 · 1106 阅读 · 0 评论 -
JNI 入门DEMO
1、编写调用了外部库的JAVA程序 Java代码 public class HelloWorld{ public native void sayHello(); static{ System.loadLibrary("HelloWorld"); }转载 2015-12-04 09:56:29 · 426 阅读 · 0 评论 -
真正的BOOTSECT.S
前面几篇文章已经说明啦很多BOOTSECT.S的内容,这里只挑没有设计的只是说明:/* Many BIOS's defau原创 2011-07-21 15:01:55 · 2331 阅读 · 2 评论 -
硬盘参数表
1>什么是硬盘参数表 在PC机中BIOS设定的中断向量表中int 0x41的中断向量位置(4*0x41 = 0x0000:0x0104)存放的并不是中断程序的地址,而是第一个硬盘的基本参数表 对于100%兼容的BIOS来说,这里存放着硬盘参数表阵转载 2011-07-21 11:25:32 · 3217 阅读 · 0 评论 -
ubuntu中关于开启telnet认识到的问题
在UBUNTU中,开启TELNET服务:靠,没想到这么麻烦。因为在RED HAT中开起时很简单;vi /etc/xinetd.d/telnet service telnet{ disable = yes flags = REUSE socket_type = stream wait = no user = root转载 2011-05-27 00:38:00 · 1273 阅读 · 0 评论 -
linux下bochs的安装及简单运行
<br />http://bochs.sourceforge.net/ bochs官网。关于bochs不再累述。<br />我是在UBUNTU下用包管理软件apt-get装的bochs.命令<br />apt-get install bochs<br />这是一个没有调试环境的安装,先感受一下小成功的滋味。。呵呵<br />这样的安装后,在命令行下执行$bochs会跳出一个配置界面,表害怕,这说安装成功啦。仔细阅读他的提示会发现是没有配置文件<br />(配置文件bochsrc,ROMIMAGE,VG原创 2011-05-31 17:47:00 · 12265 阅读 · 1 评论 -
linux平台汇编工具的安装
组建汇编开发环境。最低限度工具:汇编器链接器调试器还有要为高级语言程序创建的汇编历程:高级语言编译器目标代码反汇编器用于优化的简档生成工具*******************************************************************************汇编器1MASM。。。。。。。。。。。。INTEL平台汇编其鼻祖原创 2011-06-05 16:12:00 · 2380 阅读 · 0 评论 -
系统调用
系统调用目 录系统调用系统调用简述宏系统调用表系统调用入口函数系统调用实现过程函数名约定系统调用号系统调用表从ptrace系统调用命令到INT 0X80中断请求的转换系统调用功能模块的初始化内核服务代码分析:mlock转载 2011-06-05 16:28:00 · 998 阅读 · 0 评论 -
关于BIOS加载BOOT.S的经典解答
精选论坛问答(9.5-10.10)摘录论坛问答(一)问:我需要一个什么样的环境才能编译0.11的内核,比如应安装什么版本的linux,什么样的硬件比较好。需要在安装LINUX的机器上再安装什么软件包和编译工具。答:一般带有编译环境的Linux机器都可以编译0.11内核。但必须对0.11内核代码进行一些调整。因为编译器已经有了变化。变化大的部分主要是汇编程序部转载 2011-06-07 15:27:00 · 4883 阅读 · 1 评论 -
AT&T格式汇编命令集合
这几天一直在看BOOTSECT.S,靠AT&T格式汇编还真不是好搞的,其中我第一个一直没解决的问题就是.globl是个什么东东,虽然树上解释的已很详细,但是还是不踏实,这是AT&T格式汇编的命令集合:下面引自《汇编语言程序设计》:指令(这里即可理解为助记符)和数据不是构成汇编语言的仅有元素。汇编器保留专门的关键字用于在助记符被转换为指令码时。指示汇编器如何执行专门的函转载 2011-06-05 08:56:00 · 5134 阅读 · 0 评论 -
BOOT.S程序详解
先上代码。这段代码在我的BOCHS上跑着没问题。************************************************************************************************************************* 1 ! 2 !boot.s -- bootsect.s 的框架程序。用代码0x07替换msa原创 2011-06-08 10:20:00 · 2445 阅读 · 1 评论 -
linux boot.s
这次的boot.s和上一篇不同,boot程序的主要功能是把软盘或映像文件中的head内核代码加载到内存某个指定位置处,并在设置好临时GDT表等信息后,把处理器设置成运行在保护模式下,然后跳转到head代码处去运行内核代码。实际上,boot.s程序会首先利用ROM BIOS中断int 0x13把软盘中的head代码读入到内存0x10000(64KB)位置开始处,然后再把这段head代码移原创 2011-06-12 00:44:00 · 4389 阅读 · 3 评论 -
保护模式简介
net-chong 的 保护模式简介 在8086/8088时代,处理器只存在一种操作模式(Operation Mode),当时由于不存在其它操作模式,因此这种模式也没有被命名。自从80286到80386开始,处理器增加了另外两种操作模式——保护模式PM(Protected Mode)和系统管理模式SMM(System Management Mode),因此,转载 2011-06-15 14:42:00 · 929 阅读 · 1 评论 -
linux head.s 详解
上一篇是boot.s,这是head.s。关于head.s的作用为head.s程序运行在32位保护模式下,其中主要包括初始设置的代码、时钟中断int 0x08的过程代码、系统调用中断int 0x80的过程代码以及任务A和任务B等的代码和数据。其中初始设置工作主要包括:①重新设置GDT表;②设置系统定时器芯片;③重新设置IDT表并且设置时钟和系统调用中断门;④移动到任务A中执行。在虚拟原创 2011-06-26 16:16:00 · 10282 阅读 · 1 评论 -
bios中断大全
BIOS中断:1、显示服务(Video Service——INT 10H) 00H —设置显示器模式0CH —写图形象素01H —设置光标形状0DH —读图形象素02H —设置光标位置0EH —在Teletype模式下显示字符03H —读取光标信息0FH —读取显示器模式04H —读取光笔位置10H —颜色05H —设置显示页11H —字体06H、07H转载 2011-06-26 16:17:00 · 961 阅读 · 0 评论 -
vim + ctags + cscope+taglist
工欲善其事,必先利其器在阅读大量linux c代码的开始。我们先要吧几个更有利于阅读的工具装好。我用的是vim所以介绍vim + catgs + cscope1什么是ctagsCtags is a program that generates an index原创 2011-07-04 10:03:53 · 1302 阅读 · 0 评论 -
端口和in /out指令
端口是主机与外设进行数据交换的。(外设接口电路有专用于数据交互的寄存器。为了与CPU中的寄存器相区别,称之为“端口”)。端口有数据端口,状态端口和控制端口3种。PC机给予每一个端口分配了一个地址(称为端口号),形成一个独立于内存空间的I/O地址空间。在8086/8088中,端口地转载 2011-07-08 18:17:43 · 11799 阅读 · 1 评论 -
BIOS中断向量表
1 -- 关于中断向量的几点注释1. 系统引导时,中断向量表放在内存何处? 系统刚引导时,内存0x00000到0x0003FF共1KB的空间用于存放中断向量表。每个中断向量占用4个字节,共可存储256个中断向量。2. 系统引导时,处在实模式下,只可寻址1MB,为什么要用4转载 2011-07-21 11:06:18 · 5858 阅读 · 1 评论 -
8253学到IO地址线
以上是8253的内部结构。8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互 相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,原创 2011-07-21 11:13:03 · 8418 阅读 · 0 评论 -
linux java 安装路径
windows:set java_home:查看JDK安装路径java -version:查看JDK版本linux:whereis javawhich java (java执行路径)echo $JAVA_HOMEecho $PATH二:下面是配置linux的环境变量:(记得source .bash_profile). 修改转载 2015-12-04 09:59:23 · 1196 阅读 · 0 评论