操作系统进程线程学习笔记


一、什么是线程,什么是进程?

线程是CPU调度和分派的基本单位,不拥有系统资源(–线程ID,TCB线程控制块)
进程是资源调度的基本单位,拥有系统资源,(PCB进程控制块)

二、进程控制通过什么方式?

通过操作系统核心态原语实现(原语特点:不可中断),这样的操作叫做原子操作。
原语采用开关中断实现
【阻塞原语和唤醒原语两两会同时出现】

关于进程

各进程内存地址空间相互独立;
进程不能直接访问地址空间,可以互斥访问共享空间

管道:
特点:半双工通信,互斥访问
用于连续读写进程,没写满不允许读操作,没读完不许写操作,读操作只能有一个

间接通信:“信箱”

关于线程

用户级线程:
线程管理由应用程序完成
内核级线程:
线程管理由操作系统内核完成

【内核级线程才是CPU分配的单位】
用户级线程与核心态线程有三种关系:
多对一(一为核心级线程);一对一(并发性强:开销大);多对多

什么是调度?

调度就是遵循某种规则来决定顺序的进行
作业调度:

调入建立PCB
调出撤销PCB

中级调度:
提高内存利用率,系统吞吐量
操纵系统内核临界区处理临界资源会影响调度

关于CPU利用率的计算

CPU利用率=T(cpu忙碌时间)/T(总时间)

作业周转时间=完成时间-提交时间

T(带权周转)=T(作业周转)/T(实际运行)
调度算法:
FCFS;先来先服务
等待时间越长,优先级越高;是非抢占式算法
SJF;
短作业优先算法
运行时间越高,优先级越低;
会造成进程“饥饿”:某个进程一直分配不到所要的资源
HRRN
运用时间片轮转技术,是抢占式算法,通过时钟中断实现
优先级调度算法有:
多级反馈队列调度算法:
根据优先级从高到底和时间片从高到低分为第一级队列,第二级队列,第三级队列。。。。。

进程的互斥

进程对临界资源的互斥访问
单标志法:
一个进程赋予权力给进程
实现方式(eg:int turn=0;)
双标志法:
flag[2]数组实现
PeterSon算法,(不符合“让权等待”)
【补充】

【补充】
中断屏蔽的实现
····
关中断
临界区
开中断
····

TestAndSet指令:

其实就是同步的是手段。textandset就是传入两个值与一个内存地址,让比较值与内存地址中的值相比较,如果一样就交换,不一样就不交换。返回值是内存地址中的值,整个过程是原子的。【Swap指令通过硬件实现的】

信号量机制:(PV操作)P和V是来源于两个荷兰语词汇,P—— passeren,中文译为"通过";
V—— vrijgeven,中文译为"释放"。

而信号量则是当生产者写入后会设置资源数(也就是信号量),使其增加。以此来提醒消费者来读取,而当消费者读取后会将信号量减少。信号量有一个当前值与最大值。当前值不能小于零或者大于最大值,这就保证了reader不会读取无效内存,writer不会越界写值,发生缓冲区溢出。
wait(S)——P
sign(S)——V
S整形信号量代表某种资源数量(缺点:让权等待)

记录型信号量【实现系统资源的“申请”与“释放"】
int value 剩余资源
queue等待队列,
block()
wake()

信号也可以实现进程的互斥

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值