操作系统概念黑书复习(2)第三四五章

本文深入探讨了进程和线程的概念,包括它们的状态、调度策略、通信机制以及资源管理。重点阐述了进程的生命周期、线程的优势、多线程编程的异步和同步模型,并介绍了多种调度算法,如FCFS、SJF、优先级调度和轮转调度。此外,还讨论了实时调度和多处理器环境下的调度问题,以及进程间的通信方式,如管道、命名管道和消息传递。
摘要由CSDN通过智能技术生成
  • 第三章 进程
  • 进程包括程序代码和当前活动(如程序计数器的值和处理器寄存器的内容,进程堆栈(存放临时数据,如函数参数,返回地址和局部变量),数据段(全局变量),堆等)
  • 一次只有一个进程可在处理器上运行(running),但是很多进程可处于就绪(ready)或等待(wait)状态
  • 进程控制块或任务控制块(pcb),作为进程相关信息的仓库
  • 线程(thread)
  • 进程调度器(process schedulee)选择一个可用进程(或多个)到cpu执行
  • 进程在进入系统时,会被加入到作业队列(job queue)
  • 驻留在内存上,就绪的,等待运行的进程保存在就绪队列中(ready queue)
  • 每个设备都有自己的设备队列
  • 进程调度通常用队列图表示
  • 进程通过适当的调度器或者是调度程序来执行
  • 长期调度程序,作业调度程序:缓冲池->内存,控制了多道程序程度(内存中进程的数量)
  • 短期调度程序,cpu调度程序:内存->分配cpu,必须快速,因为执行频率高
  • I/O密集型进程,CPU密集型进程
  • 中期调度程序:有交换的概念
  • 上下文切换:利用pcb实现
  • 进程树(process tree)
  • 进程标识符(pid),唯一标识每个进程
  • 子进程可以从操作系统直接获取资源,也可以只从父进程中获取资源
  • 进程创建:unix中用fork() -> exec() -> exit(),windows中用zeromemory() -> creatprocess()
  • 进程终止:终止进程的父进程能执行相应系统调用终止该进程的执行
  • 进程终止的相关原因:1. 子进程使用了超过它所分配的资源 2. 分配给子进程的任务不再需要 3. 父进程正在退出,且有级联终止(不允许没有父进程的子进程存在)
  • 孤儿进程:父进程没有调用wait()就终止
  • 僵尸进程:终止后会残留一部分数据,等待父进程的wait()接收处理
  • 进程可以是独立的,也可以是协作的
  • 协作进程需要进程间通信(ipc),ipc有两种机制:共享内存和消息传递
  • 共享内存通过缓冲区实现,无界缓冲区和有界缓冲区,生产者和消费者分为进行消息的输入和输出
  • 消息传递:send和receive 直接通信:存在有限模块化的问题 间接通信:通过邮箱或端口来发送和接收消息,接收操作必须指明从哪个邮箱或是邮箱集合中接收信息
  • 阻塞和非阻塞也称同步或异步
  • 通信进程交换的消息总是驻留在临时队列中,有零容量,有限容量,无限容量三种
  • 一个程序一个端口,一个程序里可能有多个进程
  • 套接字为通信的端点,通过网络通信的每对进程需要使用一对套接字,套接字:ip+端口号
  • rpc:远程过程调用,交换的消息具有明确的结构 1. 传输效率高(二进制传输) 2. 发起调用的一方无需知道RPC的具体实现,如同调用本地函数般调用
  • 管道(pipe),unix和windows下,普通管道的通信需要有父子关系的进程,通信结束后,普通管道不存在
  • 命名管道:通信是双向的,通信结束后命名管道还存在
  • 第四章 多线程编程
  • 每个线程是cpu使用的基本单元,包括线程ID,程序计数器,寄存器组和堆栈,它与同一进程的其他线程共享代码段,数据段和其他操作系统资源
  • 进程创建很消耗时间和资源,使用一个包括多个线程的进程更加有效
  • 多线程编程提供机制,以便更有效地使用多个计算核和改进的并发性,处理核只能同一时间处理一个线程
  • 并行:真正同时执行多个任务;并发:假象
  • 数据并行,任务并行
  • 多线程模型(用户线程和内核线程)
  • 线程库:创建和管理线程的API
  • 异步线程,父线程创建了一个子线程后,父线程恢复自身的执行,此时父线程会与子线程并发执行,每个线程均独立
  • 同步线程:父进程阻塞,等待子进程与其的连接,涉及线程之间大量数据的共享
  • 隐式多线程:将多线程的创建和管理交给编译器和运行时库来完成
  • 线程池(thread pool)
  • 信号处理:通知进程某个特定事件已发生(同步信号,异步信号)
  • 线程撤销:异步撤销,延迟撤销(更安全)
  • 线程本地存储(tls),调度程序激活(目前不太懂)
  • 第五章 进程调度
  • 进程执行包括周期进行cpu执行和I/O等待
  • 抢占调度和非抢占调度
  • 调度延迟
  • 吞吐量:在一个时间单元内进程完成的数量
  • 周转时间:从进程提交到进程完成的时间
  • 等待时间:在就绪队列中等待所花时间之和
  • 相应时间:周转时间的升级,从提交请求到产生第一响应的时间
  • 先到先服务调度(fcfs first-come first-served)
  • 最短作业优先调度(sjf shortest-job-first),也可以叫最短下次cpu执行算法,sjf调度常用于长期调度
  • 抢占sjf调度有时称为最短剩余时间优先调度
  • 优先级调度:存在无穷阻塞饥饿的问题:解决方案:老化
  • 轮转调度(round-robin rr),循环弄,时间片的时间要远大于上下文切换的时间
  • 多级队列调度:将就绪队列分成多个单独队列,每个队列有自己的调度算法,此外队列之间应有调度,通常采用固定优先级抢占调度,前台队列比后台队列具有绝对的优先
  • 多级反馈队列调度:允许进程在队列之间迁移,是最通用的cpu调度算法
  • 线程调度:调度内核级线程,有pcs和scs(不太懂)
  • 多处理器调度:多个cpu使负载分配成为可能,有非对称多处理(一个cpu处理所有调度决定,I/O处理及其他系统活动),对称多处理(smp)
  • 处理器亲和性:大多数smp系统试图避免将一个进程从一个处理器转移到另一个处理器,减少由于缓存的无效或重新填充的代价
  • 负载平衡:有推迁移和拉迁移
  • 多核处理器的调度(不太懂)
  • 实时cpu调度:软实时系统,硬实时系统
  • 中断延迟和调度延迟,且进行优先级抢占调度
  • 最早截止期限优先调度(edf)
  • 比例分享调度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值