计算机操作系统学习笔记

本科期间学过操作系统,但仅仅是停留在课堂和考试上的学习,课后并没有系统学习过,更不能说深入了解原理了。

现在重新收拾心情,以一种全新的姿态学习这门计算机的基础课程。学习教材是《计算机操作系统》第三版

操作系统基本特征

一、并发性

两个概念:并发与并行。并发指的是在一段时间内发生了两个或者多个事件。并行指的是同一时刻发生了两个或者多个事件。

对于多处理机系统,可以实现并行。而对于单处理机系统,同一时刻只有一个程序占据CPU,微观上只能分时交替执行。

进程的引入:使多个程序能并发执行。没有进程的操作系统只能顺序执行程序,系统资源的利用率很低。进程是操作系统资源分配的最小单位。

线程的引入:进程调度开销较大,引入线程可以减小调度开销。线程是程序执行的最小单位。

二、共享性

共享在操作系统里面其实就是指系统资源的共享。对系统资源的共享分为互斥共享和同时访问。

互斥共享就是说资源同一时刻只能让一个进程访问。这里的资源通常被称为临界资源。

同时访问顾名思义,一个简单的例子就是多个进程对磁盘的访问。当然,对于单处理机系统,同时是宏观上的,微观上还是分时访问。

并发与共享的关系:要实现共享,则要能够并发才行,所以并发是共享的条件,而如果共享的不好,会影响并发的执行,因此,共享有事并发有效执行的前提。因此二者互为条件。

三、虚拟技术

虚拟技术的目的是将一个物理实体抽象成多个逻辑实体。操作系统中利用了时分复用和空分复用两种虚拟技术

1、时分复用

我最早知道时分复用技术是在学移动通信系统的时候,就是分时对用户信道提供通话服务。在操作系统中,使用时分复用技术可以提高资源利用率。打个比方,将1s划分为1000个时间段,这1000个时间段中的某一段交给一个程序,其他段交给另外的程序,每个程序在这1s内只执行属于它的那段时间,称为时间片,在下个1s,程序分到了时间片,继续运行。

虚拟处理机技术:将一台物理上的处理机虚拟为多台逻辑上的处理机,然后在每台逻辑上的处理机上运行程序。用户感觉有多台处理机为它提供服务。

虚拟设备技术:将一台物理I/O设备虚拟为多态逻辑上的I/O设备。用户感觉同时可以使用多个I/O设备。

2、空分复用

虚拟磁盘技术:一台电脑上只有一个硬盘,使用虚拟磁盘技术可以将一个硬盘虚拟为多个硬盘。例如电脑上的C、D、E、F盘。

虚拟存储器技术:对于单处理机系统,处理机会有很多空闲时间,内存也会有很多空闲空间,这会导致内存利用率很低。时分复用可以解决前一个问题,而空分复用是用来解决后一个问题的。但是单纯的空分复用只能提高内存的利用率,并不能实现扩容的功能。为了实现扩容,需要用到虚拟存储器技术,即内存时分复用。(前面的时分复用说的是处理机的时分复用,这里是内存的时分复用)。例如,一个需要100M内存的程序可以在20M的内存空间中运行。基本思路是每一次只将程序的一部分装入内存,下一次装入另一部分。这样一来就实现了程序的各部分分时进入内存运行。

3、异步性

进程在运行的过程中不是一气呵成的,会因为各种事件而导致走走停停,可以说进程的运行过程是不可预知的。先执行的进程可能后完成,进程以人们不可预知的速度向前推进,这就是异步性。(之前学多线程的时候,同样的程序,执行多次输出的结果不尽相同,就是异步啦)。既然存在异步性,那岂不乱了方寸,不用担心,操作系统会为我们提供进程同步机制,确保多次运行会得到相同结果。

操作系统的主要功能

一、处理机管理功能

1、进程控制:为作业创建进程,撤销已结束的进程,控制进程在运行过程中的状态转换。

2、进程同步:由于操作系统中的进程运行具有异步的特征,因此需要对进程进行同步,协调多个进程的运行。

协调的方式有两种:进程互斥方式和进程同步方式。进程互斥方式指的是不同的进程互斥的访问临界区资源。进程同步方式指的是相互合作的进程需要同步机构对它们执行的次序进行协调。进程互斥方式的简单实现是通过对临界区进行加锁,进程同步方式的简单实现是采用信号量机制。

3、进程通信:实现相互合作的进程之间的信息交换。同一计算机系统上的进程之间是源进程发送命令,直接将消息挂载到目标进程的消息队列中,目标进程利用接受命令从消息队列中取消息。

4、调度:分为作业调度和进程调度。二者分别是调度过程的两步。

第一步,作业调度就是按照一定的调度算法将作业调入内存,并为之创建进程,并将进程放入就绪队列中。

第二步,进程调度是将就绪队列中的进程按照一定的算法取出并分配cpu资源,使之处于运行态。

二、存储器管理功能

1、内存分配

内存分配就是为每个程序分配内存空间。内存分配的两种方式:静态和动态。静态内存分配是在作业装入内存时就确定了。在作业装入内存以后运行阶段,不允许在进行内存申请,也不允许在内存中移动,即使用其他的内存空间。动态内存分配也是在作业装入内存时确定,但是运行过程中可以申请新的内存空间,也可以在内存中移动。

内存分配应提供如下结构和功能:

内存分配数据结构:存放内存使用情况的数据结构。

内存分配功能:内存分配算法。

内存回收功能:内存回收算法。

2、内存保护

确保每个程序都只在属于自己的内存空间中运行,不同进程间内存相互独立(共享内存除外)。

保护机制:引入两个界限寄存器,分别放在执行程序的上界和下界。

3、地址映射

不妨拿c程序举例,c程序执行过程是这样的:预处理-编译-汇编-链接。预处理是对源文件中的宏等进行替换,编译可以得到汇编代码,再经过汇编器可以得到机器码,最后通过链接(动态链接库或者静态链接库)形成可执行文件。对于经过汇编器以后的机器码,不同的程序的起始地址都为0,而程序中的其他地址都是相对起始地址而言的,称为相对地址或者逻辑地址。而内存中各单元所限定的地址范围为内存空间,成为物理地址。由于多个程序不可能都从物理地址的0开始,因此会导致物理地址和逻辑地址不一致。因此存储器管理必须通过地址映射功能,将逻辑地址映射到物理地址。

4、内存扩充

此处的内存扩充不是指物理内存的扩充,而是通过虚拟存储技术扩充逻辑内存。让用户感觉内存比实际的要大。要实现逻辑内存的扩充,需要提供如下功能:

1、请求调入功能

在装入一部分程序和数据的情况下,程序能得以运行。程序运行过程中如果发现要继续运行的程序和数据不在内存中,可以发送请求给操作系统,让操作系统将所需的程序和数据从磁盘中调入内存,以便继续运行

2、置换功能

如果发现当前的内存空间不能再放更多的程序和数据的时候,操作系统能够将内存中一部分暂时不用的程序和数据调出到磁盘中,以腾出内存空间,然后将所需调入的部分调入内存。

三、设备管理功能

设备管理的主要任务:完成用户的I/O请求,为用户分配I/O设备,提高CPU和I/O设备的利用效率,提高I/O速度,以及方便用户使用I/O设备。

1、缓冲管理

缓冲管理引入的原因在于高速CPU和低速I/O设备之间的速度不匹配。这种不匹配会影响CPU的利用率。通过在CPU和I/O设备之间引入缓冲可以有效提高CPU的利用率。在缓冲区的大小不够大的时候,CPU可以干别的事情,一旦缓冲区大小达到某种程度,就可以通知CPU了。

2、设备管理

顾名思义,按照某种算法为用户分配设备资源。同时需要维护设备的标识符和状态等信息的数据结构用于设备管理。

3、设备处理

设备处理程序又称为设备驱动程序。说到驱动,一下有了亲切感,什么网卡驱动,显卡驱动,优盘驱动之类的。记得有一次网购了一个新鼠标,装驱动装了半天,差点退货,没驱动很要命!设备处理的基本任务是实现CPU和设备控制器之间的通信。CPU向设备控制器发送I/O命令,要求它完成相应的I/O操作,反之,CPU接收设备控制器发来的中断请求,并给予响应和处理。

举个简单的例子,打印。打印的时候,先是通过设备驱动程序检查打印是否是个合法事件,并了解打印机状态是否空闲以及打印机的工作方式,然后设备驱动程序向设备管理器发送打印请求,启动打印机去完成指定的打印操作。设备驱动程序还能及时响应由控制器发来的中断请求,并根据中断请求的类型,调用响应的中断处理程序进行处理。

四、文件管理功能

1、文件存储空间的管理

对于当前要用的系统文件和用户文件,放在随机访问的磁盘上(RAM),

2、目录管理

方便用户查找文件

3、文件的读/写管理和保护

存取控制

今天就这样了。。。

猜你喜欢

转载自blog.csdn.net/u012260341/article/details/79832931