进程控制块

进程

元气小坏坏 提交于 2020-01-10 12:08:27
一个进程应该包括: 程序的代码 程序处理的数据 程序计数器中的值,指示下一条将运行的指令 一组通用的寄存器的当前值,堆、栈 一组系统资源(如打开的文件) 总之,进程包含了正在运行的一个程序的所有状态信息。 进程于程序的联系 程序是产生进程的基础 程序的每次运行构成不同的进程 进程是程序功能的体现 通过多次执行,一个程序徐可对应多个进程;通过调用关系,一个进程可包括多个程序。 进程于程序的区别 进程是动态的,程序是静态的:程序是偶徐代码的集合:进程是程序的执行,进程由核心态/用户态 进程是暂时的,程序是永久的:进程是一个状态变化的过程,程序可长久保存 进程于程序的组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息) 进程的特点 动态性:可动态地创建、结束进程 并发性:进程可以被独立调度并占用处理机运行;并发并行 独立性:不同进程的工作不互相影响 制约性:因访问共享数据/资源 或进程间同步而产生制约 进程控制结构 进程控制块: 操作系统管理控制进程 来源: https://www.cnblogs.com/cjsword/p/12175113.html

linux C进程

心已入冬 提交于 2020-01-08 02:41:23
一个进程控制块,大体分下列三个内容: 进程描述信息 进程运行状态/调度信息 进程资源信息(进程所在存储器的地址信息,文件系统以及打开的文件信息) cpu现场信息;中断后保存寄存器信息和堆栈信息,以便下次回到断点后可以继续执行 进程通过fork()函数产生,其返回一个整型的进程号,在一段代码体中,通常以pid的值(>0主进程,==0子进程,-1进程创建失败)来区分主进程和子进程的行为 #include<stdio.h> #include<stdlib.h> #include<unistd.h> void main() { pid_t pid; pid=fork(); if(pid==0) {      //用于定义子进程的逻辑 printf("pid==%d this is a child process of %d \n",getpid(),getppid()); } if(pid==-1) { printf("process created failed!\n"); } if(pid>0)//用于定义父进程的逻辑 { printf("%d: a master process working!---%d\n",getpid(),getppid()); } } 输出结果: 根据这一原理可以循环创建进程----比如循环六次,但规定只让父进程来创建进程,以避免进程的创建出现指数级增长

[转] Linux系统之进程状态

放肆的年华 提交于 2020-01-07 21:07:10
转自: https://www.cnblogs.com/littlecharacter/p/12154588.html 一、进程状态 D:uninterruptible sleep (usually IO) R:running or runnable (on run queue) S:interruptible sleep (waiting for an event to complete) T:stopped by job control signal t:stopped by debugger during the tracing W:paging (not valid since the 2.6.xx kernel) X:dead (should never be seen) Z:defunct ("zombie") process, terminated but not - reaped by its parent 1、R (TASK_RUNNING),可执行状态 只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。进而,进程调度器就从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。

Linux系统之进程状态

最后都变了- 提交于 2020-01-07 15:52:11
一、进程状态 D:uninterruptible sleep (usually IO) R:running or runnable (on run queue) S:interruptible sleep (waiting for an event to complete) T:stopped by job control signal t:stopped by debugger during the tracing W:paging (not valid since the 2.6.xx kernel) X:dead (should never be seen) Z:defunct ("zombie") process, terminated but not - reaped by its parent 1、R (TASK_RUNNING),可执行状态 只有在该状态的进程才可能在CPU上运行。而同一时刻可能有多个进程处于可执行状态,这些进程的task_struct结构(进程控制块)被放入对应CPU的可执行队列中(一个进程最多只能出现在一个CPU的可执行队列中)。进而,进程调度器就从各个CPU的可执行队列中分别选择一个进程在该CPU上运行。 很多操作系统教科书将正在CPU上执行的进程定义为RUNNING状态、而将可执行但是尚未被调度执行的进程定义为READY状态

第 5 章 进程调度

穿精又带淫゛_ 提交于 2020-01-06 20:51:27
  CPU调度是多道程序操作系统的基础。 5.1 CPU调度程序   CPU调度的任务是,从就绪队列中选择一个等待进程,并未其分配CPU。进程选择采用短期调度程序,调度程序从内存中选择一个能够执行的进程并为其分配CPU。   就绪队列不必是FIFO队列,队列内的记录通常为进程控制块PCB。 5.1.1 抢占调度   需要CPU调度的情况可分为以下四种: 当一个进程从运行状态切换到等待状态时(例如,I/O请求,或wait()调用以便等待子进程的终止) 当一个进程从运行状态切换到就绪状态时(例如出现中断时) 当一个进程从等待状态切换到就绪状态时(例如I/O完成) 当一个进程终止时   对于第一和第四中情况,除了调度没有选择。一个新进程必须被选择执行。   如果调度只发生在第一和第四种情况下,则调度方案称为非抢占的或协作的;否则,调度方案称为抢占的。在非抢占调度下,一旦某个进程分配到CPU,该进程就会一直使用CPU,直到它终止或切换到等待状态。 5.1.2 调度程序   与CPU调度功能有关的另一个组件是调度程序。调度程序是一个模块,用来将CPU控制交给短期调度程序选择的进程。这个功能包括: 切换上下文 切换到用户模式 跳转到用户程序的合适位置,以便重新启动程序   调度程序应尽可能块,因为在每次进程切换时都要使用。调度程序停止一个进程而启动另一个进程所需要的时间称为调度延迟。 5.2

进程和线程的关系和区别

六眼飞鱼酱① 提交于 2020-01-04 04:51:09
1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动 ,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体 ,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 2.关系 一个线程可以创建和撤销另一个线程 ;同一个进程中的多个线程之间可以并发执行. 相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。 3.区别 进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。 但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。 1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 2) 线程的划分尺度小于进程,使得多线程程序的并发性高。 3) 另外,进程在执行过程中拥有独立的内存单元

进程与线程区别与联系

假如想象 提交于 2020-01-04 04:50:53
并发执行:单个CPU同时运行几个程序,或者同时运行同一程序多个线程或者进程,在宏观上实现并行 并行执行:多个CPU执行多个进程或者线程 定义: 进程 线程  联系: 区别: 进程,是 并发执行 的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为 232 。进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。 线程,在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显然是行不通的,——无论是从系统资源开销方面或是响应用户请求的效率方面来看。因此,操作系统中线程的概念便被引进了。线程,是进程的一部分,一个没有线程的进程可以被看作是单线程的。线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位。 说到这里,我们对进程与线程都有了一个大体上的印象,现在开始说说二者大致的区别。 进程的执行过程是线状的 ,尽管中间会发生中断或暂停,但该进程所拥有的资源只为该线状执行过程服务。一旦发生进程上下文切换,这些资源都是要被保护起来的。这是进程宏观上的执行过程

应届生经典面试题:说说进程与线程的区别与联系

拟墨画扇 提交于 2020-01-04 04:50:41
应届生经典面试题:说说进程与线程的区别与联系   这问题,估计计算机专业的同学在找研发等工作的时候都会遇到过。前几天某老牌软件厂商的电话面试就提到了这一经典问题,今天招聘会上又有不少同学说在面试的时候被问到这点。在这里我就起个头,大家有啥想法意见等都欢迎回帖交流。 要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解。 进程 ,是并发执行的程序在执行过程中 分配和管理资源的基本单位 ,是一个动态概念, 竟争计算机系统资源的基本单位 。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动, 进程是系统进行资源分配和调度的一个独立单位 .每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为 232 。进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。 线程 ,在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显然是行不通的,——无论是从系统资源开销方面或是响应用户请求的效率方面来看。因此,操作系统中线程的概念便被引进了。线程, 是进程的一部分 ,一个没有线程的进程可以被看作是单线程的。线程有时又被称为 轻权进程或轻量级进程,也是 CPU 调度的一个基本单位

应届生经典面试题:说说进程与线程的区别与联系

守給你的承諾、 提交于 2020-01-04 04:50:31
转载:http://www.cnblogs.com/way_testlife/archive/2011/04/16/2018312.html 应届生经典面试题:说说进程与线程的区别与联系 这问题,估计计算机专业的同学在找研发等工作的时候都会遇到过。前几天某老牌软件厂商的电话面试就提到了这一经典问题,今天招聘会上又有不少同学说在面试的时候被问到这点。在这里我就起个头,大家有啥想法意见等都欢迎回帖交流。 要了解二者的区别与联系,首先得对进程与线程有一个宏观上的了解。 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。每一个进程都有一个自己的地址空间,即进程空间或(虚空间)。进程空间的大小 只与处理机的位数有关,一个 16 位长处理机的进程空间大小为 216 ,而 32 位处理机的进程空间大小为 232 。进程至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。 线程,在网络或多用户环境下,一个服务器通常需要接收大量且不确定数量用户的并发请求,为每一个请求都创建一个进程显然是行不通的,——无论是从系统资源开销方面或是响应用户请求的效率方面来看。因此,操作系统中线程的概念便被引进了。线程,是进程的一部分,一个没有线程的进程可以被看作是单线程的。线程有时又被称为轻权进程或轻量级进程,也是 CPU

进程和线程的区别

眉间皱痕 提交于 2020-01-04 04:50:16
线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间; (2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源 (3)线程是处理器调度的基本单位,但进程不是. 4)二者均可并发执行. 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位