Welcome 微信登录

首页 / 操作系统 / Linux

Linux下malloc函数和OOM Killer

Linux下malloc函数和OOM Killer

Linux下malloc函数主要用来在用户空间从heap申请内存,申请成功返回指向所分配内存的指针,申请失败返回NULL。默认情况下,Linux内核使用“乐观的”分配内存策略,首先粗略估计系统可使用的内存数,然后分配内存,但是在使用的时候才真正把这块分配的内存给你。这样一来,即使用malloc申请内存没有返回NULL,你也不一定能完全使用这块内存,特别是在一次或连续多次申请很多内存的时候。如果一直连续用malloc申请内存,而不真正使用,所申请的内存总数可...
Linux互斥锁、条件变量和信号量

Linux互斥锁、条件变量和信号量

进行多线程编程,最应该注意的就是那些共享的数据,因为无法知道哪个线程会在哪个时候对它进行操作,也无法得知哪个线程会先运行,哪个线程会后运行。所以,要对这些资源进行合理的分配和正确的使用。在Linux下,提供了互斥锁、条件变量和信号量来对共享资源进行保护。一、互斥锁互斥锁,是一种信号量,常用来防止两个进程或线程在同一时刻访问相同的共享资源。需要的头文件:pthread.h互斥锁标识符:pthread_mutex_t(1)互斥锁初始化:函数原型: int pt...
基于S3C2440嵌入式Linux系统下的一个DS18B20驱动和命令行测试程序

基于S3C2440嵌入式Linux系统下的一个DS18B20驱动和命令行测试程序

在此之前曾经在8051下写了一个DS18B20的简单驱动,大家可以查阅我之前的日记,比较两者的差异。学习嵌入式样Linux也有一段时间了,决定用Linux驱动编程的方法写一个DS18B20的温度传感器驱动,从底层采集温度信息。以下乃本人所写的驱动和测试的源码,嵌入式Linux内核版本为2.6.29,硬件平台是友善之臂的QQ2440,DS18B20引脚连接S3C2440的GPIOB1,程序难免存在一定的漏洞,希望大家指出,顺便说说,使用以下代码的朋友帮忙留一...
Android signed APK程序正式签名方法详解

Android signed APK程序正式签名方法详解

Android程序的签名用户在开发时通过ADB接口上传的程序会自动被签有Debug权限的程序,但是在上传程序到Android Market上或者到设备上时则需要正式签名。Android signed制作方法主要使用Keytool和Jarsigner两个工具制作,具体方法如下: 详细的签名步骤:第一步 生成个人签名密钥库基础数据用keytool生成证书: -alias myandroid 证书别名,-keyalg RSA 指的是采用的RSA算法,-keyst...
ARM920T基于Linux平台下的FPGA驱动开发

ARM920T基于Linux平台下的FPGA驱动开发

Linux操作系统的全称是GNU/Linux,它是由GNU工程和Linux内核两个部分共同组成的一个操作系统。该系统中所有组件的源代码都是自由的,可以有效保护学习成果,因而在嵌入式领域得到了广泛的应用。FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,该器件是作为专用集成电路ASIC (Application Specific Integrated Circuit)领域中的一种半定制电路而出现的,它的出现既...
JAVA和C之间的较量 谁将成为主流语言

JAVA和C之间的较量 谁将成为主流语言

Java的可以迅速的组建应用程序,它对于我们的开发者来说,建立应用程序的速度要远远的高于C语言,如果考虑到网络集群计算环境,Java的优势就更加明显了。世界上又有多少人能用C语言写出又快又正确的大型程序?在这些人中间,又有多少人有能力用C语言写出一个在大型的、异构的网络环境下能够充分发挥各节点计算能力的大规模并行程序?也就是说,你也许有能力把程序效能提高一倍,从而充分发挥一台价值6000元人民币的PC的计算潜力,为客户节省1000元钱。但如果是在一个由 1...
Linux GCC编译C程序

Linux GCC编译C程序

一个c语言程序从源文件到生成可执行文件,编译器需要共经历4个步骤:1) 预处理:把c文件中预处理命令扫描处理完毕,即对源代码文件中的文件包含(#include)、预编译语句(如宏定义#define等)进行分析,此时生成的文件仍然是可读的。2) 编译:把预处理后的结果编译成汇编或者目标模块,即生成汇编语言文件,此时生成的文件仍然是可读的汇编文件。3) 汇编:把编译出来的结果汇编成具体CPU上的目标代码模块,也即此时转换成具体的机器语言代码,此时生成的文件是不...
Android基础教程:Android开发环境搭建

Android基础教程:Android开发环境搭建

一、安装Eclipse直接解压eclipes的安装包到某个目录即可,完全绿色啊~在这里我安装的位置是d:eclipse二、安装SDK这也是比较简单的一步,直接将下载的sdk解压到适当位置即可在这里我解压的位置在D: Android-sdk-windows不过在这里要多一步,要设置sdk的环境变量在“我的电脑”的“环境变量中”的path中添加$(sdk) ools就可以了,我这里添加的是D:android-sdk-windows ools三、安装JDK1.1...
Android基础教程:利用NDK编写HelloWorld

Android基础教程:利用NDK编写HelloWorld

利用NDK编写helloworld一、创建工程工程的创建参数如上图所示,具体每个参数的含义在第二章《利用SDK编写helloworld》中有介绍,这里多了个参数,就是设置了SDK Version其实这个参数是不用设置的,因为我们选择的sdk包Android2.2实际上就已经表明了我们使用的sdk version是8了。得到的工程文件如下图所示。二、使用NDK创建一个库其实NDK的编写时可以在window环境进行的,而不需要必须进Cygwin中使用vi编写。...
UNIX编程课堂笔记

UNIX编程课堂笔记

一.课程定位 1/3就业. 奠定程序基础二.学习方法 效果:先做,后理解. 方法:练习.50-200行代码三.课程结构 Bash脚本语言(系统管理,安装部署脚本) 内存管理 文件管理 IO操作(Curses字符界面) 进程创建 进程通信 线程 线程的同步与异步 信号 socket编程 QT图形界面 Pro*c/c++ UML与OOA&D GTK+ XML的处理与解析 Web Service Corba Tuxedo项目:数据采集 网络爬虫...
<< 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 >>