Welcome 微信登录

首页 / 操作系统 / Linux

Linux内存之内存管理的实质

Linux内存之内存管理的实质

1. 内核初始化:Linux内核建立好内核页目录页表数据库,假设物理内存大小为len,则建立了[3G--3G+len]::[0--len]这样的虚地址vaddr和物理地址paddr的线性对应关系;内核建立一个page数组,page数组和物理页面系列完全是线性对应,page用来管理该物理页面状态,每个物理页面的虚地址保存在page->virtual中;内核建立好一个free_list,将没有使用的物理页面对应的page放入其中,已经使用的就不用放入了;...
Linux应用之突破多平台开发障碍Qt 4.4发布

Linux应用之突破多平台开发障碍Qt 4.4发布

奇趣科技近日发布了其旗舰产品Qt4.4。该新版本使开发人员首次能够将Web功能集成到本地桌面和移动设备应用中去。此外,该版本Qt 4.4还更具开扩意义的实现了,Windows、Macintosh和Linux操作系统以及移动设备之间跨平台的实现。它为创建跨越各种桌面系统和设备的应用及服务提供了一个通用框架。Qt 4.4更是将这些应用延伸至运行Windows Embedded CE操作系统的移动设备中去。Windows Embedded CE是一款运行在各类移...
Linux 内核学习感想

Linux 内核学习感想

说实话,学习Linux内核是一件极其艰难的事,是一件需要毅力的事情。可是有毅力的人不一定能真正的去理解Linux内核。个人感觉学习Linux内核首先需要对操作系统的实现具有浓厚的兴趣,其次要找到一个好的切入点,最后要有一定的理论基础。 上面提到的:兴趣,切入点,以及理论基础都是必要的。 理论基础是说你需要了解操作系统的基本概念,什么是操作系统,操作系统中的内存管理与进程管理(个人认为这是操作系统中的难点)是如何进行的,另外还要明白什么是中断,什么是系统...
将clock_t转化为秒值在Windows与Linux平台下的差异

将clock_t转化为秒值在Windows与Linux平台下的差异

平时写测试程序的时候常常要计算程序执行的时间,尤其是最近练习Intel多核编程时,需要判断打开openmp参数与否的执行时间的比较。通常代码是这样写的:#include clock_t start, stop;....start = clock();do_something();stop = clock();printf("%f", (double)(stop-start)/1000.0) ;..... 或者是求当前时间的秒值:double t = (do...
Linux C中也有“ThreadLocal”

Linux C中也有“ThreadLocal”

现在在看Linux开发的书,接触到了多线程开发这一块,惊奇的发现用C写多线程程序,也有线程内部变量的概念呢,甚至调用的接口和Java中的ThreadLocal非常像。1.extern int pthread_key_create ((pthread_key_t *__key, void (*__destr_function) (void *)));先使用该方法创建一个线程内的Key,且绑定一个函数在线程结束时回收Key对于的空间2.extern int p...
Linux 系统学习之shell脚本学习

Linux 系统学习之shell脚本学习

1、:(冒号的妙用): ${username=`whoami`} #当作占位符: ${HOSTNAME?} ${USER?} ${MAIL?} #评估参数是否设置: > data.xxx #文件"data.xxx"现在被清空了,这个和 cat /dev/null > data.xxx的作用是一样的,但是不会产生新进程,因为冒号:是一个内建命令。2、 ** 是幂运算3、$? 退出状态变量.$?保存一个命令/一个函数或者脚本本身的退出状态。$$ 进...
Ubuntu下使用substance美化JAVA界面

Ubuntu下使用substance美化JAVA界面

在Ubuntu下制作JAVA桌面的时候为了让界面更美观一点,我一直在Windows下使用substance包,但是在Linux下使用时却发现界面中所有字符都成了乱码,从同学那么找到了解决办法,跟大家分离一下。 首先写使用substance外观的代码,然后在要使窗体显示的代码之前调用一个方法private static void InitGlobalFont(Font font) {FontUIResource fontRes=new FontUIResou...
Linux多线程socket编程一些心得

Linux多线程socket编程一些心得

前段时间将新的web模型办到Linux上来,用epoll代替了IOCP,经测试确实性能提高了很多,吞吐量也寓所提高,对于Linux下面的网络编程不是三言两语就能说得透的了,加上多线程就更麻烦了,但是epoll模型的精髓就是事件驱动,这种模型提供了保持连接socket直线增涨而性能不会直线下降的特性,纵观epoll kueuen select等等,所有都是在解决一个socket不需要一个线程的问题,将事件去分开来。 在ningx(有人用他同时保持了3万个处...
Linux进入临界去开关中断的几种方式

Linux进入临界去开关中断的几种方式

进入中断时候关闭全局的中断是为了避免程序处理中断过程中,再进入另一个中断打乱执行的顺序,也就是为了防止中断嵌套的情况发生。比如在irq_handler函数中首先就应该关闭中断。或者,在某些操作顺序中是不允许中断发生打断的情况。例如在驱动中常用的方式: unsigned int flag; local_irq_save(&flag); ... ... ... ... local_irq_restore(&flag); spin_lo...
Linux2.6 模块的两种编译方式

Linux2.6 模块的两种编译方式

题目:内核模块的编译方法日期:2008.5.15作者:singyea@ 七星居如果想要在Linux内核上扩展功能,有两条路可选,一是将自己的模块编译进Kernel,使模块成为内核的一部分;一是以模块的方式供内核加载。前者高效后者灵活,各有所长。以内核模块加载到内核是大多数设备驱动所采用的方式。关于模块的编译的方法在这里详细讨论一下。只针对2.6内核,还没看其他版本的实现方法,不知道 Linux2.6以前是不是这样的。本人测试环境: RedHat as4 (...
Linux内核中的指针和错误值

Linux内核中的指针和错误值

在内核的代码和驱动程序中经常见到ERR_PTR, IS_ERR, PTR_ERR这三个内联函数。许多的内核函数需要返回一个指针,但是函数的调用可能失败,一般我们处理这样的情形都是返回一个NULL指针,就像malloc或kmalloc在没有获得指定的空间申请时的返回值一样。但是有时我们想知道导致函数失败的原因,但是返回NULL就显得信息不够。因此有些函数返回一个实际的错误编码以便对引起错误的原因做一些处理。很多内核接口通过把错误值编码到一个指针值中来返回错误...
Linux下JDK版本的更新问题

Linux下JDK版本的更新问题

在Linux中安装了jdk1.5,也配置了环境变量。但eclipse打开时,提示说jvm版本不支持。我要如何修改老的jdk版本的环境变量呢?下的eclipse是eclipse-jee-europa-winter-linux-gtk.tar.gz 安装后,运行eclipse,提示上面的错误! 发现了一个简单的笨办法:把安装好的jdk1.5的bin和jre文件里的相应文件复制到:/lib/usr/lin/jvm 下的java和jre下面覆盖原来的相应文件!...
<< 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 >>