操作系统学习2
来源:互联网 发布:安装ubuntu双系统黑屏 编辑:程序博客网 时间:2024/06/06 07:04
进程
1. 前趋图和程序执行
1> 程序执行是有一定的先后顺序的,如Pi—>Pj指的是Pi必须在PJ开始执行前完成
2> 当程序没有写后读、读后写、和写后写的冲突,则可以并行执行(系统结构中的流水线),这样可以提高系统的吞吐量和资源利用率
2. 进程
1> 是系统进行资源分配和调度的一个独立单位
2> 有并发性,动态性,独立性,异步性四个特征
3> 三种状态:就绪:已经获得处处理机的所有资源,一旦获得处理机就立即执行,放在就绪队列里
执行:已经获得处理机的正在执行的状态
阻塞:正在执行的进程由于某件事暂停的状态,放在阻塞队列
4> 后来加的两种状态:创建态:首先申请一个PCB,填写进程管理和控制的信息,在分配系统运行时所需的所有资源
终止状态:首先等待操作系统进行善后处理,最后释放PCB,将空间返还给系统
5> 进程的重要操作:挂起操作:将正在进程暂停,讲就绪的进程暂时不接受调度
激活操作:静止状态改为活动状态
3. 操作系统里的数据结构
1> 目的:为了方便操作系统进行查找设置了资源或者进程的描述、标识、状态、等信息和一批指针
2> OS管理这些资源的数据结构一般分为四类:内存表、文件表、设备表、用于进程管理的进程表
4. PCB
1> 记录操作系统所需的,用于描述进程的当前状况以及管理进程运行的全部信息
2> PCB作为独立运行的基本单位标志(其实TCB也是,只是TCB是在PCB里)
3> 能实现间断运行方式、提供进程管理和调度所需要的信息、也能实现进程的同步和通信
4> PCB中的信息:进程标识符、处理机状态、进程调度信息、进程控制信息
5> PCB的组织方式:线性:系统所有PCB都放在一张线性表中,在内存中一个特殊的位置
链接:把所有具有相同状态的PCB链接成一个队列,如就绪队列、阻塞队列、和空白队列
索引:根据进程的不同状态,建立不同的索引表,如就绪索引表、阻塞索引表
5. 进程控制
1> 操作系统内核:现代的内核都是层次性的,能实现中断处理,原语操作,时钟管理的功能,同时还能管理文件、存储器、设备、处理机等各种系统资源,进程管理就是操作系统内核的事
2> 内核允许一个进程创建另一个进程:创建者是父进程,被创建者是字进程
3> 创建进程的四个步骤:申请空白PCB、为进程分配所需的各种资源、初始化PCB、插入就绪队列
4> 进程终止原因:正常终止:进程执行完毕,异常终止:运行时发生异常,如越界、非法指令、运算错、I/O故障等,外界干预:如操作员和操作系统要解除死锁、父进程请求终止,或父进程终止(父进程一旦终止,他的所有子进程都会终止)
6. 进程的阻塞与唤醒
1> 原因:请求共享资源失败、等待某种操作完成、新数据为到达、等新任务到达
2> 阻塞过程:先暂停进程,再把PCB插入阻塞队列,这时是活动阻塞
3> 挂起和激活:挂起的进程不会接受调度,由活动态改为静止态,把进程从相应的队列删除
7. 进程同步
1> 同步涉及了临街资源和共享资源的分配,两个进程如果没有相同的资源分配问题,单处理机的环境下,可以并发执行,如果有,操作系统则提拱了相应的机制来解决共享资源和临界资源的分配
2> 进程之间存在间接地制约关系和直接制约的关系:间接是使用了共享资源,直接是进程要向另一个进程提供数据
3> 实现公布的机制:互斥、信号量机制、AND型信号量机制、信号量级、管城机制
8. 进程同步
1> 通信类型:共享存储器系统、管道系统、消息传递系统、客户机-服务器系统。
2> 共享存储器系统:把要传递的信息写进内存中的某一块,允许具有权限的进程通信
3> 管道通信:两个进程之间有一个通信文件,称pipe文件,一个进程可以读,一个进程可以写
4> 消息传递系统:将通信的数据封装在消息中,不借助共享存储区或数据结构(在网络中交做报文)直接由一个进程传入另一个进程。
5> 客户机-服务器系统:分为套接字、远程过程调用、和远程方法调用
套接字:一个通信标识的数据结构,包含了通信目的的地址,通信使用的端口号、通信网络的传输协议、进程所在的网络地址、以及针对客户端货服务程序提供不同系统调用的API,分为基于文件型的套接字和基于网络型的套接字
远程过程调用:RPC,是一个通信协议,允许一台主机的进程调用另一台主机的进程,如果是面向对象的编程,则称为远程方法调用
9. 线程的基本概念
1> 由来:由于进程是一个可以拥有资源的独立单位,又是一个可独立和分派和调度的基本单位,后来对称的多处理机的系统出现了,又把线程作为独立调度和分派的单位
2> 线程是调度的基本单位,具有并发型:允许进程中的多个线程并发执行,可以拥有独立的资源(拥有TCB,程序计数器),独立性:这一方面,线程的独立性小,进程里的线程可以共享进程里的资源、系统开销:线程的创建和终止不需要内核的参与,因此膝疼痛开销小,同时多线程还支持多处理机系统
3> 线程也有三个状态:执行,就绪,阻塞。在多线程编程中,进程已经不是可执行的实体
4> 线程有不同的实现方式:有内核支持线程:一般在多处理级的系统中,多线程可以并发执行,内核有支持线程的很小的数据结构,切换起来很快。和用户级线程(执行过程中不需要内核的参与):这种方式减少了系统的开销,而且用户的实现与OS平台无关,当然还有两种方式的组合方式:这样适应了多方面的需求。
- 操作系统学习2
- 操作系统学习2
- 操作系统学习(2)
- 操作系统原理--学习笔记2
- 操作系统学习笔记(2)
- 操作系统学习笔记_OS/2
- 计算机操作系统学习笔记2
- 【操作系统】操作系统学习总结
- 操作系统学习
- 《操作系统》学习
- 操作系统学习
- 学习操作系统
- 操作系统学习
- 操作系统学习
- 操作系统学习
- 操作系统学习
- 操作系统学习
- 操作系统学习
- LeetCode-OJ
- Codeforces Round #320 (Div. 2)
- 新浪云Git代码仓库使用入门
- spring中常被忽视的注解 @Primary
- Qt实现等待提示框(图片和movie实现)
- 操作系统学习2
- 关于java中的各种关键字
- Android笔记:bitmap转换与处理相关工具类,Bitmap与DrawAble与byte[]与InputStream之间的转换
- HIberbate四大核心组件
- SAT数学拿不了满分的原因【zhasite】
- CoreLocation定位服务
- OC学习Runtime之补充
- PostgreSQL新手入门
- 第十三章:线程