linux内核以页作为物理内存管理的基本单位
linux内核以页作为物理内存管理的基本单位。 32位机器上,页的大小一般是4KB.
linux内核以页作为物理内存管理的基本单位。 32位机器上,页的大小一般是4KB.
OS版本与职责分工: Ubuntu作为Dev Machine, 版本,内核版本 CentOS作为Target Machine (即被调试的系统), 版本, 内核版本 第1步:Target Machine 重新编译内核 1. make menuconfig 2. 打开内核调试信息.在Kernel hacking里选中"Kernel debugging",并且 a.打开"Compile the kernel with debug info" b.打开"Compile the kernel with frame pointers" c.关闭"Write protect kernel read-only data structures",否则无法设置断点 3. 打开KGDB相关选项. 在Kernel hacking a.打开“KGDB: kernel debugging with remote gdb” b.然后再进去打开"KGDB: use kgdb …
在某一瞬间,linux中的处理器必定在干下面三种活之一: 1.运行于用户空间,执行用户进程 2.运行于内核空间,处于进程上下文,代表某个特定的进程执行 (比如,响应应用程序的系统调用) 3.运行于内核空间,处于中断上下文,与任何进程无关。
记录一下我搭建linux内核调试环境的步骤 机器、OS确定 1. 平时工作用的linux环境:Ubuntu 12.04. 当然你用windows也可以。 2. 编译好后的内核最好不要装在工作机器上,所以我用virtualbox装了一个centos 5.7作为试验场, 它的内核版本是2.6.18-274.el5 编译内核 3. 下载2.6.32.60版本的内核源码到centos上并解压 4. 创建一个适用于本机的、简洁的config: make localmodconfig (如遇提示,按enter) (2.6.32之后的版本才支持local config) 5. 在.config文件里加上CONFIG_SYSFS_DEPRECATED_V2=y,否则新内核启动时会找不到/dev/root; 然后make oldconfig(如遇提示,按enter) 6. 编译内核和模块 make clean; make; make modules; 在我的centos上,这三步合起来要半小时左右。 安装新内核 7. 把用户切换成root 8. 安装模块和内核:make modules_install; make install 9. 重启一下centos, 在新启的grub里选择新版内核.
SystemTap类似于Strace: http://sourceware.org/systemtap/
POSIX = Portable Operating System Interface POSIX定义了一系列最小的系统调用和库函数接口;所有号称兼容POSIX的UNIX/Linux版本都必须支持这些接口。 如果你的程序调用的系统接口都是POSIX定义的标准接口,那么它就可以在任意支持POSIX标准的*nix版本上编译后运行。
微内核设计中,功能被划分成一个个的“服务器”,这些服务器之间地址空间彼此独立,所以一个功能的崩溃不会影响其他功能。 但是微内核中的服务器之间只能通过IPC通信,效率低于直接函数调用。 linux没有使用微内核,它用的是单内核。功能模块之间可以直接进行函数调用,保证了较好的性能。 不过,它有些类似于微内核的优点:高度模块化、动态加载等等。
centos中默认情况下库函数是不带调试信息的,所以用gdb无法进入到printf()函数里。 解决办法是: 1.为libc安装调试信息 a. 先要安装一个命令:sudo yum install /usr/bin/debuginfo-install b. 设置一下repos: vi /etc/yum.repos.d/CentOS-Debuginfo.repo, 把enabled设置为1 c. 为标准库安装调试信息: sudo debuginfo-install glibc 2.再来一次gdb并进入printf()函数即可. 我这里看到的第一行代码是 _IO_size_t len = strlen (str);
在unix文件系统中,magic number是文件的开始几个字节。 unix就是通过它们来大致表示文件类型:可执行程序,shell, postscript文件等。
要执行 sudo fdisk -l, 然后根据blocks列的大小分辨出你感兴趣的windows分区。比如,/dev/sda5的大小表明它是D盘。 然后再修改/etc/fstab挂载它。