- 博客(192)
- 资源 (14)
- 收藏
- 关注
原创 fork以及vfork
1、fork()通过复制父进程在内存中的映像创建了一个新的子进程。子进程继承了诸如环境和权限这样的父进程属性。子进程还继承了某些父进程资源,如打开的文件和设备 ,但不是父进程的每个属性或资源都被子进程继承。例如,子进程有一个新的进程id与父进程不同,子进程的CPU使用时间被重置为0.子进程没有获得父进程持有的锁
2012-12-18 19:01:08 927
转载 linux服务程序详解
acpidACPI(全称 Advanced Configuration and Power Interface)服务是电源管理接口。建议所有的笔记本用户开启它。一些服务器可能不需要 acpi。支持的通用操作有:“电源开关“,”电池监视“,”笔记本 Lid 开关“,“笔记本显示屏亮度“,“休眠”, “挂机”,等等。anacron, atd, crond这几个调度程序有很小的差别。 建议开
2012-12-18 14:26:52 3481
转载 如何在SELinux中为新的后台程序编写策略
如何在SELinux中为新的后台程序编写策略原贴:http://www.sep14.cn/selinux-policy-howto.htmlwriting new policy for a daemon inred hat selinux guide, 给出了一般的步骤或者说一种方法学,这里打算翻译一些这一段,算是一种自我回顾总结,也希望对从事类似工作的人有所帮助。另外,SEB
2012-12-17 22:50:14 1245
原创 Qt buttonBox按钮
新建buttonboxGUI Application项目。布局如图:最上边: lineEdit 作为输入框中间: buttonBox控件 确定和取消最下边:textEdit 用来当按下“确定” 按钮时, 显示lineEdit输入的文字; 或按下“取消” 时清空textEdit控件中内容。 实现: 1. 头
2012-12-17 18:30:17 24103
原创 poll()函数详解
poll提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。 #include int poll(struct pollfd fd[], nfds_t nfds, int timeout); 参数: 1)第一个参数:一个结构数组,struct pollfd结构如下: struct pollfd{ int fd;
2012-12-16 23:30:08 105940 5
转载 栈帧&溢出
http://www.cnblogs.com/shuaiwhu/archive/2008/10/17/2065110.html栈帧&溢出栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构 从逻辑上讲,栈帧就是一个函数执行的环境:函数参数、函数的局部变量、函数执行完后返回到哪里 … 。 实现上有硬件方式和软件方式(有些体系不支持硬件栈)
2012-12-16 19:18:44 972
原创 select详解
#inlcude >int select(int nfds, fd_set *restrict readfds, fd_set *restrict writefds, fd_set *restrict errorfds, struct timeval *restrict timeout);参数:nfds给出了要监
2012-12-14 22:55:37 1383
转载 在Unix/Linux中创建一个后台进程的步骤
http://www.linuxidc.com/Linux/2011-07/39587.htm在Unix/Linux中创建一个后台进程的步骤1、调用fork函数,创建一个子进程。2、先让父进程自然结束。3、在子进程中调用setpgrp(),把子进程的进程组ID设为子进程的进程ID。4、在子进程中调用setsid(),创建一个新的Session(会话),这样子进程就与当前
2012-12-14 20:04:26 1772
转载 linux各部分的初始化过程(待续)
http://blog.csdn.net/voice_shen/article/details/6690201[内核版本:Linux-2.6.30]众所周知,Linux C代码初始化入口是start_kernel() [init/main.c]函数。以下进行单核CPU进行分析。先列出start_kernel内执行的调用:start_kernel [init/main.c
2012-12-14 15:46:19 613
转载 System.map详解
[注:此文转载于http://forum.eepw.com.cn/thread/128712/1][作者: 永远在路上]有时system.map文件可以帮助我们理解内核编译,它记录了所有代码的运行地址。下面一起看看如何读懂它system.map内容格式为:线性地址 类型 符号具体内容如下: 00100000 A phys_startup_32c0100000
2012-12-14 15:39:14 486
转载 linux物理内存描述(接近新版本内核)
http://blog.csdn.net/bullbat/article/details/7166736inux使用于广泛的体系结构,因此需要用一种与体系结构无关的方式来描述内存。linux用VM描述和管理内存。在VM中兽药的普遍概念就是非一致内存访问。对于大型机器而言,内存会分成许多簇,依据簇与处理器“距离”的不同,访问不同的簇会有不同的代价。每个簇都被认为是一个节点(pg_
2012-12-14 14:52:42 728
转载 N)UMA 模型中的内存组织------《深入Linux内核架构》笔记
http://blog.csdn.net/daniel_ice/article/details/6833835UMA(一致内存访问,uniformmemory access): 计算将内存以连续的方式组织起来。SMP中每个cpu访问各内存区具有一样的速度NUMA(非一致内存访问,non-uniformmemory access):SMP中的各个cpu都有本地的内存,可支持快速访
2012-12-13 23:12:06 1798
转载 linux内核中内存管理数据结构关系及机制(原题:linux虚拟内存组织结构浅析)
http://blog.csdn.net/gxfan/article/details/2954928众所周知,linux内核支持绝大多数体系结构,因此linux内核必须采取一种与具体体系结构无关的方法来描述物理内存的组织结构,这个问题就是本系列文章要讨论的话题。 要理解linux虚拟内存在逻辑上的组织结构,我们首先要明白两个概念:UMA(Uniform Memory Access)
2012-12-13 15:29:55 1826
原创 QT 使用label和commandlinkbutton循环显示图片
首先,建立Qt Gui Application项目。1.控件控件类型 控件名称 控件说明 文本QLabel imagelabel 显示图片 T
2012-12-11 19:42:45 8370
转载 loopback 文件系统
回环设备(loop-back devices)回环设备( 'loopback device')允许用户以一个普通磁盘文件虚拟一个块设备。设想一个磁盘设备,对它的所有读写操作都将被重定向到读写一个名为 disk-image 的普通文件而非操作实际磁盘或分区的轨道和扇区。(当然,disk-image 必须存在于一个实际的磁盘上,而这个磁盘必须比虚拟的磁盘容量更大。)回环设备允许你这样使用一个普
2012-12-11 09:51:31 1918
原创 在3.6.0内核中升级binutils , gcc 和glibc(期待交流)
今天,就实验了一下昨天对于binutils,gcc和glibc的思考。我在内核3.6.0下升级的。(参考资料:手把手教你构建自己的linux系统,lFS-7.2英文版,还有gcc,glibc的帮助文档README,INSTALL,及一些博客)1、升级binutils 这个安装比较简单,注意一下configure 时的配置就行。2. 升级gcc gcc对
2012-12-09 20:22:22 2905
原创 对于gcc glibc和binutils升级的次序问题分析与思考
一、相关知识 1、GCC是一个用于linux系统下编程的编译器。GCC原本只能处理C语言,但后来扩展到可处理C++,之后也可处理Fortran、Pascal、Objective-C、Java、Ada,以及Go与其他语言。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持。(注意它所提供的库,以便于当安装软件时,可以知道缺少的是gcc提供的库还是Glibc
2012-12-08 23:31:05 5950
转载 gcc glibc 和binutils之间的关系
一、关于gcc、glibc和binutils模块之间的关系1、gcc(gnu collect compiler)是一组编译工具的总称。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持,如libgcc_s.so、libstdc++.so等。2、binutils提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静态库归档
2012-12-08 22:35:08 2659
转载 技术学习道路的盲区与误区
PS:这篇博客写给自己,同时也是给很多和我一样的新手,刚刚入职某一行业的人一个引导与警钟,能否敲响,就看究竟是钟还是实心的铜块了。 http://beryung.blog.51cto.com/6235304/1071951 初始,先说说现在一般做技术人员的处理问题方向。 开始入门的时候,很多人都是一样的,先是接到任务,然后需要完成某一个目标,接着去问
2012-12-06 19:42:35 619
原创 QT Ctreater 三种建立信号和槽的方法(待完善)
以 两个控件label和button为例,当单击button时,在label上显示“hello world”。项目建好后,控件安放好。1. 自己定义槽函数和映射 1)在头文件mainwindow.h中类MainWindow的定义中声明槽函数: class MainWindow : public QMainWindow
2012-12-04 22:32:41 1541
原创 QT信号和槽机制
QT采用了一种全新的对象和方法的关联与通信机制,称为信号和槽机制。信号和槽机制独立于c++编译器,在编译之前需要经过QT的专门预处理工具MOC(meta object compiler,元组件编译器)对代码进行预处理后才能进一步进行c++代码的编译。MOC会将qt应用程序中特有的代码自动转换为相应的c++语法代码。 QT用信号和槽机制来取代GUI编程中通常使用的回调函数进行事件处理
2012-12-04 21:21:40 2687
转载 黑客第二课:脱屌第一步(主要讲unix-like系统的初步知识)
http://netsecurity.51cto.com/art/201211/365224_12.htm在众多环境变量当中,还有一个环境变量,对Shell的工作方式具有直接的、举足轻重的影响作用,那就是名为“PATH”的变量。这个变量的名字的含义是“Search Path(搜索路径)”。这个变量的实际的值,是由一个以“:(Colon,冒号)”黏结的若干个目录名所组成的序列。UNI
2012-12-04 14:11:45 2859
转载 LINUX程序的虚拟内存映射机制
1)虚拟内存的解释:虚拟内存的核心概念是指代码所用的内存地址与物理地址没有关系.在用户空间中,一个进程的虚拟地址A指向不同的物理内存,而不是另一个进程的地址A.任何时候CPU发送指令向内存存取数据时,通过软件将虚拟地址的数据变为物理地址.将虚拟地址变为物理地址变为物理地址的工作是由内存管理单元(MMU)完成的.虚拟内存地址也可以称为逻辑地址.2)内存管理单元:内存管理单
2012-12-02 14:15:42 952
原创 操作系统内存映射机制
这个问题思考的是程序与内存的映射问题? (请高手指教)程序在编译以后,被分配到了一个4G的逻辑地址空间当中, 在这当中是以分区段的方式进行管理的(如有代码段,数据段,堆栈段等) 。那么,如何将这4G的地址映射到真实的内存空间中? cpu当中,有内存控制单元(硬件),这通过两次地址映射(第一次是分段单元,第二次是分页单元)将程序中的逻辑地址映射到真实的内容地址中。
2012-12-02 12:43:59 4018
转载 操作系统真实的虚拟内存是什么样的(一)
1. 内存及虚存基本布局http://blog.csdn.net/iihero/article/details/8236079提起虚存,大都能说出几条来。对于32位系统,大多数操作系统都会将4GB的内存空间的一部分挪给内核使用,应用程序无法直接访问这一段内存,这部分内存空间称为内核空间。Windows默认情况下会将高地址的2GB分配给内核(也可配置为1GB),而Linux默认情况下
2012-12-01 22:06:29 976 1
转载 明年薪酬涨幅或同比下降 85后离职率居高不下
现在的经济形势,你会选择离职吗?昨日,人力资源服务商前程无忧发布的《2013离职与调薪调研报告》(下称《报告》)显示,在宏观形势不明朗的前提下,员工离职和企业涨薪都格外谨慎。数据显示,2012年员工整体离职率为16.7%,去年为18%,而由于经济形势不明朗,企业在2013年调薪也更加谨慎,预计明年薪酬涨幅为8.6%,同比少了一个百分点。不过,报告指出85后作为新生代,离职率则高居不下。
2012-12-01 20:29:28 600
转载 ldd中Makefile的解释
# Comment/uncomment the following line to disable/enable debugging#DEBUG = y # Add your debugging flag (or not) to CFLAGS ifeq ($(DEBUG),y) DEBFLAGS =
2012-12-01 15:41:11 1411
原创 intel x86 cpu系列的寻址方式
当说一个cpu是 16位 或32位时, 指的是中央处理器中的 算术逻辑运算单元(ALU)的宽度。 系统总线中的 数据总线通常与ALU有相同的宽度(有例外)。地址总线宽度最好与数据总线宽度一致,但不现实。对8086的16位cpu,采用1M字节的内存地址空间,地址总线的宽度就是20位。这就产生一个问题:ALU是16位,也就是说可以直接加以运算的指针的长度是16位的。那么如何实现
2012-12-01 10:25:46 2054
原创 LFS完成心得
历时5天左右的LFS工作终于完成了。现在说说制作中的感想。首先,要找到材料。 材料就是网上下载的 《手把手教你构建自己的linux系统》word版,最好还要有本 孙海勇 出版的那本书籍, 当然英文文档也要有。前边的材料就是让你快速操作,后边这两本就是告诉你,为什么那么操作以及正确性检查。其次,要有 必然成功的信心。 在制作遇到问题时,我想,别人能成功,我也一定能成功。正
2012-11-30 11:31:12 1614
原创 在踏实中前进
今天,又开始从前弄过的LFS了。以前感觉好难好难的,什么都不懂,现在感觉啊,原来经过一段时间的努力,自己竟然能明白大部分了,有错误也可以很快的找出来。进而思考, 每天的努力看似没有进步,其实在悄悄进步。一步一步走, 踏实的走下去, 不浮躁, 不气馁, 到最后,竟然会发现---啊, 原来我走的不慢,我收获不少。文章虽短, 记下,以时刻激励自己,鼓励他人。
2012-11-19 21:51:39 626
转载 linux shell 2>&1问题解析
试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出. 你可以用 ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1; ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中;
2012-11-19 21:46:21 1219
转载 等待队列的原理与源码分析
等待队列(wait queue)用于使进程带等待某一特定的事件发生,而无需频繁的轮询操作,进程在等待时间内睡眠,在等待的事件发生时由内核自动唤醒。 一、 等待队列相关数据结构 每一个等待队列都由两部分组成:等待队列头(struct wait_queue_head_t)和等待队列成员(struct wait_queue)。struct __wait_queue_head
2012-11-05 21:28:16 1225
转载 wait_event_interruptible() 和 wake_up()的使用
http://www.newsmth.net/nForum/#!article/KernelTech/20731 1. 关于 wait_event_interruptible() 和 wake_up()的使用 读一下wait_event_interruptible()的源码,不难发现这个函数先将 当前进程的状态设置成TASK_INTERRUPTIBLE,然后调用sche
2012-11-05 20:35:19 19630 6
原创 保持两轨道的平行性
周5的运动, 我又有所进步。跑步10圈(4000m),增加了2圈;仰卧起坐53个,增加13个, 其他各项具有所增强。而学习,也从实践中逐渐发现问题,正在进一步加强和改进。 思考啊, 这两者能够齐头并进,最后能够达到一个好的结果就可以了。一步一步踏实走完, 其实比什么都好。欲速则不达!
2012-11-04 17:12:25 895
原创 为了工作很纠结, 很痛苦
今年找工作很难啊, 拿到offer的很少啊。看着周围的纠结,发狂, 自己心里一样纠结,火从中来。代码屏上游, 键盘许多愁。。。。。。
2012-10-30 20:14:09 671
原创 从现在开始
从读研以来,差不多一直是每周两次运动,我不但坚持了下来,现在反而到时候不运动就会难受。想想这个运动过程,我在跑步时最近经常想,应该反思一下运动的过程,运动给了我什么?首先,给了我强键的体魄。我本来没多少肉,但是经过这多时间的锻炼, 胳膊上有了肌肉,腹部力量得到加强,劈叉有了进步,马步有了时长, 连环腿有了3,5下,空踢也有不少提高,躺举(举重100斤)由0 到10多个,要知道这是好多人举不起的
2012-10-28 22:18:19 541
转载 linux 在i386下的内存管理
http://blog.csdn.net/li_shyng/article/details/5545973 对于i386 保护模式 和 linux i386下内存管理的相关资料: 1. linux源代码情景分析 (第一章 和 第二章) 2. 深入理解linux内核 (第二章) I386是Intel的x86系列CUP中一个重要的里程碑。Linux最初就是I386 CPU上实现的。本文介绍
2012-10-25 16:20:06 1121
转载 linux内核模块编写
主题: linux内核模块的程序结构--模块加载函数(必须),模块卸载函数(必须),模块许可证声明(必须),模块参数(可选),模块导出符号(可选),模块作者的等信息声明(可选)一个linux内核模块主要由以下几个部分组成。 1、模块加载函数"用module_init()来指定"(必须) 当通过insmod和modprobe命令加载内核模块时,模块的加载函数会自动被内核执行,完成本
2012-10-22 09:43:20 1052
转载 linux路径查找
前面(见 http://www.linuxidc.com/Linux/2012-02/53694.htm )对linux虚拟文件系统的架构以及设计到的数据结构有了一个整体的认识,这里看看linux内核怎么根据给定的文件路径名在内存中找到和建立代表着目标文件或目录的dentry结构和inode结构。文件路径的搜索是文件系统中最基本也是最重要的一部分之一,后面我们会看到,文件的打开、关闭等等操作都将涉
2012-10-08 15:07:23 1380
转载 copy_from_user函数详解
from:http://hi.baidu.com/wzt85/blog/item/1f29731ba4b317ffae513316.html copy_from_user函数的目的是从用户空间拷贝数据到内核空间,失败返回没有被拷贝的字节数,成功返回0.这么简单的一个函数却含盖了许多关于内核方面的知识,比如内核关于异常出错的处理.从用户空间拷贝数据到内核中时必须非常小心,
2012-09-28 10:41:32 2219
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人