清华操作系统课笔记

操作系统定义 是控制和管理计算机系统的硬件和软件资源,合理的组织计算机工作流程以及方便用户使用,是一种系统软件

操作系统作用 设置操作系统的目的就是提高计算机系统的效率,增强系统的处理能力,充分发挥系统的利用率,方便用户使用

硬件基础---中断和通道

中断 指CPU 在收到外部中断信号后,停止原来工作,转去处理该中断事件,完毕后回到原来断点继续工作。

中断过程:中断请求,中断响应,中断点(暂停当前任务并保存现场),中断处理例程,中断返回(恢复中断点的现场并继续原有任务)

通道( 又称为I/O 处理机)  实际上是一台功能单一、结构简单的I/O 处理机,它单独与CPU ,并直接控制外部设备,与内存进行数据传输。

有自己的I/O 处理器,指令,可编程实现各种复杂的I/O 处理

多道程序设计技术的概念   在计算机内存中同时存放几道相互独立的程序,它们在管理程序的控制下相互穿插地运行,共享CPU 和外设等资源。采用多道程序设计技术的批处理系统称为多道批处理系统

操作系统是一种  系统软件 ,在操作系统中采用多道程序设计方式能提高CPU 和外部设备的   利用效率 。一般来说,为了实现多道程序设计,计算机需要有   更大的内存

三种操作系统基本类型批处理系统、分时系统、实时系统

分时系统:多个用户分时(按时间划分轮流)的使用同一计算机的系统称为为分时系统。

分时系统中,为使多个用户能够同时与系统交互,最关键的问题是  能在一短的时间内,使所有用户程序都能运行;

分时特点:

– 同时性或多路性:多用户同时操作、使用计算机

– 独占性:各终端用户感觉到自己独占了计算机;

– 及时性:用户的请求能在较短时间内相应;

– 交互性:用户能与计算机进行人——机对话。

响应时间为用户发出一条指令到系统处理完这条指令并做出回答所需要的时间

实时操作系统主要用于过程控制、事务处理等有实时要求的领域,其主要特征是 实时性可靠性

在设计分时操作系统时,首先要考虑的是  交互性和响应时间 ;在设计实时操作系统时,首先要考虑的是  实时性和可靠性 ;在设计批处理系统时,首先要考虑的是  周转时间和系统吞吐量

目前的操作系统,通常具有分时、实时和批处理功能,又称作通用操作系统

现代操作系统主要特征

并发性

单处理机、多道程序 处理时,宏观上并发,微观上 交替执行。并发指的是进程,操作系统是一个并发系统。

共享性

多个进程共享有限的计算机系统资源,系统合理分配,资源在一个时间段内 交替被多个进程所用。

虚拟性

一个 物理实体映射为若干个 对应的逻辑实体(分时或分空间)。虚拟是操作系统 管理 系统资源的 重要手段,可提高资源利用率。

异步性

异步性也称不确定性,指进程的执行顺序和执行时间及执行 结果的不确定性:A程序执行结果不确定,不可再现  B多道程序设计环境下, 程序按异步方式运行。

为什么需要中断,异常,系统调用?

中断:因为IO设备的时候,比如说键盘,你如果敲了之后CPU在干别的事,没空理你,那么,用户看到没有反应就会觉得非常不好用,所以这个时候就要中断停下手头的事情,然后给出响应

异常:因为除数为0这种错误都是运行到了之后才能知道,这个时候再弄下去就会有问题了,所以就有了异常来报错

系统调用:银行这种安全的地方需要一定的保护机制,然后又要让用户访问,这个时候就需要系统内核层面的调用来,因为内核是最安全的

系统调用:源头:应用程序主动向操作系统发出的服务请求      响应方式:异步      处理机制:持续的,对用户透明

异常:  源头:非法指令或者其他原因导致当前指令执行失败  响应方式:同步      处理机制:杀死或者重新执行命令

中断:  源头:来自硬件设备的处理请求             响应方式:同步或者异步  处理机制:等待和持续

系统调用和函数调用的区别?

系统调用有个堆栈转换

函数调用就是用简单的堆栈

系统调用的堆栈和函数调用的堆栈是不同的堆栈,因为如果是一样的,函数堆栈就可以很简单的修改里面的值,这是不安全的

系统调用比函数调用更安全,但是系统调用的开销比函数调用大

原因:因为牵扯到的有几点

1,引导机制       2,建立堆栈      3,验证参数(验证传过来的参数到底符不符合)    4,内核态映射用户态的地址空间    4,内核态独立地址空间

 https://blog.csdn.net/qq_39823627/article/details/78736650  用户态与内核态的详细讲解

 用户态和内核态的操作流程

用户态也称用户运行态     内核运行态   ->也就是用户运行的时候的状态,和内核运行时候的状态

一个简单的例子:用户的时候使用read读取文件,然后就用经过编译 汇编  链接 三个过程后,转到内核态调用read的函数

内存管理方式

重定位   分段  分页    虚拟存储

内碎片和外碎片

内碎片:内碎片是分配的时候,用户申请内存,但是我动态分配,它无法利用的地址就是内碎片,因为计算机只能分配2的次方的内存地址,但是如果用户申请511,那么实际会分配512,那么有1个字节无法使用

外碎片:就是经过多次分配,剩下空闲分区无法再分配给其他人,也就成了碎片

连续内存分配

1,最先分配    找到第一个可以分配的地址

2,最佳分配  找到正好大于的

3,最差匹配     找到最大的来分配

优缺点,emmm  不写了

连续内存的碎片整理

1,紧凑  (如果没有指针啥引用的话,可以动态重定位就可以去把所有空闲空间合在一起)

2,分区兑换(通过抢占并回收处于等待状态进程的分区,增大可用内存空间)

  伙伴系统

一种平衡各种分配方式优劣的一种分配方式

运作原理:开始是一整块2^k,如果申请的大小是 2^(k-1)<=x<=2^k ,那么就把这个块分配给它,如果不是,就把当前块给劈开,分成两半,如果还是不满足,还劈,也就是说

内碎片缩小到最多是当前块的大小,效率也不会低,是一种综合的做法,这个用法在Linux内核中用到

非连续内存

猜你喜欢

转载自www.cnblogs.com/Lis-/p/12326366.html