进程描述与控制随笔

进程控制块:标识符,状态,优先级,程序计数器,内存指针,上下文数据,I/O状态信息,记账信息

进程控制块是操作系统能够支持多进程和提供多处理的关键工具。可以说,进程是由程序代码和相关数据还有进程控制块组成。

模式切换与进程切换不同,发生模式切换可以不改变正处于运行态的进程状态,在这种情况下,保存上下文环境和以后恢复上下文环境只需要很少的开销。

为执行进程管理功能,操作系统维护者对每个进程的描述,或者称为进程映像,它包括执行进程的地址空间和一个进程控制块。

一个正在运行的进程可能被一个在进程外发生且被处理器识别的中断事件打断,或者被执行操作系统的系统调用打断。不论哪种情况,处理器都执行一次模式切换,把控制转交给操作系统例程。

用户级线程相对于内核级线程有两个明显的缺点:

1>在典型的操作系统中,许多系统调用都会引起阻塞。因此,当用户级线程执行一个系统调用时,不仅这个线程会被阻塞,进程中的所有线程都会被阻塞。

2>在纯粹的用户级线程策略中,一个多线程应用不能利用多处理技术。

可以通过把应用程序写成一个多进程程序而不是多线程程序来解决这两个问题。另一种克服线程阻塞问题的方法是使用一种称作jacketing的技术。jacketing的目标是把一个产生阻塞的系统调用转化为一个非阻塞的系统调用。

用户级线程和内核级线程之间,内核级线程和进程之间都有一个数量级以上的性能差距。

如果应用程序中的大多数线程切换都需要内核态的访问,那么基于用户级线程的方案不会比基于内核级线程的方案好多少。

时间: 2024-08-26 02:55:22

进程描述与控制随笔的相关文章

【操作系统】进程描述与控制

前言: 开发操作系统是为了给应用程序提供一个方便.安全.一致的访问接口,以屏蔽硬件的复杂性.我们可以将操作系统理解为资源的统一抽象表示,可以被应用程序请求和访问.资源包括内存,文件等,一旦操作系统为应用程序创建了这些资源的抽象表示,就必须管理它们的使用.现代操作系统采用进程来管理应用程序的执行. 进程的概念: 1.一个具有以下特征的活动单元:一组指令序列的执行.一个当前状态和相关的系统资源集. 2.能分配给处理器并由处理器执行的实体. 3.一个正在计算机上执行的程序实例. 进程的组成: 进程由程

进程与进程描述符(task_struct)

一. 进程 进程(Process) 计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描述,进程是程序的实体. --------------------------------------------------------------- 释义:一段程序的执行过程 特征:动态.独立.异步.并发 结构特征

进程管理—进程描述符(task_struct)

http://blog.csdn.net/qq_26768741/article/details/54348586 当把一个程序加载到内存当中,此时,这个时候就有了进程,关于进程,有一个相关的叫做进程控制块(PCB),这个是系统为了方便进行管理进程所设置的一个数据结构,通过PCB,就可以记录进程的特征以及一些信息. 内核当中使用进程描述符task_struct. 这个task_struct就是一个定义的一个结构体,通过这个结构体,可以对进程的所有的相关的信息进行维护,对进程进行管理. 接下来我们

进程描述符task_struct

1.进程状态 [cpp] view plain copy volatile long state; int exit_state; state成员的可能取值如下: [cpp] view plain copy #define TASK_RUNNING        0 #define TASK_INTERRUPTIBLE  1 #define TASK_UNINTERRUPTIBLE    2 #define __TASK_STOPPED      4 #define __TASK_TRACED 

Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)【转】

Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息.它定义在include/linux/sched.h文件中. 谈到task_struct结构体,可以说她是linux内核源码中最复杂的一个结构体了,成员之多,占用内存之大. 进程状态 /* * Task state bitmask. NOTE! These bits are also * encoded in fs/proc/array.c: get_task_state().

进程描述符

进程描述 广义上讲,所有进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合. 进程控制块 每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体. task_struct结构体 task_struct是Linux内核下的一种数据结构,它会被装载到RAM里并且包含着进程的信息,每个进程把它的信息放在task_struct结构体里task_struct包含了这些内容: 标示符:描述本进程的唯一标示符 状态:任务状

Linux 进程描述符 task struct

大家都知道进程,可是知道linux是怎么管理其进程的吗?每一个进程都有一个进程描述符,具体是task_struct结构体存储相关的信息,在linux/sched.h文件里定义,那么我们先看看linux内核3.0版本的task_struct结构体的定义吧(删除了不必要的字段,只保留了重要的字段).同时欢迎大家转载和交流. struct task_struct {       //这个是进程的运行时状态,-1代表不可运行,0代表可运行,>0代表已停止.  volatile longstate;  

外部碎片、进程描述符、内部碎片

外部碎片: 是由于用户进程向内存频繁申请和释放内存空间所产出的空闲内存容量.伙伴算法解决的就是这个问题,解决的方法其实就是有伙伴算法的算法设计方法来决定,比如伙伴算法中的合并和切割方式,不够则申请大的空间,但会先切割后再分配出去,剩余的有可能因伙伴关系合并,并成更大的空闲空间,这是一种解决碎片的方式,另一种方式是释放时,也会因为释放后的空闲空间有可能形成伙伴而继续合并,这样就将零零碎碎的空闲空间内存慢慢合并成大的空闲空间,事外部碎片尽量减少. 进程描述符: 即task_struct进程结构体,每

进程—进程描述符展开

进程-从进程描述符展开(一) 进程内核栈结构:union task_union 在../include/linux/sched.h中定义了如下一个联合结构用来创建内核栈空间. //../include/linux/sched.h union task_union { struct thread_info thread_info; unsigned long stack[THREAD_SIZE/sizeof(long)]; }: 线程描述符:struct thread_info 每一个进程都有一个