操作系统——第二章(冲刺期末版)

目录

进程与线程

2.1进程的组成——PCB

2.2进程控制

2.3进程通信

1.共享存储

2.消息传递

3.管道通信

2.4线程

用户级线程

进程与线程

2.1进程的组成——PCB

当进程被创造时,操作系统为该进程分配一个“唯一的、不重复的”PID

操作系统会记录PID,记录分配的资源(分配了多少内存,正在使用哪些I/O设备,正在使用哪些文件(操作系统对资源的管理))

进程的运行

一个程序先到硬盘里,然后要执行前,要把程序放入内存中,转到运行态,创建对应的进程,创建相应的PCB

然后CPU从内存中读取指令

要执行文件先从硬盘调到内存,会给这个文件分配内存空间,现在是创建态。

创建完成之后变成就绪态,没有空闲cpu,暂时不能运行。

正在运行就是运行态,cpu空闲会在就绪态的文件选一个进去,(如这个进程有一个指令是请求打印机,但打印机在忙,(请求等待某个事件发生)那么无法继续往下执行,操作系统就会让这个进程下cpu,进入阻塞态。

会选另一个就绪态进程在cpu运行,那么如果打印机空闲了,就让他从阻塞态又到就绪态。(如果打印机此时完成了任务,该进程就会从阻塞态到就绪态。)

那么一个进程最后执行exit系统调用,终止该进程,进入终止态,操作系统会让该进程下cpu,回收内存空间回收该进程pcb

运行态的进程结束,转为终止态,或者有除0等不可修复的操作。

2.2进程控制

因为在进程由就绪态到运行态的时候,标记会由0到1,但如果这个时候有一个中断命令,那么导致他还在就绪队列里面,但标记却变成了运行态的标记,这是不允许的。

那么我们就必须一气呵成的执行,在这过程中关中断和开中断之间,不会被中断,就可以一气呵成地执行了。

PC用于存放下一条指令的地址

IR存放当前正在执行的指令

无论哪个进程控制原语,要做的无非是:

1.更新PCB中的信息(修改进程状态)

2.将PCB插入合适的队列

3.分配/回收资源

2.3进程通信

1.共享存储

如果你要在进程P中请求打开进程Q,你肯定不可以随意去访问(例如一个软件进程读取你的qq聊天记录)这显然是不合理的,但我们使用也会有一个跳转的操作,是如何实现的呢?

建立一个共享资源区,通过映射进程的地址实现,P和Q都可以读取里面的内容

2.消息传递

2.1直接通信方式

利用发送原语和接收原语,进程P中send(目标进程,msg(地址))

2.2间接通信方式

send里面不再是放目标进程,而是到操作系统内核里面指定地信箱

3.管道通信

管道和共享的区别:共享可以读写里面任意位置,管道只能按顺序,允许多个写进程,一个读进程

注意:只要不为空都能读,只要没满都能写

2.4线程

我们不妨想一下,我们在使用qq的时候,如果只能一次执行一个程序是不是不太方便,假如我们正在视频通话但是又想发个文件再发几条信息,这是不是无法“同时”完成。那么就引入了线程的概念

下面的图就很形象地表示了这个意思:

线程成为程序执行流地最小单位

进一步提高系统的并发性

并发性的变化:原来是只能进程之间并发,你又用qq又用qq音乐。而引入线程之后,你可以在qq里面又发消息又视频,是提高了并发度的。

下面这个类比也很形象:

用户级线程

用户态采用线程的方式,而操作系统内核态只有进程

——————未完——————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值