新增资源及索引表-王辉静项目5拓展资源_linux进程的模型.docx

新增资源及索引表-王辉静项目5拓展资源_linux进程的模型.docx

ID:35975561

大小:170.20 KB

页数:3页

时间:2019-04-29

新增资源及索引表-王辉静项目5拓展资源_linux进程的模型.docx_第1页
新增资源及索引表-王辉静项目5拓展资源_linux进程的模型.docx_第2页
新增资源及索引表-王辉静项目5拓展资源_linux进程的模型.docx_第3页
资源描述:

《新增资源及索引表-王辉静项目5拓展资源_linux进程的模型.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、linux进程的模型 1. 进程的模型进程是现代操作系统中的一个重要的概念,引入进程的目的就是让操作系统能有序的执行多个任务,并各个任务互不干扰,还能有效的配合完成更加复杂的任务。那么,我们应该首先了解什么是linux的进程。构成进程包含的资源很多,但是构成进程的最重要的包含了4个要素:1. 首先进程需要有可执行的一段代码,一般进程有在用户太运行的一段代码,这也是进程需要完成的任务。有的内核态线程,有一段在内核态执行的代码。2. 其次,内核要有自己的地址空间映射,这也是程序运行的基础,也是保证各个进程会不干扰的基础。3. 然后,进程需要有一个内核堆栈,这是用户态

2、进程陷入内核执行内核系统调用的必要资源。4. 还有,进程在内核中必须有相应的进程管理数据结构,用于进程的调度和管理工作。Linux中进程的内存模型为下图所示。之前了解过linux虚拟内存管理的话,应该对这张图并不陌生,这张图表示一个linux进程在虚拟地址空间中各个部分的分布。这个示意图,形象的展示了进程可执行代码分布,和自己地址空间的结构。上文中提到了,进程必须拥有自己的内核堆栈,和进程管理数据结构。这两个要素如下图所示。内核为每个进程分配了一个4K的内核堆栈(也有可能是8K)。这个4K堆栈的高地址开始向下就是内核的栈空间,在4K的最小地址开始向上,有一个th

3、read_info结构,该结构中task指针指向了task_struct机构,这个结构就是linux进程的管理数据结构。Task_struct结构体庞大,它记录了进程相关的很多数据和资源。Thread_info数据结构是一个和CPU体系结构相关的数据结构,其中ARM体系结构对threadinfo结构体的定义为struct thread_info {     unsigned long       flags;        /*lowlevelflags*/      int           preempt_count;    /*0=>preemptabl

4、e,<0=>bug*/     mm_segment_t       addr_limit;    /*addresslimit*/      struct task_struct   *task;        /*maintaskstructure*/      struct exec_domain   *exec_domain;    /*executiondomain*/     __u32           cpu;        /*cpu*/     __u32           cpu_domain;    /*cpudomain*/    

5、  struct cpu_context_save   cpu_context;    /*cpucontext*/     __u32           syscall;    /*syscallnumber*/     __u8           used_cp[16];    /*threadusedcopro*/      unsigned long       tp_value;     struct crunch_state   crunchstate;     union fp_state       fpstate__attribute__(

6、(aligned(8)));     union vfp_state       vfpstate; #ifdef CONFIG_ARM_THUMBEE     unsigned long       thumbee_state;    /*ThumbEEHandlerBaseregister*/  #endif      struct restart_block   restart_block; };除了上面说的进程的4个要素,实际上还有一个和进程相关的很重要的概念就是CPU现场!所谓CPU现场就是CPU发生中断,或者调度切换进程时CPU当时各个寄存器的状态。

7、之所以说这个概念重要,是因为必须实现CPU现场的保存和恢复,才能完成进程的切换!对于ARM架构的内核来说,在内核态如果发生进程切换,被切换的进程将CPU现场保存在threainfo结构的 structcpu_context_savecpu_context变量中。而从用户态切换到内核态的时候,CPU现场保存在内核堆栈中。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。