首页>总结报告>操作系统知识总结(7篇)

操作系统知识总结(7篇)

时间:2024-05-05 12:57:23 总结报告

操作系统知识总结 第1篇

内存管理的概念

​ 虽然计算机技术飞速发展,内存容量也在不断扩大,但仍然不可能将所有用户进程和系统所需的全部程序与数据放入内存,因此操作系统对内存空间进行合理的划分和有效的动态分配。操作系统对内存的划分和动态分配,就是内存管理的概念

内存空间的主要功能有:

内存空间的分配与回收:OS 要怎么记录哪些内存区域已经被分配出去了,哪些又还空闲;当进程运行结束之后,如何将进程占用的内存空间回收。

内存空间的扩充:OS 利用虚拟内存技术自动覆盖技术使得系统运行很大的程序,从逻辑上扩充内存。

地址转换:为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址。而 逻辑地址到物理地址的转换(这个过程称为地址重定位)应该由操作系统负责,其中地址重定位有三种方式。

④** 内存保护**:保证各进程在各自存储空间内运行,互不干扰。

程序执行过程

​ 创建进程首先要将程序和数据装入内存。将用户源程序变为可在内存中执行的程序,通常需要以下几个步骤:

​ 编译后,每个目标模块都是从 0 号单元开始编址,这称为该目标模块的 逻辑地址 (或相对地址)。当链接程序将各个模块连接成一个完整的可执行目标程序时,链接程序顺序依次按各个模块的相对地址构成统一的从 0 号单元开始编制的 逻辑地址空间。用户程序和程序员只需知道逻辑地址,而内存管理的具体机制则是完全透明的,只有系统编程人员才会涉及内存管理的具体机制。不同进程可以有相同的逻辑地址,因为这些相同的逻辑地址可以映射到内存的不同位置。   物理地址空间 是指内存中物理单元的集合,它是地址转换的最终地址。进程在运行时执行指令和访问数据,最后都要通过物理地址从主存中存取。当装入程序将可执行代码装入内存时,必须通过地址转换将逻辑地址转换成物理地址(动态重定位是地址转换推迟到程序真正要执行时才进行),这个过程称为 地址重定位

程序的链接

静态链接

在程序运行之前,先将各目标模块及它们所需的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开。

装入时动态链接

将各 目标模块装入内存时,边装入边链接的链接方式。

运行时动态链接

在程序执行中需要该目标模块时,才对它进行链接。其优点是便于修改和更新,便于实现对目标模块的共享

程序的装入

绝对装入

在编译与链接后,得到的装入模块指定 直接使用了绝对地址

可重定位装入

装入时对地址进行重定位,即将逻辑地址变换为物理地址,地址变换是在装入时一次完成的

静态重定位的特点: 在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。作业一旦进入内存后,在运行期间就不能再移动,也不能再申请内存空间。

动态运行时装入

装入程序把装入模块装入内存后,并不会立即把逻辑地址转换为物理地址(装入时依然保持使用逻辑地址),而是把地址转换推迟到程序真正要执行时才进行。因此装入内存后所有的地址依然是逻辑地址。这种方式需要一个重定位寄存器的支持。

动态重定位特点: 可以将程序分配到不连续的存储区中;在程序运行前只需装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存;便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间;采用动态重定位时允许程序在内存中发生移动

注:链接的作用是形成了完整的装入模块与逻辑地址,但逻辑地址到物理地址的转换过程是重定位,而不是装入。

内存映像

​ 不同于存放在硬盘上的可执行程序文件,当一个程序调入内存运行时,就构成了进程的内存映像。一个进程的内存映像一般有几个要素:

代码段和数据段在程序调入内存时就指定了大小,而堆和栈不一样。

当调用像malloc和free这样的C标准库函数时,可以在运行时动态地扩展和收缩

用户栈在程序运行期间也可以动态地扩展和收缩,每次调用一个函数,栈就会增长;从一个函数返回时,栈就会收缩。

​ 上图是一个进程在内存中的映像

内存保护

​ 确保每个进程都有一个单独的内存空间。内存分配前,需要保护操作系统不受用户进程的影响,同时保护用户进程不受其他用户进程的影响。内存保护可采取两种方法:

在CPU中设置一对上、下限寄存器,存放用户作业在主存中的下限和上限地址,每当CPU要访问一个地址时,分别和两个寄存器的值相比,判断有无越界

采用==重定位寄存器(又称基地址寄存器)和界地址寄存器(又称限长寄存器)==来实现这种保护。

重定位寄存器最小的物理地址值界地址寄存器逻辑地址的最大值。内存管理机构动态地将逻辑地址与界地址寄存器进行比较,若未发生地址越界,则加上重定位寄存器的值后映射成物理地址,再送交内存单元,如下图所示。

重定位寄存器是用来“加”的,逻辑地址加上重定位寄存器中的值就能得到物理地址;

界地址寄存器是用来“比”的,通过比较界地址寄存器中的值与逻辑地址的值来判断是否越界。

​ 加载重定位寄存器和界地址寄存器时必须使用特权指令,只有操作系统内核才可以加载这 两个存储器。这种方案允许操作系统内核修改这两个寄存器的值,而不允许用户程序修改

内存共享

​ 并不是所有的进程内存空间都适合共享,只有那些只读的区域才可以共享

​ 可重入代码又称纯代码,是一种允许多个进程同时访问但不允许被任何进程修改的代码

​ 在实际运行时,每个进程有自己的私有数据段,可以更改自己私有的数据区数据,不可改变共享的代码。

操作系统知识总结 第2篇

I/O设备将数据输入到计算机中,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件;

设备的分类

按使用特性分类:

按信息交换的单位分类:

按传输速率分类:

I/O接口

I/O接口(设备控制器)位于CPU与设备之间,它既要与CPU通信,又要与设备通信,还要具有按CPU发来的命令去控制设备工作的功能,主要由三部分组成,如下图所示。

组成部分:

设备控制器与CPU的接口:实现控制器与CPU之间的通信

该接口有三类信号线:数据线、地址线和控制线

数据线与两类寄存器相连:数据寄存器(存放从设备送来的输入数据或从CPU送来的输出数据)和控制/状态寄存器(存放从CPU送来的控制信息或设备的状态信息)。

设备控制器与设备的接口:实现控制器与设备之间的通信

一个设备控制器可以连接一个或多个设备,因此控制器中有一个或多个设备接口。

每个接口中都存在数据、控制和状态三种类型的信号

I/O逻辑:负责识别CPU发出的命令,并向设备发出命令

用于实现对设备的控制。它通过一组控制线与CPU交互,对从CPU收到的I/O命令进行译码

CPU启动设备时,将启动命令发送给控制器,同时通过地址线把地址发送给控制器,由控制器的I/O逻辑对地址进行译码,并相应地对所选设备进行控制。

主要功能:

I/O端口

I/O端口是指设备控制器中可被CPU直接访问的寄存器,主要有以下三类寄存器。

寄存器类型:

实现I/O端口通信,有两种编址方法:

​ 设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送。外围设备与内存之间的输入/输出控制方式有以下4种。

程序直接控制方式

​ 如下图所示,计算机从外部设备读取的每个字,CPU需要对外设状态进行循环检查,直到确定该字已经在I/O控制器的数据寄存器中

工作流程:

CPU干预的频率:很频繁,I/O操作开始之前、完成之后需要CPU介入,并且在等待I/O完成的过程中CPU需要不断地轮询检查

数据传送的单位:每次读/写一个字

数据的流向:

优点:实现简单。在读/写指令之后,加上实现循环检查的一系列指令即可

缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于“忙等”状态,CPU利用率低

中断驱动方式

中断驱动方式的思想是,允许I/O设备主动打断CPU的运行并请求服务,从而_解放” CPU,使得其向I/O控制器发送读命令后可以继续做其他有用的工作。

工作流程:

引入中断机制。由于I/O设备速度很慢,因此在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。

当I/O完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。

处理中断的过程中,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待I/O的进程(或其他进程)的运行环境,然后继续执行。

①CPU会在每个指令周期的末尾检查中断: ②中断处理过程中需要保存、恢复进程的运行环境,这个过程是需要一定时间开销的。可见,如果中断发生的须率太高,也会降低系统性能。

DMA方式

DMA(直接存储器存取)方式的基本思想是在I/O设备和内存之间开辟直接的数据交换通路,彻底“解放”CPU。下图为DMA工作流程。

与“中断驱动方式”相比,DMA方式有这样几个改进:

DMA控制器组成:

下图为DMA控制器的组成。

DMA控制器中设置如下4类寄存器:

CPU干预的频率:仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。

数据传送单位:每次读/写一个或多个块(注意:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的

数据流向:

优点:数据传输以“块”为单位,CPU介入频率进一步降低。数据的传输不再需要先经过CPU再写入内存,数据传输效率进一步增加。CPU和I/O设备的并行性得到提升。

缺点:CPU每发出一条I/O指令,只能读/写一个或多个连续的数据块。如果要读/写多个离散存储的数据块,或者要将数据分别写到不同的内存区域时,CPU要发出多条I/O指令,进行多次中断处理才能完成。

通道控制方式

通道:I/O通道是指专门负责输入输出的处理机。是一种硬件,可以理解为是“弱鸡版的CPU”。通道可以识别并执行一系列通道指令

与CPU相比,通道可以执行的指令很单一,并且通道程序是放在主机内存中的,也就是说通道与CPU共享内存

完成一次读写流程:

CPU干预的频率:极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预

数据传送的单位:每次读/写一组数据块

数据的流向(在通道的控制下进行)

缺点:实现复杂,需要专门的通道硬件支持

优点:CPU、通道、I/O设备可并行工作,资源利用率很高

​ 为了更好地设计 I/O 软件,采用 层次式结构 的 I/O 软件;

​ 一个比较合理的层次划分如上图所示。整个I/O软件可以视为具有4个层次的系统结构,各层次功能如下:

用户层软件

实现了与用户交互的接口,用户可直接使用该层提供的、与I/O操作相关的库函数对设备进行操作。

​ 用户层软件将用户请求翻译成格式化的I/O请求,并通过“系统调用”请求操作系统内核的服务

设备独立性软件

​ 设备独立性软件,又称设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现。

功能:

逻辑设备

​ 为实现设备独立性而引入了逻辑设备和物理设备这两个概念。在应用程序中,使用逻辑设备名来请求使用某类设备;而在系统实际执行时,必须将逻辑设备名映射成物理设备名使用。

使用逻辑设备名好处

​ 设备独立性软件需要通过“逻辑设备表(LUT,Logical Unit Table)”来确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序。

I/O设备被当做一种特殊的文件;不同类型的I/O设备需要有不同的驱动程序处理

操作系统系统可以采用两种方式管理逻辑设备表(LUT)

设备驱动程序

​ 与硬件直接相关,负责具体实现系统对设备发出的操作指令,驱动I/O设备工作的驱动程序。 将上层发出的一系列命令(如read/write)转化成特定设备“能听得懂”的一系列操作。

​ 不同设备的内部硬件特性也不同,这些特性只有厂家才知道,因此厂家须提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作

为I/O内核子系统隐藏设备控制器之间的差异。

中断处理程序

​ 当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。

中断处理程序的处理流程如下:

中断处理层的任务:

由于中断处理与硬件紧密相关,对用户而言,应尽量加以屏蔽,因此应放在操作系统的底层,系统的其余部分尽可能少地与之发生联系。

说明用户对设备的一次命令过程如下所示:

直接涉及到硬件其体细节、且与中断无关的操作肯定是在设备驱动程序层完成的;

没有涉及硬件的、对各种设备都需要进行的管理工作都是在设备独立性软件层完成的。

​ 在I/O系统与高层之间的接口中,根据设备类型的不同,又进一步分为若干接口。

字符设备接口

字符设备是指数据的存取和传输是以字符为单位的设备,如键盘、打印机等。基本特征是传输速率较低、不可寻址,并且在输入输出时通常采用中断驱动方式

字符设备的操作

字符设备都属于独占设备,为此接口中还需要提供打开和关闭操作,以实现互斥共享

块设备接口

块设备是指数据的存取和传输是以数据块为单位的设备,典型的块设备是磁盘。基本特征是传输速率较高、可寻址。磁盘设备的I/O常采用DMA方式

网络设备接口

操作系统知识总结 第3篇

进程管理之进程实体

为什么需要进程:

进程控制块(PCB):用于描述和控制进程运行的通用数据结构,记录进程当前状态和控制进程运行的全部信息,是进程存在的唯一标识。

进程(Process)与线程(Thread):

区别与联系:

进程管理之五状态模型

就绪状态:其它资源(进程控制块、内存、栈空间、堆空间等)都准备好、只差CPU的状态。

执行状态:进程获得CPU,其程序正在执行。

阻塞状态:进程因某种原因放弃CPU的状态,阻塞进程以队列的形式放置。

创建状态:创建进程时拥有PCB但其它资源尚未就绪。

终止状态:进程结束由系统清理或者归还PCB的状态。

进程管理之进程同步

生产者-消费者问题:有一群生产者进程在生产产品,并将这些产品提供给消费者进程进行消费,生产者进程和消费者进程可以并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程需要将所生产的产品放到缓冲区中(+1操作),消费者进程可以从缓冲区取走产品消费(-1操作)。

产生问题:当两者并发执行时可能出差错,导致预期的结果与真实的结果不相符:当执行生产者+1和消费者-1操作之后,缓冲区的值从10变为了11。

哲学家进餐问题:有5个哲学家,他们的生活方式是交替的思考和进餐,哲学家们共同使用一张圆桌,分别坐在5张椅子上,圆桌上有5只碗和5只筷子。平时哲学家们只进行思考,饥饿时则试图取靠近他们的左右两只筷子,只有两只筷子都被拿到的时候才能进餐,否则等待,进餐完毕后,放下左右筷子进行思考。

这会导致以下的问题,筷子就相当于临界资源:

临界资源指的是一些虽作为共享资源却又无法同时被多个线程共同访问的共享资源。当有进程在使用临界资源时,其他进程必须依据操作系统的同步机制等待占用进程释放该共享资源才可重新竞争使用共享资源。

进程同步的作用:对竞争资源在多进程间进行使用次序的协调,使得并发执行的多个进程之间可以有效使用资源和相互合作。

进程间同步的四原则:

1.使用fork系统调用创建进程:使用fork系统调用无参数,fork会返回两次,分别返回子进程id和0,返回子进程id的是父进程,返回0的是子进程。

2.共享内存:在某种程度上,多进程是共同使用物理内存的,但是由于操作系统的进程管理,进程间的内存空间是独立的,因此进程默认是不能访问进程空间之外的内存空间的。

域套接字

域套接字是一种高级的进程间通信的方法,可以用于同一机器进程间通信。

操作系统知识总结 第4篇

生产者-消费者问题:有一群生产者进程在生产产品,并将这些产品提供给消费者进程进行消费,生产者进程和消费者进程可以并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程需要将所生产的产品放到缓冲区中(+1操作),消费者进程可以从缓冲区取走产品消费(-1操作)。

产生问题:当两者并发执行时可能出差错,导致预期的结果与真实的结果不相符:当执行生产者+1和消费者-1操作之后,缓冲区的值从10变为了11。

哲学家进餐问题:有5个哲学家,他们的生活方式是交替的思考和进餐,哲学家们共同使用一张圆桌,分别坐在5张椅子上,圆桌上有5只碗和5只筷子。平时哲学家们只进行思考,饥饿时则试图取靠近他们的左右两只筷子,只有两只筷子都被拿到的时候才能进餐,否则等待,进餐完毕后,放下左右筷子进行思考。

这会导致以下的问题,筷子就相当于临界资源:

临界资源指的是一些虽作为共享资源却又无法同时被多个线程共同访问的共享资源。当有进程在使用临界资源时,其他进程必须依据操作系统的同步机制等待占用进程释放该共享资源才可重新竞争使用共享资源。

进程同步的作用:对竞争资源在多进程间进行使用次序的协调,使得并发执行的多个进程之间可以有效使用资源和相互合作。

进程间同步的四原则:

空闲让进:资源无占用,允许使用;

忙则等待:资源被占用,请求进程等待;

有限等待:保证有限等待时间能够使用资源;

让权等待:等待时,进程需要让出CPU。

操作系统知识总结 第5篇

I/O设备的基本概念:将数据输入输出计算机的外部设备。

广义的IO设备:

IO设备的缓冲区:减少CPU处理IO请求的频率,提高CPU与IO设备之间的并行性。

SPOOLing技术:虚拟设备技术,把同步调用低速设备改为异步调用,在输入、输出之间增加了排队转储环节(输入井、输出井),SPoOLing负责输入(出)井与低速设备之间的调度,逻辑上,进程直接与高速设备交互,减少了进程的等待时间。

操作系统知识总结 第6篇

线xxx:线xxx是存放多个线程的容器,CPU调度线程执行后不会销毁线程,将线程放回线xxx重新利用。

使用线xxx的原因:

实现线程安全的队列Queue

实现基本任务对象Task

实现的基本功能:任务参数,任务唯一标记(UUID),任务具体的执行逻辑。

实现任务处理线程ProcessThread:任务处理线程需要不断地从任务队列里取任务执行,任务处理线程需要有一个标记,标记线程什么时候应该停止。

实现的基本功能:基本属性(任务队列、标记),线程执行的逻辑(run),线程停止(stop)。

实现任务处理线xxxPool:存放多个任务处理线程,负责多个线程的启停,管理向线xxx的提交任务,下发给线程去执行。

实现的基本过程:基本属性,提交任务(put,batch_put),线程启停(start,join),线xxx大小(size)。

实现异步任务处理AsyncTask:给任务添加一个标记,任务完成后,则标记为完成;任务完成时可直接获取任务运行结果;任务未完成时,获取任务结果,会阻塞获取线程。

主要实现的两个函数:设置运行结果(set_result),获取运行结果(get_result)。

操作系统知识总结 第7篇

操作系统的文件管理

文件的逻辑结构:

辅存的存储空间分配:

目录树:使得任何文件或目录都有唯一的路径。

Linux文件的基本操作:参考链接

Linux的文件系统:FAT、NTFS(对FAT进行改进)、EXT2/3/4(扩展文件系统,Linux的文件系统)。