进程控制块

进程和线程 的随笔和简述

坚强是说给别人听的谎言 提交于 2020-03-07 06:49:45
虚拟内存技术 每个进程看到自己独占一部分空间,但其实所有进程是共享一个物理内存,进程创建的时候,内核为建立了虚拟内存的布局,初始化进程控制表中相关的链表,但没有立刻拷贝对应数据和代码到当前位置,就是在进程运行时要分配动态内存时,分配虚拟内存,只有访问此数据时,发生缺页异常,才会立刻拷贝数据。 好处: 扩大地址空间 公平内存空间 内存保护:各自进程有各自独立的虚拟内存地址空间,虚存会对特定的地址提供写保护 通信时,可用虚拟共享 节省空间,不同进程使用相同代码时,可以映射同一个代码,不需要拷贝多个 适合多道程序设计 需要连续空间时,实际物理内存空间可以不连续 代价: 需要建立多个数据结构 地址转换要耗时 页面切换需要磁盘io 数据少时比较浪费内存 进程 所有等待态的当条件满足立刻进入就绪态 PCB -》数据结构 进程控制块 存进程的状态放入队 用数组管理所有的pcb 就绪 运行 堵塞 等待io/事件 程序控制cpu,整个系统下一个执行什么完全由cpu控制 操作系统通过时钟中断,控制不让程序继续运行 进入等待态系统程序需要系统调用 软硬件协同设计 内核启动shell在启动其他的线条 双击图表告诉资源管理器就是shell windows 父进程子进程毫无瓜葛 消息传递 堵塞系统调用 非阻塞系统调用 每个进程都有自己的独立地址空间都是从0开始的都是虚拟地址 待更新--------------

多线程基础

廉价感情. 提交于 2020-03-06 00:15:12
一、线程和进程的区别: 进程是系统分配资源的最小单位,线程是系统调度的最小单位。 每个进程至少有一个线程存在,即主线程。 进程是有自己的独立地址空间的,有进程控制块(PCB)来控制进程的状态变换,也有专门的算法来控制进程的调度(先进先出,高优先比优先,短作业优先,时间片轮转等),线程是共享进程的资源的,JVM会为每一个线程划分特殊的空间: 二、并发和并行 并发: 多个进程在一个CPU下采用时间片轮转的方式,在一段时间之内,让多个进程都得以推进,称之为并发。(也就是同一时间只有一个进程在执行) 并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行 三、线程创建的方法 1.通过继承Thread类 2.实现Runnable接口 3.其他变形 四、线程常见属性 ID 是线程的唯一标识,不同线程不会重复 名称是各种调试工具用到 状态表示线程当前所处的一个情况,下面我们会进一步说明 优先级高的线程理论上来说更容易被调度到 关于后台线程,需要记住一点:JVM会在一个进程的所有非后台线程结束后,才会结束运行。 是否存活,即简单的理解,为 run 方法是否运行结束了 线程的中断问题,下面我们进一步说明 五、start()和run()方法 复写run()方法是提供给线程要做的事情的指令清单,而start()方法则是线程真正独立的去执行了 六、中断一个线程 1.调用.thread(

进程的定义与控制

北战南征 提交于 2020-03-05 15:11:48
···进程的创建 操作系统为进程创建进程控制块和分配地址空间的过程就是进程创建的过程   *创建进程标识   *分配内存和其他资源   *初始化进程控制块   *将创建的进程置于就绪队列 进程状态转换及原因 就绪--运行 原因:进程被调度程序选中占用CPU 运行--阻塞 原因:进程让出CPU,等待系统分配资源或某些事件的发生,如:暂时不能访问某一资源,操作系统尚未完成服务,系统正在初始化I/O设备,等待用户的输入信息等。 阻塞--就绪 原因:处于等待队列中的进程,当其等待的事情已经发生,或等待的资源可用时,此进程将进入就绪队列竞争CPU。 运行--就绪 原因:进程分配的时间片已用完,或者在中断机制下,有更高优先级的进程进入系统,这时进程进入就绪队列等待下一次被选中而占用CPU。 来源: https://www.cnblogs.com/fate-/p/12419918.html

进程的定义与控制

烈酒焚心 提交于 2020-03-05 12:20:14
···进程的组成 * PCB(Process Control Block) 灵魂,进程存在的唯一标志 *程序 描述了进程要完成的功能,是进程执行时不可修改的部分。 *数据 进程执行时用到的数据 *工作区 参数传递、系统调用时使用的动态区域(堆栈区) ···进程控制块(PCB) 定义:是操作系统用来记录进程详细状态和相关信息的基本数据结构,它和进程是一一对应的,是进程存在的唯一标识。 作用:提供进程的各种信息,以便操作系统控制和管理。 ···PCB结构 结构一: 类型:标识信息 内容: *进程标识 *用户标识 *父进程标识 作用:标识一个进程 结构二: 类型:现场信息 内容: *CPU通用寄存器内容 *CPU状态寄存器内容 *栈指针 等 作用: 记录处理机现场信息,以备恢复之用 结构三: 类型:控制信息 内容: *进程状态 *调度信息 *队列指针 *位置信息 *资源占用信息 作用:用于进程的调度管理 ···操作系统对PCB的管理:集中统一管理 系统把所有PCB组织在一起,并把他们放在内存的固定区域,就构成了PCB表 PCB表的大小决定了系统中最多可同时存在的进程个数,称为系统的并发度 ···PCB表组织方式 常用索引方式,对具有相同状态的进程,分别设置各自的PCB索引表,表明PCB在PCB表中的地址(其他方式:线性表或链表) 进程队列:不同状态进程分别组成队列,分为 运行队列

《操作系统》知识点复习

佐手、 提交于 2020-03-04 15:43:38
定义:操作系统是对计算机资源(硬件、软件)管理、为用户提供服务(交互、运行环境)的软件、是种系统软件。 计算机用户与硬件之间一直运行的一个程序,狭义称为内核(kernel)程序 目标:方便用户解决问题、使用计算机,通过管理软件有效使用计算机硬件资源 结构:层次 用户—》应用程序-》操作系统-》硬件 组织:启动:先确认每个设备是否正常->开启引导程序Bootstrap(主板):设备初始化、操作系统载入内存、运行进程 中断 :一个事件的触发是由软中断、硬中断实现 Ctrl+Alt+Delete快捷启动是什么中断? 软中断是执行中断指令产生的,而硬中断是由外设引发的。 硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。 硬中断是可屏蔽的,软中断不可屏蔽。 有专门的文件标识符 标准输入:键盘 标准输出:显示器 多道程序设计的基本特征:无序性、多道性、间断性 分时系统追求:快速响应用户 I/O结构 :设备控制器有本地缓冲器,CPU负责内存与本地缓冲器之间的数据传递,设备控制器控制本地缓冲器和外设之间的。通过中断通知I/O设备操作完成 所以为了提高cpu利用率,采用DMA直接访问内存方式,以块为单位完成传送触发中断 I/O操作:同步:只有I/O结束后,用户程序才能运行 异步:I/O期间,用户程序也能运行 存储结构:存储设备:1.磁盘 2.闪存 3.固态硬盘

操作系统第二章

蓝咒 提交于 2020-03-04 12:37:19
重点:   进程的含义   理解掌握同步的概念及经典进程同步问题 难点:    进程同步算法 知识点:   进程、线程、进程的特征、PCB、进程控制、进程同步(通信) 前趋图和程序执行 前趋图:   有向无循环图(DAG), 描述进程之间执行的前后关系。结点间的有向边用于表示两个节点间存在的偏序、前趋关系“->”。     (Pi,Pj):pi是pj的直接前驱     每个节点还具有一个重量(权值),表示该节点所含有的程序量或节点的执行时间(长短)     起始节点:无进||终止节点:无出    前驱图中不能存在循环      例如: s1->s2,s2->s3,s3->s2 :不符合前驱关系 程序执行两方式:     顺序:单道批处理系统     并发:提高资源利用率    程序顺序执行(单道批处理):       如C语言基础运算程序       i1->c1->p1->i2->c2->p2      特征:       顺序性: 按程序结构所指定的次序(按进入内存的先后执行),每一操作都必须在上一个操作结束之后开始。        封闭性: 独占全部资源,程序一旦开始,执行结果不受外界因素影响        可再现性: 初始条件相同则结果相同 (执行环境和初始条件相同,程序不论连续执行还是走走停停地执行,都将获得相同结果。    程序的 并发执行:(内存中多道作业)     

操作系统学习笔记-进程控制

别等时光非礼了梦想. 提交于 2020-03-04 06:00:57
进程控制 操作系统内核 通常将一些与硬件紧密相关的模块(如中断处理程序等)、各种常用设备的驱动程序以及运行频率比较高的模块(如时钟管理、进程调度和许多模块公用的一些基本操作),都安排在紧靠硬件的软件层次中,将它们常驻内存,即通常被称为的OS内核。 目的:便于对这些软件进行保护,防止遭受其他应用程序的破坏;提高OS运行效率 为了防止OS本身及其关键数据(如PCB等)遭受程序有意或无意的破坏,通常将处理机的执行状态分为系统态和用户态两种 系统态 又称管态,也称为内核态。它具有较高的特权,能执行一切指令,访问所有寄存器和存储区,传统的OS都在系统态运行 用户态 又称目态。它是具有较低特权的执行状态,仅能执行规定的指令,访问指定的寄存器和存储区。 一般情况下,应用程序只能在用户态运行 支持功能 中断处理 中断处理是内核最基本的功能,是整个操作系统赖以活动的基础,OS中许多重要的活动(系统调用、键盘命令的输入、进程调度、设备驱动)无不依赖于中断 时钟管理 (时间片轮转调度、实时系统中断截止时间控制、批处理中的最长运行事件控制等) 原语操作 所谓原语就是由若干指令组成的,用于完成一定功能的一个过程 资源管理功能 进程管理 存储器管理 设备管理 进程的创建 OS运行一个进程(父进程)创建另一个进程(子进程) 在系统中每当出现了创建新进程的请求后

操作系统(九)进程控制

☆樱花仙子☆ 提交于 2020-03-03 06:31:36
2.1.3 进程控制 目录 2.1.3 进程控制 2.1.3.1 基本概念 2.1.3.2 进程创建原语 2.1.3.3 进程终止原语 2.1.3.4 进程的阻塞与唤醒 2.1.3.5 进程的切换 2.1.3.6 小结 ​ 2.1.3.1 基本概念 在书中, 进程控制 的定义是这样的:进程控制是进程管理中最基本的功能。它用于创建一个新进程,终止一个已完成的进程,或终止一个因出现某事件而使其无法运行下去的进程,还可负责进程运行中的状态转换。其实简单来说, 进程控制就是为了实现进程状态之间的转换。 那么进程控制是怎么实现的呢? 进程控制一般来说是通过OS内核中的 原语 来实现的。 原语 (Primitive) 是由若干条指令组成的,用于完成一定功能的一个过程,它是一个不可分割的基本单位,因此,在执行过程中不允许被中断。原子操作在 管态 下执行,常驻内存。 为什么要使用原子操作(一气呵成)呢? 如果系统对进程的控制如不使用原语,就会造成其状态的不确定性,从而达不到进程控制的目的。比如说将执行态变为阻塞态需要两步,首先将state的值改变之后再将此PCB放在阻塞队列,如果非原子操作,在改变state值之后发生中断,那么在执行队列就出现了阻塞态的PCB,这是不正确的。 如何保证操作的原子性呢? 这里我们需要引出两个特权指令: 开中断指令和关中断指令。顾名思义, 开中断就是将中断打开

操作系统-进程详解

谁都会走 提交于 2020-03-03 01:36:58
进程 进程的基本概念:进程是程序的一次执行过程 进程包括:进程控制块(PCB),程序段和数据段,其中PCB是进程存在的唯一标识,创建进程实际就是创建一个PCB,而销毁进程实际就是销毁PCB PCB PCB是一个结构体,在linux中为task_struct结构体,其中包括进程状态,进程标识信息(每个进程有一个唯一的标识符PID),优先级,定时器,寄存器,栈指针等,在linux中将进程控制块组织成一个双向循环 链表 (这个链表是有上限的),每一项指向一个进程控制块,创建新进程时,系统在内存中申请一个空的task_struct区,填入所需信息,并将该结构体插入到链表中 用户态和内核态 https://blog.csdn.net/qq_39823627/article/details/78736650 https://blog.csdn.net/youngyoungla/article/details/53106671 用户态:当进程在执行用户代码时所处的运行状态为用户态,用户态下进程所能访问的内存空间和对象受到限制,其所占有的处理机是可以被抢占的 内核态:当进程在执行内核代码(在内核代码地址空间处执行内核代码)时所处的运行状态为内核态,内核态下的进程可以访问所有的内存空间和对象,且所占用的处理机是不允许被抢占的。 所谓内核态,就是拥有资源多的状态,也就是特权态,在当进程处于内核态

06.进程的虚拟内存管理.md

牧云@^-^@ 提交于 2020-03-01 22:15:45
正好遇到 华庭(庄命强)的glibc内存管理Ptmalloc2 源代码分析 一文,非常开心。真是大佬。我只是借着这篇文章稍微整理一下,为了以后自己回顾的时候能够更好的排查问题。 6.1 linux进程内存布局 x86 平台 Linux 进程内存布局   Linux 系统在装载 elf 格式的程序文件时,会调用 loader 把可执行文件中的各个段依次 载入到从某一地址开始的空间中(载入地址取决 link editor(ld)和机器地址位数,在 32 位机 器上是 0x8048000,即 128M 处)。如下图所示,以 32 位机器为例,首先被载入的是.text 段, 然后是.data 段,最后是.bss 段。这可以看作是程序的开始空间。程序所能访问的最后的地 址是 0xbfffffff,也就是到 3G 地址处,3G 以上的 1G 空间是内核使用的,应用程序不可以直 接访问。  &emsp应用程序的堆栈从最高地址处开始向下生长,.bss 段与堆栈之间的空间是空闲的, 空闲空间被分成两部分,一部分为 heap,一部分为 mmap 映射区域,mmap 映射区域一般 从 TASK_SIZE/3 的地方开始,但在不同的 Linux 内核和机器上,mmap 区域的开始位置一般是 不同的。Heap 和 mmap 区域都可以供用户自由使用,但是它在刚开始的时候并没有映射到 内存空间内,是不可访问的