【QQ红包】手机发抢不到的口令红包

by admin on 2019年1月30日
  • 那措施95%的人都抢不了

操作系统学习笔记—-进度/线程模型

  1. 在QQ输入框输入一个神情,例如:阴险那多少个表情
  2. 将表情剪切到口令红包的口令里
  3. 那儿口令里的不得了表情表情变成了标记
  4. 将标志删去一格,然后全选、复制
  5. 下一场重回到QQ输入框粘贴
  6. 然后回车
  7. 下一场面有复制到QQ红包口令粘贴
  8. 发红包

经过/线程模型

 

0. 概述

 

0.1 进度模型

多道程序设计
进度的概念、进度控制块

进度情况及转换、进度队列
经过控制—-进度创建、撤废、阻塞、唤醒、…

 

0.2 线程模型

何以引入线程
线程的组合
线程机制的贯彻
用户级线程、大旨级线程、混合形式

 

1. 进度的基本概念

 

1.1 多道程序设计

同意五个程序同时进入内存运行,目的是为着提升CPU系统成效

 

1.2 并发环境与并发程序

现身环境
一段时间间隔内,单处理器上有三个货多个以上的先后同时处于早先运行但不曾终结的图景,并且次序不是事先确定的。

并发程序
在产出环境中执行的顺序

 

1.3 进程的概念

定义:Process
进度是拥有独自作用的程序关于某个数据集合上的几回运行活动,是系统举办资源分配和CPU调度的独门单位。

进度又尽责责

先后的一次实践进度
是正在运转程序的肤浅
对CPU的虚幻,将一个CPU变幻成多少个虚拟的CPU
系统资源以进程为单位分配,如内存、文件、…
每个进程具有独自的地点空间
操作系统将CPU调度给必要的进程

查阅当前系统中有微微个经过:
Linux:ps命令

 

1.4 进度控制块PCB

PCB:Process Control Block
又称:进度描述符、进程属性
操作系统用于管理控制进程的一个专程数据结构
笔录进度的各类质量,描述进程的动态变化进度

PCB是系统感知进度存在的唯一标志
进度与PCB是逐一对应的

进度表:所有进度的PCB集合
进度表的轻重缓急相似固定
并发度:最多帮忙多少个进度

PCB的始末包涵如何
进程描述消息
经过控制音讯
所怀有的的资源和选取情形
CPU线程消息

进程描述音信
经过标识符(process ID)唯一,平日是一个整数
进度名,经常给予可执行文件名,不唯一
用户标识符(user ID)
经过组关系

进度控制音信
现阶段景色
优先级
代码执行入口地址
程序的磁盘地址
运转总结音信(执行时间、页面调度)
经过间一块和通讯
进度的队列指针
经过的音信队列指针

所享有的的资源和使用状态
虚拟地址空间的境况
打开的公文列表

CPU现场音信
寄存器值(通用寄存器、程序计数器PC、程序状态字PSW、栈指针)
指向该进度也标的指针

Linux:task_struct

 

2. 经过情状及气象转换

 

2.1 进度情况

运行态:进度占用CPU,并在CPU上运行
进程从稳妥状态被调度后,进度进入运行情况

就绪态:进度已经准备好,已分配到所需资源,只要分配到CPU就可以即刻运行

等待态(或阻塞态):正在履行的长河由于某些事件(I/O请求,申请缓存区败北)而临时不可能运转,进程遭到阻塞。
在经过等待的规格知足时,进入就绪状态等待系统调用

创建态
已成功创造一个进程所必不可少的干活,PID、PCB
但从没同意实施该进度,因为资源有限

终止态:进程执行到位后,进程进入终止态
可落成部分数量总计工作
资源回收

挂起态(Suspend):用于调节负载
经过不占用内存空间,其进度印象交流来磁盘上保存

 

2.2 进度景况转换

  1. 就绪 –> 运行:调度程序接纳一个新的长河运行
  2. 运行 –> 就绪:唯有三种情形

    1. 运行进度用完了时光片
    2. 一个高优先级进度进入就绪状态,抢占正在运行的进度
  3. 运行 –> 等待:当一个历程等待某个事件时有暴发时
    1) 请求OS服务器
    2) 对资源的拜访尚不可以展开
    3) 等待I/O结果
    4) 等待另一个进程提供新闻

  4. 等待 –> 就绪:所等待的轩然大波时有爆发了

  5. 以下二种景况转换不容许暴发
    伺机 –>
    运行:操作系统在进行调度时不会从绿灯(等待)队列进行精选进度执行,而是从稳妥队列中甄选。
    就绪 –>
    等待:就绪态即使准备妥当,不过还并未履行,不可能进去等待态。

图片 1

 

2.3 进程意况模型

图片 2

图片 3

图片 4

浅度睡眠可以采纳信号,而深度睡眠不可以吸纳信号

———————————————————原创————————————————-

2.4 进程队列

进度队列:
操作系统为每一类经过建立一个或多少个种类
队列元素为PCB
陪伴过程景况的改动,其PCB从一个系列进入另一个种类

等待态队列,多个等待队列等待的尺度差距
就绪态队列也得以是七个

图片 5

3. 进程控制

进度控制操作已毕进度各状态之间的转移,由拥有一定功效的原语完毕。

原语(Primitive)
形成某种特定功用的一段程序,具有不可分割或不足中断性。即原语的实践必须是一而再的,在执行进度中不允许被搁浅。—-原子操作(atomic)

3.1 进度的始建

给新历程分配一个唯一标识以及经过控制块

为经过分配地址空间

早先化进度控制块
安装默许值(如:状态为New,…)

安装相应的队列指针
如:把新进程加到就绪队列链表中

3.2 进程的吊销

收回进度所占有的资源
闭馆打开的文书、断开互连网连接、回收分配的内存

裁撤该进度的PCB

3.3 进度阻塞

处于运行情状的进度,在其运行进程中希望某一时间暴发,如等待键盘输入、等待磁盘数据传输完毕、等待其余进度发送音讯。当被守候的风云未暴发时,由进度自己实施阻塞原语,使自己由运行态变为阻塞态。

wait();

3.4 Unix的多少个经过控制操作

fork() 通过复制调用进程(父进程)来建立新的经过,是最大旨的历程建立进度

exec()
包罗一多级系统调用,它们都是经过用一段新的程序代码覆盖原来的地点空间,完结进程执行代码的转移

wait() 提供起码进度同步操作,能使一个经过等待其余一个经过的竣事

exit() 用来终止一个进程的运行

3.5 Unix的fork()实现

为子进度分配一个悠然的经过描述符
proc结构

分配给子进度唯一标识pid

以几次一页的不二法门复制父进度地址空间
坏处:Unix中从父进度复制到子进程的始末,好多都不必要。Linux选取了写时复制技术COW加速创制进度Copy-On-Write

从父进度处继承共享资源,如打开的文件和当前工作目录等

将子进度的状态设为就绪,插入到妥善队列

对子进度再次来到标识符0

向父进度再次来到子进程的pid

#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    pid_t pid;

    pid = fork();    // 创建一个子进程
    if (pid < 0) {    // 出错
        fprintf(stderr, "fork failed\n");
        exit(-1);
    } else if (pid == 0) {    // 子进程
        execlp("/bin/ls", "ls", NULL);
    } else {
        wait(NULL);    // 父进程等待子进程结束
        printf("Child process complete\n");
        exit(0);
    }

    return 0;
}

图片 6

父进度空间fork()再次回到的是子进度的PID号。
子进程空间fork()重回的是0

4. 深刻精通进度概念

4.1 关于进度的议论

经过的分类

系统进程:操作系统为管理一些资源而设定的进程,特点是优先级比较高,相对于用户进程优先被调度
用户进程

前台进程:用户打交道的进程
后台进程:操作系统初始化后设定的进程,在后台为客户提供服务

CPU密集型进程:需要大量计算的进程,如:游戏、画面渲染等
I/O密集型进程:经常需要输入输出、读盘等操作

进度层次结构

Unix进程家族树:init为根

4.2 进程与程序的界别

进程更能精确刻画并发,而先后不可能
次第是静态的,进度是动态的
经过有生命周期,有出生有没有,是一时半刻的;而先后是相持短时间的
一个顺序可对应多个进度
进程具有开创其他进度的出力,而先后尚未

4.3 进度地址空间

操作系统给每个进度都分配了一个地方空间
种种进程有和好单独的地方空间,分化的地址空间的地址是虚拟地址

图片 7

4.4 进程印象(Image)

对过程执行活动全经过的静态描述:
由进度地址空间内容、硬件寄存器内容及与该进程有关的基础数据结构、内核栈组成。

用户相关:进度地址空间(包蕴代码段、数据段、堆和栈、共享库…)
寄存器相关:程序计数器、指令寄存器、程序状态寄存器、栈指针、通用寄存器等的值
水源相关:
静态部分:PCB及各样资源数据结构
动态部分:内核栈(差别进度在进入基础后使用不一样的内核栈)

4.5 上下文(Context)切换

将CPU硬件状态从一个历程换到另一个历程的经过称为上下文切换。

进程运行时,其硬件状态保存在CPU上的寄存器中
寄存器:程序计数器、程序状态寄存器、栈指针、通用寄存器、其他控制寄存器的值

先后不运行时,那么些寄存器的值保存在进度控制块PCB中;当操作系统要运行一个新的进程时,将PCB中的相关值送到对应的寄存器中。

5. 线程

5.1 线程的引入

布局服务器的三种办法

模型 特性
多线程 有并发、阻塞系统调用
单线程进程 无并发、阻塞系统调用
有限状态机 有并发、非阻塞系统调用、中断

付出的考虑

经过有关的操作:
创办进程
收回进度
进度通讯
经过切换

光阴/空间开发大,限制了并发度的升高。

线程的支付小
创立一个新线程话费时间少,取消也是
四个线程切换成本时间少
线程之间相互通讯无须调用内核(同一进程内的线程共享内存和文件)

属性的设想

七个线程,有的计算,有的I/O

多少个电脑

5.2 线程的基本概念

进度的四个为主品质
资源的拥有者—-进度仍然资源的拥有者
CPU调度单位—-线程继承了这一品质

线程:进度中的一个运作实体,是CPU的调度单位,有时将线程称为轻量级进度。

在平等进度伸张了八个执行体系(线程)。

5.3 线程的属性

线程:

有标识符ID
有状态及气象转换
不运行时索要维护的上下文
有上下文环境:程序计数器等寄存器
有友好的栈和栈指针

同一个历程的例外线程,共享所在进度的地点空间和其余资源

可以创立、取消另一个线程
程序开始是以一个单线程进度格局运行的。

6. 线程机制的落到实处

6.1 线程的兑现

用户级线程

在用户空间建立线程库:提供一组管理线程的经过。

运作时系统:已毕线程的管理工作(操作、线程表)

基本管理的要么经过,不知道线程的存在

线程切换不必要内核态特权

多线程编程接口,以线程库形式提要求用户,pthread

pthread_create()
pthread_exit()
pthread_join()
pthread_yield()

6.2 用户级线程小结

优点
线程切换快
调度算法是用用程序一定的
用户级线程可运行在任何操作系统上(只须求完成线程库)

缺点
根本只将总计机分配给进程,同一进度中的三个线程无法而且运转与多个CPU上
一大半种类调用是阻塞的,因而,由于基础阻塞进度,所以经过中拥有线程也被卡住

6.3 大旨级线程

基础管理所有线程,并向应用程序提供API接口
根本维护进度和线程的上下文
线程的切换要求内核协理
以线程为根基举行调度:
如:Windows

掺杂模型

线程成立在用户空间形成
线程调度等在焦点态达成
多少个用户级线程多路复用三个内核级线程

7. 本章重点总计

7.1 进程

并发性 任何进程都足以与其余进度一起前进拉动履行
动态性 进度是正在履行顺序的实例
进度是动态暴发、动态消亡的
进程在其生命周期内,在三种为主情况之间转移
独立性 进程是资源分配的一个独自单位
各进程的地方空间相互独立
交互性 指进度在执行进度中恐怕与其余进程爆发直接或直接的关联
异步性 每个进度都以其相对独立的、不可预言的进程前进拉动
进度映像 程序 + 数据 + 栈(用户栈、内核栈) + PCB

7.2 线程

八线程应用场景
线程基本概念、属性
线程落成机制

可再入程序(可重入)
可被七个经过同时调用的次第,具有下列性质:
是纯代码的,即在实施进度中我不转移;调用它的进程应该提供数据区

8. 第一概念

进程、进度情状及气象转换、进度控制、进度控制块(PCB)、进度地址空间、进度上下文环境
线程、线程属性、用户级线程、焦点级线程、pthreads、可重入程序、原语、Web服务器

参考:Coursera上海大学操作系统课程笔记

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图