- 博客(18)
- 资源 (1)
- 收藏
- 关注
原创 算法时间复杂度
时间复杂度的定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数T(n)称为这一算法的“时间复杂性”。当输入量n逐渐加大时,时间复杂性的极限情形称为算法的“渐近时间复杂性”。我们常用大O表示法表示时间复杂性,注意它是某一个算法的时间复杂性。大O表示只是说有上界,由定义如果f(n)=O(n),那显然成立f(n)=O(n^2),它给你一个上界,但并不是上确界,但人
2015-10-31 17:03:55 669
原创 Linux进程的五个段(数据段、代码段、bss、堆栈段)
进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等。不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的,而有些却是按需要动态分配和回收的。对任何一个普通进程来讲,它都会涉及到5种不同的数据段。
2015-10-31 15:58:32 18555
转载 Mr. Process的一生-Linux内核的社会视角(2)-调度
在这篇文章里,以Mr. P的工作经历来说明了Linux调度的一些比较重要的机制。介绍了IO消耗型进程和处理器消耗型的进程,O(1)调度等等。这些是比较大的方面,当大的方面理解了之后,那些世界顶尖高手写的源码也就更容易看懂一些了。
2015-10-31 15:18:01 505
转载 Mr. Process的一生-Linux内核的社会视角(1)-启动
这篇文章讲的是盘古开天地的事。话说Mr. Process是一个现代人,但是,只要是人,总该有个祖先。人们总想知道自己从哪来,然后才可以估摸算一下自己将去向何方。所以咱也要了解一下Linux的世界里人类的起源。按下电源开关的那个真实的人就是Linux世界里的上帝,他创造了Linux世界的一切。当他按下机箱上的电源开关时,主板开始供电,CPU上的Reset Pin被拉高,这会引起CPU
2015-10-31 14:47:53 523
原创 proc文件系统
proc 文件系统是由软件创建,被内核用来向外界报告信息的一个文件系统。/proc 下面的每一个文件都和一个内核函数相关联,当文件的被读取时,与之对应的内核函数用于产生文件的内容。我们已经见到了很多这样的文件,例如,/proc/modules 总是返回当前内核中加载的模块。下面是一些重要 的文件:/proc/cpuinfo - CPU 的信息 (型号, 家族, 缓存大小等)/proc/
2015-10-30 13:00:05 437
原创 ubuntu虚拟机下内核模块的编译和安装
以前是在ok6410上学习linux的,所以在ubuntu下搭建的环境编译出来的内核模块是交叉编译到ARM平台的,直接在虚拟机上运行不了。所以这里说一下,在虚拟机上编译内核模块,然后安装到虚拟机内核上的方法和过程。首先,我还是不厌其烦的介绍一些内核模块的基本知识。一、什么是模块模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运
2015-10-30 12:47:42 4369
转载 linux 内存分配机制
这几天在观察apache使用内存情况,所以特意了解了下linux的内存机制,发现一篇写得还不错。转来看看。一般来说在ps aux中看到的rss就是进程所占用的物理内存。但是如果将所有程序的rss加起来的话。会发现比实际的内存还要大很多,这个是由于rss还包括了共享的部分。这个可以通过pmap -d PID来看到具体情况。一. 内存使用说明Free 命令相对于top 提供了更简洁的查看系
2015-10-28 17:02:49 3429
转载 Ubuntu 12.04下配置JDK7
第一步:下载jdkhttp://www.oracle.com/technetwork/java/javase/downloads/index.html第二步:解压安装进入文件所在目录 执行 sudo tar zxvf jdk-7-linux-i586.tar.gz -C /usr/lib/jvm此处解压到 /usr/lib/jvm第三步:修改环境变量sudo ge
2015-10-27 16:57:11 367
转载 linux的环境变量文件enviroment 、profile、bashrc和.bashrc以及.bash_profile
(1)/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。 (2)/etc/environment:是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。(3)/etc/bashrc
2015-10-27 16:32:50 693
原创 adb常用命令集合
adb介绍SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb,adb的全称为(Android Debug Bridge就是调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序。借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作: 1、快速更新设备或手机模拟器中的代码,如应用或Android 系统升级;
2015-10-27 10:12:41 606
原创 Ubuntu12.04下安装配置adb工具
由项目需要,现在需要在android下测试linux内核的Futex中的requeue漏洞。那么首先要做的肯定是搭建测试环境。网上看了一些博客,发现很多都是照搬照抄,甚至将SUBSYSYTEM复制粘贴成UBSYSTEM,不知道会误导新手,当然我就是其中一个。为了避免大家走太多弯路,现在将我成功安装配置adb的步骤总结如下:
2015-10-26 21:34:10 3782
原创 优先级反转问题的和解决方法
我们都知道,在操作系统的调度算法中有一种算法叫优先级调度算法。这种调度算法可能产生优先级反转的问题,下面我们就简单聊聊优先级反转和解决方法。
2015-10-26 16:48:49 2819
转载 Linux core dump详解
有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的.以下是我们详细的对Linux core dump的调试技术进行的介绍:
2015-10-24 15:20:09 949
转载 linux下通过lseek()实现文件大小设置
一 函数介绍:函数名: lseek()功 能: 移动文件读/写指针所需头文件:#include #include 函数原型:off_t lseek(int fd, off_t offset, int whence);重新定位已打开的文件的偏移量,与whence的取值有关;参数:fd:文件描述符,对应已经打开的文件;
2015-10-24 11:18:57 1969
原创 linux下线程的同步和互斥
线程的同步和互斥在操作系统中引入线程以及线程并发性的概念后,增加了系统的效率,同时,由于资源有限导致线程之间的资源竞争和共享,因此产生一个问题,例如,当多个线程同时申请一台打印机的时候,如果不加限制,很可能使多个线程的输出结果交织在一起,产生错误的打印。下面我来为大家主要介绍并发执行的线程使用临界资源时,同步与互斥的以及控制方法。1.临界资源的概念:多个线程不能同时使用的资源称为临界资源C
2015-10-22 20:17:30 1551
原创 strcpy和strdup比较和详解
strcpy和strdup比较和详解函数和功能描述:①extern char *strdup(char *s);头文件:string.h功能: 将串拷贝到新建的位置处说 明:strdup不是标准的c函数。strdup()在内部调用了malloc()为变量分配内存,不需要使用返回的字符串时,需要用free()释放相应的内存空间,否则会造成内存泄漏。返回值:返回一个指针,指向为
2015-10-21 16:49:36 39979
原创 栈内存控制
栈内存控制所谓栈内存控制就是如何能够随意改变栈上的内容,或者重新利用上个函数栈上的内容。先来看一个简单的例子:#includeint foo(int initial,int val){int local;if(initial) { local=val; printf("foo local=%d\n",local);
2015-10-21 15:44:40 767
原创 mmap详解
mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。
2015-10-20 21:05:34 597
Superuser源码
2016-04-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人