操作系统基础知识

操作系统的分类:

批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统、个人计算机操作系统。

批处理操作系统:

优:资源共享,自动调度,提高了资源利用率和系统分吞吐量。

劣:无交互,周转时间较长。

多道批处理程序要处理的问题:同步互斥,内存大小,使用效率,内存保护

分时系统:联机多用户交互式操作系统,中断技术,时间片轮转

优:人机交互性好,共享主机 ,用户独立性

实时操作系统:联机系统,对外部请求能够在规定的时间内完成。

特点:有限等待

有限响应

用户控制

可靠性高

出错处理能力强

考虑因素:实时时钟管理,连续的人机对话,过载,高可靠性和安全性采取冗余措施

通用操作系统

同时兼有多道批处理系统,分时,实时处理功能。

个人计算机操作系统:

联机交互单用户,以windows和linux为主。

网络操作系统:

特征:

互联计算机群体,物理上分散

自治,每台计算机有自己的操作系统,独立工作,在网络协议下协同工作。

系统互联靠通信设施(软硬件)实现

系统通过通信设施进行信息交换,资源共享,互操作和协作处理。

分布式系统:

特征:

功能分布

坚韧性

高可靠性

操作系统功能:

处理器管理,

存储管理(内存分配,内存保护,内存扩充),

设备管理(通道,控制器,输入输出设备分配与管理,设备独立性管理)

信息管理(文件系统管理)

用户接口管理

操作系统用户接口:

命令接口,程序接口,图形接口

通道:

用于控制I/O设备与内存数据的传输,启动后独立于CPU,实现CPU与I/O并行

中断:

CPU在收到外部请求中断信号后停止原来的工作,保存现场,转去处理中断事件,完毕后返回断点继续工作。

中断请求->中断响应->现场保护->中断处理->中断返回

计算机硬件组成

处理器,存储器,I/O设备,外设

几种主要的寄存器:

地址寄存器

数据寄存器

程序计数器

指令计数器

程序状态字PSW

中断现场保护寄存器

过程调用堆栈

访问速度排序:

寄存器 > 高速缓存 > 内存 > 硬盘缓存 > 硬盘 > 光盘,磁盘

操作系统启动顺序:

启动电源->中断信号->系统引导->导入内存执行代码->操作系统加载->初始化硬件

系统调用:

设备管理

文件管理

进程管理

进程通信

存储管理

线程管理

陷进处理机构:在系统中为控制系统调用服务的机构称为陷进处理机构。 


陷进指令:把由于系统调用引起处理机中断的指令称为陷进指令。 

 

顺序程序的特点:

顺序性,封闭性,可再现性

执行环境特点:独立性,随机性,资源共享性

并发程序执行:

程序执行时间上重叠

进程:

是程序对数据集的执行过程,是资源分配的基本单位。

进程和程序的区别:

进程是程序的一次执行,有生命周期,动态概念

程序是可以作为软件资料长期保存时静态概念

进程是独立运行的单位,能与其他进程并发活动

进程是竞争计算机资源的基本单位,也是资源调度的基本单位

不同进程可以包含同一程序。

作业和进程的区别:

作业是用户相应计算机提交任务的任务实体

一个作业可以包含多个进程

作业的概念主要用于批处理系统中

进程描述:

1、进程控制块PCB:

(1)PCB描述信息:进程标识,用户标识,家族关系

(2)PCB控制信息:进程当前状态,优先级,程序入口,计时信息,通讯信息

(3)资源管理信息:内存,对换覆盖信息,共享程序段信息,输入输出设备,文件指针等

  (4) CPU现场保护区

2、程序段

3、数据结构集

进程状态:

执行 ,就绪,等待(阻塞)

进程状态转换: 
运行到等待   等待某事件的发生如等待I/O完成
等待到就绪      事件已经发生如I/O完成
运行到就绪   时间片到例如两节课时间到下课
新建进程到就绪  新创建的进程进入就绪状态 
就绪到运行   当处理机空闭时由调度分派程序从就绪进程队列中选择一个进程占用CPU。 

进程控制:

系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程各状态的转换从而达到多进程高效率并发执行和协调、实现资源共享的目的。 
原语:

把系统态下执行的某些具有特定功能的程序段称为原语。 
用于进程控制的原语有:

创建原语、撤销原语、阻塞原语、唤醒原语。 
进程创建方式:

由系统程序模块统一创建

由父进程创建。进程创建系统调用

create(name,priority,start-addr)  

UNIX系统fork()
进程撤销:

1、该进程已完成所要求的功能而正常终止

2、由于某种错误导致非正常终止

3、祖先进程要求撤销某个子进程。

在一般操作系统中进程撤消的系统调用是kill  UNIX系统中是exit()  如果撤销进程有自己的子进程,则撤销原语先撤销其子进程的PCB结构并释放子进程所释放的资源后,再撤销当前进程的PCB结构和释放其资源。 

进程互斥:

产生原因:资源共享,进程协同

临界资源:一次只允许一个进程使用资源

临界区:进程访问临界资源的程序段

间接制约:协同进程不能同时访问临界资源

直接制约:互斥进程不能同时访问临界资源

进程同步 :
异步环境下的一组并发进程因直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。

 
进程通讯方式:

#管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
# 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。

死锁:

指个并发进程彼此互相等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资源。从而造成大家都想得到资源而又得不到资源,个并发进程不能继续向前推进的状态。 

死锁产生的四个必要条件:

互斥,不可剥夺条件,请求与保持,环路等待

解除死锁:

剥夺资源

杀死进程

处理器调度机制:

作业调度:高级调度或宏观调度

交换调度:中级调度

进程调度:低级调度

线程调度: 

周转时间:作业从提交时刻到完成的时间

包括等待时间和完成时间

进程调度的功能: 
①用PCB块记录系统中所有进程的执行情况 
②按照一定的调度算法,选择一个处于就绪状态的进程,给它分配处理机(这是最重要的功能) 
③实施进行进程上下文的切换 
引起进程调度的原因: 
1、 正在执行的进程执行完毕。这时如果不选择新的就绪进程执行将浪费处理机资源。 
2、 执行中进程自己调用阻塞原语将自己阻塞起来进入睡眠等待状态。 
3、 执行中进程调用了P原语操作从而因资源不足而被阻塞或调用了V原语激活了等待资源的进程队列。 
4、 执行中进程提出了I/O请求后被阻塞。 
5、 在分时系统中时间片已经用完。 
6、 在执行完系统调用在系统程序返回用户进程可认为系统进程执行完毕从而可调度选择一新的用户程序执行。 
以上都是CPU执行不可剥夺方式下做引起的进程调度的原因,在CPU执行方式是可剥夺时,还有
7、 就绪队列中的某进程的优先级变得高于当前执行进程的优先级,从而也将发生进程调度。 
可剥夺方式,即就绪队列中一旦有优先级高于当前进程优先级的进程存在时,便立即发生进程调度,转让处理机。 
非剥夺方式,不可剥夺方式,即使在就绪队列存在有优先级高于当前执行进程时,当前进程仍将继续占有处理机,直到该进程因自己调度调用原语操作或、等待I/O进入阻塞状态或时间片用完时才重新发生调度让出处理机。 


进程调度性能评价:

1、进程调度性能是衡量操作系统性能的重要指标

2、可采用测试或模拟系统相应时间的方式评价调度性能

调度算法:

1、FCFS 先来先服务

2、RR 时间片轮转法

3、多级反馈轮转法

4、优先级法

5、最短作业优先法

6、最高响应比优先法:响应比R=(等待时间W+执行时间T)/执行时间T 

存储器分类:

内存,外存

虚拟存储器

为用户提供一种不受物理存储器结构和容量限制的存储器的技术称为虚拟存储器或称虚拟存储技术。虚拟存储器需要大容量的外存储器的支持或称物资基础。 

程序地址:

用户编程序时所用的地址或称逻辑地址 、虚地址基本单位可与内存的基本单位相同也可以不相同。

 
程序地址空间:

逻辑地址空间、虚地址空间:用户的程序地址的集合称为逻辑地址空间它的编址总是从0开始的可以是一维线性空间也可以是多维空间。 


物理地址:

把内存分成若干个大小相等的存储单元,每个单元给一个编号,这个编号称为内存地址,物理地址、绝对地址、实地址存
储单元占8位,称作字节byte。 


物理地址空间:

物理地址的集合称为物理地址空间,主存地址空间,它是一个一维的线性空间。 

地址映射的三种方式:

1、编程或编译时确定地址映射关系

2、静态地址映射

3、动态地址映射

内存管理策略:

1、分配结构

2、放置策略

3、交换策略

4、调入策略

5、回收策略

存储保护策略:

(1)上下界保护

(2)保护键

(3)界限寄存器与CPU用户态或核心态工作方式结合

分区存储管理:

1、固定分区

2、动态分区

动态分区策略:

首次适应法

最佳适应发

最坏适应法

分区存储管理的优缺点
优点: 
1、 实现了多个作业或进程对内存的共享,有助于多道程序设计,从而提高了系统的资源利用率 
2、 该方法要求的硬件支持少,管理算法简单,因而容易实现 缺点
1、 内存利用率仍然不高 
2、 作业或进程的大小受分区大小控制,除非配合采用覆盖技术和交换技术 
3、 无法实现各分区之间的信息共享 

覆盖技术:

要求程序员提供一个清楚地覆盖结构。即程序员必须完成把一个程序划分成不同的程序段,并规定好它们的执行和覆盖顺序的工作。操作系统根据程序员提供的覆盖结构来完成程序段之间的覆盖。 


交换技术:

是指先将内存某部分的程序或数据写入外存交换区,再从外存交换区中调入指定的程序或数据到内存中来,并让其执行的一种内存扩充技术。

 
交换技术不要求程序员给出程序段之间的覆盖结构,交换主要是在进程或作业之间进行,覆盖则主要是在同一个作业或进程内执行覆盖只能覆盖那些与覆盖程序段无关的程序段。 
交换进程由换入和换出两个过程组成。

记录空闲存储区的方法:

位图法和链表法

动态页式管理分为:

请求页式管理和预调入页式管理。 

抖动现象:

置换算法选择不当,有可能产生刚被调出内存的页又马上被调回内存,调回内存不久又马上被调出内存,如此反复的局面。这使得整个系统的页面调度非常频繁,以致大部分时间花费在主存和辅存之间的来回调入调出上的现象。 

常用的页面置换算法:将页面从外存置换到内存,提升访问速度

随机淘汰法

轮转法

先进先出

最近最久未使用

最近最少使用淘汰算法

Belady现象:

对于一个作业或进程,如果给他的页面数越接近于它要求的页面数,则刚发生缺页次数会越小,但是,使用FIFO算法是,就会出现分配页越多,缺页越多的奇怪现象。

页面管理可以为内存提供两种方式的保护:

1、地址越界保护

2、通过页表控制对内存信息存取操作方式提供保护。

页式管理的优缺点 

优点 :
1、由于它不要求作业或进程的程序段和数据在内存中连续存放,从而有效地解决了碎片问题 
2、动态页式管理提供了内存和外存统一管理的虚存实现方式,使用户可以利用的存储空间大大增加。这既提高了主存的利用率,又有利于组织多道程序执行。 
缺点 :
1、要求有相应的硬件支持。例如地址变换机构,缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。这增加了机器成本。 
2、增加了系统开销,例如缺页中断处理。 
3、请求调页的算法如选择不当,有可能产生抖动现象。 
4、虽然消除了碎片,但每个作业和进程的最后一页总有一部分空间得不到利用失仍然较大。 

段式与页式的比较:

段的保护:

1、地址越界保护法

2、存取方式控制保护法 

段式管理的优缺点 
优点 
提供了内外存统一管理的虚存实现。 
段长可根据需要动态增长。 
便于对具有完整逻辑功能的信息段进行共享。 
便于实现动态链接。 
缺点 
需要更多的硬件支持。 
处理碎片比较麻烦。 
给系统管理带来一定的难度和开销。 
每个段的长度受内存可用区大小的限制。 
选择不恰当的淘汰算法,可能会产生抖动现象。 

综合段式和页式的段页式内存管理兼具段和页管理的优点。

=================================================================================

一、进程管理

1、进程与线程有什么区别

进程是程序关于某个数据集合上的一次运行活动,它是系统进行资源分配和调度的一个独立单位。

线程是进程的一个实体,是CPU 调度和分配的基本单位,线程基本上不拥有系统资源。

区别如下:

a、一个线程必定属于也只能属于一个进程;而一个进程可以拥有多个线程并且至少拥有一个线程。

b、属于一个进程的所有线程共享该线程的所有资源,包括打开的文件、创建的Socket 等。不同的进程互相独立。

c、线程又称为轻量级进程。

d、进程是程序的一次执行,线程可以理解为程序中一段程序片段的执行。

e、每个进程拥有独立的内存空间,而线程共享其所属进程的内存空间。

 

2、线程同步有哪些机制?

现在流行的进程线程同步互斥的控制机制,其实是由最原始、最基本的4 种方法:临界区、互斥量、信号量和事件。

 

3、内核线程和用户线程的区别

根据操作系统内核是否对线程可感知,可以把线程分为内核线程和用户线程。

内核线程建立和销毁都是由操作系统负责、通过系统调用完成的,操作系统在调度时,参考各进程内的线程运行情况作出调度决定。

用户进程指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,用户进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。

 

二、内存管理

1、内存管理有哪几种方式

常见的内存管理方式有块式管理、页式管理、段式管理、段页式管理。

 

2、分段和分页的区别是什么?

页是信息的物理单位,分页是为了实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说分页仅仅是由于系统管理需要,而不是用户的需要。

段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。

分页的作业地址空间是唯一的,即单一的线性空间,表示一地址;分段的作业地址空间是二维的,程序员在标识一个地址时,既需要给出段名,又需要给出段内地址。

 

3、什么是虚拟内存?

虚拟内存简称虚存,是计算机系统内存管理的一种技术。它是相对物理地址而言的,可以理解为“假的“内存。

它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),允许程序员编写并运行比实际系统拥有的内存大得多的程序,这使得许多大型软件项目能够在具有有限内存资源的系统上实现。而实际上,它通常被分割成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

虚存比实存有以下好处:

a、扩大地址空间

b、内存保护

c、公平分配内存

d、当进程需要通信时,可采用虚存共享的方式实现

 

4、什么是内存碎片?什么是内碎片?什么是外碎片?

内存碎片是由于多次进行内存分配造成的。当进行内存分配时,内存格式一般为(用户使用段)(空白段)(用户使用段),当空白段很小的时候可能不能提供给用户足够多的空间时,这些很小的空隙叫碎片。

内碎片:分配给程序的存储空间没用完,有一部分是程序不使用,但其他程序也没法使用的空间。

外碎片:由于空间太小,小到无法给任何程序分配(不属于任何进程)的存储空间。

 

5、虚拟地址、逻辑地址、线性地址、物理地址有什么区别?

虚拟地址:是指由程序产生的有段选择符和段内偏移地址组成的地址。

逻辑地址:指由程序产生的段内偏移地址。有时直接把逻辑地址当成虚拟地址,两者并没有明确的界限。

线性地址:指虚拟地址到物理地址变换之间的中间层,是处理器可寻址的内存空间(称为线性地址空间)中的地址。

物理地址:是指现在CPU 外部地址总线上寻址物理内存的地址信号,是地址变换的最终结果。

 

6、Cache 替换算法有哪些?

Cache 替换算法有随机算法、FIFO算法、近期最少使用算法(Least Recently Used,LRU算法)、LFU算法(近期最少访问算法)、OPT算法(最优替换算法)

 

三、用户编程接口

1、库函数调用与系统调用有什么不同?

库函数调用时语言或应用程序的一部分,它是高层的,完全运行在用户空间,为程序员提供调用真正的在幕后完成实际事务的系统调用接口;

而系统函数是内核提供给应用程序的接口,属于系统的一部分。函数库调用是语言或应用程序的一部分,而系统调用时操作系统的一部分。

 

2、静态链接与动态链接有什么区别?

静态链接是指把要调用的函数或者过程直接链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的嗲吗就在程序的exe文件中,该文件包含了运行时所需要的全部代码。静态链接的缺点就是当多个程序都调用相同函数时,内存中就会出现这个函数的多个拷贝,造成内存的浪费。

动态链接是相对静态链接而言的,动态链接所调用的函数并没有被复制到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息。仅当应用程序被装入内存开始运行时,在操作系统的管理下,才在应用程序与相应的动态链接库(dynamic link library ,dll)之间建立链接关系。

 

3、静态链接库与动态链接库有什么区别?

静态链接库就是使用.lib 文件,库中的代码最后需要链接到可执行文件中去,所以静态链接的可执行文件一般比较大一些。

动态链接库是一个包含可由多个程序同时使用的代码和数据的库,它包含函数和数据结构的模块的集合。程序文件在运行时才会加载这些模块。

它们的相同点是它们都实现了代码的共享。

不同点是静态链接库 lib 中的代码被包含在调用的exe 文件中,该lib 中不能再包含其他动态链接库或者静态链接库了。而动态链接库dll 可以被调用的exe 动态的”引用“ 和 “卸载”,该 dll 中可以包含其他动态链接库或者静态链接库。

 

4、用户态和核心态有什么区别?

用户态与核心态势操作系统的两种运行级别,它用于区分不同程序的不同权利。

核心态就是拥有资源多的状态,或者说访问资源多的状态,也称为特权态。

相对来说用户态状态下访问资源就会受到限制。

Intel CPU提供Ring0 ~Ring 4 4种级别的运行模式。

 

5、用户栈和内核栈有什么区别?

栈是系统运行在内核态的时候使用的栈,用户栈是系统运行在用户态时候使用的栈。

当进程由于中断进入内核态时,系统会把一些用户态的数据信息保存到内核栈中,当返回到用户态时,取出内核栈中得信息恢复出来,返回到程序原来执行的地方。
用户栈就是进程在用户空间时创建的栈,比如一般的函数调用,将会用到用户栈。

 

内核栈是属于操作系统空间的一块固定区域,可以用于保存中断现场、保存操作系统子程序间相互调用的参数、返回值等。

用户栈是属于用户进程空间的一块区域,用户保存用户进程子程序间的相互调用的参数、返回值等。


转自:http://www.cnblogs.com/byqh/p/5595379.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值