易截截图软件、单文件、免安装、纯绿色、仅160KB

转载 linux 2.6线程创建源码分析


linux 2.6线程创建源码分析
 
 
 上章讲到线程,现在对线程创建的代码流程分析下。来一步一步揭开她神秘的面纱
 
 linux内核创建线程函数 kernel_thread(),最终会调用do_fork().
 前面谈到线程也是用task_struct结构表示它拥有的信息,只是是共享进程的资源。
 根据clone_flags标志,来调用clone()创建"线程",表示共享内存、共享文件系统访问计数、共享文件描述符表,以及共享信号处理方式。
 
 kernel_thread定义在/arch/kernel/process.c
int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{
       struct pt_regs regs;   
       memset(&regs, 0, sizeof(regs));         //把该结构的变量全部清0
       regs.ebx = (unsigned long) fn;          /* ebx指向函数地址 */
       regs.edx = (unsigned long) arg;         /* edx指向参数地址 */
       regs.xds = __USER_DS;
       regs.xes = __USER_DS;
       regs.xfs = __KERNEL_PERCPU;
       regs.orig_eax = -1;
       regs.eip = (unsigned long) kernel_thread_helper;       /*eip指向回调函数*/
       regs.xcs = __KERNEL_CS | get_kernel_rpl();
       regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2;
       /* 利用do_fork来产生一个新的线程,共享父进程地址空间,并且不允许调试子进程 */
       return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
}
其中__USER_DS,__KERNEL_PERCPU,__KERNEL_CS都是一些宏定义。在/linux/include/asm-i386/segment.h
extern void kernel_thread_helper(void); 


相关文档:

linux下nagios监控

NRPE总共由两部分组成:
(1).check_nrpe插件,运行在监控主机上。
(2).NRPE daemon,运行在远程的linux主机上(通常就是被监控机)
当Nagios需要监控某个远程linux主机的服务或者资源情况时:
1).nagios会运行check_nrpe插件,我们要在nagios配置文件中告诉它要检查什么.
2).check_nrpe插件会通过SSL连接到远程的NRPE d ......

Fedora Linux 下安装配置C开发环境Code::Blocks


一、提前的话
  要说C语言和Linux的关系大家应该都不会陌生,Linux系统内核就是用C语言开发的,所以所有的Linux系统下面 都会有C的编译调试工具,不过这些工具都是命令式的,正式开发的话会很不方便。Fedora在安装的时候可以选择安装Fedora Eclipse,这个IDE很强大,C,C++,Java,Python等等都支持,而且编译,调试和 ......

Linux下FTP命令详解

FTP> ! 从 ftp 子系统退出到外壳。
  FTP> ? 显示 ftp 命令说明。? 与 help 相同。
  格式:? [command]
  说明:[command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。
  FTP> append 使用当前文件类型设置将本地文件附加到远程计算机上的文件。
  格式:append ......

Linux下解压常用命令

     .tar
  解包:tar xvf FileName.tar
  打包:tar cvf FileName.tar DirName
  (注:tar是打包,不是压缩!)
  ———————————————
  .gz
  解压1:gunzip FileName.gz
  解压2: ......

linux 软件安装

1 安装 中文输入法
2 PDF 文件乱码
sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional poppler-data
3 安装Flash firefox
sudo apt-get install flashplugin-nonfree
sudo update-flashplugin
opera与scim冲突的问题
sudo apt-get install scim-qtimm
sudo gedit /usr/bin/opera
添加 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号