操作系统知识

本文探讨了并行和并发处理的技术原理,包括虚拟处理器的空分和时分复用、操作系统调度机制(如分时、实时和批处理)、系统调用和中断处理,以及内核和微内核架构。还深入解析了进程控制、线程管理和互斥同步问题,涉及LRU页面置换策略和文件系统中的各种分配和控制方法,以及磁盘调度和I/O操作的优化。
摘要由CSDN通过智能技术生成
  • List item

第一章

并行、并发
时分复用:分成时间片取用-虚拟处理器
空分复用: 空间切换调度-虚拟内存
联机命令接口:交互式命令接口,分时实时系统
脱机命令接口: 批处理命令接口。
程序接口:系统调用,广义指令
调用发生在用户态,执行发生在内核态
多道批处理:并发(宏观串行,微观并行);没有交互
分时:交互
硬实时:必须正确
特权指令:内核态下才能执行的指令
访管指令(陷入指令):用户态下执行,切换用户态到内核态
内(指令内)中断(异常、陷入):缺页除零
外(指令外)中断:时钟中断
中断会发生变态,子程序调用不会,所以中断保存PSW,而子程序调用不用
在这里插入图片描述

输入输出指令涉及中断所以在内核态
大内核:快。内核
微内核:频繁变态,慢,易维护

操作系统结构
分层
模块化:无需消息传递,任意模块都可以调用其他模块。
宏内核
微内核:管理最小进程的内核和通信
外核:直接给用户进程分配未经抽象的硬件资源

操作系统引导:加载内核以及启动计算机的过程
虚拟机

第二章

PCB:与进程一一对应
就绪态:只缺CPU
阻塞态:自我阻塞,运行态->阻塞态,缺其他资源
结束态:先置结束态再回收资源
处理机模式切换只恢复CPU现场
进程切换涉及到环境信息的改变
管道通信:允许多个读,一个写
进程:资源的基本单位,线程:调度的基本单位,CPU分配的基本单位
线程的实现方式:
背景:内核级线程才是调度,处理机分配的基本单位。
用户级线程:不存在内核级线程->不存在线程并行等…
内核级线程:正常理解
多对一:多个用户级线程映射到一个内核级线程,一个线程阻塞,全阻塞,并发性差,不可能并行。
一对一:用户线程-内核线程。一个线程阻塞,另外线程可以运行,并行。
线程库:
中级调度:挂起-唤醒
进程调度:就绪-运行

调度参数:
周转时间(完成时刻-到达时刻);
带权周转(周转/所需要的运行时间);
等待时间(周转-所需要的运行时间);悬浮在计算机中,而没去运行的时间
响应时间(首次等待时间);

调度算法:
抢占式、非抢占式(是否是进程主动放弃?)
最短剩余时间优先(每一个新进程到来都会设计抢占)、
SJF短作业优先(旧进程完成才会涉及到决策问题)、
响应比(旧进程完成按照[(等待时间+运行时间)/运行时间)]决策:有利于短作业,考虑等待时间;
FCFS先来先服务(正常按照到达时间排):利于长作业,利于CPU繁忙型;
多级反馈(每一级的时间片用完降到下一级);

互斥同步:

临界区软件实现方法:
单标志:违背必须交替进入,空闲让进。
双标志先检查:违背忙则等待
双标志后检查:违背空闲让进,有限等待
Peterson:违背让权等待

信号量
记录型信号量:可以让权等待。
读者写者问题:读与读不互斥-第一个读者加锁,第最后一个进程解锁if(count==0)。对count又要互斥访问(信号量可以实现对代码段的互斥访问)。对于rw锁的争夺有需要一个信号量。

加粗样式
经典同步问题
生产者消费者:生产者生产,消费者消费,互斥区访问。互斥去PV在内侧。

互斥的原则:空闲让进、忙则等待、有限等待(不会造成饥饿)、让权等待(不while()只有信号量满足)。

死锁预防:破坏条件-“遇见”
在这里插入图片描述

死锁避免:银行家算法-笔法
死锁的检测:资源分配图
死锁解除:资源剥夺、撤销进程、进程回退。
死锁:进程相互等待
饥饿:资源一直分不到、

链接:链接成完整一块逻辑地址
装入:装入内存形成实际地址
可重定位装入(静态重定位): 作业连续一次
运行时动态链接(动态重定位):作业可分配到不连续存储区域

连续分配:一次连续装入,无置换概念
单一连续:整个用户区分配给一个程序
内部碎片
固定分区:分区提前设定
内部碎片
动态分区:外部碎片
最佳适应、最坏适应:按照递增/递减顺序进行排序
临近适应:每次从上次停止的地方继续
静态内碎, 动态外碎
非连续分配:分散装入不相邻的内存分区

分页存储(一维):主存以页框为基本单位,因此会产生内部碎片
逻辑地址结构:页号(多少个页表项)+页内偏移(页框大小)
页表项数据结构:(页号)(隐藏不用存):页框号+其他位,页表项大小固定所以可有类似数组的随机访问
TLB数据结构:Cache的数据部分更换为页表项的内容
越界中断:页号过大的话,会溢出该进程对应的页表
几级设计:一张页框可以装下该进程的所有页表项
综合:结合TLB(好像不考替换…Cache专门考替换)、驻留集(页框的替换)、Cache计算
最长时间:TLB+页表(一次访存)+缺页中断+TLB+Cache+主存
*TLB页表组合完成虚实地址转换,Cache主存是转换成实地址后的访存

Cache:定义:主存的副本,完成虚实地址转换后才用到
数据结构:(有效位,主存字块标记,数据(2位数组数路数*单位),脏位(WB),替换位(四路组相联2位))最多5个
映射:
直接映射<主存标记:Cache行号所需的位数:cahce块内地址所需的位数>、
组相联<标记:组号(几组而不是几路):块内地址>、
全相联<标记:块内地址>

:write-through:写回cache和主存 not-write-allocate 不调块,直接写到内存
WB:不立刻写到主存;write-allocate:调主存到cache块,再更新cache;

二级页表:逻辑地址结构:一级页号+二级页号+页内偏移
一级页号:为页表们建立一个索引,查一级页号得到一个页框,这个页框放着二级页表
二级页号:查二级页号找到实地址
物理地址:实地址+业内偏移
*页目录号相同+页表索引项相同,找到同一个物理块
*每级页表算作一次访存
*与页偏移前的全部位数全拿来做页目录项,页表项的数量是一样的

基本分段
虚拟地址结构:段号+段内偏移
段表项数据结构:段号:段长:实页号
*每个段表项大小仍然一样,知道段号即可以随机访问段表
*每段段长不一样(页表是页框大小一样,这个是不一样),不能由虚拟地址直接得到段号,段内地址
*比较机制仍是看段号是否过大,超过段表范围(与页表的比较机制一致,毕竟项相等)
外碎片

段页式(参照二级页表(二级页表的页表项数目不一致的…))
概念:每个进程一张段表,每个段号一张页表(一段有着几个页)
虚拟地址结构:段号+页号+页内偏移
段表项的数据结构:段号:页表长度:页表始址
页表项的数据结构:页号:块号
映射:查段号得到一张页表,再查页表由页号完成最终的虚实转换
*段号用户可见,页号用户不可见
*段表访存一次,页表访存一次,得到实地址访存一次
*页式:内部碎片,段式:外部碎片,易于管理、分享、保护。固定的内碎,动态的外碎

虚拟存储器
内存映射文件:允许一部分虚拟内存与文件进行逻辑关联
多次性:作业分多次调入内存
对换性
虚拟性:逻辑扩充容量
*建立在离散分配的内存管理之上 分页分段

页面置换策略:
LRU:设置一个访问字段
要发生置换时从当前向前找,离得最远的那个
CLOCK:淘汰访问位 0 和LRU效果一样?
改进型CLOCK:访问位 修改位(更重要)
替换顺序(0.0)(1,0)(0,1)(1,1)最佳修改的放后边

驻留集:给一个进程分配的物理页框数量
页面分配:固定分配局部置换
可变分配全局置换
可变分配局部置换:先自己鼓捣,实在不够新分一点给你

抖动:页面频繁换入换出
原因:分配的驻留集太小,置换算法不当:
解决:扩大内存,撤销部分程序
在这里插入图片描述

*交换区相关都不对

工作集:往前数格子,去重

第四章

文件控制块:(文件名:索引节点指针) 文件目录项

打开文件表:维护所有打开文件的信息。

目录结构:单级目录:不允许重名,不适合多用户
两级目录:可重名
图示:
无环图目录:利于文件共享
多级目录(树形目录):当今用的
文件共享:
索引节点(硬链接):共享计数器count,count!=0不能删除,快。
符号链:软连接,随意删除,慢。

文件保护:存取控制矩阵,长方形

文件的操作:
创建:分配空间,创建目录项。文件的全局结构layout
截断文件:文件长度属性改变,而其他属性不变,释放文件空间,保留目录项。

系统调用
open():从目录中将目录项复制到打开文件表,返回一个指针指向该目录项。

层次结构
应用程序->逻辑文件系统(元数据信息-除了文件内容以外的所有文件系统的结构)->文件组织模块(文件及其逻辑块和物理块)->基本文件系统(像设备驱动程序发送命令)->I/O控制(设备驱动程序、中断处理程序)->设备

引导控制块:引导操作系统
卷控制块:分区的信息,空闲的FCB指针。

硬链接软链接

虚拟文件系统
将文件的通用操作和实现分开
唯一表示网络上的文件
不知道他正在处理的是什么对象

文件的分配方式:

连续分配(文件名:起始地址:长度) 随机访问,不易删改,快,外碎。

链接分配

隐式链接(文件名:起始块:终止块)指针位数计算文件大小,刨除指针算文件长度。顺序访问,无外碎。

显式链接(文件名:起始块号)->FAT(内存中,把链接存在FAT)先查的起始块号,顺着FAT慢慢查。
不用像隐式连接一样,读了一个一盘块,才知道下一块在哪,使用FAT实现了随机访问
一个磁盘一张FAT

索引分配(文件名:该文件索引表地址)
每个文件都有自己的索引块,索引块的第i个条目指向文件的第i个块。随机访问,无外碎
索引表(逻辑号:物理号)
随机访问,方便增删
索引分配的文件长度
在这里插入图片描述

空闲文件管理:
空闲表法 (序号:第一个空闲块号:长度)
位视图:一个二进制位表示一个盘块

磁盘

RAID:0 条带化,只提高速度
1 镜像,容量减少一半
2 海明码
3 位交叉
4 块交叉
5 无独立

磁盘格式化:
低级/物理格式化:扇区
逻辑格式化:创建文件系统

地址表示:(柱面号:竖着的:盘面号:横着的:扇区号)
读写时间计算:定位磁道+转半圈定位扇区+一个扇区读写

在这里插入图片描述

计算磁盘物理地址:设备驱动层
用户权力:设备独立性
数据转换:用户层。编译阶段完成的?

块设备接口:为磁盘驱动程序和其他基于块设备的访问,规定了所需的各个方面。read() write()
字符流接口:get() put()
网络设备接口:使应用程序创建一个套接字,连接本地套接字到远程地址。

阻塞I/O:通过阻塞系统调用挂起应用程序。
非阻塞I/O:不会很长时间停止应用程序的执行。

磁盘调度:
FCFS公平。
SSTF:每次的寻道时间最短,饥饿。
LOOK与C-LOOK(大移),SCAN也是LOOK。
SCAN不考虑局部性

磁盘初始化:
低级格式化:扇区采用数据结构、校验码
分区:C盘
逻辑格式化:文件管理系统

SPOOLING

新大纲概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值