linux OS一些基本概念
1.什么是os?
好简单好x的问题,可是如果真的要自己用稍微官方稍微正规的语言或文字来回答,我真的能回答清楚吗?好吧,我先来用自己的语言来回答。再去找点官方的定义。
我自己的回答:os就是一个可以管理并且相对合理分配计算机资源的软件。
官方回答:操作系统(英语:Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。(百度百科的回答)
我在别的地方的一种解释:操作系统是计算机上最重要的系统软件,它负责管理各种物理资源,并向应用程序提供各种抽象接口以便其使用这些物理资源。从应用程序的角度看,操作系统提供了一个统一的虚拟机,在该虚拟机中没有各种机器的具体细节,只有进程、文件、地址空间以及进程间通信等逻辑概念。这种抽象虚拟机使得应用程序的开发变得相对容易:开发者只需与虚拟机中的各种逻辑对象交互,而不需要了解各种机器的具体细节。此外,这些抽象的逻辑对象使得操作系统能够很容易隔离并保护各个应用程序。(我觉得这个回答很棒)
2.应用程序怎么对存储设备上的数据进行I/O操作?
上面说了“操作系统提供一个统一的虚拟机...等逻辑概念”。所以应用程序只需要对某个逻辑概念进行I/O操作。这个逻辑概念就是“文件”。应用程序要对这个数据进行I/O时,只需读或者写"文件"的一维地址空间即可,而这个地址空间与存储设备上存储块之间的对应关系则由操作系统维护。
在 Linux 操作系统中,当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从存储设备读入到这些内存中,然后再将数据分发给应用程序;当需要往文件中写数据时,操作系统先分配内存接收用户数据,然后再将数据从内存写到磁盘上。
到了这里,我不得不再把我在课堂上那本书上看到的“文件打开关闭”操作说一下。大致意思如下:
os对文件的操作大致是如下两步:
第一步:通过检索文件目录来找到指定文件属性以及在外存上的位置;第二部:对文件实施相应的I/O操作。
为了避免对同一文件进行多次I/O操作,os引入了“打开(open)”这一系统调用。所谓“打开”就是指:系统将指定的文件属性(包括文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(或称为索引号)返回给用户。以后,当用户在要求对该文件进行相应的操作时,便可以利用系统所返回的索引号向系统提出操作请求。系统这时便可以利用该索引号到打开文件表中去查找。“关闭(close)”当然就是从打开文件表中删除不该项就ok啦。
3.文件 Cache 管理指的是什么?
首先我们需要明白,文件cache是指文件数据在内存中的副本。其次我们需要明白两点。第一:文件cache作为物理内存的一部分,需要参与物理内存的分配与回收。第二:文件cache中的数据源于存储设备上的数据,需要通过文件系统与存储设备进行读写交互。。。。。“从操作系统的角度考虑,文件 Cache 可以看做是内存管理系统与文件系统之间的联系纽带”。这句话貌似很有道理啊
文件 Cache 管理指的就是对由操作系统分配,并用来存储文件数据的内存的管理。 Cache 管理的优劣通过两个指标衡量:第一是 Cache 命中率,Cache 命中时数据可以直接从内存中获取,不再需要访问低速外设,因而可以显著提高性能;第二是有效 Cache 的比率,有效 Cache 是指真正会被访问到的 Cache 项,如果有效 Cache 的比率偏低,则相当部分磁盘带宽会被浪费到读取无用 Cache 上,而且无用 Cache 会间接导致系统内存紧张,最后可能会严重影响性能。