操作系统知识点总结

转载自https://blog.csdn.net/harry_502/article/details/69063212 ,侵删

中断与异常

中断

中断又称外中断,指来自CPU执行指令以外的事件发生,如设备发出的各种 I/O 结束中断

异常

异常又称内中断,指源自CPU执行指令内部的事件,如程序的非法操作码,地址越界,算术溢出等。

常见的中断以及异常事件

I/O中断
其他外中断
机器故障
程序性异常
陷入指令
中断屏蔽

禁止响应中断。为了打破中断级别由硬件设计时确定的不灵活固定模式,现代计算机提供可以由程序设置中断屏蔽的方法。

断点和恢复点

CPU一旦响应中断,就立即开始执行中断处理程序,当中断处理结束后,重新返回中断点执行后续指令,CPU刚执行完的那条指令地址称为“断点”,即中断发生时正在执行的那一条指令的地址。断点的逻辑后续指令称为“恢复点”。

中断处理步骤

中断进入
保护现场
分析原因并转中断
恢复现场

进程与线程

进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。线程之间共享全局变量。

进程的状态

运行态:该时刻的进程实际占用cpu 
就绪态:已完成一切准备,等待分配cpu 
阻塞态:除非某种外部事件发生,否则进程不能运行

进程间的通信方式

管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

进程调度算法

先来先服务调度算法(FCFS) 
先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,
也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列
中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创
建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪
队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程
一直运行到完成或发生某事件而阻塞后才放弃处理机。

最短作业优先调度算法(SJF) 
短作业优先调度算法,是指对短作业或短进程优先调度的算法。它们可以分别用于作
业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个
估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是
从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行
并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。

优先权调度算法的类型 
为了照顾紧迫型作业,使之在进入系统后便获得优先处理,引入了最高优先权优先(F
PF)调度算法。此算法常被用于批处理系统中,作为作业调度算法,也作为多种操作
系统中的进程调度算法,还可用于实时系统中。当把该算法用于作业调度时,系统将
从后备队列中选择若干个优先权最高的作业装入内存。当用于进程调度时,该算法是
把处理机分配给就绪队列中优先权最高的进程,这时,又可进一步把该算法分成非抢
占式和抢占两种。

时间片轮转法 
在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,
每次调度时,把CPU 分配给队首进程,并令其执行一个时间片。时间片的大小从几m
s 到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便
据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配
给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列
中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之,系统
能在给定的时间内响应所有用户的请求。

为什么操作系统需要线程?

线程可以把程序分解成可以准并运行的多个顺序线程,使程序设计变得简单。
线程比进程更轻量级,将更容易创建或销毁
多个线程将重叠进行,更加充分利用cpu

线程的缺点

子进程是否要继承父进程的线程?

如果不是,子进程中没有线程可能会导致异常;
如果是,父进程被阻塞了改怎么办?是父子两进程的线程同时被阻塞?(例如等待键盘输入)

假设两个线程同时发现内存不足,并同时分配内存,会导致内存被分配两次。

进程和线程的区别

现在操作系统中申请资源的基本单位是进程,在CPU得到执行的基本单位是线程
不同进程的地址空间是独立的,而同一进程内的线程共享同一地址空间。一个进程的线程在另一个进程内是不可见的。
在引入线程的操作系统中,进程是资源分配和调度的单位,线程是处理机调度和分配的单位,资源是分配给进程的,线程只拥有很少资源,因而切换代价比进程切换低。

程序与进程的区别

进程是一个动态概念,而程序是一个静态概念。
进程具有并行特征,而程序不反映执行所以没有并行特征
进程是竞争计算机系统资源的基本单位,而程序不反映执行也就不会竞争计算机系统资源
不同的进程可以包含同一程序,只要该程序所对应的数据集不同。

进程调度有哪些功能?

记录系统中所有进程的执行情况。
选择占有处理机的进程
进行进程上下文切换

进程的特征

结构特征、动态性、并发性、独立性、异步性

进程间同步

原子操作
信号量机制
自旋锁
管程
会合
分布式系统

临界区

临界区指的是一个访问共用资源的程序片段,而这些共用资源又无法同时被多个线程访问的特性。
对临界资源应采取互斥访问方式来实现共享。

P.V操作是一种低级进程通信原语。

对于记录性信号量,在执行一次P操作时,信号量的值应当减1,当其值为小于0时进程应阻塞;在执行V操作时,信号量的值应当加1;当其值小于等于0时,应唤醒阻塞队列中的进程。

内存管理

重定位:在作业地址空间中使用的逻辑地址变为内存物理地址
适合多道程序运行的存储管理中,存储保护是为了防止各道作业的相互干扰
段页式存储管理中的地址映像表是每个作业或进程一张段表,每个段一张页表
在虚拟页式存储管理方案中,完成将页面调入内存的工作的是缺页中断处理
分段管理和分页管理的主要区别是分页管理有存储保护,分段管理没有
不使用中断机构的I/O控制方式是程序I/O方式
共享设备指同一时间内运行多个进程同时访问的设备
磁盘高速缓冲设在内存中,目的是提高I/O磁盘速度
磁盘空间的地址有盘面号,柱面号,扇区号组成。访问磁盘的时间有 寻道时间,旋转等待时间,读写时间
系统通过树形目录结构来解决重名问题

页式管理的基本原理是什么?

进程的虚拟空间被划分成长度相等的页。
内存空间也按页的大小划分成长度相等的页面。
采用请求调页或预调技术实现内外存储器的统一管理。

分段和分页

页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。
段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。
页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。
分页的作业地址空间是一维的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。

虚拟内存

虚拟内存是一些系统页文件,存放在磁盘上,每个系统页文件大小为4K,物理内存也被分页,每个页大小也为4K,这样虚拟页文件和物理内存页就可以对应,实际上虚拟内存就是用于物理内存的临时存放的磁盘空间。页文件就是内存页,物理内存中每页叫物理页,磁盘上的页文件叫虚拟页,物理页+虚拟页就是系统所有使用的页文件的总和。

文件

输入输出
缓冲区溢出
缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据
覆盖在合法数据上。
在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名
的例子是1988年利用fingerd漏洞的蠕虫。而缓冲区溢出中,最为危险的是堆栈溢出,
因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地
址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代
码,比如得到shell,然后为所欲为。通过往程序的缓冲区写超出其长度的内容,造成
缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。
造成缓冲区溢出的主原因是程序中没有仔细检查用户输入的参数。

死锁

死锁的概念

在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗地讲,就是两个或多个进程被无限期地阻塞、相互等待的一种状态。

死锁产生的必要条件
产生死锁的必要条件: 
1. 互斥(mutualexclusion),一个资源每次只能被一个进程使用; 
2. 不可抢占(nopreemption),进程已获得的资源,在未使用完之前,不能强行剥夺; 
3. 占有并等待(hold andwait),一个进程因请求资源而阻塞时,对已获得的资源保持不放; 
4. 环形等待(circularwait),若干进程之间形成一种首尾相接的循环等待资源关系。

操作系统相关

什么是操作系统的基本功能?
处理机管理。在多道程序或多用户的情况下,要组织多个作业同时运行,就要解决对处理机分配调度策略、分配实施和资源回收等问题。
存储管理。存储管理的主要工作是对内部存储器进行分配、保护和扩充和管理。
设备管理。涉及到通道、控制器、输入输出设备的分配和管理以及设备独立性。
信息管理(文件系统管理) 是对系统的软件资源的管理。
用户接口。操作系统还为用户提供一个友好的用户接口。一般来说,操作系统提供两种方式的接口来为用户服务。
批处理操作系统、分时操作系统和实时操作系统的特点各是什么?
批处理操作系统的特点:成批处理,系统吞吐量高,资源利用率高,用户不能直接干预作业的执行。
分时操作系统的特点:多路性、独立性、及时性、交互性。
实时操作系统的特点:及时响应、快速处理;高可靠性和安全性;不要求系统资源利用率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值