随笔分类 - LINUX
摘要:这几天看了不少资料,这里做一个简单的总结归纳:几个不错的网站:https://computing.llnl.gov/tutorials/pthreads/http://cpp.ezbty.org/content/doc_list/libevent_%E4%BD%BF%E7%94%A8%E4%B8%8E%E6%BA%90%E7%A0%81%E5%89%96%E6%9E%90http://www.kerneltravel.net/journal/iv/syscall.htm 线程的三个主要同步原语:互斥锁,信号量和条件变量,一下简称mutex,sem,cond。 其中mutex和sem都是对应f.
阅读全文
摘要:copy_from_user函数的目的是从用户空间拷贝数据到内核空间,失败返回没有被拷贝的字节数,成功返回0.这么简单的一个函数却含盖了许多关于内核方面的知识,比如内核关于异常出错的处理.从用户空间拷贝数据到内核中时必须非常小心,如果用户空间的数据地址是个非法的地址,或是超出用户空间的范围,或是那些地址还没有被映射到,都可能对内核产生很大的影响,如oops,或者被造成系统安全的影响.所以copy_from_user函数的功能就不只是从用户空间拷贝数据那样简单了,它还要做一些指针检查以及处理这些问题的方法.下面我们来仔细分析下这个函数.函数原型在[arch/i386/lib/usercopy.c
阅读全文
摘要:strace 用法: -f :除了跟踪当前进程外,还跟踪其子进程。 -o file :将输出信息写到文件file中,而不是显示到标准错误输出(stderr)。 -p pid :绑定到一个由pid对应的正在运行的进程。此参数常用来调试后台进程。 用处: 查看别的命令或进程都进行了哪些系统调用。比如当前web.py进程号为7393; 用strace -p 7393 -f 等下一个客户请求过来后就可以看到webserver都干 了些什么.CP 拷贝指定文件情景:一个文件夹有各种文件:sh,log,data,py。我们只想把脚背相关的文件拷贝出来备份。解决:cp --p...
阅读全文
摘要:最近看了UNP,这是对服务器编程模型的笔记1.简单服务器模型(迭代) 服务器进程接受连接,处理请求,然后等待下一个连接。从进程控制的角度来说这种模型是最快的,因为没有进程间的切换,但是客户需要等待在listen中等待服务器accept。2.多进程模型 服务器进程接受连接,fork一个子进程为客户服务,然后等待下一个连接。多进程模型适用于单个客户服务需要消耗较多的 CPU 资源,例如需要进行大规模或长时间的数据运算或文件访问。多进程模型具有较好的安全性。在实现中需要注意 1.监听套接口和链接套接口的关闭时机; 2.及时处理已经结束的子进程(信号处理); 3.被中断的系统调用的恢复(...
阅读全文
摘要:摘选: TcpV2 15.10节tsleep and wakeup Functions阻塞: When a process executing within the kernel cannot proceed because a kernelresource is unavailable, it waits for the resource by calling tsleep, which hasthe following prototype: int tsleep (caddr_t chan, int pri, char *mesg, int timeo); The first...
阅读全文
摘要:连接5.5 Stopping and Starting Multi-thread Programsgdbsupports debugging programs with multiple threads (seeDebugging Programs with Multiple Threads). There are two modes of controlling execution of your program within the debugger. In the default mode, referred to asall-stop mode, when any thread in
阅读全文
摘要:... Complex Processes - Threads...Some OSes, including otherUnixes, have the seperate concept of aprocessoptionally consisting of several seperatethreads, orlight weight processes. Eachthreadis part of the same program but are scheduled individually.Until comparatively recently Linux just hadprocess
阅读全文
摘要:linux系统调用fork, vfork, clone:fork()、 vfork()、 clone()的区别 Linux下的进程与线程比较相近:它们都需要相同的数据结构来表示,即task_struct。区别在于一个有独立的用户空间,一个是共享的用户空间(如果完全没有用户空间则是内核线程,不需要)。Linux的用户进程不能直接被创建出来,因为不存在这样的API。它只能从某个进程中复制出来,再通过exec这样的API来切换到实际想要运行的程序文件。复制的API包括三种:fork、clone、vfork。这三个API的内部实际都是调用一个内核内部函数do_fork,只是填写的参数不同而已。而for
阅读全文
摘要:LinuxThread(内核2.0到内核2.4期间) Linux内核只提供了轻量进程的支持,限制了更高效的线程模型的实现,但Linux着重优化了进程的调度开销,一定程度上也弥补了这一缺陷。目前最流行 的线程机制LinuxThreads所采用的就是线程-进程"一对一"模型,调度交给核心,而在用户级实现一个包括信号处理在内的线程管理机制。 Linux-LinuxThreads的运行机制正是本文的描述重点 最初的进程定义都包含程序、资源及其执行三部分,其中:1.程序通常指代码,2.资源通常包括内存资源、IO资源、信号处理等部分,3.程序的执行通常理解为执行上下文,包括对cpu的占
阅读全文
摘要:apue说linux线程是用clone创建子进程实现的,所以两个线程会有不同进程ID,我上机试验ID是一样的,为什么啊linux是不是已经完全实现了线程 LWP LightWeightNPTLvs LinuxThread Linux从内核2.0到内核2.4期间多线程编程使用的是LinuxThread,但使用这种方式写出的多线程程序在诸多特性上并不是跟POSIX标准兼容的(通过网址:http://www.kernel.org/doc/man-pages/online/pages/man7/pthreads.7.html可以了解诸多的不兼容特性)。这显然跟Linux号称的跟POSIX标准兼容不..
阅读全文
摘要:from http://timyang.net/linux/linux-process/上周碰到部署在真实服务器上某个应用CPU占用过高的问题,虽然经过tuning, 问题貌似已经解决,但我对tuning的方式只是基于大胆的假设并最终生效了。我更希望更多的求证一下程序背后CPU及OS kernel当时的运作机制。所以我读了一些Linux内核设计与实现及其他一些相关资料,对Linux process的机制与切换有了更多一些体会。本文尽可能条理一点,但由于牵涉点较多,同时自己可能觉得某些点有记录的价值,因此文字可能会零散。进程状态Linux进程的状态比较容易理解,值得注意的是 UNINTERRUP
阅读全文
摘要:TCP / IP 协议浅析fron http://kenby.iteye.com/blog/1013313博客分类:Network 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port ...
阅读全文

浙公网安备 33010602011771号