Linux系统中一个进程可以在内核态或用户态下执行,并且分别使用各自独立的内核态和用户态堆栈。
用户堆栈用于进程在用户态下临时保存调用函数的参数和局部变量等数据;内核堆栈则含有内核程序执行函数调用时的信息。
Linux进程数据结构的一些字段:
state:进程状态字段。
TASK_RUNNING,正在执行;TASK_INTERRUPTIBLE,TASK_UNINTERRUPTIBLE,因等待而处于空闲状态,区别是能否被信号唤醒;
TASK_STOPPED,停止状态,比如DEBUG时候走到断点;TASK_ZOMBIE,进程已被终止,但进程数据结构项仍然存在于任务结构表。
utime,stime,cutime,cstime:
Linux的time命令和Ruby的Benchmark会产生一个结果,其中含有utime和stime的属性,这两个属性其实对应的是进程的数据结构中的utime和stime。
cutime和cstime则是进程的子进程分别在用户态和内核态运行的时间(滴答数)。
counter(滴答数):进程数据结构中的counter字段,进程刚建立时初始值由priority赋值。该字段单位为系统时钟周期,
该字段含义为,正常情况下,切换到另一个进城之前,但前进程还可以执行counter个时钟周期。
很多语言或者脚本的最后一个方法都会写exit(n),exit也是进程数据结构的一个属性字段,表示程序中止时的退出码,
很多子进程用这个字段告诉父进程它的执行结果状态。
alarm:如果进程使用系统调用alarm(x秒)来设置该字段的值,那当x秒(转换为系统滴答数)过去后,系统将向该进程发送一个SIGALRM信号,
默认会终止该进程执行。windows下面有个定时操作命令我每天都会用,shutdown -s -t 1200,意思是20分钟后自动关机,之前我一般躺在床上,电脑则在放音乐。
pwd:进程启动时会将当前工作目录的路径写入pwd字段,然后根据相对路径就可以拼成绝对路径,该字段可以通过系统调用chdir实现。
executable:进程运行的执行文件在内存中i节点结构指针。如果executable->i_count大于1,我们就知道这个可执行文件同时被多个进程执行。
程序可以通过这个来保证对一个用户同时只启动一个。
tss:这个重要,当进程被切换前,该进程用tss_struct保存当前处理器的所有寄存器值。当进程重新执行时,CPU利用tss恢复寄存器状态。
分享到:
相关推荐
Linux内核阅读笔记 本文是 Linux 内核 0.11 源代码的完全注释,旨在帮助读者了解 Linux 内核的工作原理和实现细节。下面是从标题、描述、标签和部分内容中提取的相关知识点: 1. 中断机制:中断是 OS 的主线,...
你可以学习到早期的进程数据结构和调度算法。 4. **内存管理**:早期的Linux内核使用了简单的内存分配策略,比如基于固定大小的内存块分配。了解这部分源码有助于理解现代Linux内核的分页和内存管理机制是如何演进...
通过阅读和研究这个中文注释版的源码,开发者不仅可以了解Linux内核的基本结构,还能深入理解其内部机制,如调度器的工作方式、内存管理的策略、文件系统的实现、网络协议栈的流程等。这对于系统级编程、驱动开发...
Linux与Unix Shell编程指南读书笔记提供了深入理解和熟练掌握Shell脚本编写技巧的宝贵资源。Shell是Linux和Unix操作系统中的命令解释器,它不仅用于交互式地执行命令,还能编写自动化任务的脚本,极大地提高了系统...
1. **体系结构**:Linux内核支持多种处理器架构,如x86、ARM、MIPS等。源码中包含了大量的架构特定代码,这有助于理解不同硬件平台上的内核是如何工作的。 2. **进程管理**:内核负责进程的创建、调度、同步和通信...
通过阅读这本书的笔记,你可以深入理解Linux与Unix Shell的精髓,提升你的系统管理和自动化任务处理能力。这本书对于想要提升Linux技能的系统管理员、开发者或任何想深入了解Shell编程的人来说,都是一份宝贵的资源...
Shell是一种特殊的程序,用户通过Shell与操作系统内核交互,执行命令、管理文件和控制进程。在Linux和Unix系统中,常见的Shell有Bash(Bourne Again SHell)、C Shell(csh)和Korn Shell(ksh)。其中,Bash是目前...
根据给定的"Bash shell学习笔记"文件信息,我们可以从中提炼出多个重要的IT知识点,具体如下: ### 1. 引言 - **Shell的角色**:Shell作为一个命令解释器和编程语言,在用户与UNIX/Linux系统内核之间提供了一个桥梁...
2012-06-11 21:44 6,947,979 Linux内核完全注释V3.0书签版(带源码).rar 2012-06-11 21:31 11,599 MATLAB仿真程序OFDM程序.txt 2012-06-11 21:37 14,584,477 msdn for vb6.0简体中文版.zip 2012-06-11 21:02 12,288 ...
5. **Linux内核配置系统**:Linux内核配置系统主要由以下几个部分组成: - **Makefile**:定义构建内核的规则。 - **配置文件(config.in)**:定义内核配置项。 - **配置工具**:如menuconfig、ncurses-menuconfig...
同时,对Linux文件系统结构的理解也是必要的,如了解根目录、用户目录、可执行文件的存放位置等。 C语言作为一门强大的系统级编程语言,它的基础知识包括变量、数据类型、运算符、流程控制(如if-else、switch-case...
3. **文件系统**:UNIX的文件系统是一个强大的抽象,不仅用于存储数据,还支持进程间的通信。书中的文件系统设计包括i节点、目录结构、文件权限和链接等。注解可能深入讨论了这些特性如何影响程序的编写和系统管理。...
计算机专业导论是每个计算机科学或信息技术学生的基础课程,它为初学者提供了广泛而深入的知识,涵盖计算机系统的基础原理、编程语言、数据结构、算法、操作系统、网络以及软件工程等多个核心领域。Adobe Reader是一...