进程控制块

linux 等待队列

余生颓废 提交于 2020-02-02 06:32:21
inux内核中等待队列 在 Linux 内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制全。因此,等待队列表示一组睡眠的进程,当某一条件为真时,由内核唤醒它们。 等待队列由循环链表实现,其元素包括指向进程描述符的指针。每个等待队列都有一个等待队列头(wait queue head),等待队列头是一个类型为wait_queue_head_t的 数据结构 (1)定义等待队列头(相关内容可以在linux/include/wait.h中找到) 等待队列头结构体的定义: struct __wait_queue_head {   spinlock_t lock; //自旋锁变量,用于在对等待队列头   struct list_head task_list; // 指向等待队列的list_head }; typedef struct __wait_queue_head wait_queue_head_t ; 使用等待队列时首先需要定义一个wait_queue_head,这可以通过DECLARE_WAIT_QUEUE_HEAD宏来完成,这是静态定义的方法。该宏会定义一个wait_queue_head,并且初始化结构中的锁以及等待队列。当然

python多任务编程

眉间皱痕 提交于 2020-02-01 10:34:01
文章目录 进程 (Process) 多进程编程 multiprocessing 模块创建进程 创建自定义进程类 进程池技术 进程间通信 (IPC) 管道通信 Pipe 消息队列 共享内存 信号通信 信号量(信号灯) 线程 线程同步互斥方法 多线程并发 意义 : 充分利用计算机的资源提高程序的运行效率 定义 : 通过应用程序利用计算机的多个核心达到同时执行多个任务的目的,一次提高计算机运行效率。 实施方案 : 多进程 多线程 并行 : 多个计算机核心在同时处理多个任务,这时多个任务间是并行关系。 并发 : 同时处理多个任务,内核在多个任务间不断的切换,达到好像都在处理运行的效果。但实际一个时间点内核只能处理其中一个任务。 进程 (Process) 定义 : 程序在计算机中的一次运行过程 程序 : 是一个可执行的文件,是静态的占有磁盘空间,不占有计算机的运行资源 进程 : 进程是一个动态过程的描述,占有计算机的资源,有一定的生命周期 同一个程序的不同运行过程是不同的进程,占用资源和生命周期都不一样。 进程的创建流程 1.用户空间通过运行程序或者调用接口发起创建进程 2.操作系统接受用户请求,开始创建进程 3.操作系统分配计算机资源,确定进程状态,开辟进程空间等工作 4.操作系统将创建好的进程提供给应用程序使用 cpu时间片 如果一个进程占有计算机核心

操作系统--进程管理(一)

北城以北 提交于 2020-01-30 05:13:16
进程 前言 系统由一组进程组成: 操作系统进程执行系统代码 ,而用户进程执行用户代码。 通过(多个)CPU在进城之间的切换(多路复用),所有这些进程都有可能并发执行, 从而操作系统能使计算机更为高效。 4.1 进程概念 进程 和 作业 这两个概念在本博文中是相同的。 4.1.1 进程 进程是执行中的程序, 这是一种 非正式的说法。 进程不只是程序代码。 进程包括 当前活动, 通过 程序计数器 的值和 处理器 寄存器 的内容来表示。 另外, 进程通常还包括 进程 堆栈段 (包括临时数据, 如方法参数、返回地址和 局部变量)和 数据段 (包括全局变量)。 程序本身只是 被动实体, 而进程是 活动实体, 它有一个程序计数器 用来表示下一个要执行的 指令和相关 资源集合。 虽然 两个进程可以与 同一程序 相关, 但是它们 被当做两个 独立的执行序列。 例如, 多个用户可运行电子邮件程序的 拷贝, 或者同一用户能调用编辑器程序的多个拷贝。 这些都是独立的进程, 虽然文本段相同, 但是数据段不同。 通常 一个进程在运行时也会产生许多进程。 4.1.2 进程状态 进程执行时会改变状态。进程状态 部分地由进程的当前活动所定义。每个进程可能处于下列状态之一: 新的 : 进程正在被创建。 运行 : 指令正在被执行。 等待 : 进程等待一定事件的出现。 就绪 : 进程等待被分配给某个处理器。 终止

进程、线程、并发执行的概念

谁说我不能喝 提交于 2020-01-29 07:09:37
于 进程 、线程、并发执行的概念,我们先来看下面的一段话: “一般来说,当 运行 一个应用程序的时候,就启动了一个 进程 ,当然有些会启动多个 进程 。启动 进程 的时候,操作系统会为 进程 分配资源,其中最主要的资源是内存空间,因为程序是在内存中 运行 的。 在 进程 中,有些程序流程块是可以乱序执行的,并且这个代码块可以同时被多次执行。实际上,这样的代码块就是线程体。线程是 进程 中乱序执行的代码流程。当多个线程同时 运行 的时候,这样的执行模式成为并发执行。” 下面我以一个日常生活中简单的例子来说明 进程 和线程之间的区别和联系: 这副图是一个双向多车道的道路图,假如我们把整条道路看成是一个“ 进程 ”的话,那么图中由白色虚线分隔开来的各个车道就是 进程 中的各个“线程”了。 ①这些线程(车道)共享了 进程 (道路)的公共资源(土地资源)。 ②这些线程(车道)必须依赖于 进程 (道路),也就是说,线程不能脱离于 进程 而存在(就像离开了道路,车道也就没有意义了)。 ③这些线程(车道)之间可以并发执行(各个车道你走你的,我走我的),也可以互相同步(某些车道在交通灯亮时禁止继续前行或转弯,必须等待其它车道的车辆通行完毕)。 ④这些线程(车道)之间依靠代码逻辑(交通灯)来控制 运行 ,一旦代码逻辑控制有误(死锁,多个线程同时竞争唯一资源),那么线程将陷入混乱,无序之中。 ⑤这些线程

进程、线程、以及它们之间的区别与联系

我的未来我决定 提交于 2020-01-28 15:06:08
一、进程简介 1.1 进程概念的引入 计算机中,CPU是最宝贵的资源,为了提高CPU的利用率,引入了多道程序设计的概念。当内存中多个程序存在时,如果不对人们熟悉的“程序”的概念加以扩充,就无法刻画多个程序共同运行时系统呈现出的特征。 多道程序设计:是指允许多个作业(程序)同时进入计算机系统的内存并启动交替计算的方法。 也就是说,内存中多个相互独立的程序均处于开始和结束之间。 从宏观上看是并行的,多道程序都处于运行过程中,但尚未运行结束; 从微观角度上看是串行的,各道程序轮流的占用CPU交替的执行。 引入多道程序设计技术可以提高CPU的利用率,充分发挥计算机硬部件的并行性。 多道程序系统中,程序具有:并行、制约以及动态的特征。程序概念难以便是和反映系统中的情况,所以引入了进程这一概念。 1.2 程序是什么 说起进程,就不得不说下程序。先看定义:程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个 静态 的概念。系统实际上是出于不断变化的状态中,程序不能反映这种动态性。 而进程则是在处理机上的一次执行过程,它是一个 动态 的概念。这个不难理解,其实进程是包含程序的,进程的执行离不开程序,进程中的文本区域就是代码区,也就是程序。 1.3 进程是什么 1.3.1 进程的概念 进程的定义: 进程是据有独立功能的程序在某个数据集合上的一次运行活动

操作系统-进程管理

我怕爱的太早我们不能终老 提交于 2020-01-28 02:11:18
进程管理 要点: 基础:进程描述及控制 策略:进程调度 实现:互斥与同步 避免:死锁与饥饿 解决:几个经典问题 进程的引入 程序的顺序执行 源代码程序,目标程序和可执行程序 程序执行:编辑,编译,链接,执行 程序的结构:顺序,分支,循环结构 程序执行的特征:顺序性,封闭性,可再现性 程序并发执行 多道程序设计技术:多个程序并发执行 程序并发执行时的特征:间断性,非封闭性,不可再现性 并发执行引发的问题: 协调各程序的执行顺序:输入数据还未全部输入内存时,计算必须等待 多个执行程序共享系统资源,程序之间可能会相互影响,甚至影响输出结果 选择那些,多少个程序进入内存执行 内存中的执行程序谁先执行,谁后执行 内存如何有效分配? 进程的概念 定义:可并发执行的程序,在一个数据集合上的运行过程 申请、拥有资源~调度(线程) 程序:静态概念,是指令和数据的集合,可长期存储 进程与程序对应关系 一个程序可以对应一个进程或者多个进程 一个进程可以对应一个程序,或者一段程序 进程的特征 动态性 并发性 独立性 异步性 引入进程带来的问题 增加了空间开销:为进程建立数据结构 额外的时间开销:管理和协调,跟踪,填写和更新有关数据结构,切换进程,保护现场 更难控制:协调多个进程竞争和共享资源如何预防;解决多个集成因为竞争资源而出现的故障 处理机的竞争尤为突出 进程的结构 组成(进程映像):程序,数据集合

操作系统进程及其调度

你。 提交于 2020-01-27 03:26:54
进程调度 进程概念 进程特征 进程与程序区别 进程与线程区别 进程状态 三态 五态 进程控制块PCB 目标 概念 非抢占式 抢占式调度 周转时间 平均周转时间 带权周转时间 典型调度算法 先来先服务fcfs 描述 特点 短作业优先调度(SJF) 描述 特点 非抢占/抢占式式优先级调度算法 描述 响应比高者优点 描述 特点 时间片轮转调度(RR) 描述 特点 多级队列调度 描述 最短剩余时间优先算法(srtf) 描述 进程概念 行为规则为程序,程序在cpu执行的活动称为进程。 进程是独立可调度的活动。 进程是 可并发、独立功能的程序关于某数据集合的一次执行过程。 进程是操作系统资源分配和调度的基本单位。 进程特征 动态 独立 并发 异步 结构性 进程与程序区别 动态、静态 程序长期保存、进程有生命周期 进程是独立运行基本单位、程序为静态文本 进程程序无一一调度关系 程序是指令有序集合、进程有几段组成 进程与线程区别 进程 线程 资源拥有者、调度基本单位 进程的运行线 用户级线程:库来支持,CPU不可是被 内核级线程 混合方式 进程状态 三态 运行:等待事件就到阻塞状态、超时到就绪状态。 就绪:调度出运行状态。 阻塞:等待事件完成转为就绪状态 五态 新建 终止 进程控制块PCB 目标 避免死锁 避免饥饿 公平 吞吐量 … 概念 非抢占式 进程主动放弃CPU 抢占式调度

笔试题错题本

一个人想着一个人 提交于 2020-01-27 02:19:36
1.以下三条输出语句分别输出什么? int main (void) { char str1[] = “abc”; char str2[] = “abc”; const char str3[] = “abc”; const char str4[] = “abc”; const char* str5 = “abc”; const char* str6 = “abc”; cout << (str1 == str2) << endl; cout << (str3 == str4) << endl; cout << (str5 == str6) << endl; return 0; } 第一个,第二个存放的是地址 第三个是指针指向的字符串 2.已知函数fun的原型为int fun(int,int,int);下列重载函数原型中错误的是 char fun(int,int); double fun(int,int,double); int fun(int,char*); float fun (int,int,int);函数重载和返回类型无关,参数列表不同即可3. 不同进程加载同一个动态库时,不能共享的部分是 RO段 RW段 ZI段 RW和ZI段 在ARM集成开发环境中: 1)只读的代码段和常量被称作RO段,是程序中的指令和常量; 2)可读写的全局变量和静态变量称为RW段,是程序中已初始化变量; 3

Linux课程设计报告【全集】

杀马特。学长 韩版系。学妹 提交于 2020-01-26 06:45:32
4个题目:进程创建及创建过程分析、进程族亲关系分析、进程间软中断通信、进程间管道通信 (欢迎评论/私信) 笔者用的是“ProcessOn免费在线作图网站”作的图。 报告格式要求:正文{中文:宋体、五号、单倍距;英文:Times New Roman、11号、单倍距} 一级标题{宋体、小三号、加粗} 二级标题{四号} 三级标题{小四} 不允许有四级标题 图命名{在图下方居中、宋体、五号、 仅允许出现2级图名 eg.3-1<空格>名称} 图中文字{宋体、小五} 表命名{在表上方居中、......} 表中文字{......} 页眉{学号<空格>姓名、宋体、小四、居中} 页脚{目录页码用罗马数字、正文页码用阿拉伯数字} 注* 参考文献格式要求、缩进要求 题目1 进程创建及创建过程分析 参看书P163~166 1.1设计目的 灵活运用fork系统调用创建进程,深入分析进程创建过程及fork系统调用返回值的含义,透彻分析父子进程代码共享、执行流程及数据集合的变化轨迹。 1.2设计要求 设计的程序能体现出父子进程执行轨迹的差别,也能体现出父子进程数据集合的差别。 1.3程序源代码 #include<stdio.h> #include<unistd.h> pid_t fork(void); int main() { printf("parent pid=%d\n",getpid()); pid_t

计算机系统进程模型概念

℡╲_俬逩灬. 提交于 2020-01-25 16:24:01
计算机系统进程概念 以下进程概念内容均来自: https://www.bilibili.com/video/av16710919?p=13 、 https://blog.csdn.net/qq_40421919/article/details/85224864 与《Linux网络编程(第二版)》 首先,我们需要区分程序与进程: 狭义上说: 进程与应用程序的区别在于:应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中。而进程则是处于动态条件下由操作系统维护的系统资源管理实体。 他们之间最大的不同之处在于(狭义上): 进程是动态的,而程序是静态的; 进程有一定的生命期,而程序时是指令的集合,本身并无"运动"的含义。没有建立进程的程序不能作为1个独立单位操作系统的认可。 一个进程只能对应一个程序,一个程序可以对应多个进程。进程和程序的关系就像戏剧和剧本之间的关系。 广义上说: 进程从用户角度来看时应用程序的一个执行过程。从操作系系统核心角度来看,进程代表的是操作系统的分配的内存,CPU时间片等资源的基本单位,是为正在运行的程序提供的运行环境。 好的,在大致区别进程和程序的不同后,我们来看看进程的相关来源与其相关知识: 来源: 早期的计算机中只支持单道程序( 单道程序设计 ),因为只有一个物理程序计数器,所以所有的程序是串行执行的,即A程序运行完成,B程序才能开始运行