Deadlock死锁 Pi为进程,Rj为资源Pi请求资源Rj:Pi拥有资源Rj: 不死锁:P3执行完后释放R3,P2就可以申请到R3,P2执行,P2执行完之后释放R1,P1就可以申请到R1执行 死锁:P3申请R2,R2被P1持有,P3无法执行,导致P2和P1无法执行 图里面没有环则不会死锁 图里面有环,如果一个资源里只有一个实例,则会死锁;如果一个资源里有多个实例,则不一定会死锁 Hold and Wait持有等待 Notes > 课程 > 大三(上) > 操作系统 #操作系统
Memory内存 程序需要从硬盘读取到内存才能执行CPU可以直接访问的只有内存和寄存器内存单元只看到地址流和读写请求内存访问需要很多周期,导致停顿(stall)Cache(高速缓存)设置在内存和CPU寄存器之间 指令和数据到内存地址的地址绑定可以发生在三个不同的阶段编译时:如果内存位置先验已知,则可以生成绝对代码;如果起始位置发生变化,则必须重新编译代码加载时间:如果编译时内存位置未知,则必须生成可重定位代码执行时 Notes > 课程 > 大三(上) > 操作系统 #操作系统
Monitor管程 Monitor每个monitor都有一个互斥锁,monitor中只能有一个线程处于活动状态 Condition variablescondition是一个类,实现了以下函数: condition.wait() condition.signal() condition.broadcast() 管程管程是一种特殊的软件模块,有这些部分组成: 局部于管程的共享数据结构说明 对该数据结构进行操作的一 Notes > 课程 > 大三(上) > 操作系统 #操作系统
Processes进程 为什么我们需要同时运行多个程序?称为“多道程序设计” 因为它会提高 CPU 利用率I/O 密集型程序大部分时间都在等待 I/O,因此最好让 CPU 忙于其他任务 多道程序设计:在一个物理地址空间中容纳多个进程 每个进程可以是 I/O 密集型或 CPU 密集型 混合使用 I/O 密集型和 CPU 密集型进程会很好 目标是提高 CPU 利用率 调度程序决定哪个进 Notes > 课程 > 大三(上) > 操作系统 #操作系统
Scheduling调度 调度有两个方面:1)如何从一个进程切换到另一个进程2)下一个应该运行什么进程机制:上下文切换(如何切换)机制:抢占(保持控制)策略:调度(切换到哪里) 上下文切换是一种允许操作系统存储当前进程状态并切换到另一个先前存储的上下文的机制。上下文切换的原因:进程完成/退出进程执行缓慢的硬件操作(例如,从磁盘加载)并且操作系统切换到另一个就绪任务硬件需要操作系统帮助并发出中断操作系统决定抢占该任 Notes > 课程 > 大三(上) > 操作系统 #操作系统
Semaphores信号量 sleep(): 暂停线程,把状态改为BLOCKEDweakup(): 唤醒另一个线程,把其状态改为READY semaphore(信号量):一个非负整数,记录过往weakup的次数 或者一个可负整数 信号量机制信号量是一个变量,用来表示系统中某种资源的数量原语是一种特殊的程序段,其执行只能一气呵成,不可被中断。一对原语:wait(S)和signal(S),S为信号量,简称为P(S)和V(S) 整 Notes > 课程 > 大三(上) > 操作系统 #操作系统
Threads线程 进程是最小资源分配单位线程是最小执行单元 多线程服务框架 单线程与多线程进程:线程共享进程中的数据,进程为每个线程创建栈和寄存器 Concurrency并发:在单核系统上Parallelism并行:在多核系统上 操作系统会为每个内核级线程建立相应的TCB(线程控制块),通过TCB对线程进行管理 可将多个TCB组织成一张线程表 Race Conditions竞争条件线程分为send和receive Notes > 课程 > 大三(上) > 操作系统 #操作系统
内存 大题:逻辑地址转物理地址 动态分区分配算法: 首次适应算法 临近适应算法 最佳适应算法 最坏适应算法 页面置换算法 最佳置换算法 先进先出页面置换算法 最近最久未使用置换算法 简单时钟置换算法 改进型时钟置换算法 求fat表大小 磁盘调度算法 先来先服务算法 最短寻找时间优先算法 扫描算法(电梯调度算法) 循环扫描算法 Notes > 课程 > 大三(上) > 操作系统 #操作系统
操作系统 老师声音小,需要坐前排 40分平时作业(gitee),60分期末 TODO: 加入gitee仓库 虚拟换CPU:操作系统需要以某种方式在看似同时运行的许多程序之间共享物理CPU 基本思想:运行一个程序一小会儿,然后切换到运行另一个程序,依此类推 分时CPU - 虚拟化就实现了! 都具有用于在内存和寄存器之间移动项目的加载和存储指令 将位于内存中某个地址的字加载到寄存器中 将寄存器的内 Notes > 课程 > 大三(上) > 操作系统 #操作系统
SQL中级 4.1 Joined Expressionsjoin是笛卡尔积,它要求两个表中的元组匹配,用于from子句中的子查询表达式。使用 join ... on子句可以指定任意的连接条件。on条件允许在参与连接的关系上设置通用的谓词。该谓词的写法与where子句谓词类似。 Natural join operations自然连接将表中具有相同名称的列进行匹配 Natural join特征: 关联的表具有 Notes > 课程 > 大三(上) > 数据库 #数据库 #SQL