- 浏览: 276250 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
highsky:
再次看到记录上海书城那段文字,自己都想笑笑。本想删点现在觉得幼 ...
模式分类笔记 -- 高斯函数 -
doudoulong2002ok:
加油!努力1我最近非常忙!连睡觉的时候都是挤出来的!不过我好在 ...
回家了一趟 -
doudoulong2002ok:
我的灯有时候亮,有时候不亮!咯咯
你的灯亮着吗?-读书笔记 -
doudoulong2002ok:
豆豆龙飘过!
模式分类笔记 -- 最小二乘法 -
doudoulong2002ok:
是么?我想想
模式分类笔记 -- 线性规划(1)
struct task_struct{
/* these are hardcoded - don't touch */
volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
long counter;
long priority;
unsigned long signal;
unsigned long blocked; /* bitmap of masked signals */
unsigned long flags; /* per process flags, defined below */
int errno;
long debugreg[8]; /* Hardware debugging registers */
struct exec_domain *exec_domain;
/* various fields */
struct linux_binfmt *binfmt;
struct task_struct *next_task, *prev_task;
struct task_struct *next_run, *prev_run;
unsigned long saved_kernel_stack;
unsigned long kernel_stack_page;
int exit_code, exit_signal;
/* ??? 这里的注释不知道是什么?*/
unsigned long personality;
int dumpable:1;
int did_exec:1;
int pid;
int pgrp;
int tty_old_pgrp;
int session;
/* boolean value for session group leader */
int leader;
int groups[NGROUPS];
/*
* pointers to (original) parent process, youngest child, younger sibling,
* older sibling, respectively. (p->father can be replaced with
* p->p_pptr->pid)
*/
struct task_struct *p_opptr, *p_pptr, *p_cptr,
*p_ysptr, *p_osptr;
struct wait_queue *wait_chldexit;
unsigned short uid,euid,suid,fsuid;
unsigned short gid,egid,sgid,fsgid;
unsigned long timeout, policy, rt_priority;
unsigned long it_real_value, it_prof_value, it_virt_value;
unsigned long it_real_incr, it_prof_incr, it_virt_incr;
struct timer_list real_timer;
long utime, stime, cutime, cstime, start_time;
/* mm fault and swap info: this can arguably be seen as either
mm-specific or thread-specific */
unsigned long min_flt, maj_flt, nswap, cmin_flt, cmaj_flt, cnswap;
int swappable:1;
unsigned long swap_address;
unsigned long old_maj_flt; /* old value of maj_flt */
unsigned long dec_flt; /* page fault count of the last time */
unsigned long swap_cnt; /* number of pages to swap on next pass */
/* limits */
struct rlimit rlim[RLIM_NLIMITS];
unsigned short used_math;
char comm[16];
/* file system info */
int link_count;
struct tty_struct *tty; /* NULL if no tty */
/* ipc stuff */
struct sem_undo *semundo;
struct sem_queue *semsleeping;
/* ldt for this task - used by Wine. If NULL, default_ldt is used */
struct desc_struct *ldt;
/* tss for this task */
struct thread_struct tss;
/* filesystem information */
struct fs_struct *fs;
/* open file information */
struct files_struct *files;
/* memory management info */
struct mm_struct *mm;
/* signal handlers */
struct signal_struct *sig;
#ifdef __SMP__
int processor;
int last_processor;
int lock_depth; /* Lock depth.
We can context switch in and out
of holding a syscall kernel lock... */
#endif
};
/* these are hardcoded - don't touch */
volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */
long counter;
long priority;
unsigned long signal;
unsigned long blocked; /* bitmap of masked signals */
unsigned long flags; /* per process flags, defined below */
int errno;
long debugreg[8]; /* Hardware debugging registers */
struct exec_domain *exec_domain;
/* various fields */
struct linux_binfmt *binfmt;
struct task_struct *next_task, *prev_task;
struct task_struct *next_run, *prev_run;
unsigned long saved_kernel_stack;
unsigned long kernel_stack_page;
int exit_code, exit_signal;
/* ??? 这里的注释不知道是什么?*/
unsigned long personality;
int dumpable:1;
int did_exec:1;
int pid;
int pgrp;
int tty_old_pgrp;
int session;
/* boolean value for session group leader */
int leader;
int groups[NGROUPS];
/*
* pointers to (original) parent process, youngest child, younger sibling,
* older sibling, respectively. (p->father can be replaced with
* p->p_pptr->pid)
*/
struct task_struct *p_opptr, *p_pptr, *p_cptr,
*p_ysptr, *p_osptr;
struct wait_queue *wait_chldexit;
unsigned short uid,euid,suid,fsuid;
unsigned short gid,egid,sgid,fsgid;
unsigned long timeout, policy, rt_priority;
unsigned long it_real_value, it_prof_value, it_virt_value;
unsigned long it_real_incr, it_prof_incr, it_virt_incr;
struct timer_list real_timer;
long utime, stime, cutime, cstime, start_time;
/* mm fault and swap info: this can arguably be seen as either
mm-specific or thread-specific */
unsigned long min_flt, maj_flt, nswap, cmin_flt, cmaj_flt, cnswap;
int swappable:1;
unsigned long swap_address;
unsigned long old_maj_flt; /* old value of maj_flt */
unsigned long dec_flt; /* page fault count of the last time */
unsigned long swap_cnt; /* number of pages to swap on next pass */
/* limits */
struct rlimit rlim[RLIM_NLIMITS];
unsigned short used_math;
char comm[16];
/* file system info */
int link_count;
struct tty_struct *tty; /* NULL if no tty */
/* ipc stuff */
struct sem_undo *semundo;
struct sem_queue *semsleeping;
/* ldt for this task - used by Wine. If NULL, default_ldt is used */
struct desc_struct *ldt;
/* tss for this task */
struct thread_struct tss;
/* filesystem information */
struct fs_struct *fs;
/* open file information */
struct files_struct *files;
/* memory management info */
struct mm_struct *mm;
/* signal handlers */
struct signal_struct *sig;
#ifdef __SMP__
int processor;
int last_processor;
int lock_depth; /* Lock depth.
We can context switch in and out
of holding a syscall kernel lock... */
#endif
};
发表评论
-
Linux环境进程间通信
2009-06-08 19:53 1228这些确实是最基本最实用的东西,但我想 操作系统实现中最复杂的是 ... -
Linux核心数据结构--vm_area_struct
2006-11-10 19:12 4103表示某进程的一个虚拟内存区域。 struct vm_area ... -
Linux核心数据结构--tq_struct
2006-11-10 19:10 2415每个任务队列结构(tq_struct)包含着已经排队的任务信息 ... -
Linux核心数据结构--timer_list
2006-11-10 19:09 2491用来为进程实现实时时钟。 struct timer_list ... -
Linux核心数据结构--socket
2006-11-10 19:05 1361包含BSD套接口的信息。它不独立存在,一般位于一个VFS in ... -
Linux核心数据结构--sock
2006-11-10 19:03 2108包含BSD套接口的协议相关信息。例如对于一个INET(Inte ... -
Linux核心数据结构--sk_buff
2006-11-10 18:57 1809用来描叙在协议层之间交换的网络数据。 struct sk_b ... -
Linux核心数据结构--semaphore
2006-11-10 18:49 1408保护临界区数据结构和代码信号灯。 struct semaph ... -
Linux核心数据结构--rtable
2006-11-10 18:48 2876用来描叙向某个IP主机发送包的路由信息。此结构在IP路由cac ... -
Linux核心数据结构--request
2006-11-10 18:47 1762被用来向系统的块设备发送请求。它总是向buffer cache ... -
Linux核心数据结构--pci_dev
2006-11-10 18:46 2303表示系统中的每个PCI设备,包括PCI-PCI和PCI-PCI ... -
Linux核心数据结构--pci_bus
2006-11-10 18:43 1935表示系统中的一个PCI总线。 struct pci_bus ... -
Linux核心数据结构--mm_struct
2006-11-10 18:40 3964用来描叙某任务或进程的虚拟内存。 struct mm_str ... -
Linux核心数据结构--mem_map_t
2006-11-10 18:38 1955用来保存每个物理页面的信息。 typedef struct ... -
Linux核心数据结构--linux_binfmt
2006-11-10 18:36 1772用来表示可被Linux理解的二进制文件格式。 struct ... -
Linux核心数据结构--irqaction
2006-11-10 18:35 1228用来描叙系统的中断处理过程。 struct irqactio ... -
Linux核心数据结构--ipc_perm
2006-11-10 18:33 1457此结构描叙对一个系统V IPC对象的存取权限。 struct ... -
Linux核心数据结构--inode
2006-11-10 18:32 2664此VFS inode结构描叙磁盘上一个文件或目录的信息。 s ... -
Linux核心数据结构--gendisk
2006-11-10 18:31 4300包含关于某个硬盘的信息。用于磁盘初始化与分区检查时。 str ... -
Linux核心数据结构--fs_struct
2006-11-10 18:27 1599这个还不知道是啥 struct fs_struct { ...
相关推荐
4. **进程控制块(PCB)**:PCB是操作系统管理进程的核心数据结构,包含了描述进程状态和控制进程运行所需的所有信息,如进程标识符、处理机状态、调度信息和控制信息。PCB是进程存在的唯一标志,通常存放于操作系统...
2. **include**:包含了内核所需的头文件,定义了数据结构、常量和函数原型。 3. **fs**:文件系统相关的代码,包括VFS(虚拟文件系统),它允许Linux支持多种文件系统,如EXT2、FAT等。 4. **drivers**:驱动程序...
在Linux操作系统中,进程管理是系统管理的核心部分,它涉及到系统的资源分配、任务调度和程序执行等关键操作。本教程将深入探讨Linux中的进程管理,包括进程的基本概念、查看进程状态的方法、进程控制命令以及多进程...
Linux内核是操作系统的核心部分,负责管理系统的硬件资源和提供软件服务...了解和掌握Linux内核结构与进程管理对于系统管理员和开发者来说至关重要,因为这有助于优化系统性能,解决系统问题,以及开发和调试应用程序。
进程控制块(Process Control Block)是操作系统维护的关于进程的数据结构,包含了进程的状态、资源分配情况、调度信息等。 五、进程创建与退出 Linux中,通过`fork()`函数可以创建新的进程,新进程继承父进程的大...
### PostgreSQL内核分析——多进程结构 #### 一、进程的理解与创建 进程是一个正在运行的程序实例,它具有动态的特性。对于程序员而言,所编写的代码在未经编译之前仅是静态的源代码。当这些代码经过编译、链接等...
消息队列是一种数据结构,存储了由发送进程放入的、被接收进程取出的消息。每个消息都有一个唯一的标识符,称为消息键,用于区分不同的消息。队列中的消息按照先进先出(FIFO)的原则被处理,除非特定的消息键被...
LINUX编程中的进程与进程管理涉及到操作系统中进程创建、调度、终止和资源分配等核心概念。在Linux环境下,通过fork系统调用可以创建一个子进程,这是UNIX和类UNIX系统中常用的进程创建方式。在本次实验中,将会涉及...
进程控制块(PCB)是操作系统中用来描述进程状态和环境信息的数据结构,它是进程存在的唯一标志。PCB中包含进程标识、状态、调度信息、信号处理信息、进程链信息、时间与定时器、文件系统信息、内存管理信息、进程间...
在Linux中,这些信息主要由`task_struct`数据结构表示。 **进程虚拟内存** 每个进程都有自己的虚拟内存空间,由`vm_area_struct`结构体管理,包括代码、数据、堆栈和文件映射等。虚拟内存提供了内存保护和地址空间...
Linux操作系统的核心在于其内核,而内核的高效运行离不开一系列关键的数据结构。这些数据结构在内存管理和系统调用中起到至关重要的作用。本章详细介绍了Linux内核中的一些主要数据结构,它们是构建和管理操作系统...
在Linux系统中,进程是资源分配的基本单位,而进程描述符(也称为进程控制块,PCB)是记录进程状态和信息的核心数据结构。 1. **进程与进程描述符**: - **进程概念**:进程是程序的一次动态执行过程,包含程序、...
- **进程通信**:进程之间交换数据的方式。 - **消息传递系统**:基于消息队列的通信机制。 - **存储管理**: - **分页管理机制**:将物理内存划分为固定大小的页。 - **内存共享与保护**:确保不同进程之间不会...
此外,理解Linux内核、进程管理和文件系统结构也是深入学习的重要部分。 Linux命令的学习是一个持续的过程,熟练掌握这些命令可以极大地提高工作效率。通过阅读《Linux学习手册--Linux命令大全》这本书,你可以系统...
《LINUX编程白皮书001-12》是一份深入探讨Linux系统编程的...PDF文档001-12部分可能详细解释了这些数据结构的概念、实现及它们在Linux内核中的使用实例,对想要深入理解Linux编程的读者来说是一份不可或缺的参考资料。
对`task_struct`数据结构的研究有助于理解Linux的多任务调度机制和进程调度的工作流程。了解这些细节可以帮助开发者优化内核,满足特定应用场景的需求。例如,通过调整调度策略或改进调度算法,可以提高系统性能,...
在早期的内核版本中,堆栈管理相对直接,没有现代内核中的复杂数据结构和优化。这为我们提供了一个清晰的视图,了解堆栈工作原理的基本概念。 总之,"linux-0.11-dev"项目为学习Linux内核态堆栈提供了宝贵的资源。...
Linux操作系统中的进程调度是系统管理任务的核心部分,它决定了哪个进程在何时获得CPU的执行权。在Linux 2.4版本中,`schedule()`函数是实现进程调度的主要代码,负责在多个可运行进程之间切换。这个函数位于`kernel...
通过解压"linux-0.11-030920"压缩包,你可以深入探究源代码,学习如何编译和调试内核,以及理解内核中的关键数据结构和算法。这对于想要成为Linux系统开发者或系统管理员的人来说,是一份宝贵的教育资源。同时,这也...