- 博客(10)
- 收藏
- 关注
原创 linux进程状态浅析
<br />众所周知,现在的分时操作系统能够在一个CPU上运行多个程序,让这些程序表面上看起来是在同时运行的。linux就是这样的一个操作系统。在linux系统中,每个被运行的程序实例对应一个或多个进程。linux内核需要对这些进程进行管理,以使它们在系统中“同时”运行。linux内核对进程的这种管理分两个方面:进程状态管理,和进程调度。本文主要介绍进程状态管理,进程调度见《linux进程调度浅析》。<br /><br />进程状态<br /><br />在linux下,通过ps命令我们能够查看到系
2011-03-17 11:40:00
332
原创 linux进程调度浅析
<br /> 操作系统要实现多进程,进程调度必不可少。有人说,进程调度是操作系统中最为重要的一个部分。我觉得这种说法说得太绝对了一点,就像很多人动辄就说"某某函数比某某函数效率高XX倍"一样,脱离了实际环境,这些结论是比较片面的。 <br /><br /> 而进程调度究竟有多重要呢? 首先,我们需要明确一点:进程调度是对TASK_RUNNING状态的进程进行调度(参见《linux进程状态浅析》)。如果进程不可执行(正在睡眠或其他),那么它跟进程调度没多大关系。所以,如果你的
2011-03-16 11:43:00
578
原创 Linux内核的同步机制
<br />一、引言<br /><br /> 在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。 <br /><br /> 在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制,这些同步机制包括:原子操作、信号量(semaphore)、读写信号量(rw_semaphore)、s
2011-02-24 20:05:00
355
转载 [转]ARM程序设计优化策略与技术
<br /> <br /> [原文地址]: http://ikongzi.edu.sina.com/News/2009-5-26/22693.shtml<br /> 程序优化是指软件编程结束后,利用软件开发工具对程序进行调整和改进,让程序充分利用资源, 提高运行效率, 缩减代码尺寸的过程。按照优化的侧重点不同, 程序优化可分为运行速度优化和代码尺寸优化。运行速度优化是指在充分掌握软硬件特性的基础上, 通过应用程序结构调整等手段来降低完成指定任务所需执行的指令数。在同一个处理
2011-02-22 16:15:00
333
原创 TCP 握手/挥手分析
<br /> 1、建立连接 (三次握手)<br />(1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。<br />(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。<br />(3) 客户必须再次回应服务段一个ACK报文,这是报文段3。<br /> 2、连接终止协议(四次挥手)<br /> 由于TCP连接是全双工的,因
2010-12-23 13:50:00
403
转载 arm-linux-gcc arm-elf-gcc 区别
<br /> 在基于ARM的嵌入式系统开发中,常常用到交叉编译的GCC工具链有两种:arm-linux-*和 arm-elf-*,两者区别主要在于使用不同的C库文件。arm-linux-*使用GNU的Glibc,而arm-elf-*一般使用 uClibc/uC-libc或者使用REDHAT专门为嵌入式系统的开发的C库newlib.Glibc、uClibc/uC-libc以及 newlib都是C语言库文件,只是所应用的领域不同而已,Glibc是针对PC开发的,uClibc/uC-libc是与Glib
2010-12-23 13:20:00
371
原创 9161启动机制研究
1. 存储器映射与重映射 <br />对于任意类型的存储器,必须首先为它分配一个地址空间才能对其进行访问,这样就在地址空间和存储器之间建立了某种对应关系,称为存储器映射。不管是微处理器内置的片内存储器,还是扩展的外部存储器,在电路板制作完成之后,它的存储器映射也就自然的固定下来,这个特定的地址空间也称为它的固有地址空间。例如对于AT91SAM9261来说,地址空间0x30,0000-0x40,0000映射到片内SRAM,即片内SRAM的固有地址空间为0x30,0000-0x4
2010-12-18 17:26:00
466
原创 内存的堆分配和栈分配 & 字符数组,字符指针
<br />堆和栈的区别<br /><br />一个由C/C++编译的程序占用的内存分为以下几个部分<br />1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其<br />操作方式类似于数据结构中的栈。<br />2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回<br />收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。<br />3、全局区(静态区)(static)—,全局变量和静态变量的
2010-12-16 19:26:00
678
转载 防止缓冲区溢出
<br />【注:】本文为转帖,原帖地址为:http://blog.csdn.net/blpluto/archive/2010/09/03/5861791.aspx<br /><br /><br /> 本文讨论 Linux/UNIX 系统中最常见的缺陷:缓冲区溢出。本文首先解释什么是缓冲区溢出,以及它们为何如此常见和如此危险。然后讨论广泛用于解决缓冲区溢出的新 Linux 和 UNIX 方法 ―― 以及为什么这些方法还不足够。随后将展示 C/C++ 程序中防止缓冲区溢出的各种方法,同时
2010-12-16 10:18:00
4835
原创 大、小端模式
一、大、小端模式的定义 在计算机系统中,我们是以字节为单位进行读、写的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的int/long型(要看具体的编译器)。另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个数据分布于多个字节德问题。因此就导致了大端存储模式和小 端存储模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可
2010-12-14 20:46:00
1015
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人