自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ctthuangcheng

自学成才。。。。加油!

  • 博客(125)
  • 资源 (4)
  • 收藏
  • 关注

原创 proc文件系统

一:proc文件系统: (1)proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。(2)简要介绍其下文件:/proc/cpuinfo  cpu信息/proc/partitions  系统识别的分区表/proc/meminfo  内存信息/proc/up

2013-05-31 09:49:05 1543

原创 C++注意小知识点

2013-05-29 14:42:48 1489

原创 shell脚本图书

《高级Bash脚本编程指南》《Linux命令行和Shell脚本编程》Linux与UNIX Shell编程指南--------------------已看!unix shell编程(第三版)Shell十三问实战LINUX+SHELL编程与服务器管理linuxsir的shell脚本赏析shell脚本学习指南《Linux命令、编辑器与Shell编程》  SSH Secure File Transfer

2013-05-29 11:17:09 1542 1

原创 free 与 delete

1. delete 用于释放 new 分配的空间,free 有用释放 malloc 分配的空间2. delete [] 用于释放 new [] 分配的空间3. delete 释放空间的时候会调用 相应对象的析构函数     顺便说一下new在分配空间的时候同时会调用对象的构造函数,对对象进行初始化,使用malloc则只是分配内存4. 调用free 之前需要检查 需要释放的指针是否为空,使用dele

2013-05-24 00:34:15 1388

原创 C++11 中值得关注的几大变化

参考:http://zh.wikipedia.org/wiki/C%2B%2B11Lambda 表达式Lambda表达式来源于函数式编程,说白就了就是在使用的地方定义函数,有的语言叫“闭包”,如果 lambda 函数没有传回值(例如 void ),其回返类型可被完全忽略。 定义在与 lambda 函数相同作用域的变量参考也可以被使用。这种的变量集合一般被称作 closure(闭包)。我在这里就不再

2013-05-24 00:26:07 1440

原创 C++11 多线程

[cpp] view plaincopyprint?#include    #include    #include    #include    #include    #include          using namespace std;  map g_pages;  mutex g_pages_mutex;    void save_page(const string &url)  {

2013-05-24 00:24:22 1383

原创 C++11 多线程

C++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用起来都比较复杂,C++11提供了新头文件、、、等用于支持多线程。使用C++11开启一个线程是比较简单的,下面来看一个简单的例子:#include #include  void hello(){

2013-05-24 00:13:23 2138

原创 linux core文件设置

在Linux中,一般当进程非正常退出时,会生成一个core文件,这个文件是进程猝死时内存的转储文件,也称为core dump。查看Linux脚本解析方式:   echo $0  1.检验core是否打开以see/see登录  csh:  limit;    coredumpsize = 0 , 说明没有打开core, 否则打开了。bash: ulimit –a ;  关注红色部分。 如果是0,表示

2013-05-23 09:51:36 10337

原创 图书收集

java图书:《Java 2 核心技术》、2.《Java编程语言》、3.《Effective Java》、4.《Java解惑》、5.《Java编程思想》c语言图书:1.《C程序设计语言》、2.《C和指针》、3.《C陷阱与缺陷》、4.《C专家编程》、5.《你必须知道的495个C语言问题》C++图书:1.《C++ Primer》、2.《C++程序设计语言》、3.《Effective C++》、4.《M

2013-05-22 16:04:23 1616

原创 华为内部面试题库---(22)

1、以下4种64位架构中,与其他3种不一致的是?(B)A.Intel 64B.IA64C.AMD 64D.IA32_64解析:Intel 64等同于IA32_64,和AMD64一样都是在IA32基础上通过扩展内存技术实现的64位;兼容IA32的软件。IA64是Intel安腾系列处理器的架构名称,是区别与IA32的全新64位架构。 2、以下选项,属于Intel x86处理器基本运行环境的是?(ABC

2013-05-20 13:29:08 1666

原创 华为内部面试题库---(21)

1. Linux内核引导过程,正确包括以下:ABCDA.CPU自身初始化B.BIOS加电自检C.加载内核引导程序D.加载内核与initrd解析:X86系统引导系统如下:Linux内核自上电后,正确包括:CPU自身初始化,bios加电自检,加载内核引导程序,加载内核与initrd。 2.有关Linux内核引导过程中,CPU初始化与bios自检说法错误的是:DA.多处理器系统,每个cpu完成自身初始化

2013-05-20 13:05:06 1660

原创 华为内部面试题库---(20)

1. 最新linux内核对普通进程使用的调度算法是(C) //http://www.ibm.com/developerworks/cn/linux/l-cn-scheduler/index.htmlA O(N)B O(1)C CFSD BFS2. 下面对linux进程调度说法错误的是(A) //深入理解linux内核P258-P262A 进程调度针对系统中的所有进程;B linux把进程分成140

2013-05-20 13:04:11 1520

原创 华为内部面试题库---(19)

1. 在Linux操作系统中,以Ext文件系统为例,下列那个数据结构在磁盘上没有对应的项:(《深入理解Linux内核》P461-480)A、inode;B、dentry;C、super_block;D、ext_dir_entry。答案:B。解释:dentry是Linux VFS方便查找引入的内存数据结构,在磁盘上没有对应的结构。2. 下面关于利用ulimit命令修改系统资源限制的说法错误的是:(h

2013-05-20 11:53:58 2190

原创 华为内部面试题库---(18)

1、关于伙伴算法,下列说法正确的是(单选):(《深入理解linux内核》P303-P313)A、伙伴算法会造成内部碎片B、alloc_pages(gfp_mask, order)返回第一个所分配页框的线性地址C、只要内存足够,可以使用伙伴算法分配任意大小的内存D、称为伙伴的两个块要求大小相同,且物理地址是连续的参考答案:D试题分析:满足下列条件的两个块称为伙伴系统:1)  两个块具有相同的大小,记

2013-05-20 11:50:42 1663 1

原创 华为内部面试题库---(17)

1、分页映射是内存管理最重要的技术之一,以下说法错误有(多选):(《深入理解LINUX内核》第二章)A、通过分页映射,MMU在每次访问时都需要经过特权级、权限等检查,防止访问不该访问的内容,达到保护的作用B、通过分页映射,MMU将线性地址转换为物理地址C、通过分页映射,MMU将虚拟地址转换为线性地址D、系统运行时,对于采用对等映射的内核态访问内存时,不需要经过分页映射,因为物理地址只需要在虚拟地址

2013-05-20 11:48:30 1774

原创 华为内部面试题库---(16)

1.内核对磁盘数据的高速缓存有:(多选)A.目录项高速缓存B.页高速缓存C.索引节点高速缓存D.超级块高速缓存参考答案:ABC   分析:磁盘高速缓存有三种:目录项高速缓存,页高速缓存与索引节点高速缓存,内核会把磁盘上的超级块以读出,以VFS超级块的方式存储在内存中,不存在超级块高速缓存。  参考:深入理解Linux内核,第15章,P595. 2.页高速缓存可以缓存以下内容:(多选)A.普通文件数

2013-05-20 11:38:38 1759

原创 华为内部面试题库---(15)

1、 以下属于内核同步机制的是(多选)A. 信号量B. spinlockC. RCUD. seqlockE. 原子操作参考答案:ABCDE  解析:Linux内核的信号量在概念和原理上与用户态的System V的IPC机制信号量是一样的,但是它绝不可能在内核之外使用。信号量在创建时需要设置一个初始值,表示同时可以有几个任务可以访问该信号量保护的共享资源,初始值为1就变成互斥锁(Mutex),即同时

2013-05-20 11:33:32 2483

原创 华为内部面试题库---(14)

1、 关于虚拟地址空间的说法错误的是()A.     进程地址空间是用多少分配多少,4G仅仅是最大限额B.     进程的地址空间并不一定对应实际的物理页C.     不同进程的不同虚拟地址可以映射到相同的物理页D.     不同进程的相同虚拟地址不能映射到相同的物理页解答:D 2、 关于mmap设备的说法,错误的是()A.     映射一个设备,意味着使用户空间的一段地址关联到设备内存上B.

2013-05-20 11:31:10 1482

原创 华为内部面试题库---(13)

1.低速系统调用是可能会使进程永远阻塞的一类系统调用,包括下列哪些调用(多选):(参考:UNIX环境高级编程,第2版,第14章,高级I/O,14.2小节)A.如果某些文件类型(例如管道、终端设备和网络设备)的数据并不存在,则读操作可能会使调用者永远阻塞B.如果数据不能立即被上述同样类型的文件接受(由于在管道中无空间、网络流控制等),则写操作也会使调用者永远堵塞C.在某些条件发生之前,打开某些类型的

2013-05-20 11:29:01 1517

原创 华为内部面试题库---(12)

1.关于可用的IO函数,说法错误的是:(参考:UNIX环境高级编程,第2版,第3章,文件I/O,3.3 3.4 3.6 3.7小节)A.调用open函数只能打开一个文件B.调用creat函数可以创建一个新文件C.可以调用lseek显式地为一个打开的文件设置其偏移量D.调用read函数从打开文件中读数据;如read成功,则返回读到的字节数;如已到达文件结尾,则返回0答案:A试题解析调用open函数可

2013-05-20 11:27:18 1492

原创 华为内部面试题库---(11)

1.关于I/O的体系结构说法错误的是(单选):(参考:深入理解LINUX内核,第三版,第十三章,I/O体系结构和设备驱动程序,I/O体系结构小节)A.PC的I/O体系结构包含的硬件组织层次:I/O端口、接口和设备控制器B.在I/O端口中,可以把两个连续的8位端口看成一个16位端口,但是这必须从偶数地址开始C.在I/O端口中,可以把两个连续的16位端口看成一个32位端口,但是这必须是从4的整数倍地址

2013-05-20 11:25:18 1902

原创 华为内部面试题库---(10)

1. 对于linux内核信号量,说法正确的是(多选):(参考:Linux内核设计与实现,第二版,第9章,9.4小节)A. 如果获取一个被占用的信号量,任务会睡眠,等待信号量释放之后,该任务才能重新获得调度B. 信号量可以允许任意数量的锁持有者C. 信号量保护的代码可以被抢占D. 信号量的实现也是与体系架构相关的答案:A,B,C,D试题解析:信号量是一个睡眠锁,在信号量被占用时,企图获取该信号量的任

2013-05-20 11:22:15 1631

原创 华为内部面试题库---(9)

1.spinlock可通过配置选项CONFIG_DEBUG_SPINLOCK来打开内核编译选项,进行自旋锁调试,作用有(多选):(参考:Linux内核设计与实现,第二版,第9章,9.2节)A. 内核会检查是否使用了为初始化的锁B. 内核会检测潜在的死锁C. 检测是否在没有加锁的情况下对锁执行开锁操作答案:A、C试题解析:spinlock自检只能做单一检查,而不能做动态交互式检查。参见 linux\

2013-05-20 11:19:35 1392

原创 华为内部面试题库---(8)

1、内核中有可能造成并发执行的原因(多选):(参考:Linux内核设计与实现,第二版,第8章)A、中断B、软中断和taskletC、工作队列(注意工作队列、软中断和tasklet的原理)D、睡眠以及与用户空间同步E、内核抢占F、对称多处理答案:A、B、D、E、F试题解析:在一台运行 Linux 的计算机中,CPU 在任何时候只会有如下四种状态(OS可见):1 在处理一个硬中断(如中断上半部)。2

2013-05-20 11:14:46 2563 1

原创 华为内部面试题库---(7)

1、以下四种Cache映射方式中,哪一种是不正确的?A.直接映射B.全相联映射C.块相联映射D.组相联映射答案:Chttp://wenku.baidu.com/view/b353051e650e52ea55189811.html 2、以下关于Cache映射方式的解释,错误的是?A.全相联映射即主存中的一个块可以直接缓存到Cache中的任意一行B.直接映射是一种多对一的映射关系C.组相联映射是直接映

2013-05-20 11:12:45 1544

原创 华为内部面试题库---(6)

1.在SMP体系结构中,中断亲和性是指将一个或者多个中断绑定到特定CPU core上运行,下列说法错误的是:A.每个硬件设备都会在/proc/irq下有个中断号命令的目录来标志中断亲和性B.IRQ#目录下smp_affinity文件,通过设置CPU位掩码,把相应中断绑定到不同CPU处理C.修改smp_affinity值,实际上修改IO_APIC IRT表中中断重定向值D.中断亲和性,即APIC总线

2013-05-20 11:06:53 1583

原创 华为内部面试题库---(5)

1、分时操作系统与实时操作系统最本质的区别是: A   处理逻辑的正确性 B   得出结果的时间的确定性  C   关注系统吞吐率,平均响应时间 D   其他答案:B试题解析:出处:http://www.360doc.com/content/11/0321/16/507289_103227092.shtml分时操作系统:同时允许多个用户通过终端,以交互方式使用计算机

2013-05-20 10:57:34 1600

原创 华为内部面试题库---(4)

1、在OSI参考模型中,实现端到端的应答、分组排序和流量控制功能的协议层是 _____ 。A.数据链路层    B.网络层    C.传输层    D.会话层答案:C    此题主要考查了ISO OSI/RM体系结构中各层的主要功能。    物理层:物理层主要是设计处理机械的、电气的和过程的接口,以及物理层下的物理传输介质等问题。    数据链路层:负责在两个相邻结点间的线路上

2013-05-20 10:54:30 1921

原创 华为内部面试题库---(3)

1、NUMA系统中,各个节点间的距离由下列哪个数据结构获取()A、SRATB、SLITC、e820图D、bootmem_data答:选B     Linux 对 NUMA 系统的物理内存分布信息是从系统 firmware 的 ACPI 表中获得的,最重要的是 SRAT(System Resource Affinity Table)和 SLIT(System Loca

2013-05-20 10:50:53 1717

原创 华为内部面试题库---(2)

1.在分页存储管理系统中,从页号到物理块号的地址映射是通过(  )实现的。A.段表 B.页表   C.PCB   D.JCB答案:B     用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等,可将用户程序的某一页放在内存的一个块中。线性地址包含了页号信息和页内偏移量信息(页大小为4Kbyte时线性地址的

2013-05-20 10:44:42 1981

原创 华为内部面试题库---(1)

1.启动init进程前,不需要经过()步骤。A.加载内核B.检测内存C.加载文件系统D.启动网络支持答案:DLinux启动过程可以分为以下几个步骤:1 BIOS自检。即进行所谓的POST(Power On SelfTest),然后根据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入"引导块"。2启动GRUB/LILO。引导操作系统。3加载内核。当内

2013-05-20 10:24:57 2208

原创 linux内核中:likely和unlikely函数

内核源码:linux-2.6.38.8.tar.bz2    参考文档:http://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/Other-Builtins.html#Other-Builtins      在Linux内核中likely和unlikely函数有两种(只能两者选一)实现方式,它们的实现原理稍有不同,但作用是相同的,下面将结合linux-2

2013-05-17 15:25:01 1966

转载 在C/C++程序里打印调用栈信息

我们知道,GDB的backtrace命令可以查看堆栈信息。但很多时候,GDB根本用不上。比如说,在线上环境中可能没有GDB,即使有,也不太可能让我们直接在上面调试。如果能让程序自己输出调用栈,那是最好不过了。本文介绍和调用椎栈相关的几个函数。 NAME       backtrace, backtrace_symbols, backtrace_symbols_fd -

2013-05-14 16:56:18 8202

转载 backtrace-----打印进程异常退出时的堆栈信息

#include #include "debug_trace.h"#define TRACE_SIZE 1024static void trace_print(int signal_type){ int trace_id = -1; void *buffer[100]; char **info = NULL; trace_id = backtra

2013-05-14 16:46:30 2807

转载 linux内存管理概述

linux内存管理建立在基本的分页机制基础上,在linux内核中RAM的某些部分将会永久的分配给内核,并用来存放内核代码以及静态内核数据结构。RAM的其余部分称为动态内存,这不仅是进程所需的宝贵资源,也是内核本身所需的宝贵资源。实际上,整个系统的性能取决于如何有效地管理动态内存。因此,现在所有多任务操作系统都在经历优化对动态内存的使用,也就是说,尽可能做到当要时分配,不需要时释放。内存管理是o

2013-05-14 16:15:34 1592

转载 CFS 调度器学习笔记

http://blog.csdn.net/peimichael/article/details/5218335

2013-05-14 14:46:45 1433

转载 CFS进程调度

一、概述linux 2.6.23中采用了一个全新的调度策略CFS(Completely Fair Scheduler)来处理非实时进程。二、主要数据结构1.为了和原先的实时策略更好的融合,linux在实现CFS之余,还将内核的调度策略模块化,添加了新的结构体sched_class用于管理不同的调度器。2.CFS没有用传统的调度器中时间片的概念,而是使用了新的结构体sched

2013-05-14 14:43:22 2424

转载 GCC编译之如何控制共享文件导出符号

背景前不久在调试一个与导出符号相关的bug,问题大概如此:模块A.so在堆上构造了一个对象即 CTest *one = new CTest; , CTest在A.so定义,后来使用one->AMemFunc();,即调用一个成员函数时崩溃。原来在另一个模块B.so(比A.so先加载)中,也有一个同名的CTest定义,但是却没有一个叫AMemFunc的成员函数,因此崩溃。那为什么A.so

2013-05-14 11:07:16 2053

原创 Ubuntu10.04下Linux内核编译的完整步骤

1、在http://www.kernel.org/上下载最新的内核源代码linux-2.6.33.1.tar.bz2,放在/huangcheng/Linux内核 目录下,huangcheng是Linux OS的第一个用户名。 2、进入Linux内核源码所在的目录(cd Linux内核),解压该内核代码到/usr/src下: sudo tar -xjvf linux-2.6.33.1.tar.bz2

2013-05-12 03:13:17 1738

原创 浅尝异步IO

关于异步IO记得几年前使用MFC编程的时候,曾经使用过windows的异步socket。当在socket句柄上设置好关心的事件(如,可读、可写)后,如果事件发生,则指定的窗口会收到一个指定的消息。int WSAAsyncSelect(SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent);然后窗口例程取得消息,对socket进行

2013-05-12 02:50:54 1689

gdb调试程序

gdb调试

2013-05-29

gdb调试示例

gdb示例

2013-05-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除