操作系统笔记

概述

资源的管理者:处理机管理、存储器管理、文件管理、设备管理
向用户提供服务:命令接口、程序接口、GUI
特征:并发、共享、虚拟、异步
核心态、用户态
操作系统内核:时钟管理、中断处理、原语、系统资源管理(进程管理、存储器管理、设备管理)
中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。内中断(陷阱、故障、终止)、外中断(I/O中断请求、人工干预)
用户态->核心态的唯一途径是中断。
核心态->用户态的切换是通过执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态”
系统调用(核心态) 应用程序通过系统调用请求操作系统的服务

处理机管理

进程和线程

进程:系统进行资源分配的独立单位,由程序段、数据段、PCB组成。动态性、并发性、独立性、异步性、结构性
PCB:进程描述信息(进程标识符PID、用户标识符UID)、进程当前状态、优先级、资源分配清单、各种寄存器值
进程状态:运行态、就绪态、阻塞态。
就绪态->运行态:进程被调度。运行态->就绪态:时间片到或被高优先级进程抢占。运行态->阻塞态:等待系统资源或某事件。阻塞态->就绪态:资源到位
进程控制:用原语实现。原语执行期间不允许中断。更新PCB信息,将PCB插入合适的队列、分配/回收资源。
进程通信:共享存储(基于数据结构、基于存储区,访问互斥)、消息传递(直接通信方式:直接挂到接收进程的消息缓冲队列上、间接通信方式:先发送到中间实体如信箱)、管道通信(半双工通信,访问互斥,写满才能读,读空才能写)。

线程:程序执行的最小单位。“轻量级进程”,几乎不拥有系统资源。不仅是进程之间,进程内的各线程之间也可以并发,提升了系统的并发度。线程并发,同一进程内的线程切换不需要切换进程环境,带来的系统开销小。
线程实现方式:用户级线程(管理工作由应用程序负责,用户态)、内核级线程(由操作系统内核管理,核心态)、组合方式
线程安全:当且仅当被多个并发线程反复地调用时,它会一直产生正确的结果。

处理机调度

调度:高级调度(作业调度,外存->内存)、中级调度(内存调度,挂起->调回内存)、低级调度(进程调度,就绪->运行)
进程切换:对原来运行进程各种数据的保存,对新的进程各种数据的恢复。
调度算法:先来先服务(FCFS)、短作业优先(SJF)、高响应比有限(HRRN)
临界资源:一个时间段内只允许一个进程使用的资源。
互斥:空闲让进,忙则等待,有限等待(不会饥饿),让权等待(释放处理机)
进程互斥:软件:单标志法、双标志先检查、双标志后检查、Peterson算法。硬件:中断屏蔽、TS指令、Swap指令
信号量机制:一对原语wait(S)、signal(S),简称P、V操作。记录型信号量:P操作S.value–,block,V操作S.value++,wakeup
信号量实现进程互斥:设置互斥信号量mutex,初值为1,临界区之前执行P(mutex),临界区之后执行V(mutex)
信号量实现进程同步:设置同步信号量S,初值为0,操作1之后执行V,操作2之前执行P
管程:更方便地实现进程互斥和同步。定义共享数据和访问“入口”,可以设置条件变量和等待/唤醒操作。互斥特性由编译器实现。如java的synchronized
产生死锁的条件:互斥条件(对互斥资源的争抢)、不剥夺条件、请求和保持条件(进程已经保持了至少一个资源还请求新的资源)、循环等待条件(资源的循环等待链)
预防死锁:将互斥资源改造为允许共享使用,如SPOOLing技术;进程主动释放、高优先级剥夺;静态分配,即进程运行前一次申请完所需全部资源;顺序资源分配法
避免死锁:银行家算法,分配资源之前先判断这次分配是否会导致系统进入不安全状态
死锁的检测和解除:资源分配图,结点:进程、资源,边:请求、分配,如果能消除所有边说明没发生死锁,化简资源分配图后还连着边的就是死锁进程;解除方式:挂起某些死锁进程并抢占它的资源,终止进程法,进程回退法

内存管理

程序执行前需要先放到内存中才能被CPU处理
编译:由编译程序将用户源代码翻译成若干个目标模块(高级语言翻译为机器语言).o
链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块(.exe)
装入:由装入程序将装入模块装入内存运行
内存管理:内存空间的分配与回收(连续分配,分页、分段、段页式)、内存空间的扩充、地址转换(逻辑地址到物理地址)、存储保护
基本分页存储管理:把内存分为一个个相等的小分区,再按照分区大小把进程拆分成一个个小部分。将内存空间分为一个个大小相等的分区(页框),将进程的地址空间分为与页框大小相等的一个个区域,成称为页/页面,与内存的页框一一对应。

分页分段
对用户不可见可见
地址空间一维二维
优点内存空间利用率高,不会产生外部碎片方便按照逻辑模块实现信息的共享和保护
缺点不方便按照逻辑模块实现信息的共享和保护如果段长过大,为其分配很大的连续空间很不方便;会产生外部碎片

段页式管理:将进程按逻辑模块分段,再将各段分页,逻辑地址由段号、页号、页内地址组成
快速缓存:将近期会频繁访问的数据放到更高速的存储器中
虚拟内存:程序不需全部装入即可运行,运行时根据需要动态调入数据,若内存不够,还需换出一些数据。访问信息不在内存时,从外存调入内存(请求调页);内存不够时,将暂时用不到的信息换出到外存(页面置换)
缺页中断:内中断(故障),找到页表项后检查页面是否已在内存,若没在内存,产生缺页中断,需要将页面调入内存,有必要时还需换出页面
先进先出置换算法(FIFO):淘汰最早进入内存的页面。实现简单,性能差
最近最久未使用置换算法(LRU):性能好,算法开销大
时钟置换算法(CLOCK):为每个页面设置访问位,再将页面通过链接指针连成一个循环队列,当某页被访问时设置为1,淘汰找到的第一个0页

文件管理

文件属性:文件名、标识符、类型、位置、大小、保护信息……
顺序文件(按关键字顺序排列)、索引文件(索引表,每个记录对应一个表项)、索引顺序文件(记录分组,每组对应一个索引表项)
一个文件对应一个FCB,目录结构:单级、两级、多级、无环图,索引结点
文件物理结构:连续分配、链接分配(隐式链接:每个盘块存有指向下一盘块的指针、显式链接:文件分配表FAT)、索引分配(建立索引表)
创建文件(create系统调用)、删除文件(delete系统调用)、打开文件(open系统调用,打开文件表)、关闭文件(close系统调用)、读文件(read系统调用)、写文件(write系统调用)
文件共享:基于索引结点(硬链接,索引结点设置一个链接计数变量count,用于表示链接到本索引结点上的用户目录项数)、基于符号链(软链接,Link类型的文件,记录文件存放路径(桌面快捷方式))。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值