本文是结合《现代操作系统》(Andrew S. Tanenbaum著)的摘要与上课ppt的笔记,自用。
任务核心:存储+cpu(任务执行性能与内存大小是一个log型函数)
文件从使用角度区分:
①程序类文件
②数据类文件
(用例:播放器播放视频;视频是数据文件、播放器是程序文件)
格式化是指装上文件管理系统,不同操作系统会影响管理系统
cpu多核:有多个控制单元与执行单元
多数计算机有两种运行模式:
①内核态;
②用户态
软件中最基础的部分是操作系统,它运行在内核态(也称为管态、核心态)。操作系统具有对所有硬件的完全访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在用户态,用户态只使用了机器指令中的一个子集(那些会影响机器的控制或可进行I/O操作的指令,在用户态中的程序里是禁止的)
操作系统:是运行在内核态的一种软件,其任务是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚刚提到的所有设备,是一个硬件设备的扩展。
操作系统功能:
所有的操作系统都提供使用硬盘的又一层抽象:文件。
资源管理包括用以下两种不同方式实现多路复用(共享)资源:在时间上复用和空间上复用。
硬件性能的发展,网络的发展
计算机的发展历程:
个人操作系统:主动访问方式,同时只允许一个用户登录
服务器操作系统:允许多个用户同时登录,对于并发情况的处理更严格
移动计算机类型:
操作系统随之发展的四个阶段:
cpu中断称为陷阱
cpu性能受元器件个数的影响,元器件个数影响散热和电磁干扰,所以cpu多核的发展仍有瓶颈。
cpu的两种模式:内核态(执行指令)与用户态(执行用户程序)
cpu=控制单元+运算单元+存储单元。
控制单元
运算单元
存储单元
从计算机硬件角度看cpu是一个独占资源;从用户使用角度因为不同时间段执行不同任务需求,也可以看作是共享资源
任务执行性能与内存大小是一个log型函数;
内存是独占资源,而存储的数据在权限的设置下可以成为共享资源;
内存小速度快
硬盘是磁盘的一种;
硬盘把数据调到硬盘缓存,内存从硬盘缓存读数据,然后传输到cpu的缓存,cpu从多级缓存中读数据,内存就是一个数据中转站,因为cpu读取速度远远大于硬盘,内存的速度是很快的,通过内存这个桥梁来提高cpu读取数据的速度。
缓冲区(硬盘):输入缓冲区与输出缓冲器保证了并行任务实现的功能,cpu不必一直等待,当数据在输入点准备好,由相应的管理系统运行准备好的数据(作业)
数据输出汇总到输出点,但只有到用户收到所有数据才叫作业完成。
缓存是一个共享空间
内存与外存的交互通过外部排序实现
外存容量大速度低
输出设备:显示器
I/O设备是必须设备
总线是独占资源,因为传输数据过程不可打断
总线类型:
cpu中断
其他中断:执行下一条指令
用于大型操作系统主要面向多个作业的同时处理,多数这样的作业需要巨大的I/O能力。
服务器操作系统在服务器上运行,通过网络同时为若干个用户服务,并且允许用户共享硬件和软件资源。
获得大量联合计算能力的常用方式是将CPU连接成单个的系统。依据连接和共享方式的不同这些系统被称为并行计算机,多计算机或多处理器。
现代个人计算机操作系统都支持多道程序处理,在启动时,通常有几十个程序开始运行。他们的功能是为单个用户提供良好的支持。
掌上计算机或PDA是一种可以握在手中操作的小型计算机(eg:平板电脑、智能手机)
嵌入式系统在用来控制设备的计算机中运行,这种设备不是一般意义的计算机,并且不允许用户安装软件,例如:微波炉、电视机
传感器是一种内建有无线电的电池驱动的小型计算机,节点相互连接形成网络,可以彼此通信。
这些系统的特征是将时间作为关键参数。
智能卡是一种包含一块CPU芯片的信用卡,它有非常严格的运行能耗和存储空间的限制
进程:本质上是正在执行的一个程序
进程表:将进程相关(除了该进程自身地址空间的内容)信息放在一个操作系统中的数组/链表结构中。每个进程占一项。
进程树:一个进程能够创建一个或多个进程(称为子进程),并且这些进程又可以创建子进程。
一个(挂起的)进程包含:
操作系统创建了一个地址空间的抽象,作为进程可以引用地址的集合。这样可以使得在内存中同时运行多道程序时,他们不会互相干扰。
操作系统的一项主要功能是隐藏磁盘和其他I/O设备的细节特性,给提供程序员一个良好、清晰的独立于设备的抽象文件模型。
管道:是一种虚文件,可以连接两个进程;管理两个进程之间的数据传递或通信读写。
每个操作系统都有管理其I/O设备的I/O子系统。
操作系统会管理系统的安全性,比如授予文件不同的访问权限
UNIX的命令解释器,shell本身不是操作系统的一部分。
①:shell创建一个子进程,并运行data程序作为子进程。shell一直等待它结束后再显示提示符(可能是¥),等待下一次输入
data
②:将标准输入重定向到一个文件
data>file
③:调用sort程序,从file1中取得输入,再输出到file2
sortfile2
④:调用cat程序将三个程序进行合并,送到sort程序按字典序排序,sort输出重定向到dev/lp中(也就是打印机)
cat file1 file2 file3|sort>dev/lp
⑤:&结尾则shell不用等待该子进程结束,而是将其转到后台执行,从而允许用户执行新的任务。
cat file1 file2 file3|sort>dev/lp &
操作系统有两种功能:
cpu计算机一次只能执行一条指令。
以c程序进行的read系统调用为例:
count = read(fd,buffer,nbytes)
涉及到fork(派生)相关内容,可以理解为父进程的数据被复制用以创建子进程,中途使用fork调用会返回一个值(在子进程中值为0,在父进程中等于子进程的进程标识符:PID)
操作系统在内核态以单一程序的方式运行。整个操作系统以过程集合的方式编写,链接成一个大型可执行的二进制程序。
具体过程:
THE操作系统的结构:
层号 | 功能 |
---|---|
5 | 操作员 |
4 | 用户程序 |
3 | 输入/输出管理 |
2 | 操作员-进程通信 |
1 | 存储器和磁鼓管理 |
0 | 处理器分配和多道程序设计 |
在分层设计中,设计者要确定在哪里划分内核=用户的边界
微内核的设计思想:为了实现高可靠性,将操作系统划分为小的、良好定义的模块,只有其中一个模块——微内核——运行在内核态,其余的模块由于功能相对弱些,则作为普通用户进程运行。
将进程划分为两类:
用户在终端上进行交互的两种方式
操作系统的三种类别: