操作系统 |
您所在的位置:网站首页 › 进程管理和内存管理 › 操作系统 |
文章目录
一、操作系统的存储管理1、内存空间的分配与回收1)原因和作用i、原因ii、作用
2)分配和回收i、内存分配过程a、单一连续分配b、固定分区分配c、动态分区分配[1]方式:
[2]动态分区分配算法
ii、内存回收的过程
2、段页式存储管理1)页式存储管理i、页面ii、页式存储管理方式iii、存在问题iv、页表-记录进程逻辑空间与物理块的映射v、多级页表
2)段式存储管理i、段表
3)段页式存储管理i、段式与页式存储管理的对比ii、段页式存储管理a、段式、页式的优点结合b、段页式存储管理逻辑c、三种存储方式的具体表现
3、虚拟内存1)虚拟内存概述i、需要虚拟内存的原因ii、技术
2)程序的局部性原理i、概念ii、逻辑分析
3)虚拟内存的置换算法i、缓存的替换时机ii、不同替换时机的策略对比
4、Linux的存储管理1)Buddy内存管理算法(伙伴系统)i、概述a、页内碎片b、页外碎片
ii、使用的原则a、内存分配原则b、伙伴系统
iii、算法的具体流程
2)Linux交换空间i、概述ii、作用iii、虚拟内存和Linux交换空间的对比
二、操作系统的文件管理1、文件的逻辑结构1)逻辑结构的文件类型i、有结构文件ii、无结构文件
2)顺序文件3)索引文件
2、辅存的存储空间分配1)辅存的分配方式i、连续分配ii、 链接分配a、隐式链接b、显式链接分配
iii、索引分配
2)存储空间管理i、空闲表ii、空闲链表iii、位示图
3、目录管理1)目录树
三、Linux文件1、Linux文件的基本操作1)Linux目录i、目录描述ii、相对路径、绝对路径
2)Linux文件常用操作3)Linux文件类型
2、Linux的文件系统1)文件系统概览i、FATii、NTFSiii、EXT2/3/4
2)Ext文件系统i、EXT文件系统:ii、Block Group
3)实际操作
四、操作系统的设备管理1、广义的IO设备1)按使用特性分类i、存储设备ii、交互IO设备
2)按信息交换的单位分类i、块设备(block)ii、字符设备(char)
3)按设备的共享属性分类4)按传输速率分类
2、IO设备的缓冲区1)解决的问题2)如何操作i、IO设备的缓冲区
3、SPOOLing技术1)概念2)如何操作
一、操作系统的存储管理
1、内存空间的分配与回收
1)原因和作用
i、原因
早期计算机编程不需要过多的存储管理,不需要考虑随着计算机和程序越来越复杂,存储管理成为必要
ii、作用
确保计算机有足够的内存处理数据确保程序可以从可用内存中获取一部分内存使用确保程序可以归还使用后的内存以供其他程序使用
2)分配和回收
i、内存分配过程
a、单一连续分配
单一连续分配是最简单的内存分配方式只能在单用户、单进程的操作系统中使用
方式: 将内存空间简单的划分为系统区和用户区,系统区存储系统,用户区存储用户的内容 b、固定分区分配 固定分区分配是支持多道程序的最简单存储分配方式方式: 内存空间被划分为若干固定大小的区域每个分区只提供给一个程序使用,互不干扰 c、动态分区分配 根据进程实际需要,动态分配内存空间需要相关数据结构、分配算法 [1]方式: 空闲区1空闲区2空闲区3空闲区4空闲区5空闲区6 动态分区空闲表数据结构:将内存中空闲和忙的区域标识出来 分区1234567891011标记01001100110 动态分区空闲链数据结构:将所有空闲区都首尾相连,连成一个链表,根据空闲区2、3相邻,空闲区5、6相邻,将节点2、3合并,节点5、6合并,节省节点,由于每个节点的大小不一,因此节点需记录可存储的容量![]() 回收过程: 不需要新建空闲链表节点只需要把空闲区1的容量增大为空闲区即可 空闲区与回收区相邻,空闲区在回收区后面 ……回收区空闲区1……回收过程: 将回收区与空闲区合并,使用同一个节点新的空闲区使用回收区的地址 回收区在两个空闲区之间,彼此相邻 ……空闲区1回收区空闲区2回收过程: 将空闲区1、空闲区2和回收区合并新的空闲区使用空闲区1的地址 回收区前后都没有别的空闲区 ………………回收区…………回收过程: 为回收区创建新的空闲节点将新创建的空闲节点插入到空闲链表中去 2、段页式存储管理 1)页式存储管理 i、页面 字块是相对物理设备的定义页面是相对逻辑空间的定义 ii、页式存储管理方式 将进程逻辑空间等分成若干大小的页面相应的把物理内存空间分成页面大小的物理块以页面为单位把进程空间装进物理内存中分散的物理块 iii、存在问题-----逻辑空间页面应该分配到具体的哪个物理块中
页地址: 页号页内偏移存在问题: 现代计算机系统中,可以支持非常大的逻辑地址空间(232~264),这样,页表就变得非常大,要占用非常大的内存空间,如:具有32位逻辑地址空间的分页系统,规定页面大小为4KB,则在每个进程页表中的页表项可达 1M(220) 个,如果每个页表项占用 1Byte,故每个进程 仅仅页表 就要占用 1MB 的内存空间 详细计算过程: 32位系统进程的寻址空间为4G 4G/4KB=220 解决方法:多级页表 v、多级页表提出根页表的概念,每个根页表的字块指向的是二级页表,二级页表才指向进程真正存储的物理块空间,如果调用某个字块时发现没在二级页表中,此时再将二级页表加载在链表中,这样大大减小页表数,从而解决页表所占空间较大的问题 根页表: 页面字块1723003442……645n911二级页表: 页面字块1823013443……6471024913 页面字块19023023445……6491024917如果有一段连续的逻辑分布在多个页面中,将大大降低执行效率—段式存储管理 2)段式存储管理 将进程逻辑空间划分为若干段(非等分)段的长度由连续逻辑的长度决定段的内容有主函数MAIN、子程序段X、子函数Y等 i、段表用来存储每段逻辑空间与物理空间的映射,基址为该段在内存中的起始地址,由于每段的长度不同,还会记录段长 段表: 段号基址段长110K30K240K10K350K40K………………n…………段地址: 段号段内偏移 3)段页式存储管理 i、段式与页式存储管理的对比相同点: 段式存储和页式存储都离散地管理了进程的逻辑空间 不同点: 页是物理单位,段是逻辑单位分页是为了合理利用空间,分段是满足用户要求页大小由硬件固定,段长度可动态变化页表信息是一维的,段表信息是二维的 ii、段页式存储管理 a、段式、页式的优点结合 分页可以有效提高内存利用率(虽然说存在页内碎片)分段可以更好满足用户需求两者结合,形成段页式存储管理 b、段页式存储管理逻辑 先将逻辑空间按段式管理分成若干段页地址: 页号页内偏移 再把段内空间按页式管理分成若干页段地址: 段号段内偏移段页地址: 段号段内页号页内地址进程的逻辑空间具体的哪一段段内具体的某一页某一页具体的字 c、三种存储方式的具体表现页式存储管理: 重要性: 虚拟内存是操作系统内存管理的关键技术使得多道程序运行和大程序运行成为现实技术: 把程序使用内存划分,将部分暂时不使用的内存放置在辅存中存储 2)程序的局部性原理 i、概念指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中 ii、逻辑分析 程序运行时,无需全部装入内存,装在部分即可如果访问页不在内存,则发出缺页中断,发起页面置换从用户层面看,程序拥有很大空间,即是虚拟内存虚拟内存实际是对物理内存的扩充,速度接近于内存,成本接近于辅存 3)虚拟内存的置换算法 先进先出算法(FIFO)最不经常使用算法(LFU)最近最少使用算法(LRU) i、缓存的替换时机 高速缓存的替换时机:当CPU需要从高速缓存中获取数据时,发现高速缓存没有数据,此时就是高速缓存的替换时机,从主存载入所需数据主存页面的替换时机:当主存缺页时,就是主存页面的替换时机,从辅存载入页面数据 ii、不同替换时机的策略对比 替换策略发生在Cache-主存层次、主存-辅存层次Cache-主存层次的替换策略主要是为了解决速度问题主存-辅存层次主要是为了解决容量问题 4、Linux的存储管理 1)Buddy内存管理算法(伙伴系统) i、概述 Buddy算法是经典的内存管理算法算法基于计算机处理二进制的优势具有较高的效率算法主要是为了解决内存外碎片的问题(其实将内存外碎片问题转换为内存内碎片问题) a、页内碎片页内碎片(内部碎片)是已经被分配出去(能明确指出哪个进程)的内存空间大于请求所需的内存空间,不能被利用的内存空间就是内部碎片 b、页外碎片外部碎片是指还没有被分配出去(不属于任何进程),但是由于大小而无法分配给申请内存空间的新进程的内存空闲块 ii、使用的原则努力让内存分配与相邻内存合并能快速进行 a、内存分配原则 为每个进程分配内存时,向上取整为2的幂大小(比如需要70k=26+6,给它128k=27) b、伙伴系统 “伙伴”指的是内存的“伙伴”一片连续内存的“伙伴”是相邻的另一片大小一样的连续内存 iii、算法的具体流程 创建一系列空闲块链表,每一个链表大小都是2的幂假设存储空间有1M大小,空闲块链表大小为1kb,2kb,4kb…1MB,并且只有1MB空闲块链表有节点假设需要分配100k内存给某个进程 分配内存 100k向上取2的幂=128k查询是否有128k的空闲内存块?没有! 查询是否有256k的空闲内存块?没有! 查询是否有512k的空闲内存块?没有! 查询是否有1M的空闲内存块?有,摘下1M空闲内存块,分配出去,这时1M的空闲块就没有节点了拆下512k放在512的空闲链表,其余的分配出去,这时判断512k是否满足需求不满足,拆下256k放在256k的空闲链表,其余的分配出去,并判断256K是否满足需求不满足,拆下128k放在128k的空闲链表,其余的分配出去,并判断是否满足需求满足,分配完毕 回收刚才分配的内存 判断刚才分配的内存伙伴在空闲链表上嘛?在!移除伙伴,合并为256k空间内存,判断它的内存伙伴在空闲链表上嘛?在!移除伙伴,合并为512k空闲内存,判断它的内存伙伴在空闲链表上嘛?在!移除伙伴,合并为1M空闲内存,判断它的内存伙伴在空闲链表上嘛?不在!将1M的内存插入1M空闲链表,回收完成 2)Linux交换空间 i、概述 交换空间(Swap)是磁盘的一个分区Linux物理内存满时,会把一些内存交换到Swap空间,来赢得更多物理空间Swap空间是初始化系统时配置的查看交换空间:top Mem:物理内存 Sawp:交换空间 但是不推荐频繁使用交换空间,因为交换空间在磁盘中,运行速度很慢,因此避免使用交换空间 ii、作用 冷启动内存依赖(一些大程序在启动时需要很大的内存空间,但是在使用时需要的内存很小,因此可将交换空间用作启动时的内存)系统睡眠依赖(Linux系统在睡眠状态时,会将所有进程保存在交换空间,下次启动时再将进程转换到内存中,提高启速度)大进程空间依赖(一些大进程使用时需要很大的内存空间,将暂时不用的内存暂时保存在交换空间,需要使用时再进行交换,由此来保证进程的正常进行) iii、虚拟内存和Linux交换空间的对比Swap空间 Swap空间存在于磁盘Swap空间与主存发生置换Swap空间是操作系统概念Swap空间解决系统物理内存不足问题虚拟内存 虚拟内存存在于磁盘虚拟内存与主存发生置换虚拟内存是进程概念(一般指某个进程的虚拟内存)虚拟内存解决进程物理内存不足问题 二、操作系统的文件管理 1、文件的逻辑结构 1)逻辑结构的文件类型 i、有结构文件文本文件、文档、媒体文件 PNG文件标记PNG数据块文件结束标记 文件内容由可定长记录和可变长记录组成定长记录存储文件格式、文件描述等结构化数据项(比如PNG文件标记)可变记录存储文件具体内容(比如PNG数据块) ii、无结构文件二进制文件、链接库(比如exe文件、dll文件、so文件) 也称为流式文件文件内容长度以字节为单位 2)顺序文件 顺序文件是指按顺序存放在存储介质中的文件磁带的存储特性使得磁带文件只能存储顺序文件顺序文件是所有逻辑文件当中存储效率最高的但是无法完成增删改查操作 3)索引文件 可变长文件不适合使用顺序文件格式存储索引文件是为了解决可变长文件存储而发明的一种文件格式索引文件需要配合索引表完成存储的操作举例: 索引表: 键逻辑地址2019-01-012019-01-022019-01-03逻辑地址对应的值表: 值Record_1Record_2Record_3 2、辅存的存储空间分配 1)辅存的分配方式 i、连续分配按照空闲内存按照顺序分配 - 顺序读取文件内容非常容易,速度很快 - 对存储要求高,要求满足容量的连续空间 ii、 链接分配 链接分配可以将文件存储在离散的盘块中需要额外的存储空间存储文件的盘块链接顺序根据额外存储的盘块的不同,将链接分配分为隐式链接和显式链接假设一个文件存储需要5个盘块:2、9、7、18、16 之前的例题: 会有一个额外盘块12存储盘块的索引 2971816在内存中: 位示图: 盘块/磁道1234567……10001100…………列表示磁道,行表示盘块,0表示空闲,1表示被占用 优点: 位示图维护成本很低位示图可以非常容易找到空闲盘块位示图使用0/1比特位,占用空间很小 3、目录管理 1)目录树目录: Linux一切皆文件 i、目录描述相对路径:相对于当前的操作目录,文件位于哪个目录 绝对路径:从根目录开始的路径 2)Linux文件常用操作(目录/文件) 创建:touch(创建)/vim(创建并编辑) file查看:cat file删除:rm file创建文件夹:mkdir file删除文件夹:rm -r file 3)Linux文件类型 套接字 (s)普通文件 (-)目录文件 (d)符号链接 (l)设备文件 (b块设备、c字符设备)FIFO § 2、Linux的文件系统 1)文件系统概览 i、FAT FAT(File Allocation Table)FAT16、FAT32等,微软Dos/Windows使用的文件系统使用一张表保存盘块的信息 ii、NTFS NTFS(New Technology File System)WindowsNT(7、10、XP)环境的文件系统(也可用于Linux系统)NTFS对FAT进行了改进,取代了旧的文件系统 iii、EXT2/3/4 EXT(Extended file system):扩展文件系统Linux的文件系统EXT2/3/4 数字表示第几代,现在大多数使用EXT4 2)Ext文件系统 i、EXT文件系统:如果对一个Linux文件格式的U盘格式化后,它的文件系统为: Boot SectorBlock Group 1Block Group 2Block Group 3 Boot Sector:启动扇区,安装开机管理程序Block Group:块组,存储数据的实际位置 ii、Block Group Superblock文件系统描述inode bitmapBlock bitmapInode tableDate block Inode Table:存放文件Inode的地方 每一个文件(目录)都有一个Inode是每一个文件(目录)的索引节点 Inode:存放每个文件的信息 索引节点编号:文件的唯一索引,文件类型、文件权限、文件物理地址、文件长度、文件连接计数、文件存取时间、文件状态、访问计数、链接指针文件名不是存放在Inode节点上的,而是存放在目录的Inode节点列出目录文件的时候无需加载文件的Inode Inode bitmap:Inode的位示图 当Linux文件系统初始化后,Inode节点数目就固定了,使用位示图,记录已分配的Inode和未分配的Inode Inode 表123……-0010表示未分配,1表示已分配 Date block:存放文件内容的地方 每个block都有唯一的编号文件的block记录在文件的Inode上(文件物理地址即文件的block记录) Block bitmap:记录Date block的使用情况Superblock:记录整个文件系统相关信息的地方 记录Block和Inode的使用情况包括文件系统的时间信息、控制信息等块的大小一般均为1024个字节 3)实际操作 访问Inode信息(指定某个文件):dumpe2fs 文件查看某个文件的具体信息:stat 文件名重命名文件:mv 旧 新 四、操作系统的设备管理 1、广义的IO设备 对CPU而言,凡是对CPU进行数据输入的都是输入设备对CPU而言,凡是对CPU进行数据输出的都是输出设备 1)按使用特性分类 i、存储设备U盘、内存、磁盘 ii、交互IO设备键盘、显示器、鼠标 2)按信息交换的单位分类 i、块设备(block)磁盘、SD卡 ii、字符设备(char)打印机、Shell终端 3)按设备的共享属性分类有独占设备、共享设备、虚拟设备 4)按传输速率分类可以分为低速设备、中速设备、高速设备 2、IO设备的缓冲区 1)解决的问题为了解决CPU与IO设备的速率不匹配问题(存储器的层次结构也这个问题是为了解决) 减少CPU处理IO请求的频率提高CPU与IO设备之间的并行性 2)如何操作将程序与IO设备之间需要进行多次交互的方式改变为只进行一次,在程序和IO设备间添加一个缓冲区,存放需要交互的信息 i、IO设备的缓冲区 专用缓冲区只适用于特定的IO进程当这样的IO设备进程比较多时,对内存的消耗也很大操作系统划出可供多个进程使用的公共缓冲区,称之为缓冲池当需要使用某个缓冲区时,从缓冲池中取出使用,使用完后再将缓冲区归还给缓冲池 3、SPOOLing技术 1)概念 是关于慢速字符设备如何与计算机主机交换信息的一种技术利用高速共享设备将低速的独享设备模拟为高速的共享设备使用该技术后,逻辑上,系统为每一个用户都分配了一台独立的高速独享设备—虚拟设备技术 2)如何操作比如三个进程需要使用打印机: 将进程的输出以队列的形式存放到一个磁盘中–输出井,然后使用SPOOLing技术将输出内容(文件等)交给打印机,执行打印机操作 SPOOLing技术把同步调用低速设备改为异步调用 在输入、输出之间增加了排队转储环节(输入井、输出井)SPOOLing负责输入(出)井与低速设备之间的调度逻辑上,进程直接与高速设备交互,减少了进程的等待时间 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |