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

2010 3 16日总结(linux的进程管理1)

主要看了Linux完全注释那本书,终于准备攻读Linux内核源码了,先看了第二张的总体概念,感觉操作系统有很多东西还真是大同小异,记得ucos就是有一个叫做快表的东西,里面最多可以表示64个进程,而早版的Linux(0.11)也有这个一说的东西。
 
在Linux中也有一个PCB来表示每个进程,在这个结构体中,有指向任务代码的指针,有指向任务数据的指针,还有指向堆栈段地址(这个栈空间用来保存该进程在CPU中的各个寄存器的值,在进程调度的时候使用,是在内核栈空间上的),还有进程的任务状态段信息结构(tss_struct)
 
以上是Linux操作系统中进程所拥有的各种状态和相互关系(0.11内核)
其中:可中断睡眠是可以被软终端所唤醒的,我现在的理解是可以被用户空间的程序所唤醒。不可中断睡眠状态是不能被软终端唤醒的,他只能等待调度程序的唤醒或者硬中断的到来。
 
进程间切换:
在这里面有几个概念先解释一下
GDT:全局描述符表  在我理解来看就是存放所有进程PCB的指针或者就象图里面画的是     每个进程的TSS的描述符。
TSS:任务状态段   任务状态段用于保存相应进程在CPU中的寄存器的值
LDT:局部描述符   存储在全局描述表中,分为数据段和代码段,然后数据段指向用户空间的一段保存该进程数据的地址,代码段指向用户空间的保存该进程代码的内存地址。(如下图)
在进程切换时,执行实际进程切换的任务由swich_to()宏所定义的一段汇编代码来完成。在切换之前,swich_to首先检查要切换的进程是否为当前进程,如果是则什么也不做,直接退出。否则就先将内核全局变量current置为新任务的指针,然后跳转到新任务的任务状态段TSS组成的地址处,造成CPU执行任务切换操作。然后就如第二幅图开始进行压栈和弹栈操作,开始执行新的任务。
 
Linux采用的是段页式的地址映射,通过计算,我今天知道了每个内存单元能存储4bit的数据。Linux(0.11内核)为每个进程都预留了64M的虚拟内存空间。


相关文档:

Linux kill

 使用linux操作系统,难免遇到一些软件"卡壳"的问题,这时就需要使用linux下强大的kill命令来结束相关进程。这在linux系统下是极其容易的事情,你只需要kill xxx即可,这里xxx代表与此软件运行相关的进程PID号。
    首先,我们需要使用linux下另外一个ps命令查找与进程相关的PID号:ps aux | grep pr ......

Linux 命令 “ls ” 的用法

 ls 命令可以说是linux下最常用的命令之一。它有众多的选项,其中有很多是很有用的,你是否熟悉呢?下面列出了 ls 命令的绝大多数选项。
  -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
  -b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。
  -c 输出文件的 i 节点的修改时 ......

linux 设置环境变量

下面以配置java
环境变量为例介绍三种配置环境变量的方法。
 
1.修改/etc/profile文件
如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户
的shell
都有权使用这些环境变量,可能
会给系统
带来安全性问题。
 
(1)用文本编辑器打开/etc/profile
 
(2)在profile文件末尾加入:
JA ......

linux 调试动态库

我最近的工作是在linux环境下测试一个.so的动态库,我暂时命名为libdawn.so,是同事实现的,我需要再我的测试程序中加载这个库,并调试该库,我用的编译环境是Eclipse.
1. 在Eclipse->Project->Properities->c/c++ Build->setting->gcc c++ Linker(如果是用gcc c编译的则选gcc c Linker)->Libraries ......

转载linux内核裁剪 1


【转】Linux内核裁剪的具体步骤
在menuconfig中配置:
详细介绍内核配置选项及删改情况
第一部分:全部删除
Code maturity level options ---> 代码成熟等级选项
[]Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号