操作系统学习

1.进程和线程的区别

(1)一个程序至少有一个进程,一个进程至少有一个线程
(2)进程是系统中资源分配的基本单位,线程并不拥有系统资源(利用进程的资源),仅有一点必不可少的能保证独立运行的资源
(3)不同线程之间的独立性比不同进程间的独立性低得多。因为进程不允许别的进程来访问它的资源(除了共享全局变量),但同一个进程下的所有线程可以共享进程的内存地址空间和资源
(4)线程的创建和撤销需要的系统开销明显小于进程的创建和撤销
引入进程是为了程序可以并发执行,互不影响

2.进程和线程的状态

进程

创建:在进程表中为进程建立一个进程控制块PCB
在这里插入图片描述

线程

创建:由线程创建函数创建的
在这里插入图片描述

3.进程和线程的同步通信

线程同步机制

多个相关线程可以按照一定规则共享系统资源,并能很好的相互合作,使程序的执行具有可再现性

进程同步机制的方法

(1)互斥锁
只有一个,开锁、关锁。拥有互斥锁才可以访问公共资源,所以保证公共资源不会被多个线程访问
(2)信号量(P、V操作改变,属于原子操作,不可中断)
允许同一时刻多个线程访问资源,但需要控制线程的数量
信号量>0:当前可用资源数量
信号量<0:绝对值表示正在等待该资源的进程数
P:申请

wait(s){
	while(s<=0){}
	s--;
}

V:释放

signal(s){
s++;
}

4.进程、线程结束对对方的影响

(1)进程:剩余所有线程终止执行
(2)线程:普通线程结束,对进程没有影响,主线程退出,进程结束

5.进程的调度算法

(1)先来先服务:FCFS

带权周转时间=周转时间/服务时间=(完成时间-到达时间)/服务时间
按照作业/进程进入系统的先后次序进行调度
优点:有利于长作业
缺点:不利于来的较晚的短作业

(2)短作业优先

好处:降低作业平均等待时间,提高吞吐量
缺点:对长作业不利、紧迫性作业不利

(3)高优先权-高响应比优先

优先权=(等待时间+需要服务时间)/(需要服务时间)
响应比=响应时间/需要服务时间
两者一样

6.僵尸进程

孤儿进程: 没有父进程的进程,当父进程退出时,子进程就转为孤儿进程。孤儿进程没有危害
僵尸进程: 子进程结束了,父进程没有对其回收。父进程还在运行但是子进程挂了,但是父进程却没有使用wait来清理子进程的进程信息,导致子进程虽然运行实体已经消失,但是仍然在内核的进程表中占据一条记录,这样长期下去对于系统资源是一个浪费。
解决僵尸进程:
(1)干掉父进程,转为孤儿进程。init进程会进行托管,成为父进程
(2)通过信号机制singal
子进程退出时向父进程发送SIGCHILD信号,父进程处理SIGCHILD信号。调用wait()或者waitpid(),让父进程阻塞等待僵尸进程的出现,处理完在继续运行父进程。
(3)重启系统
当系统重启时,所有进程在系统关闭时被停止,包括僵尸进程,开启时init进程会重新加载其他进程。

7.死锁

(1)什么是死锁

多个进程因竞争资源或相互通信而造成的一种僵局,都在等待对方释放自己需要的资源,但同时不去释放自己占用的资源,若无外力作用,这些进程永远无法向前推进

(2)产生原因

  • 竞争资源
  • 进程间推进顺序不当

(3)产生死锁的必要条件

  • 互斥条件:进程对分配到的资源进行排他性使用
  • 请求和等待:进程已经保持了至少一个资源,又提出了请求资源的要求,但该资源被其他进程占有,请求进程阻塞,但对已获得的其他起源不释放
  • 不抢占:进程已获得的资源,使用完之前不能被其他进程抢占
  • 环路等待:发生死锁时,必然存在进程-资源的环形链

(4)怎么解决死锁

  • 预防死锁:设置限制条件,破环四个必要条件中的一个或几个
  • 避免死锁:在资源动态分配过程中,用某种方法防止系统进入不安全状态
*银行家算法:*
a:进程申请资源
b:系统假设分配资源
c:检查分配后的系统是否安全,如果安全,确认本次分配。否则,取消本次分配并

阻塞该进程

  • 检测死锁:预先不采取任何限制,也不检查系统是否已进入不安全状态,通过设置检测机构检测出死锁后进行解除
  • 解除死锁:常用撤销或挂起一些进程,回收一些资源的方式

8.并发和并行

并发

一个时间段中有几个程序处于已启动运行到运行完毕之间,这个程序都是在一个处理器CPU上运行,时间片轮转 (一个人做多个事情)

并行

系统又一个以上CPU,不同进程可用被不同CPU执行,两个进程不去强制CPU资源,可以真正同时进行 (多个人同时做各自的事情)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值