现代操作系统(1.引论)

前言

本文是结合《现代操作系统》(Andrew S. Tanenbaum著)的摘要与上课ppt的笔记,自用。


第一章:引论

任务核心:存储+cpu(任务执行性能与内存大小是一个log型函数)

文件从使用角度区分:
①程序类文件
②数据类文件
(用例:播放器播放视频;视频是数据文件、播放器是程序文件)

格式化是指装上文件管理系统,不同操作系统会影响管理系统
cpu多核:有多个控制单元与执行单元

多数计算机有两种运行模式:
①内核态;
②用户态

软件中最基础的部分是操作系统,它运行在内核态(也称为管态、核心态)。操作系统具有对所有硬件的完全访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在用户态,用户态只使用了机器指令中的一个子集(那些会影响机器的控制或可进行I/O操作的指令,在用户态中的程序里是禁止的)

1.1 什么是操作系统

操作系统:是运行在内核态的一种软件,其任务是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚刚提到的所有设备,是一个硬件设备的扩展

  • 用户与之交互的程序,基于文本的称为shell;
  • 基于图标的称为图形用户界面(GUI)

操作系统功能

  • 机器扩展:屏蔽接口之间的差异以支持多种设备,为开发者提供一个标准的接口。
  • 有效分配资源:执行用户需要
  • 管理资源:①管理cpu;②管理主存;③管理文件;④管理其他设备的通信

在这里插入图片描述

1.1.1 作为扩展机器的操作系统

所有的操作系统都提供使用硬盘的又一层抽象:文件。

1.1.2 作为资源管理者的操作系统

资源管理包括用以下两种不同方式实现多路复用(共享)资源:在时间上复用和空间上复用。

1.2 操作系统的历史

硬件性能的发展,网络的发展
计算机的发展历程:

  • 脱机:输入、运行、输出完全分割,分别作用于不同的设备
  • 联机:终端和主机连接,通过网络方式连接,缺点在于:当某一个终端想要使用主机时,必须等待当前终端执行结束,串行执行浪费大量计算资源
  • 假脱机:在一定时间期限内收集所有的输入请求,再进行处理

1.2.1 第一代(1945~1955):真空管和穿孔卡片

1 .2.2 第二代(1955~1965):晶体管和批处理系统

1.2.3 第三代(1965~1980):继承电路和多道程序设计

1.2.4 第四代(1980至今):个人计算机

个人操作系统:主动访问方式,同时只允许一个用户登录
服务器操作系统:允许多个用户同时登录,对于并发情况的处理更严格

1.2.5 第五代(1990至今):移动计算机

移动计算机类型

  • 移动端:能源问题(电池)使得性能部分放弃;散热问题限制芯片大小
  • 台式机

操作系统随之发展的四个阶段

  • 1.手工阶段
    联机方式:上机前需预约,操作者与程序员需再现场,输入输出依靠纸带机在纸带上打孔,上机时间较长。
    脱机方式:程序运行时,程序员可以不在现场,由操作员完成操作。
  • 2.批处理系统
    由常驻内存的监控程序实现作业之间的转换自动化,监督计算机运行情况。依赖磁带技术、卫星机、纸带、磁带。
    单道批处理系统,主要特征:顺序性,自动性,单道性。系统吞吐量低,无交互。
    多道批处理系统,主要特征:多道程序宏观上并行,微观上串行。提高了系统吞吐量和资源利用率,但是用户响应时间较长,也不提供交互。
    前台任务优先级>后台任务
  • 3.分时操作系统
    分时操作系统,具有同时性,交互性,独立性,和及时性。能够对用户进行及时响应。解决了人机交互问题,但不能在规定时间内做出处理于是有了实时操作系统。
  • 4.实时操作系统
    主要特点是及时性和可靠性,能够违反时间规定在规定的时间内响应。

1.3 计算机硬件简介

1.3.1 处理器

cpu中断称为陷阱
cpu性能受元器件个数的影响,元器件个数影响散热和电磁干扰,所以cpu多核的发展仍有瓶颈。

cpu的两种模式:内核态(执行指令)与用户态(执行用户程序)

cpu=控制单元+运算单元+存储单元。
控制单元

  • 流水线方式:取一条指令,分配运行单元,执行完后再取指令
  • 超标量运算:cpu原为单核,但有多个运算器,不同运算器可以同时执行不同的指令,使得单核cpu支持指令级并行的运算。

运算单元
存储单元

从计算机硬件角度看cpu是一个独占资源;从用户使用角度因为不同时间段执行不同任务需求,也可以看作是共享资源

1.3.2 存储器

任务执行性能与内存大小是一个log型函数;
内存是独占资源,而存储的数据在权限的设置下可以成为共享资源;
内存小速度快

1.3.3 磁盘

  • 硬盘是磁盘的一种;

  • 硬盘把数据调到硬盘缓存,内存从硬盘缓存读数据,然后传输到cpu的缓存,cpu从多级缓存中读数据,内存就是一个数据中转站,因为cpu读取速度远远大于硬盘,内存的速度是很快的,通过内存这个桥梁来提高cpu读取数据的速度。

  • 缓冲区(硬盘):输入缓冲区与输出缓冲器保证了并行任务实现的功能,cpu不必一直等待,当数据在输入点准备好,由相应的管理系统运行准备好的数据(作业)

  • 数据输出汇总到输出点,但只有到用户收到所有数据才叫作业完成。

  • 缓存是一个共享空间

  • 内存与外存的交互通过外部排序实现

  • 外存容量大速度低

1.3.4 I/O设备

输出设备:显示器
I/O设备是必须设备

1.3.5 总线

总线是独占资源,因为传输数据过程不可打断
总线类型

  • 数据总线;
  • 地址总线;
  • 控制总线

1.3.6 启动计算机

cpu中断
其他中断:执行下一条指令

1.4 操作系统大观园

1.4.1 大型机操作系统

用于大型操作系统主要面向多个作业的同时处理,多数这样的作业需要巨大的I/O能力。

1.4.2 服务器操作系统

服务器操作系统在服务器上运行,通过网络同时为若干个用户服务,并且允许用户共享硬件和软件资源。

1.4.3 多处理器操作系统

获得大量联合计算能力的常用方式是将CPU连接成单个的系统。依据连接和共享方式的不同这些系统被称为并行计算机,多计算机或多处理器。

1.4.4 个人计算机操作系统

现代个人计算机操作系统都支持多道程序处理,在启动时,通常有几十个程序开始运行。他们的功能是为单个用户提供良好的支持。

1.4.5 掌上计算机操作系统

掌上计算机或PDA是一种可以握在手中操作的小型计算机(eg:平板电脑、智能手机)

1.4.6 嵌入式操作系统

嵌入式系统在用来控制设备的计算机中运行,这种设备不是一般意义的计算机,并且不允许用户安装软件,例如:微波炉、电视机

1.4.7 传感器节点操作系统

传感器是一种内建有无线电的电池驱动的小型计算机,节点相互连接形成网络,可以彼此通信。

1.4.8 实时操作系统

这些系统的特征是将时间作为关键参数。

  • 硬实时系统:某个动作必须绝对地在规定的时刻(或规定的时间范围)发生
  • 软实时系统:在这种系统中,虽然不希望偶尔违反最终实现,但仍可以接收,并且不会引起任何永久性地损害

1.4.9 智能卡操作系统

智能卡是一种包含一块CPU芯片的信用卡,它有非常严格的运行能耗和存储空间的限制

1.5 操作系统概念

1.5.1 进程

进程:本质上是正在执行的一个程序

进程表:将进程相关(除了该进程自身地址空间的内容)信息放在一个操作系统中的数组/链表结构中。每个进程占一项。

进程树:一个进程能够创建一个或多个进程(称为子进程),并且这些进程又可以创建子进程。

一个(挂起的)进程包含

  • 进程的地址空间
  • 对应的进程表项(包括寄存器以及稍后重启动该进程所需要的许多其他信息)

1.5 2 地址空间

操作系统创建了一个地址空间的抽象,作为进程可以引用地址的集合。这样可以使得在内存中同时运行多道程序时,他们不会互相干扰。

1.5.3 文件

操作系统的一项主要功能是隐藏磁盘和其他I/O设备的细节特性,给提供程序员一个良好、清晰的独立于设备的抽象文件模型。

  • 保存文件:以目录的形式保存;
    绝对路径:包含了根目录到该文件的所有目录清单,它们之间用正斜线隔开。
  • 读写文件:先打开文件检查权限,再进行后续操作。
  • 特殊文件:为了使I/O设备看起来像文件一般,使得I/O设备可以通过同样的系统调用进行读写
    - ①块特殊文件:指可以随机存取块组成的设备。
    - ②字符特殊文件:用于打印机等接收和输出字符流的设备

管道:是一种虚文件,可以连接两个进程;管理两个进程之间的数据传递或通信读写。

1.5.4 输入/输出

每个操作系统都有管理其I/O设备的I/O子系统。

1.5.5 保护

操作系统会管理系统的安全性,比如授予文件不同的访问权限

1.5.6 shell

UNIX的命令解释器,shell本身不是操作系统的一部分。

①:shell创建一个子进程,并运行data程序作为子进程。shell一直等待它结束后再显示提示符(可能是¥),等待下一次输入

data

②:将标准输入重定向到一个文件

data>file

③:调用sort程序,从file1中取得输入,再输出到file2

sort<file1>file2

④:调用cat程序将三个程序进行合并,送到sort程序按字典序排序,sort输出重定向到dev/lp中(也就是打印机)

cat file1 file2 file3|sort>dev/lp

⑤:&结尾则shell不用等待该子进程结束,而是将其转到后台执行,从而允许用户执行新的任务。

cat file1 file2 file3|sort>dev/lp &

1.6 系统调用

操作系统有两种功能:

  • 为用户程序提供抽象
  • 管理计算机资源

cpu计算机一次只能执行一条指令。

以c程序进行的read系统调用为例:
count = read(fd,buffer,nbytes)

  • fd:指定文件
  • buffer:指向缓冲区中的存储地址,通过&buffer访问地址内容
  • nbytes:说明要读出的字节数
  • count:返回实际读出的字节数(一般≤nbytes);如果参数无效或是磁盘发生错误,count会被置-1

1.6.1 用于进程管理的系统调用

涉及到fork(派生)相关内容,可以理解为父进程的数据被复制用以创建子进程,中途使用fork调用会返回一个值(在子进程中值为0,在父进程中等于子进程的进程标识符:PID)

1.7.1 单体系统

操作系统在内核态以单一程序的方式运行。整个操作系统以过程集合的方式编写,链接成一个大型可执行的二进制程序。
具体过程:

  • 先编译所有单个的过程
  • 通过系统链接程序将它们链接成单一的目标文件

1.7.2 层次式系统

THE操作系统的结构:

层号功能
5操作员
4用户程序
3输入/输出管理
2操作员-进程通信
1存储器和磁鼓管理
0处理器分配和多道程序设计

1.7.3 微内核

在分层设计中,设计者要确定在哪里划分内核=用户的边界
微内核的设计思想:为了实现高可靠性,将操作系统划分为小的、良好定义的模块,只有其中一个模块——微内核——运行在内核态,其余的模块由于功能相对弱些,则作为普通用户进程运行。

1.7.4 客户端-服务器模式

将进程划分为两类:

  • 服务器端——每个服务器提供某种服务
  • 客户端——使用这些服务

1.7.5 虚拟机

用户在终端上进行交互的两种方式

  • 以特殊文件
  • 以地址/端口

操作系统的三种类别:

  • 分时系统
  • 实时系统
  • 批处理系统:用于以运算为主的操作系统中,以假脱机的方式进行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值