408王道操作系统强化——操作系统大串讲

简介: 408王道操作系统强化——操作系统大串讲

1.考频

61d962a39c7d4c6ca2b34cd688fbff14.png1.中断、异常、系统调用

2.进程、调度、进程的状态转换、PCB

3.虚拟页式存储管理、页面置换算法

4.文件的逻辑结构、物理结构,文件的目录、FCB、文件操作

5.磁盘、I/O方式

2.文件物理/逻辑结构

1.文件系统格式与文件的逻辑结构(用户视角看到的样子)无关,逻辑结构只和文件的格式有关(可以理解为文件的后缀),即不同的文件系统下(UFS、APFS、NTFS等等)同一文件的逻辑结构相同:文件的格式规定了文件的逻辑结构,比如某种文件的某些固定部分一定会用来存储特定信息

2.文件系统格式与文件的物理结构有关,同一文件在不同的文件系统下的保存方式不一样(文件的最终存储都是要被拆分为若干个块,以块为存储单位,而不同的文件系统规定的块大小可能不同),可能是块大小不一样,也可能是索引方式不一样,例如FAT文件系统下,文件的索引方式为文件分配表(类似静态链表);UFS文件系统下,文件的索引方式为混合索引(inode结点,包括直接索引、一级间接索引、二级间接索引等等

3.文件在磁盘中的存放方式取决于文件系统的格式,而文件系统的格式决定文件在磁盘中的物理结构,用户视角看是连续存放,但实际上可能是离散存放

3.打开文件的过程

1.双击文件(exe):操作系统为被双击打开的文件创建一个进程,同时创建一个与之对应的PCB

2.从虚拟内存视角看好像是为该文件分配了一块连续的存储空间,而实际上在物理内存中它一定会被分页,即离散存放

3.文件在运行过程中它的视角看到的是虚拟内存,而不是物理内存;当物理内存不够用时,就采用页面置换算法进行页面置换,将不用的页面暂时淘汰,需要使用的页面替换进来

(1)exe文件打开一个文件时,先使用open系统调用,需要指明该文件的存储路径

(2)open系统调用根据该文件的存储路径逐级查询文件目录(目录由若干的目录项组成,即FCB,保存了文件物理结构的相关信息),在该文件的目录项中存放该文件的索引结点编号(UFS文件系统下)

(3)索引结点在系统中的某个固定的位置开始(所有索引结点的起始位置相同),采用连续存储的存储方式(每个索引结点的大小相同,类似数组),且操作系统知道这些索引结点的起始位置,即操作系统可以根据索引结点的编号找到该文件的索引结点,并根据该索引结点将该文件相对应的数据读入内存

(4)操作系统根据读入的该文件的索引结点(inode,采用混合索引方式)就可以找到其的数据部分(所有)分别存放在哪些物理块中(操作系统可以找到该文件的所有数据,但是通常情况下不需要一次将其全部读入,按需要读入)

(5)操作系统使用read调用读入需要的数据

4.系统调用的执行过程 / 异常的处理过程

4.1.系统调用的执行过程

1.用户发出某个系统调用请求

2.CPU执行Trap指令

3.改变指令执行流 → 跳转到特定的系统调用入口程序的物理地址(Trap指令执行后,固定会跳转到此区域执行内核代码):进程发出系统调用请求后,操作系统需要判断执行具体哪一段内核程序(不同系统调用所需执行的内核程序不同)

4.根据系统调用入口的执行结果再次改变指令执行流 → 跳转到对应的系统调用代码区

5.执行完系统调用后 → 返回

4.2.异常的处理过程

1.当CPU执行过程中发生异常时(缺页异常、除数0等等),将会导致某些寄存器的值发生改变(PSW或者专门记录异常的寄存器)

2.CPU检测到异常后,将会跳转到异常处理的入口程序,通过一系列指令判断当前发生何种异常(本质上和系统调用入口程序相同),根据结果跳转到相对应的异常处理程序处执行

5.缺页处理的过程

1.访问某个页面,在进行逻辑地址到物理地址的转化时,查页表发现缺页,引发缺页异常

2.CPU检测到异常后,将会跳转到异常处理入口程序处运行,得到异常号(异常类型)

3.CPU知道是缺页异常后,再跳转到缺页异常的处理程序处运行

4.在进行缺页处理异常时,发现给进程分配的驻留集已满,缺页异常处理程序调用页面置换算法(保存在操作系统内核区的一段代码)

5.页面置换算法根据操作系统的页面置换规则(FIFO、CLOCK等等)选择某一个页面置换出去,并且需要判断该被置换的页是否被修改(即是否需要写回外存),然后再将目标页面放进页框中

6.内存映射文件

6.1.传统打开文件的方式

每次都需要发出系统调用指令,并且指明将要进行的操作、地址等参数

1.整个系统范围内会有一张系统打开文件表:可以将新读入文件的文件名、INODE和一个记录当前有几个进程打开的变量设置成打开文件表的表项,其中的INODE并不是编号,而是具体的INODE信息,即该INODE已经读入内存

2.①当使用OPEN系统调用打开一个并不在系统打开文件表的新文件时,在系统打开文件表中增加一个对应该文件的表项

②当OPEN系统调用打开的是已经在系统打开文件表中的文件时,只会增加当前打开进程数这个变量的值,而不是进行OPEN系统调用

3.①每个进程的有自己独立的进程打开文件表(存放在PCB中),进程的打开文件表的本质是一个指针,指向的是系统打开文件表中与该文件对应的表项

②进程的打开文件表中还包含进程的对该文件的打开方式(读/写/执行等):不同进程对同一文件的权限不一致,当进程想要对某一文件进行某种操作时(进程发出OPEN系统调用时指明),操作系统要判断该进程是否有对此文件进行这种操作的权限,当进程拥有此权限时,才将指向系统打开文件表中该文件的指针写入进程的打开文件表

③OPEN系统调用向进程返回的FD本质上就是指向进程打开文件表中对应该文件的表项的指针,该指针再指向系统打开文件表中该文件的表项:FD→进程打开文件表的该文件表项(该表项是指针)→系统打开文件表的该文件的表项(该表项是已经调入内存的INODE结点,记录该文件完整的信息)

④进程对某个文件进行操作时,就是通过OPEN系统调用返回的这个FD(指针)进行具体操作image.png

6.2.内存映射文件打开文件方式

建立起进程的虚拟地址空间和目标文件的映射关系,用户直接对该虚拟空间进行操作,操作系统对目标文件进行同步操作

1.进程使用OPEN系统调用方式,指明打开的文件,将要对该文件进行的操作

2.当OPEN系统调用执行完毕后,返回指向该文件的FD(1、2与传统打开文件方式相同)

3.进程使用mmap系统调用,参数为指向该文件的FD和映射地址(指向进程内部的某个虚拟地址,从该地址开始建立起和目标文件的映射关系,即映射的起始地址)

4.操作系统建立起进程的这片虚拟地址和目标文件的映射关系

5.用户使用该进程对该文件进行操作时就可以使用指针的方式,指针指向该虚拟地址,通过偏移量访问对该文件的特定区域进行修改,用户通过指针对该虚拟地址进行操作时,操作系统将会把这些操作同步施加到外存的文件中

7.I/O操作处理过程

1.用户层I/O软件:进程发出系统调用,并指明将要操作的逻辑地址,然后将进入阻塞态,等待I/O操作结束被唤醒

2.设备独立性软件:处理进程发出的系统调用,并将逻辑地址转换为物理地址 → 查询INODE、FAT等转换为物理块 → 调用相应I/O设备的设备驱动程序,并向其指明物理地址完成具体操作

操作系统只知道要读取哪个物理块,但是不知道该物理块最终是在磁盘的具体哪个位置(扇区号、盘面号、柱面号等等

3.设备驱动程序:将物理地址转换为具体的磁盘的扇区号、盘面号、柱面号等物理设备信息,根据磁盘调度算法响应不同的请求,并给硬件控制器发出命令

4.中断处理程序:CPU检测到中断信号后,执行相应的中断处理程序,而中断处理程序只能知道是哪个设备发来的,具体的操作需要调用相应的设备驱动程序完成处理操作,并逐层往上返回

5.硬件:硬件收到设备驱动程序的命令后开始工作,当完成时给CPU发出中断信号

相关文章
|
6月前
|
存储 数据库 数据安全/隐私保护
【王道考研操作系统】—文件的基本操作
【王道考研操作系统】—文件的基本操作
|
10月前
临界资源和共享资源——王道考研操作系统
临界资源和共享资源——王道考研操作系统
160 0
|
存储 算法 安全
王道操作系统网课笔记合集
第二门完整学完的课程~
277 1
王道操作系统网课笔记合集
|
机器学习/深度学习 人工智能 C++
王道考研操作系统同步与互斥(王道大题详解)(三)
王道考研操作系统同步与互斥(王道大题详解)(三)
102 0
王道考研操作系统同步与互斥(王道大题详解)(三)
|
机器学习/深度学习 人工智能 算法
王道考研操作系统同步与互斥(王道大题详解)(二)
王道考研操作系统同步与互斥(王道大题详解)(二)
147 0
王道考研操作系统同步与互斥(王道大题详解)(二)
|
人工智能 移动开发 算法
王道考研操作系统同步与互斥(王道大题详解)(一)
王道考研操作系统同步与互斥(王道大题详解)(一)
181 0
王道考研操作系统同步与互斥(王道大题详解)(一)
|
存储 索引
408王道操作系统强化——文件管理及大题解构(下)
408王道操作系统强化——文件管理及大题解构
321 1
408王道操作系统强化——文件管理及大题解构(下)
|
存储 文件存储 索引
408王道操作系统强化——文件管理及大题解构(上)
408王道操作系统强化——文件管理及大题解构
165 1
408王道操作系统强化——文件管理及大题解构(上)
|
存储
408王道操作系统强化——存储管理及大题解构(下)
408王道操作系统强化——存储管理及大题解构
112 1
408王道操作系统强化——存储管理及大题解构(下)
|
3天前
|
安全 算法 网络协议
探索Linux操作系统的内核管理
【5月更文挑战第31天】本文将深入探讨Linux操作系统的内核管理机制,包括其设计原则、主要组件以及它们如何协同工作以提供高效的系统性能。通过分析Linux内核的关键特性和功能,我们将揭示这一开源操作系统如何在各种计算环境中保持其稳定性和灵活性。