2014年1月23日

linux核心之进程管理

摘要: 进程就是处于执行期的程序(目标码存放在某中介质上)。进程并不仅仅局限于一段可执行程序代码,通常还包括其他资源,例如打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间以及一个或多个执行线程,当然还包括用来存放全局变量的数据段等; 线程是在进程中活动的对象,每个线程都拥有一个独立的程序计数器、进程栈、一组进程寄存器。 内核调度的对象是线程, 而不是进程; 进程是处于执行期的程序以及相关的资源的总称;进程的另一个名字是任务(task)。Linux 内核通常把进程也叫做任务。内核把进程的列表存放在叫做任务队列(task list)的双向循环链表中; 链表中... 阅读全文

posted @ 2014-01-23 16:44 阳台 阅读(371) 评论(0) 推荐(0)

2014年1月22日

linux线程之pthread_join

摘要: pthread_join使一个线程等待另一个线程结束。 代码中如果没有pthread_join;主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。 所有线程都有一... 阅读全文

posted @ 2014-01-22 14:09 阳台 阅读(10441) 评论(0) 推荐(1)

linux之vim配置

摘要: 代码自动补全和代码跳转阅读,应该是作为程序员最常用的功能之一了,具体二者是指什么我就不解释了。微软的Visual Studio就是靠这两样必杀技牢牢占据着广大windows程序员的心(这里面要有强大的VS插件Visual Assistant X一份功劳)。。。但是Linux程序员其实更幸福,不花钱就能搞定这两大功能。从本质上说,这二者的实现都依赖于一样东西:tag。tag就是程序中的关键词,在C++中主要包括:变量、函数名、类名等。代码自动补全 实际上是 tag的匹配(例如,程序员输入cla时,由于存在class这个c++的tag,就可以用class匹配cla);代码跳转阅读实际上是tag的查 阅读全文

posted @ 2014-01-22 10:10 阳台 阅读(449) 评论(0) 推荐(0)

2014年1月21日

静态变量、静态函数 与 普通变量 普通函数的区别

摘要: 关于这个问题不得不涉及到 堆 和 栈的区别1. 内存分配 一个有c/c++编译的程序占用的内存分为以下几个部分 (1). 栈区(stack)--------由编译器自动分配释放, 存放函数的参数,局部变量的值等。其操作方式类似于数据结构中的栈。 (2).堆区(heap)---------一般由程序员分配、释放。若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 (3).全局区(静态区)(static)-----------全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态... 阅读全文

posted @ 2014-01-21 14:34 阳台 阅读(2022) 评论(0) 推荐(0)

2014年1月20日

linux 虚拟文件系统----------Virtual File System VFSkky

摘要: 在了解虚拟文件系统之前,必须先知道什么是 Kernal Space 与 User Space。 Kernal Space 与User Space 的差别,在于内存使用上安全机制的差异。 kernal执行时会占据一段系统的内存空间, 这一段内存空间便是Kernal Space. 所有用户是无法和kernal space 直接交互的。 在/proc/iomem文件中所记录的kernal地址, 可以在命令行中执行: cat /proc/iomem | moreUser Space 则强调,用户执行任何的程序所占用的内存部分, 对这些User Space 程序而言, 无法直接使用Kerna... 阅读全文

posted @ 2014-01-20 13:28 阳台 阅读(821) 评论(0) 推荐(0)

2014年1月18日

linux进程之fork 和 exec函数

摘要: ---恢复内容开始---fork函数该函数是unix中派生新进程的唯一方法。 #include pid_t fork(void);返回: (调用它一次, 它返回 两次 , 它在调用进程(称为父进程)中返回一次, 返回值是新派生进程(称为子进程)的进程ID号 在子进程又返回一次,返回值为0。 因此,返回值本身告知当前进程是子进程还是父进程) 在子进程中为0, 在父进程中为子进程ID, 若出错则为-1;fork有两个典型的用法: 1.一个进程创建一个自身的副本,这样每个副本都 可以在另一个副本执行其他任务的同时处理各自的某个操作。 这是网络服务器的典型用法; 2. 一个进程... 阅读全文

posted @ 2014-01-18 14:40 阳台 阅读(7334) 评论(0) 推荐(1)

2014年1月14日

linux网络编程涉及的函数

摘要: 常用的网络命令:netstat 命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息。 netstat有许多的选项我们常用的选项是-an用来显示详细的网络状态。至于其它选项我们使用帮助;telnet telnet是一个用来远程控制的程序,但是我们请完全可以用这个程序来调试我们的服务端程序的;比如我们的服务器程序在监听8888端口,我们可以用telnet localhost 8888来查看服务端的状况. ============TCP==============TCP_Server: socket() bind() listen() accpet() wirte(... 阅读全文

posted @ 2014-01-14 18:00 阳台 阅读(240) 评论(0) 推荐(0)

2014年1月13日

C标准中一些预定义的宏

摘要: C标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。 宏(双下滑线) 意义 __DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字) __FILE__ 代表当前源代码文件名的字符串文字 __LINE__ 代表当前源代码中的行号的整数常量 __TIME__ 源文件编译时间,格式微“hh:mm:ss” __func__ 当前所在函数名 对于__FILE__,__LINE__,__func__这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数。 下面一个... 阅读全文

posted @ 2014-01-13 11:29 阳台 阅读(242) 评论(0) 推荐(0)

2014年1月10日

Epoll在LT和ET模式下的读写方式

摘要: 在一个非阻塞的socket上调用read/write函数,返回EAGAIN 或者 EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable总结:这个错误表示资源暂时不够,能read时,读缓冲区没有数据,或者write时,写缓冲区满了。遇到这种情况,如果是阻塞socket,read/write就要阻塞掉。 如果是非阻塞socket,read/write立即返... 阅读全文

posted @ 2014-01-10 15:08 阳台 阅读(349) 评论(0) 推荐(0)

深入了解epoll (转)

摘要: 一、 介绍Epoll 是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性。传统的select以及poll的效率会因为 socket数量的线形递增而导致呈二次乃至三次方的下降,而epoll的性能不会随socket数量增加而下降。标准的linux-2.4.20内核... 阅读全文

posted @ 2014-01-10 11:18 阳台 阅读(1347) 评论(0) 推荐(0)

导航