操作系统基础知识整理

1、操作系统分类

批处理操作系统、分时操作系统(Unix)、实时操作系统、网络操作系统、分布式操作系统、微机操作系统(Linux、Windows、IOS等)、嵌入式操作系统。

2、操作系统的4个特征:并发性、共享性、虚拟性、不确定性。

3、操作系统的功能有:处理机管理、文件管理、存储管理、设备管理、作业管理。

  • 处理机管理:也称进程管理。实质上是对处理机执行时间进行管理,采用多道程序等技术将CPU的时间真正合理地分配给每个任务。主要包括进程管理、进程同步、进程通信和进程调度。
  • 文件管理:又称信息管理。主要包括文件存储空间管理、目录管理、文件的读写管理和存取管理。
  • 存储管理:是对主存储器空间的管理。主要包括存储分配与回收、存储保护、地址映射(变换)和主存扩充。(即内存管理)
  • 设备管理:实质上是对硬件设备进行管理,其中包括输入输出设备的分配、启动、完成和回收。
  • 作业管理:包括人物、人机交互和用户界面管理等。

4、处理机管理

  • 1、程序顺序执行的特征:
    • 顺序性:每一操作必须在下一操作开始之前结束
    • 封闭性:程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变,程序一旦执行,其结果不受外界影响
    • 可再现性:程序执行环境和初始条件相同,重复执行时,结果相同
  • 2、程序并发执行的特征:
    • 间断性:程序并发运行时,共享系统资源,为完成同一任务相互合作,会形成相互制约关系,导致并发程序具有“执行-暂停-执行”这种间断性的活动规律
    • 失去封闭性:程序并发执行时,资源状态由多个程序改变,某程序执行时,会受到其他程序影响,失去封闭性
    • 不可再现性:失去封闭性,导致失去可再现性
  • 3、进程的特征
    • 结构特征:程序段、相关数据段和PCB三部分构成进程实体
    • 动态性:进程实体的一次执行过程,具有生命期,而程序是有序指令集合,是静态的
    • 并发性:多个进程同时存于内存,在一段时间内同时运行
    • 独立性:进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位
    • 异步性:进程按各自独立的、不可预知的速度向前推进
  • 4.进程的状态:三态模型(左图)、五态模型(右图)
  • 5、进程间的通信(同步与互斥):由于多个进程可以并发执行,所以进程间必然存在资源共享和相互合作的问题。进程通信是指各个进程交换信息的过程。

同步是合作进程间直接制约问题,互斥是申请临界资源进程间的间接制约问题。(临界资源(Critical Resource, CR):在同一时间只能供一个进程使用的资源)临界区管理4条原则:

    • 有空即进:
    • 无空则等:
    • 有限等待:要求访问临界区的进程,保证有限时间内进入临界区,避免死等
    • 让权等待:进程不能进入临界区时,应立即释放处理机,避免忙等
  • 6、信号量机制:即利用PV操作来对信号量进行处理。

信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。

    • 当它的值大于0时,表示当前可用资源的数量;
    • 当它的值小于0时,其绝对值表示等待使用该资源的进程个数。
    • 注意,信号量的值仅能由PV操作来改变。

一般来说,信号量S >= 0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S < 0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S <= 0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。

  • 7、进程调度:如何分配CPU。

调度方法分为可剥夺和不可剥夺两种。即当有更高优先级的进程到来时,是否可以将正在运行进程的CPU分配给高优先级的进程,可以则为可剥夺,否则为不可剥夺的。

       在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。

    • 高级调度:又称长调度或作业调度。它决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。系统中一个作业只需经过一次高级调度。
    • 中级调度:又称短程调度或对换调度。它决定处于交换区中的就绪进程哪个可以调入内存,以便直接参与对CPU的竞争。在内存资源紧张时,为了将进程调入内存,必须将内存中处于阻塞状态的进程调出交换区,以便为调入进程腾出空间。
    • 低级调度:又称短程调度或进程调度。它决定处于内存中的就绪进程中的哪个可以占用CPU。最活跃、最重要的调度程序,对系统影响也是最大的。

常见的进程调度算法:先来先服务(FCFS)、短作业优先、时间片轮转(固定时间片、可变时间片)、优先级调度(静态优先级、动态优先级)、多级反馈调度(时间片轮转+优先级调度)。

  • 8、死锁:两个以上的进程互相要求对方已经占有的资源导致无法继续运行下去的现象
    • 产生死锁的原因主要是:

         (1) 因为系统资源不足。

         (2) 进程运行推进的顺序不合适。

         (3) 资源分配不当等。

  如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。

    • 产生死锁的四个必要条件:互斥条件、请求与保持条件、不剥夺条件、循环等待条件。

  (1) 互斥条件:一个资源每次只能被一个进程使用。

  (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

  (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

  (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

  这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

    • 解决死锁的4种处理策略:鸵鸟策略(即不理睬策略)、预防策略、避免策略、检测与解除策略。

死锁预防:预先静态分配法(破坏不可剥夺条件)、资源有序分配法(将资源分类按顺序排列,保证不形成环路)。

死锁避免:银行家算法(对每个资源请求进行检测,确保安全。需要很大的系统开销)。

死锁解除:资源剥夺法、撤销进程法。

  • 9、线程与进程
    • 定义
      • 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。
      • 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。也有就绪、运行、阻塞三态。
    • 关系
      • 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.
      • 相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
    • 区别:

1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程.

2) 线程的划分尺度小于进程,使得多线程程序的并发性高。

3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

4) 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

    • 优缺点

线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。

5、存储管理

  1. 地址重定位:指将逻辑地址变换成物理地址的过程。分为静态重定位和动态重定位。
  2. 存储管理方案:分区存储管理(固定分区、可变分区、可重定位分区)、分页存储管理(将一个进程的地址空间划分为若干个大小相等的区域,成为页,相应地,将主存空间划分成与页相同大小的若干个物理块,称为块。至少需要两次访问主存)、分段存储管理段页式存储管理(地址结构:段号+段内页号+页内地址)、虚拟存储管理

       可变分区的请求和释放主要算法:最佳适应算法、最差适应算法、首次适应算法、循环首次适应算法。

       快表:在页式存储管理中将当前最活跃的少数几页的物理块号保存在高速存储器中,用以提高页式存储管理的性能。(不用两次访问主存)

页面置换算法:最佳置换算法(最长时间内不再被访问的页面置换出去)、先进先出置换算法、最近最少未使用置换算法、最近未用置换算法。

6、设备管理

  1. 设备管理的目标是如何提高设备的利用率,为用户提供方便统一的界面。
  2. 设备管理采用的缓冲技术:通道技术、DMA技术、缓冲技术、Spooling技术。
  3. 磁盘调度算法:先来先服务(FCFS)、最短寻道时间(SSTF)、扫描算法(SCAN)(先由里向外,到达最外后由外向里)、单向扫描调度算法(CSCAN)(无法换向,只能由里向外)。

7、文件管理

  1. 文件的逻辑结构:有结构的记录式文件(由一个以上的记录构成。记录分为定长记录、不定长记录)、无结构的流式文件(由一串顺序的字符流构成的文件,不划分记录)。
  2. 文件的物理结构:顺序结构、链接结构、索引结构、多个物理块的索引表。
  3. Unix的三级索引结构:
  4. 文件的存取方法:顺序存取法、随机存取法。
  5. 文件的存储空间管理:外存空闲空间管理的数据结构通常称为磁盘分配表。常用的空闲空间的管理方法:位示图(用一个bit为的0、1表示一个物理块的空闲情况)、空闲区表、空闲块链、成组链接法(每100块为一组进行记录空闲的块号和大小)。
  6. 文件链接:硬链接(两个文件目录表目指向同一个索引节点,即指不同的文件名与同一个文件实体的链接)、符号链接(在建立的新文件或目录并与原来的文件或目录的路径名进行映射)。
    • 硬连接:原文件名和连接文件名都指向相同的物理地址。目录不能有硬连接;硬连接不能跨越文件系统(不能跨越不同的分区)文件在磁盘中只有一个拷贝,节省硬盘空间;由于删除文件要在同一个索引节点属于唯一的连接时才能成功,因此可以防止不必要的误删除。
    • 符号连接:用ln -s命令建立文件的符号连接符号连接是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径名。类似windows下的快捷方式。可以删除原有的文件而保存连接文件,没有防止误删除功能。

8、作业管理

  1. 作业状态分为4种:提交(通过输入设备送入计算机)、后备(通过Spooling系统将作业输入到计算机系统的后备存储器中,等待作业调度程序调度)、执行和完成。
  2. 常用的作业调度算法:先来先服务、短作业优先、响应比高优先、优先级调度算法、均衡调度算法。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源优测

[快学Python3]INI文件读写

概述 ini是我们常见到的配置文件格式之一。 ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。 ini“初始化(Initial)”的缩写。...

2776
来自专栏开源优测

[快学Python3]INI文件读写

概述 ini是我们常见到的配置文件格式之一。 ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。 ini“初始化(Initial)”的缩写。...

2867
来自专栏安富莱嵌入式技术分享

【RL-TCPnet网络教程】第30章 RL-TCPnet之SNTP网络时间获取

本章节为大家讲解RL-TCPnet的SNTP应用,学习本章节前,务必要优先学习第29章的NTP基础知识。有了这些基础知识之后,再搞本章节会有事半功倍的效果。

1072
来自专栏张善友的专栏

[腾讯社区开放平台]介绍开放授权协议-OAuth

OAuth (开放授权) 是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所...

2367
来自专栏owent

理解Raft算法

之前已经有Paxos算法,用于解决分布式系统最终一致性问题,而且已经有了zookeeper这个成熟的开源实现。那么这个Raft算法有啥用呢?按照Raft官网的说...

3813
来自专栏Android 研究

Android跨进程通信IPC之1——Linux基础

由于Android系统是基于Linux系统的,所以有必要简单的介绍下Linux的跨进程通信,对大家后续了解Android的跨进程通信是有帮助的,本篇的主要内容如...

1653
来自专栏Java架构师学习

深度剖析Swagger原理swagger简介

swagger确实是个好东西,可以跟据业务代码自动生成相关的api接口文档,尤其用于restful风格中的项目,开发人员几乎可以不用专门去维护rest api,...

3782
来自专栏JavaEdge

压测软件Jmeter使用实例(WIN7环境)百科我们为什么使用JmeterJmeter安装配置Sampler监听器(Listener)点击启动按钮,开启测试Jmeter自定义变量Redis的压测

3235
来自专栏Sorrower的专栏

内核必须懂(一): 用系统调用打印Hello, world!

1435
来自专栏JavaEdge

Netty4 实战精华EventLoop 和线程模型(更新中!!!)1 线程模型概述2 EventLoop 接口3 任务调度

简单地说,线程模型指定了操作系统、编程语言、框架或者应用程序的上下文中的线程管理的关键方面。 显而易见地,如何以及何时创建线程将对应用程序代码的执行产生显著的...

851

扫码关注云+社区