linux开发
文章平均质量分 66
shinesi
我思故我在
展开
-
gcc详解(收藏)
在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器.目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序.GCC不仅功能非常强大,结构也异常灵活.最值得称道的一点转载 2006-02-15 11:51:00 · 2304 阅读 · 0 评论 -
共享内存的实现---Linux内核笔记
系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的)。struct shmid_kernel /* private to the kernel */{ struct kern_ipc_perm shm_perm;原创 2007-12-15 10:47:00 · 2200 阅读 · 0 评论 -
Linux中实时进程的调度---Linux内核笔记
Linux的进程分普通进程和实时进程,而实时进程又分SCHED_FIFO与SCHED_RR,它们都比普通进程的优先级高。对于SCHED_FIFO进程,它就一直运行直到退出,除非它阻塞才会释放CPU, 或被更高优先级的实时进 程抢占。对于SCHED_RR(时间片轮转)进程,只有当它的时间片用完,内核会把它放到进程队列的末尾。我们来看看在2.4内核中对应的调度代码:asmlinkage原创 2007-12-14 23:48:00 · 7364 阅读 · 0 评论 -
linux对TSS(任务状态描述符)的使用---Linux内核笔记
linux2.4之前的内核有进程最大数的限制,受限制的原因是,每一个进程都有自已的TSS和LDT,而TSS(任务描述符)和LDT(私有描述符)必须放在GDT中,GDT最大只能存放8192个描述符,除掉系统用的12描述符之外,最大进程数=(8192-12)/2, 总共4090个进程。从Linux2.4以后,全部进程使用同一个TSS,准确的说是,每个CPU一个TSS,在同一个CPU上的进程原创 2007-12-13 22:18:00 · 9899 阅读 · 0 评论 -
linux 下使用UNICODE
因为要使用FreeType显示中 文,而FreeType需要UNICODE的字符,所以要把字符转成UNICODE。1) 检查系统是哪种编码,我的系统是FC6,用命令locale显示本机当前编码格式:LANG=zh_CN.UTF-8LC_CTYPE="zh_CN.UTF-8"LC_NUMERIC="zh_CN.UTF-8"2) 使用iconv转到UNICODE void utf2unicode(ch原创 2007-10-12 16:38:00 · 2624 阅读 · 0 评论 -
在视频(YUV2 or YV12)上叠加字幕
在视频(YUV2 or YV12)上叠加字幕 ,一般的方法是把YUV转成RGB,与RGB叠加完成后再转回YUV,但这样会导致:1)把原始视频转成RGB再转回YUV是损失视频质量,我们都知道YUV与RGB之间的转换是有播音员损的。 2) 转换会浪费cpu, 影响效率。那么我们能不能直接把字幕转成YUV,然后再叠加呢?答案就yes。(待续)原创 2007-10-12 16:52:00 · 4336 阅读 · 2 评论 -
初识FVWM-窗口管理器
fvwm是一款X11下的窗口管理器,它的设计目标是最小化内存消耗,提供虚拟桌面,还有就是给于用户最大的自由。它最吸引人的地方莫过于极大的可定制性,几乎所有窗口管理器所做的事情你都可以去定制。不管是最大化,最小化,移动,关闭窗口,还是标题栏的颜色,大小,以及鼠标单击,双击和拖动时的动作,你都可以去控制。也许有些时候把权利过多的给于用户并不明智,但fvwm做了,事实证明有很多人使用它,喜欢它。如果你不原创 2007-10-29 13:45:00 · 1985 阅读 · 0 评论 -
多处理器系统在指定cpu上运行进程
CPUSET是linux内核中的轻量级对象,它能使用户区分多个处理器,在每个处理器上单独运行进程,通过创建cpu集的方式。这是通过文件系统的方式实现的(旧内核是通过syscall方式)。1) mkdir /dev/cpuset2) mount -t cpuset none /dev/cpuset3) mkdir /dev/cpuset/my_cpu04) echo原创 2007-10-25 21:23:00 · 1491 阅读 · 0 评论 -
用C实现C++的多态---剖析GTK的"对象" (一)
用C实现C++的多态---剖析GTK的"对象" (一)一. 前言 前一段时间用到GTK图形库,对它的C语言实现的面像对象概念很感兴趣,在这里写下自己的一点见解,同时也是理理自己的思路。二. C++中的多态 class A { virtual void output(void) { pri原创 2006-06-14 16:28:00 · 2100 阅读 · 0 评论 -
用C实现C++的多态---剖析GTK的"对象" (四)
七. 写自己的子对象/************************************************************** 子对象RenderObject,继承于CObject-------render_object.h***************************************************************/#ifnde原创 2006-06-15 10:07:00 · 1097 阅读 · 0 评论 -
用C实现C++的多态---剖析GTK的"对象" (二)
四. 如何构造一个对象 我们用下面的结构来描述一个对象: typedef struct _ClassType { char* name; /*对象名,唯一*/ int object_size;/*对象大小,创建实列时分配内存要用到*/ int class_size; /*全部虚函数大小,如sizeof(CObjectClass)*原创 2006-06-14 16:58:00 · 1319 阅读 · 0 评论 -
自己动手制作linux硬盘启动
要求: 有一个已安装的linux系统和一个空的硬盘, 这里用VMWare 虚拟机作测试环境,用knoppix作linux系统。 用这样的环境仅仅是为了方便说明。1) 从光盘启动knoppix2) 用fdisk为硬盘分区 (记得要切换到root用户,VMWare创建系统时默认为SCSI硬盘, 不过这里假设硬盘为hda)3) mke2fs hda14) mount /原创 2006-06-12 17:02:00 · 2020 阅读 · 0 评论 -
用C实现C++的多态---剖析GTK的"对象" (三)
六. 全部代码/***********************************************************************object.h文件************************************************************************/#ifndef _H_OBJECT_H_#define _H_O原创 2006-06-15 10:05:00 · 1178 阅读 · 0 评论 -
制作LiveCD
1) 需要的工具Redhat9.0、VMware虚拟机,选择用grub作loader2) 制作ramdisk A) cd /usr/local && mkdir initrd B) dd if=/dev/zero of=initrd.img bs=1024 count=4000 C) mke2fs -F -m 0 initrd.img D) mount原创 2006-05-12 23:18:00 · 2212 阅读 · 0 评论 -
在Redhat9下安装GTK-FrameBuffer
在Redhat9下安装GTK-FrameBuffer操作系统:redhat9软件:gtk+-2.2(这里要说一下,用gtk+-2.2是因为它的依赖库glib等rh9已经满足,用高版本的还要安装高版本的glib、pango等)第一步:编译1>./configure --prefix=/usr/local --with-gdktarget=linux-fb2>make && make install第原创 2006-02-17 21:18:00 · 2420 阅读 · 0 评论 -
用户进程共享3~4G内核地址空间---Linux内核笔记
首先要说明的一点是:Linux在内核态运行时(中断生生或系统调用发生后进入内核态),使用的是当前进程的页目录,这样做的好处是不用频繁的切换页目录,防止频繁刷新TLB,提高效率。每个用户进程有自己独立的0~3G地址空间,共享3~4G地址空间,也就是说每个进程页表的前768项是独立的,后面的256项全部进程共享。中断发生或系统调用后,进程陷入内核态,这时候需要使用3G~4G的内核地址空间,那么内核是在原创 2008-01-01 23:05:00 · 3161 阅读 · 2 评论