Linux相关
文章平均质量分 71
hondrif82q
这个作者很懒,什么都没留下…
展开
-
进程 虚拟空间
系统每个进程都有自己的内存页表,页表内保存了进程的物理内存页和虚拟内存页之间的对应关系。页表中每个页表项对应于一个虚拟内存页,包含了对应的物理内存页标号、页表项的有效标志以及相应的物理页访问控制属性。进程虚拟地址包括两方面信息,一个是虚拟页帧编号,作为访问进程页表的索引;另一个是偏移量。当进程访问某虚拟地址时,CPU根据虚拟页帧编号从进程的页表中获取相应的物理页帧编号,物理页帧编号乘以4k原创 2006-12-23 22:45:00 · 1269 阅读 · 0 评论 -
linux 一句话(经典)
----------------------------网络无关篇-------------------------- 0001 修改主机名(bjchenxu) vi /etc/sysconfig/network,修改HOSTNAME一行为“HOSTNAME=主机名“(没有这行?那就添加这一行吧),然后运行命令 “ hostname 主机名“。一般还要修改/etc/hosts文件中的主机转载 2007-01-15 11:21:00 · 1784 阅读 · 0 评论 -
linux多线程初步
1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括windows/nt,当然,也包括linux。 为什么有了进程的概念后,还要再引入线程呢?使用多线程到转载 2007-01-17 11:18:00 · 832 阅读 · 0 评论 -
brk和sbrk
brk和sbrk主要的工作是实现虚拟内存到内存的映射.在GNUC中,内存分配是这样的: 每个进程可访问的虚拟内存空间为3G,但在程序编译时,不可能也没必要为程序分配这么大的空间,只分配并不大的数据段空间,程序中动态分配的空间就是从 这一块分配的。如果这块空间不够,malloc函数族(realloc,calloc等)就调用sbrk函数将数据段的下界移动,sbrk函数在内核的管 理下将虚原创 2007-01-26 12:09:00 · 2001 阅读 · 0 评论 -
共享内存
共享内存(上)共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像原创 2007-01-26 16:15:00 · 1006 阅读 · 0 评论 -
内存模型
现在的每个进程使用了全部4G线性空间。在加载程序时内核把程序加载到线性地址0x08048000开始的位置。这个位置当然>128MB。2G开始是共享库,3G开始是内核。了解linux的 内存模型,或许不能让你大幅度提高编程能力,但是作为一个基本知识点应该熟悉。坐火车外出旅行时,即时你对沿途的地方一无所知,仍然可以到达目标地。但是 你对整个路途都很比较清楚的话,每到一个转载 2007-01-26 16:48:00 · 1060 阅读 · 0 评论 -
Linux内存管理
摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存地使用方法。力求从外自内、水到渠成地引导网友分析Linux地内存管理与使用。在本章最后我们给出一个内存映射地实例,帮助网友们理解内核内存管理与用户内存管理之间地关系,希望大家最终能驾驭Linux内存管理。 前言内存管理一向是所有操作系统书籍不惜笔墨转载 2007-01-27 16:22:00 · 1119 阅读 · 0 评论 -
ldd3-内核内存分配
ldd3-内核内存分配先总结内存分配,明天我再来总结Mmap和DMA技术-------------------------------以下忽略了内存池分配技术和per-CPU变量的相关内容。kmalloc函数不对所获取的内存空间清零,分配的区域在物理内存中也是连续的。#include void *kmalloc(size_t size, int flags);最常用的标志是GFP_KERNEL,表转载 2007-01-27 16:27:00 · 2103 阅读 · 0 评论 -
linux下头文件 标准路径
find /usr -name signal.h 用来查找signal.h的路径 一般在/usr/lib目录下原创 2007-03-19 10:27:00 · 2317 阅读 · 0 评论 -
vim插件 安装
1 taglist首先ctags,在下载最新版的EXUBERANT CTAGS时,要求glibc2.3.4以上 ,没有办法 ,有了一个旧版本的ctags,不过 一样用。当时贪图方便,装了rpm版本,在网上看到一个装src的例子:解压并安装 tar zxvf ctags-5.6.tar.gz cd ctags-5.6 ./configur原创 2007-03-26 10:10:00 · 1199 阅读 · 0 评论 -
在Redhat Linux 9中编译和配置gvim 7.0
1. 下载vim的源码: vim的官方网站是:[url]www.vmunix.com/vim[/url] 可以用这个链接下载源码包:[url]ftp://ftp.jp.vim.org/pub/vim/unix/vim-7.0.tar.bz2[/url] 2. 配置: 如果想编译出gvim,要用下面这句配置命令: $ ./configure / --prefix=/u转载 2007-04-01 21:45:00 · 1496 阅读 · 0 评论 -
linux内核中的list详解
1 list_entry作用就是通过list_head型指针ptr换算成其宿主结构的起始地址,该宿主结构是type型的,而ptr在其宿主结构中定义为member成员。定义在内核源文件include/linux/list.h中,对比list_entry(ptr,type,member)可知有以下结果: 其中list相当于member成员,struct example_struct相当于原创 2007-04-14 20:32:00 · 6235 阅读 · 1 评论 -
linux的进程(任务)优先级
进程调度依据调度程序运行时,要在所有可运行状态的进程中选择最值得运行的进程投入运行。选择进程的依据是什么呢?在每个进程的task_struct结构中有以下四项:policy、priority、counter、rt_priority。这四项是选择进程的依据。其中,policy是进程的调度策略,用来区分实时进程和普通进程,实时进程优先于普通进程运行;priority是进程(包括实时和普通)的静转载 2007-04-16 19:29:00 · 8003 阅读 · 0 评论 -
深入分析 Linux 内核链表
在 Linux 内核链表中,不是在链表结构中包含数据,而是在数据结构中包含链表节点 本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介 链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据转载 2007-04-15 10:37:00 · 946 阅读 · 0 评论 -
linux进程调度解析
1调度器的启动通常有两种方式:A. 主动式在核心应用中直接调用schedule()。这通常发生在因等待核心事件而需要将进程置于挂起(休眠)状态的时候--这时应该主动请求调度以方便其他进程使用CPU。下面就是一个主动调度的例子:/* 节选自[drivers/input/mousedev.c] mousedev_read() */add_wait_queue(&list->mousedev->wait转载 2007-04-17 09:38:00 · 1402 阅读 · 0 评论 -
请求调页
请求调页是一种动态内存分配技术,进程运行的时候不访问全部的地址空间,把页框的分配推迟到不能再推迟为止。以下原因页 可能不在主存中1.进程永远没有访问到这个页2.进程已经访问这个页,但是页的内容被临时保存到磁盘上。handle_pte_fault()通过检查引用address的页表项来区分这两种情况。有两种方法装入所缺的页,这取决于是否映射到一个磁盘文件,do_no_pag转载 2007-04-24 16:14:00 · 1007 阅读 · 0 评论 -
缺页异常处理
两种缺页异常的情况:错误编程和属于地址空间但是还没有分配页框的所引起的do_page_fault第一步操作时读取引起缺页的线性地址,这个地址保存在address局部变量中:首先判断是否在内核空间(即检查缺页的线性地址是否属于第4G,是的话goto vmalloc_fault,处理因在内核态访问一个非连续内存而引起的错误)然后看cpu是否在执行中断或者执行内核进程如果不是,再判断是否原创 2007-04-24 09:57:00 · 1578 阅读 · 0 评论 -
什么是TTY
在学习Linux过程中,/proc/$pid/stat中有TTY这个缩写,/dev里面也有,不知道是什么,经查询,记录如下:tty是Teletype的缩写(转)终 端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设 备,很象电传打字机(或者说就是),是由Teletype公司生产的。设备名放在特转载 2007-01-17 20:17:00 · 1182 阅读 · 1 评论 -
linux /etc/rc.d/目录的详解
rc.d的内容如下: init.d/ :各种服务器和程序的二进制文件存放目录。 rcx.d/: 各个启动级别的执行程序连接目录。里头的东西都是指向init.d/的一些软连接。具体的后边叙述。 还有三个脚本:rc.sysinit, rc, rc.local redhat的启动方式和执行次序是: 加载内核 执行init程序 /etc/rc.d/rc.sysinit # 由in转载 2007-01-16 20:03:00 · 987 阅读 · 0 评论 -
环境变量的修改
如果你安装到 /usr/local/pgsql或者其他什么的缺省时不搜索程序的地方, 那你就需要在你的PATH环境变量里面增加一个 /usr/local/pgsql/bin (或者是你在 step 1时给选项 --bindir 设置的任何值) 要做这些事情,把下面几行加到你的 shell 启动文件,如 ~/.bash_profile (或 /etc/profile--如果你想影响所有用户):PAT转载 2007-01-15 11:23:00 · 706 阅读 · 0 评论 -
Linux——Linux后台运行命令详述
本次主要讲述后台运行命令(crontab,at,&,nohup)及(*,?,[])等 • 设置c r o n t a b文件,并用它来提交作业。 • 使用a t命令来提交作业。 • 在后台提交作业。 • 使用n o h u p命令提交作业。 名词解释: cron:系统调度进程。可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。 at命令:使用它在一个特定的时间运行一些特转载 2006-12-23 21:10:00 · 1582 阅读 · 0 评论 -
swap分区
swap分区作用:当系统的物理内存不够用的时候,就需要将磁盘中的一部分空间释放出来,以供当前运行的程序使用,即磁盘作为RAM的扩展。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。swap分区目的:为了支持linux系统的虚拟内存技术,虚拟内存能适用多于物理内存的内存空间,还可以隔离原创 2006-12-23 21:54:00 · 874 阅读 · 0 评论 -
补充一些linux进程相关的东西
守护进程Daemon,在后台运行而又没有终端或登录shell 与之接合在一起的进程。启动方式:1引导系统时启动:系统启动script执行期间启动,这些script一般放在/etc/rc.d中2手工从shell提示符启动3由crond启动4at命令启动进程挂起 Ctrl+Z后台执行 bg前台执行 fg常用命令一、名称 : at使用权限 : 所有使用者使用方式 : at -V [-q queue] [原创 2006-12-27 22:26:00 · 566 阅读 · 0 评论 -
在Linux中实现内部进程通信
Linux给我们提供了丰富的内部进程通信机制,包括共享内存、内存映射文件、先入先出(FIFO)、接口(sockets)以及多种用于同步的标识。在本文中,我们主要讨论一下共享内存和内存映射文件技术。一 般来说,内部进程通信(interprocess communication)也就是IPC,是指两个或两个以上进程以及两个或者两个以上线程之间进行通信联系。每个IPC机制都有不同的强项或者弱点,转载 2006-12-28 20:40:00 · 711 阅读 · 0 评论 -
new Vs malloc
new operator除了分配内存,还要调用构造函数。 malloc函数只是负责分配内存。 其实编译器最终也是调用malloc函数完成new操作的内存分配。 //////////////////////////////////////////////////////////////////////////////malloc与free是C++/C语言的标准库原创 2006-12-28 21:23:00 · 679 阅读 · 0 评论 -
The Linux Kernel Module Programming Guide(1)
Chapter 1. Introduction1.1. 什么是内核模块?现在,你是不是想编写内核模块。你应该懂得C语言,写过一些用户程序, 那么现在你将要见识一些真实的东西。在这里,你会看到一个野蛮的指针是如何 毁掉你的文件系统的,一次内核崩溃意味着重启动。什么是内核模块?内核模块是一些可以让操作系统内核在需要时载入和执 行的代码,这同样意味着它可以在不需要时有操作系统卸载。它转载 2007-01-04 21:36:00 · 1337 阅读 · 0 评论 -
Awk学习笔记
Table of Contents1. awk简介 2. awk命令格式和选项 2.1. awk的语法有两种形式 2.2. 命令选项 3. 模式和操作 3.1. 模式 3.2. 操作 4. awk的环境变量 5. awk运算符 6. 记录和域 6.1. 记录 6.2. 域 6.3. 域分隔符 7. gawk专用正则表达式元字符 8. POSIX字符集 9. 匹转载 2007-01-07 21:04:00 · 556 阅读 · 0 评论 -
Linux C编程 1(原创)
在进行文件处理中遇到的几个问题,思考并解决 1. 犯了个错,使用 gcc -c -g test_open1.c -o test_open1 (-c就不链接了) 总是permission denied -c Compile or assemble the source files, but do not link. The linking stage simply原创 2007-01-09 20:47:00 · 807 阅读 · 0 评论 -
Linux C编程 3(原创)
补充文件操作: 1 fcntl函数──对已打开文件描述符进行各种控制操作 int fcntl(int fd,int cmd) 头文件 cmd= F_DUPFD 复制fd F_GETFD F_SETFD 获取/设置fd F_GETLK F_SETLK F_SETLKW 获取/设置记录锁 F_GETOWN F_SETOWN 获取/设置异步 I/原创 2007-01-10 22:36:00 · 640 阅读 · 0 评论 -
软件测试的基本知识
第一、软件测试的目的第一是确认软件的质量(最重要的目的),其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件产品的本身,而且还包括 软件开发的过程。 保证整个软件开发过程是高质量的。软件质量是原创 2007-01-09 11:18:00 · 1657 阅读 · 0 评论 -
linux c语言库函数
有 时候我们在编译程序的时候还要指定库的路径,这个时候我们要用到编译器的 -L选项指定路径.比如说我们有一个库在 /home/hoyt/mylib下,这样我们编译的时候还要加上 -L/home/hoyt/mylib.对于一些标准库来说,我们没有必要指出路径.只要它们在起缺省库的路径下就可以了.系统的缺省库的路径/lib /usr/lib /usr/local/lib 在这三个路径下面的库,不管在什转载 2007-01-09 16:24:00 · 3167 阅读 · 1 评论 -
Linux上的内存管理
Linux上的内存管理 [ FAQ ]Q:什么是mm?A:这可不是meimei哦!指的是内存管理(memory management)。是内核中的一套软件机制,用于有效管理内存的使用。Q:内存管理的软件实现了什么功能?A:1) 进程的保护,即进程向内存管理请求的物理页,由内存管理系统负责,不会将同一物理页(共享页面除外)映射到不同进程的虚地址空间。?? 2) 虚存的实现,允许所有进程使用的内存总转载 2007-01-12 17:13:00 · 1549 阅读 · 0 评论 -
Linux 下的多进程编程
(一) 理解Linux下进程的结构 Linux下一个进程在内存里有三部份的数据,就是“数据段”,“堆栈段”和“代码段”,其实学过汇编语言的人一定知道,一般的CPU象I386,都有上 述三种段寄存器,以方便操作系统的运行。“代码段”,顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用 同一个代码段。 堆栈段存放的就是子程序的返回地址、子程序的参转载 2007-01-13 17:23:00 · 839 阅读 · 0 评论 -
Linux下的进程间通信
详细的讲述进程间通信在这里绝对是不可能的事情,而且笔者很难有信心说自己对这一部分内容的认识达到了什么样的地步,所以在这一节的开头首先向大家推荐著 名作者Richard Stevens的著名作品:《Advanced Programming in the UNIX Environment》,它的中文译本《UNIX环境高级编程》已有机械工业出版社出版,原文精彩,译文同样地道,如果你的确对在Li转载 2007-01-14 11:26:00 · 1151 阅读 · 0 评论 -
守护进程
守护进程工作原理和方式 在Client/Server模式下。服务器监听(Listen)在一个特定的端口上等待客户连接。连接成功后服务器和客户端通过端口进行数据通信。守护 进程的工作就是打开一个端口,并且等待(Listen)进入连接。如果客户端产生一个连接请求,守护进程就创建(Fork)一个子服务器响应这个连接,而 主服务器继续监听其他的服务请求。 2.守护进程工作方式: (1)运行独立的守原创 2007-01-19 11:15:00 · 768 阅读 · 0 评论 -
关于计算机硬件的几个常识问题
1.CPU 有所谓的『倍频』与『外频』,外频是所有系统的接口设备运作时候的速度,至于倍频则是 CPU 本身运算 时候加上去的一个运算速度!两者相乘才是 CPU 的频率。不过,由于接口设备并没有这么快的速度,所以,一些接口设备需要将外频除上一个数字,才可以进行沟通。例如一般 PCI 接口的正常速度是 33 ,所以,如果你的 CPU 外频是 133 时,么接口设备的速度就要再除以 4 才能跟系统沟通原创 2007-05-09 09:59:00 · 853 阅读 · 0 评论