联想 s205 使用电池时的相比较度,ati 驱动管理大旨

联想 s205 使用电池时的相比较度,ati 驱动管理宗旨

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

Catalyst Control Center

经过/线程模型

在此此前为了 xp 系统稳定,没装 ccc (不装的话在 xp 下真的稳定得多).
但近来用电池相比较多,唯有驱动没有联想电源管理器,没有 ccc
委多陈设是默许的.尤其是比较度会格外痛苦.

0. 概述

装上 ccc 后电池状态下的比较度歧正常了!
然则将来系统不稳定的话或者还得改回去. 其余安装 联想电源管理器后感到
flash 速度慢了一部分,有点卡?

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服务器

参考:CourseraHong Kong大学操作系统课程笔记

Post Author: admin

发表评论

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