操作系统基础

来源:互联网 发布:ubuntu ssh配置 编辑:程序博客网 时间:2024/05/12 15:34

这周在看操作系统原理的视频,主要包括进程管理、存储管理、外部设备管理和文件管理。

整理如下:

一、什么是操作系统?操作系统可以从三个方面理解,虚拟机的观点、资源管理者(监视资源使用情况,分配回收资源、保护资源的使用)、作业组织观点(协调应用软件的执行次序)。总之,操作系统计算机中的系统软件,管理和控制计算机系统中的硬件和软件资源,合理的组织计算机的工作流程,以便有效利用这些资源为用户提供一个功能强,使用方便的工作环境,从而在计算机和用户之间起到接口作用。
二、进程管理
1、进程:程序的一次执行(动态的概念),包括可执行程序、程序所需的数据、相关状态信息。进程是拥有资源的最小单位。
  进程的结构:程序、数据集合、进程控制块PCB(进城存在的唯一标识)。PCB组织方式可以是链表、表格结构、多级队列等。
进程的状态:执行、就绪、阻塞、新建、终止、就绪/挂起、阻塞/挂起。
交换技术是将内存中暂时不能运行的进程或暂时不用的数据和程序,换出到外存(通常PCB不换出内存),腾出内存空间,把已经具备运行条件的进程或进程所需数据和程序换入内存。进程被交换到外存,此时进程为挂起状态。


2、操作系统的内核:基于硬件的第一层软件扩充,提供操作系统功能,是操作系统工作的基础。将与硬件紧密相关的(如中断处理、设备驱动程序)、基本的、公共的、运行频率较高的模块(如时钟管理、进程调度等)以及关键性数据结构独立开来,使之常驻内存,并对他们进行特殊保护,着一些部分成为操作系统内核。
3、进程的互斥与同步
     实现并发控制,各个进程互相竞争资源,某一时刻只允许一个进程使用的资源叫做临界资源,访问临界资源的那段代码为临界区,任何时刻只允许一个进程进入临界区。各个进程之间也要共同协作,这就要求必须保证数据的一致性。并发控制还要求各个进程之间通信协作,进程通信的方式主要有:消息传递、管道、共享存储区等。
互斥与同步的解决策略:①软件方法,很难控制进程间的同步于互斥,太过于复杂,并且效率很低。
②硬件方法,通过屏蔽中断或采用专门的机器指令控制互斥与同步,但是会造成进程的忙等待。
③信号量方法,已经成为控制进程同步与互斥的通用方法。
       两个或多个进程通过信号量进行合作,可以迫使进程在某个位置阻塞等待,直到他收到一个可以向前推进的信号(被唤醒),实现信号灯作用的变量称为信号量,定义为记录型变量s,其中一个域为整形,另一域为队列,队列的元素为等待信号量的阻塞进程。对信号量的两个原子操作为wait(s)、signal(s)。信号量有互斥信号量(用于申请或释放资源的使用权,s.count初始化为1)和资源信号量(用于申请或归还资源,s.count初始化为可用资源的数量)。
      进入临界区之前,先执行wait(s)原语,若s.count<0,则进成调用阻塞原语将自己阻塞,并插入到s.queue队列中。一旦其他某个进程执行了signal(s)原语中的s.count+1,发现s.count小于等于0(即阻塞队列中又被阻塞的进程),调用唤醒原语,将阻塞队列中的第一个进程唤醒。
计算机系统中的两个经典问题,生产者和消费者问题,读者和写者问题都可以用信号量方法实现。

④管程方法,管程是管理进程间同步的机制,他保证进程互斥的访问共享变量,提供了一个方便的阻塞和唤醒进程的机构,更容易使用和控制。
管程是由局部于管程的数据和一个或多个内部过程所组成的模块(有点像对象),局部于管程的数据只能被局部于管程内的过程所访问,管程外的过程不能对其进行操作;相反地,局部于管程内的过程只能访问管程内的数据结构。管程本身被作为一种临界区,进程可以在任何需要的地方调用管程中的过程,任何时刻管程中只有一个活跃的进程,其他进程必须等待。管程是一个语言成分,对他的互斥访问通常由编译程序在编译时自动添加,不需要编程者关心。

⑤消息传递的方法
进程之间通信方式有三种:基于共享存储区(不需数据移动,适用本地通信)、消息传递、邮箱机制。
消息传递方式,消息中包含的信息有:消息类型、目的地址、源地址、消息长度、控制信息和消息内容
实现进程间的通信,需要send(目的地址,消息)和receive(源地址,消息)两个通信原语。只有当一个发送进程发送出消息厚,接收进程才能接收。
消息传递的三种同步方式:①阻塞发送,阻塞接收(使进程间紧密同步)
②不阻塞发送,阻塞接收(通常用于服务进程为其他进程提供服务)
③不阻塞发送,不阻塞接收(常用于分布式系统)
若发送进程与接收进程共享一个数据结构,在其中进行中转,该数据结构通常称为邮箱。多个并发执行的发送进程和接收进程共享一个邮箱mutex,邮箱中消息可以为一条(对应互斥信号量),也可以为多条(对应资源信号量)。如果进程希望进入临界区,必须先从邮箱中接收一条消息,若邮箱为空,则该进程被阻塞;若进程收到邮箱中的一条消息,则进入临界区,执行完毕退出临界区后,将该消息发送回邮箱。
4、死锁问题
多个进程因为竞争资源,或执行时推进的顺序不当,或相互通信而永久阻塞的现象称为死锁。如果没有外力作用,死锁将永远保持下去。
死锁产生的条件有:互斥、占有且等待、非剥夺、循环等待。
解决死锁问题的方法:①预防死锁,破坏死锁产生的条件。
②避免死锁,在资源分配之前预测是否会导致死锁,决定是否进行资源分配。但是这个方法有很多限制条件,必须预先声明每个进程所需资源总量;进程之间相互独立,他们的执行顺序取决于系统安全而不是进程间的同步要求;系统必提供固定数量资源供进程使用;若进程占有系统资源,则不能让其退出系统。
③检测并解决死锁
死锁定理:当且仅当系统某状态s所对应的资源分配图是不可完全简化的,称s是死锁状态。
解除死锁:①撤销所有死锁进程。
②把死锁进程恢复到前一个检查点。
③按某个原则逐个选择死锁进程进行撤销,直到解除死锁。
④按某原则逐个剥夺进程资源。
三、存储管理
1、存储管理的任务
     ①存储分配,内存空间的分配与回收。
     ②地址映射,逻辑地址到物理地址的映射,有静态映射和动态映射。
     ③存储保护,防止地址越界,防止操作越权。
     ④存储共享,代码共享(为了节省存储空间)和数据共享(为了进程间通信)
     ⑤存储扩充,
       虚拟存储技术,将部分外存虚拟为内存,并将内外存有机结合,得到一个容量相当于外存,速度接近内存,价格便宜的虚拟存储系统。
2、内存划分与分配技术
        1)、 内存划分可以分为静态划分(预先划分)和动态划分。
         静态划分包括分页(一个进程可以分到多个页)和分区(有固定分区和异长分区,一个进程分入一个区)。对于页的控制有位示图、空闲页框表、空闲页框链表。
         动态划分,不用考虑存在内零头问题。系统必须维护一张空闲分区表。
         动态划分的算法有①首次适应算法;从低地址段开始查找一个满足要求的的内存区域。
                                      ②下次适应算法;该算法记录上次分配分区的位置,从上次分配分区处开始查找。
                                      ③最佳适应算法;选择满足要求并且长度最小的分区。
                                      ④最差适应算法;选择满足要求并且长度最大的分区。
        2)、简单存储管理技术   (有连续存储和非连续存储)
非连续存储包括分页存储技术,分段存储技术,段页式存储技术。
①简单分页存储管理
         将内存分成相同大小的存储块,称为页框。将用户的逻辑地址空间划分成若干与页框大小相等的部分,每部分称为页。系统以页框为单位将内存分给进程,分给一个进程的页框不一定是连续的,进程的一个页对应内存的一个页框。
         逻辑地址为页号+页内偏移量,地址转换过程为:将逻辑地址中的页号取出作为索引查找页表,找到对应页框号,根据页框号和页内偏移量得到物理地址。
②简单分段存储管理
         程序由若干逻辑段组成,分段存储是动态划分技术,将物理内存动态的划分成许多尺寸不等的分区,进程的每一段独立分配一个分区。一个进程的各个段分到的分区不一定是连续的分区。
           逻辑地址为段号+段内地址,地址转换:逻辑地址中的段号取出作为索引,查找进程的段表,将段内地址与段的长度比较,如果大与段的长度,为越界访问,引起中断。若是合法访问,将段的起始地址与段内地址相加,得到物理地址。
          分页与分段存储技术比较:1、都是非连续存储,由地址映射实现地址变换。
                                                     2、页是信息的物理单位,大小固定;段是信息的逻辑单位,各段长度不定,每一段都有一定的逻辑含义。                                          3、分页的地址空间是一维的,逻辑地址的划分由机器硬件实现,对用户透明;分段的地址空间是二维或多维的,编程者知道段名和段内偏移量。
                                                     4、分页源于系统管理物理内存的需要,在系统内部进行,由系统实现。分段源于用户进行模块化程序设计的需要,在系统外部进行,由用户实施。
③段页式存储管理
            内存空间分成大小相等的页框;进程的地址空间采用分段方式,按照程序的逻辑关系分成若干段;进程的每一段采用分页方法,按照页框大小把每一段分成若干页。
          逻辑地址为:段号+段内页号+页内偏移量。地址转换:逻辑地址中的段号取出作为索引查找段表,找到对应页表首地址,根据页表首地址和段内页号得到对应页框号,页框号和页内偏移量得到对应物理地址。
3、虚拟存储技术
            简单存储要求将一个进程所需的程序和数据全部装入内存方可执行。虚拟存储可以实现只装入一部分程序的进程到内存也能执行,当访问到不在内存的指令和数据时,系统要将该页或段装入内存,这需要消耗磁盘的I/O操作时间。   
         虚拟存储依赖的技术:缺页/段中断、交换技术。
         虚拟存储可能会有抖动问题,如果系统花费大量时间把程序和数据频繁的装入和移出内存,而不是执行用户指令,那么称系统出现抖动。抖动的出现是因为分页或者分段的不恰当。
      虚拟存储管理技术有虚拟存储分页技术、虚拟存储分段技术、虚拟存储段页式技术。逻辑地址到物理地址的转换同简单存储管理一样,只是在访问页表、段表时增加判断所访问的页、段是否在内存中,若不在内存则先将其装入内存再执行下去。           
          虚拟存储系统的软件策略:1、驻留集管理。驻留集是进程分到的物理页框的集合。他解决系统为每个活跃进程分配多少页框的问题。2、页面放置策略。系统应该在内存什么位置为活跃进程分配页框。3、页面获取策略。何时把一个页面装入内存。4、页面置换策略。解决当系统欲把一个页面装入内存时,应在什么范围判断有没有空闲页框供分配;当指定范围没有空闲页框时,应从指定范围选择哪个页面移出内存。5、页面清除策略。将由页面置换算法选择的被修改的置换页面保存到外存。6、负载控制。解决系统应当保持多少个活跃进程驻留在内存的问题。
四、设备管理
1、设备管理的主要功能:设备分配:操作系统统一调度和控制,设备分配程序按照一定策略为申请设备的用户进程分配设备,记录设备的使用情况。                设备映射:逻辑设备到物理设备的映射。
                                        设备驱动:对物理设备进行控制,以实现真正地I/O操作。
                                        I/O缓冲区管理:处理器和外设速度不匹配。
2、I/O系统结构:总线型I/O系统、通道型I/O系统、具有控制器的I/O系统。
对设备的控制,从处理机的角度,各种外设可以看成由一组寄存器组成的。每一设备都能通过寄存器的地址唯一确定。
    I/O控制方式:程序I/O方式,忙等待或循环测试方式。
                           中断I/O方式
                           DMA方式,直接存储器访问方式。数据直接从设备送入内存,或直接从内存送入设备。
                           I/O通道方式,通道相当于一个功能单纯的处理机,专门用于处理I/O操作。
3、I/O缓冲技术
提前读:用户进程从I/O缓冲区取走一个数据后,立即发送出对下一个数据的输入请求。
延后写:操作系统很快将用户请求的输出数据从用户进程工作区写到I/O缓冲区。
4、虚拟设备
虚拟设备技术类似于缓冲区技术,可以认为是为设备提供了多个更大的,甚至在实际工作中是无限长度的缓冲区,进一步提高系统效率。在进程空间和外设之间加入共享型设备。
五、文件管理
1、文件系统的功能有:管理文件存储空间,文件目录、完成文件读/写,实现文件共享与保护;为用户提供交互式命令接口和程序调用接口。
文件是一种具有符号名的、相关联元素的有序集合。数据结构有字段和记录。
文件类型,按照逻辑结构分类分为有结构文件(文件的元素是记录,文件有若干条记录组成。按结构可分为对文件、顺序文件、索引顺序文件、索引文件和直接文件)和无结构文件(文件看成一个字节流)。按照物理组织结构可分为连续文件(文件中信息连续存储到若干相邻的存储块)和非连续文件(链接文件和索引文件)。
2、文件目录
目录的设计对文件系统性能的影响是至关重要的。目录设计包括目录内容和目录结构两方面。
文件目录中应包含的信息有基本信息(文件名、文件类型、文件组织)、地址信息(卷、起始地址、文件的大小、分配的大小)和访问控制信息(文件主、保护信息、表急位、建立日期、上一次读日期和阅读者、上一次修改日期和修改者、备份日期、当前使用计数)。
文件目录结构要考虑使用整体目录结构(目录中的每个文件有一个表目,在每个文件表目中包含该文件目录的全部内容)还是分体式目录结构(文件目录只包括文件名和一个指向另一数据块的指针,该数据块中包含了文件目录内容以外的全部内容),是否采用层次的树形目录结构(单级目录结构、两级目录结构和层次目录结构)。
3、文件的物理存储
将存储空间分成大小相等的数据块,一个分区等于一个数据块或者是一个分区为若干连续的数据块。
文件存储空间分配技术,连续分配(使用可变大小的连续分区,预分配)
                                        链接分配(将文件分区设置为若干连续的数据块,每个文件的各个分区通过指针相连)
                                        索引分配(可以是基于数据块的分区的索引分配,也可以是基于可变分区的索引分配)
空闲空间管理:空闲分区表(存储空间中各个空闲分区登记在一张表中,一个分区对应一个表项,将所有空闲分区按起始存储块号递增的顺序依次排列);空闲分区链表(用指针将各个空闲分区连接起来,并记载各个空闲分区的大小);索引(将空闲分区看成文件,按文件存储空间分配方法为空闲分区建立索引);位示图(用二进制0和1表示存储空间中存储块的使用状态)
4、逻辑文件与物理数据块之间的转换
无结构字节文件,需要“流-块转换器”,一个数据块可存储若干字节。
有结构文件,需要“记录-块转换器”,记录组块方法有:①固定组块法,数据块由若干条固定长度的记录组成,一条记录完整存储在一个块中。②可变长跨快组块法,允许纪录被划分存储在不同的块,用指针链接一条跨块存储记录所在的两个数据块。③可变长非跨块组块法,不允许记录存储在两个块。
5、文件共享(同时存取、存取权限)
文件共享就是可以从不同地方打开同一个文件。可以用链接目录项、基本文件目录、索引节点、URL实现文件共享。
6、文件的保护与安全
影响文件安全的主要因素是数据丢失(系统容错技术和备份技术)和非法入侵。
安全性管理有以下几方面
       ①系统级安全,防止未核准用户进入系统。
       ②用户级管理,根据不同用户,设置不同文件访问权限。
       ③目录级安全管理,与用户权限无关,是为保护系统中的各种目录而设计的,只有系统内核才具有写目录的权利。
       ④文件及安全管理,文件的访问属性。