基础夯实:操作系统
我们之前介绍了 基础数据结构和算法 、计算机网络 ,接下来我们介绍 操作系统 基础知识。
基础数据结构和算法、计算机网络回顾如下:
不怎么清楚的可以去瞅瞅。
操作系统简介
操作系统(operating system,简称OS)是管理计算机硬件与软件资源的计算机程序。
操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。
操作系统也提供一个让用户与系统交互的操作界面。
操作系统的型态非常多样,不同机器安装的操作系统可从简单到复杂,可从非智能手机的嵌入式系统到超级电脑的大型操作系统。
许多操作系统制造者对它涵盖范畴的定义也不尽一致,例如有些操作系统整合了图形用户界面,而有些仅使用命令行界面,而将图形用户界面视为一种非必要的应用程序。
操作系统理论在计算机科学中,为历史悠久而又活跃的分支;而操作系统的设计与实现则是软件工业的基础与内核。
现代操作系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成。
计算机操作系统是一个复杂的系统。
我们一般常见的操作系统主要有 Windows、Linux、FreeBSD 或 OS X ,这种带有图形界面的操作系统被称为 图形用户界面(Graphical User Interface, GUI),
而基于文本、命令行的通常称为 Shell。
下面是我们所要探讨的操作系统的部件
操作系统所处的位置图
这是一个操作系统的简化图,最下面的是硬件,硬件包括芯片、电路板、磁盘、键盘、显示器等我们上面提到的设备,在硬件之上是软件。
大部分计算机有两种运行模式:内核态 和 用户态,软件中最基础的部分是操作系统,它运行在 内核态 中,内核态也称为 管态 和 核心态,它们都是操作系统的运行状态,只不过是不同的叫法而已。
操作系统具有硬件的访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在 用户态 下。
用户接口程序(shell 或者 GUI)处于用户态中,并且它们位于用户态的最低层,允许用户运行其他程序,例如 Web 浏览器、电子邮件阅读器、音乐播放器等。
而且,越靠近用户态的应用程序越容易编写,如果你不喜欢某个电子邮件阅读器你可以重新写一个或者换一个,但你不能自行写一个操作系统或者是中断处理程序。
这个程序由硬件保护,防止外部对其进行修改。
计算机组件
操作系统与运行操作系统的内核硬件关系密切。操作系统扩展了计算机指令集并管理计算机的资源。
因此,操作系统因此必须足够了解硬件的运行,这里我们先简要介绍一下现代计算机中的计算机硬件。
简单个人计算机组件图
中央处理器(CPU)
中央处理器(central processing unit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
CPU 是计算机的大脑,它主要和内存进行交互,从内存中提取指令并执行它。
一个 CPU 的执行周期是从内存中提取第一条指令、解码并决定它的类型和操作数,执行,然后再提取、解码执行后续的指令。重复该循环直到程序运行完毕。
在计算机体系结构中,CPU 是对计算机的所有硬件资源(如存储器、输入输出单元) 进行控制调配、执行通用运算的核心硬件单元。
CPU 是计算机的运算和控制核心。计算机系统中所有软件层的操作,最终都将通过指令集映射为CPU的操作。
中央处理器(CPU)图解
内存
计算机中第二个主要的组件就是内存。
理想情况下,内存应该非常快速(比执行一条指令要快,从而不会拖慢 CPU 执行效率),而且足够大且便宜,但是目前的技术手段无法满足三者的需求。
于是采用了不同的处理方式,存储器系统采用一种分层次的结构
存储层次结构图
顶层的存储器速度最高,但是容量最小,成本非常高,层级结构越向下,其访问效率越慢,容量越大,但是造价也就越便宜。
我们逐一介绍一下上面的寄存器、高速缓存、主存、磁盘
1、寄存器
存储器的顶层是 CPU 中的寄存器,它们用和 CPU 一样的材料制成,所以和 CPU 一样快。
程序必须在软件中自行管理这些寄存器(即决定如何使用它们)。
寄存器图
2、高速缓存
位于寄存器下面的是高速缓存,它多数由硬件控制。
高速缓存储是存在于主存与CPU之间的一级存储器, 由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多, 接近于CPU的速度。
3、主存
在上面的层次结构中再下一层是主存,这是内存系统的主力军,主存通常叫做 RAM,由于 1950 年代和 1960 年代的计算机使用微小的可磁化铁氧体磁芯作为主存储器,
因此旧时有时将其称为核心存储器。所有不能再高速缓存中得到满足的内存访问请求都会转往主存中。
主存储器一般采用半导体存储器,与辅助存储器相比有容量小、读写速度快、价格高等特点。
计算机中的主存储器主要由存储体、控制线路、地址寄存器、数据寄存器和地址译码电路五部分组成,如下图所示:
其中,存储体是存储单元的集合,用来存放数据;地址译码驱动电路包含译码器和驱动器两部分,
译码器将地址总线输入的地址码转换成与之对应的译码输出线上的有效电平,以表示选中了某一存储单元,然后由驱动器提供驱动电流去驱动相应的读写电路,
完成对被选中存储单元的读写操作;I/O和读写电路包括读出放大器、写入电路和读写控制电路,用以完成被选中存储单元中各位的读出和写入操作。
4、磁盘
下一个层次是磁盘(硬盘),磁盘同 RAM 相比,每个二进制位的成本低了两个数量级,而且经常也有两个数量级大的容量。
磁盘唯一的问题是随机访问数据时间大约慢了三个数量级。磁盘访问慢的原因是因为磁盘的构造不同
磁盘驱动器的构造
一个磁盘
(如一个 1T 的机械硬盘)由多个盘片
(如下图中的 0 号盘片)叠加而成。
盘片的表面涂有磁性物质
,这些磁性物质用来记录二进制数据。因为正反两面都可涂上磁性物质,故一个盘片可能会有两个盘面。
每个盘片被划分为一个个磁道,每个磁道又划分为一个个扇区, 其中,最内侧磁道
上的扇区
面积最小,因此数据密度最大。如下图:
每个盘面对应一个磁头。所有的磁头都是连在同一个磁臂上的,因此所有磁头只能“共进退”。
所有盘面中相对位置相同的磁道组成柱面
。如下图,
I/O 设备
I/O 就是”输入/输出“(Input/Output)
I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外设,属于计算机中的硬件部分。
IO设备按照使用特征分类:
- 人机交互类外部设备(数据传输速度慢)
- 存储设备(数据传输数据快)
- 网络通信设备(数据传输速度介于上述二者之间,在于网络设备情况)
IO设备按照传输速度分类:
- 低速设备
- 中速设备
- 高速设备
IO设备按照交换信息的单位分类:
- 块设备(传输速度较高,对它可随机读写任意一块)
- 字符设备(传输速度较慢,不可以随机读写任意一块,在输入输出时常采用中断驱动方式:一种IO控制方式)
这一块单独内部比较多,单独拎出来都能几万字,这里就不做过多的叙述,
下面整理了一下主要知识点,需要了解的可以点击链接或者百度查询相关文献进行学习
可点击 操作系统之IO设备详解 了解详情,这位博主写的很详细。
- I/O控制器
- I/O设备的机械部件
- I/O设备的电子部件(I/O控制器)
- I/O控制器的组成
- 内存映像 I/O VS 寄存器独立编址
- I/O控制方式
- 程序直接控制方式
- 中断驱动方式
- DMA方式
- DMA控制器
- 通道控制方式
- I/O软件层级结构
- 用户层软件
- 设备独立性软件
- 为何不同的设备需要不同的设备驱动程序
- 设备驱动程序
- 中断处理程序
- 核心子系统
- 这个功能要在哪个层次实现
- I/O调度
- 设备保护
-
假脱机技术(SPOOLing技术)
- 设备的分配与回收
- 设备分配是应考虑的因素
- 静态分配和动态分配
- 设备分配管理中的数据结构
- 设备分配的步骤
- 设备分配步骤的改进
操作系统的主要功能
操作系统主要功能有以下5个方面:处理机管理功能、存储器管理功能、设备管理功能、文件管理功能和操作系统和用户之间的接口功能,简单拓扑图如下:
处理机管理功能
处理机制管理功能包含:进程控制、进程同步、进程通信、调度
1、进程控制
主要是为作业创建进程、撤销(终止)已结束的进程,以及控制进程在运行过程中的状态转换。
进程控制原语:
- 创建进程原语
- 撤销进程原语
- 阻塞进程原语
- 唤醒进程原语
进程创建
创建一个具有指定标识符的进程,建立进程的PCB结构。
进程撤销
回收进程资源
进程阻塞
进程唤醒
2、进程同步
主要任务是为多个进程(含线程)的运行进行协调。
- 进程互斥方式:这是指诸进程在对临界资源进行访问时,应采用互斥方式。
- 进程同步方式:指在相互合作去完成共同任务的诸进程间,由同步机构对它们的执行次序加以协调。(信号量机制)
3、进程通信
多个进程在活动过程中彼此间会发生相互依赖或者相互制约的关系,为保证系统中所有的进程都能正常活动,就必须设置进程同步机制,它分为同步方式与互斥方式。
相互合作的进程之间往往需要交换信息,为此,操作系统需要提供通信机制。
进程通信有三种方法 ,分别是共享存储、管道通信、消息传递。
3.1、共享存储
两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现)。
操作系统只负责提供共享空间和同步互斥工具(如P、V操作)基于数据结构的共享: 比如共享空间里只能放个长度为10的数组。这种共享方式速度慢、限制多,是一种低级通信方式
基于存储区的共享: 在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。
3.2、管道通信
1.管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。
2.各进程要互斥地访问管道。
3.数据以字符流的形式写入管道,当管道写满时,写进程的 write(系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。
4.如果没写满,就不允许读。如果没读空,就不允许写。
5.数据一旦被读岀,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况
3.3、消息传递
进程间的数据交换以格式化的消息( Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
4、调度
包括作业调度和进程调度。
作业调度是通过一定的算法策略从外存上将作业放入内存,分别为它们创建进程,分配资源,使之处于就绪状态;
进程调度是从就绪状态的进程队列中选择一定的进程为之分配处理机,使它可以运行。
存储器管理功能
存储器管理分为4个功能,分别是:内存分配、内存保护、地址映射、内存扩充
内存分配
内存分配的主要任务是为每道程序分配一定的内存空间,为此操作系统必须记录整个内存的使用情况,
处理用户提出的申请,按照某种策略实施分配,接收系统或用户释放的内存空间。
由于内存是宝贵的系统资源,在制定分配策略时应该如何考虑提高内存的利用率,减少内存浪费。
内存保护
不同用户的程序都放在同一个内存中,就必须要保证它们在各自的内存空间中活动,不能相互干扰,更不能侵占操作系统的空间,为此需要建立内存保护机制。
内存保护有两种,
一是各个用户进程只能在自己的内存空间中运行,不得使用其他非共享用户进程的内存空间;
二是用户进程不得访问操作系统的程序和数据。
常见的内存保护机制是设置两个界限寄存器,标志可使用空间的上界和下界,系统对每条指令所要访问的地址进行越界检查。
地址映射
CPU在执行用户程序时,要从内存中取出指令或数据,为此就必须把所用的相对地址(或称逻辑地址)转换成内存的物理地址。
编译和链接所得到的可执行文件,其程序地址是从0开始的,需要操作系统将从0开始的逻辑地址转换为物理地址,需要硬件的支持。
内存扩充
指通过虚拟存储技术,从逻辑上扩充存储器的大小,使更多的用户进程可以并发执行。
常见的机制包括:请求调入和置换功能。
请求调入允许在仅装入部分程序和数据的情况下就启动该程序的执行,当所需要的指令或者数据不在内存空间的时候,通过向OS发出请求,由OS将所需要的部分调入内存。
置换则是指,允许将内存中暂时不用的程序和数据移至硬盘,以腾出内存空间。
一个系统中的内存容量是有限的,不能随意扩充其大小。然而,当对内存“求大于供”的局面时,就需要采取虚拟存储技术。
将程序当前使用的部分放在内存,而其余部分放在磁盘上,以后根据程序执行时的要求和内存当时使用的情况,随机地将所需部分调入内存;
必要时还要把已分配出去的内存回收,供其他程序使用(内存置换)。
设备管理功能
总体来说,设备管理内容包括,响应进程的IO请求、为进程分配IO设备,完成IO操作;提高IO速度,提高CPU和IO设备的利用率。
设备的分配和驱动由操作系统负责,即设备管理的主要功能包括:缓冲管理,设备分配,设备驱动和设备无关性。
- 缓冲管理:通过在CPU和IO设备之间设置缓冲,有效解决IO设备和CPU的速度不匹配问题,提高CPU的利用率,提高系统的吞吐量。常见策略包括单缓冲、双缓冲以及缓冲池等。
- 设备分配:根据用户IO请求、系统现有资源状况以及设备分配策略来分配设备。同时还需要考虑,设备分配完后,系统是否安全等问题。
- 设备驱动:检查IO请求是否合理,了解设备状态,读取有关的参数和设置设备的工作方式,然后向设备控制器发出IO命令,启动IO设备完成相应IO操作,响应中断请求并调用相应中断处理程序进行处理。
- 设备无关性:设备无关性又称设备独立性,即用户编写的程序与实际使用的物理设备无关,由操作系统把用户程序中使用的逻辑设备映射到物理设备。
文件管理功能
文件管理功能包括:文件存储空间的管理,文件操作的一般管理,目录管理,文件的读写管理和存取控制。
- 文件存储空间的管理:系统文件和用户文件都要放在磁盘上,为此,需要由文件系统对所有文件以及文件的存储空间进行统一管理:为新文件分配必要的外存空间,回收释放的文件空间,提高外存的利用率。
- 文件的一般管理:文件操作的一般管理包括:文件的创建、删除、打开、关闭等。
- 目录管理:为每个文件建立一个目录项,以记录文件的详细情况。并通过对目录项的管理提供文件的共享以及快速的目录查询等功能,提高文件检索速度。
- 文件的读写管理和保护:根据用户的请求,从外存中读取数据或者将数据写入外存中。为了保证文件信息的安全性,防止未授权用户的存取或破坏,对各个文件(包括目录)进行存取控制
提供操作系统与用户之间的接口功能
用户上机操作时直接使用到操作系统提供的用户接口,操作系统对外提供多种服务,使得用户可以方便、有效地使用计算机硬件和运行自己的程序,
使得软件开发变的容易、高效。现代操作系统提供三种用户接口:程序用户接口,命令行接口以及图形用户接口。
程序用户接口
主要为用户的程序使用操作系统的服务提供、访问系统资源提供便利。它由一组系统调用组成。是用户程序取得系统服务的唯一途径。
也称系统调用接口,系统调用是操作系统内核与用户程序、应用程序之间的接口,它位于操作系统核心层的最外层。
所有内核之外的程序都必须经由系统调用才能获得操作系统的服务。系统调用只能在程序中使用,不能直接作为命令在终端上输入和执行。
由于系统调用能够改变处理机的执行状态,从用户态变为核心态,直接进入内核执行,所以执行效率很高。
用户在自己程序中使用系统调用,从而获取系统提供的众多基层服务,
命令行接口
在提示符之后用户从键盘上输入命令,命令解释程序接收并解释这些命令,然后把它们传递给操作系统内部程序,执行相应功能。
命令行接口不属于操作系统内核,相应的程序是在用户空间中运行的。
图形用户接口
就是通过图形化的操作界面,用容易识别的各种图标来将系统的各项功能、各种应用程序和文件直观表现出来。
以鼠标取代命令的键入等。
用户利用鼠标,窗口,菜单,图标等图形用户界面工具,可以直观、方便,有效地使用系统服务和各种应用程序及实用工具。
图形用户接口也不属于操作系统内核,相应的程序是在用户空间中运行的。
参考文献
欢迎关注订阅微信公众号【熊泽有话说】,更多好玩易学知识等你来取
作者:熊泽-学习中的苦与乐
公众号:熊泽有话说
QQ群:711838388
出处:https://www.cnblogs.com/xiongze520/p/15825185.html
您可以随意转载、摘录,但请在文章内注明作者和原文链接。
本文来自博客园,作者:熊泽-学习中的苦与乐,转载请注明原文链接:https://www.cnblogs.com/xiongze520/p/15825185.html