计算机操作系统基础知识大全
- 格式:docx
- 大小:37.96 KB
- 文档页数:26
1、计算机工作原理:1)什么是计算机计算机( Computer)是一种能接收和储藏信息,并依照储藏在其内部的程序(这些程序是人们意志的表现)对输入的信息进行加工、办理,尔后把办理结果输出的高度自动化的电子设备。
2)计算机工作原理——冯·诺依曼原理(又称为储藏程序原理)(1)组成计算机的物理设备(硬件)包括运算器、控制器、储藏器、输入设备和输出设备五部分;(2)全部程序和数据都以二进制形式储藏在储藏器中;(3)计算机系统在程序控制下自动运转。
2、计算机的发展:1)计算机的发展:计算机从出生发展到今天,已经经历了四个阶段,现正向第五代过渡。
见下表。
计算机发展的四个阶段代次起止年份所用电子元器件数据办理方式运算速度应用领域第一代1946~1957电子管(真空管)汇编语言、代码程序几千 ~几万次 / 秒国防及高科技第二代1958~1964晶体管高级程序设计语言几万 ~几十万次 / 秒工程设计、数据办理第三代1965~1970中、小规模集成电结构化、模块化程序几十万 ~几百万次 /工业控制、数据办理路设计,实时控制秒第四代1970~今在规模、超大规模分时、实时数据处几百万 ~上亿条指令工业、生活等各方面集成电路理,计算机网络/ 秒2)微型计算机的发展:上世纪 70 年代初,美国 Intel 企业等采用先进的微电子技术将运算器和控制器集成到一块芯片中,称之为微办理器( MPU)。
其发展大体经历了六个阶段,以下表。
微机的六个发展阶段代次起止年份典型 CPU数据位数主频第一代1971~1973Intel 4004、8008 4 位、 8 位1MHz第二代1973~1975Intel 80808 位2MHz第三代1975~1978Intel 80858 位2~5MHz第四代1978~1981Intel 808616 位>5MHz第五代1981~1993Intel 80386、 8048632 位>25MHz第六代1993~今Pentium 系列64 位60MHz~2GHz 3)我国计算机的发展情况我国的计算机事业始于20 世纪 50 年代。
新手电脑入门基础知识大全一、什么是计算机?计算机是一种能够执行指定任务的智能设备,它由硬件和软件两部分组成。
硬件包括:中央处理器(CPU)、内存、硬盘、显示器、键盘、鼠标等;软件包括:操作系统、应用软件等。
计算机可以用于处理、存储、检索、传输和输出各种信息。
二、计算机的分类根据使用领域和规模,计算机可以分为以下几类:1. 个人计算机(PC):广泛应用于个人办公、学习和娱乐领域,如台式机和笔记本电脑。
2. 服务器:用于提供网络服务和存储数据,主要应用于企业和机构。
3. 超级计算机:用于处理复杂的科学计算和大规模数据分析。
4. 嵌入式计算机:安装在其他设备中,如智能手机、汽车和家电等。
三、计算机硬件的组成1. 中央处理器(CPU):执行指令和控制计算机的运行。
2. 内存(RAM):存储计算机正在运行的程序和数据。
3. 硬盘:用于永久存储数据和文件。
4. 显示器:用于显示计算机处理的图像和文字。
5. 键盘和鼠标:输入设备,用于与计算机进行交互。
四、操作系统操作系统是计算机硬件和软件之间的桥梁,它负责管理计算机的资源并提供给用户友好的界面。
常见的操作系统有Windows、MacOS和Linux。
五、常用软件和应用1. 办公软件:如Microsoft Office、WPS Office等,用于处理文档、制作演示和管理电子表格。
2. 浏览器:如Google Chrome、Mozilla Firefox等,用于上网浏览网页和搜索信息。
3. 媒体播放器:如Windows Media Player、VLC Media Player等,用于播放音频和视频文件。
4. 图片编辑软件:如Adobe Photoshop、GIMP等,用于编辑和美化照片。
5. 防病毒软件:如McAfee、360安全卫士等,用于保护计算机免受恶意软件和病毒的侵害。
六、计算机的基本操作1. 开机和关机:按下电源按钮开机,选择开始菜单中的关机选项进行关机。
(计算机基础知识)操作系统基本概念操作系统基本概念操作系统(Operating System,简称OS)是计算机系统中的核心软件之一,它负责管理和协调计算机硬件、软件资源,提供用户与计算机硬件之间的接口,为应用程序的执行提供环境。
在计算机基础知识中,操作系统是一个重要的概念,下面将从操作系统的定义、功能和分类等方面展开论述。
一、操作系统的定义操作系统是指控制和管理计算机硬件及各种软件资源,合理分配计算机系统资源,为用户提供良好的使用环境的系统软件。
它是计算机系统的核心组成部分,负责处理硬件与软件之间的交互,并提供各种服务,如进程管理、内存管理、文件管理、设备管理等。
二、操作系统的功能1.进程管理:操作系统负责创建、调度和终止进程,保证多个进程在计算机资源上合理高效地共享。
2.内存管理:操作系统管理计算机的内存资源,包括内存的分配、回收和虚拟内存的管理,确保各个进程能够得到足够的内存空间。
3.文件管理:操作系统负责管理计算机上的文件系统,包括文件的存储、读写、保护和共享等,提供对文件的操作和管理。
4.设备管理:操作系统管理计算机的各种输入输出设备,包括设备的初始化、分配、控制和处理设备的中断等。
5.用户接口:操作系统为用户提供与计算机硬件交互的接口,包括命令行界面、图形用户界面和网络接口等,使用户可以方便地操作计算机。
三、操作系统的分类根据计算机系统的结构和特点,操作系统可以分为以下几类:1.批处理操作系统:批处理操作系统是最早的一种操作系统,它按照用户提交的作业顺序,自动进行作业的运行,无需用户交互。
2.分时操作系统:分时操作系统允许多个用户同时使用计算机系统,每个用户分配到一定的时间片来执行程序。
3.实时操作系统:实时操作系统要求在特定的时间限制内完成任务,常用于对时间要求较高的实时应用领域,如工业控制和航空航天等。
4.网络操作系统:网络操作系统是在分布式计算环境下运行的操作系统,多台计算机通过网络连接,在操作系统的管理下协同工作。
四. 简答题1. 什么是线程?进程和线程的关系是什么?答:线程可定义为进程内的一个执行单位,或者定义为进程内的一个可调度实体。
在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。
一个进程可以有多个线程,而且至少有一个可执行线程。
进程和线程的关系是:(1)线程是进程的一个组成部分。
(2)进程的多个线程都在进程的地址空间活动。
(3)资源是分给进程的,而不是分给线程的,线程在执行中需要资源时,系统从进程的资源分配额中扣除并分配给它。
(4)处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程。
(5)线程在执行过程中,需要同步。
2. 同步机制应遵循的准则是什么?答:有以下四条准则:空闲让进、忙则等待、有限等待、让权等待。
3. 进程通信有那三种基本类型?答:基于共享存储器的通信、基于消息传递系统的通信和基于管理文件的通信。
4. 对临界区管理的要求是什么?答:对临界区管理的要求是:(1)当有若干个进程要求进入它们的临界区时,应在有限的时间内使一个进程进入临界区,进程之间不应相互等待而使谁都不能进入临界区。
(2)每次只允许一个进程进入临界区内。
(3)进程在临界区内逗留应在有限的时间范围内。
5. 设有n个进程共享一个互斥段,对于如下两种情况使用信号量,信号量的值的变化怎样?(1)如果每次只允许一个进程进入互斥段。
(2)如果每次最多允许m个进程(m<n)同时进入互斥段。
答:(1)信号量的初值为1。
信号量的变化范围是1,0,-1,…,-(n-1)。
(2)信号量的初值为m。
信号量的变化范围是m,m-1,…,1,0,…,-(n-m)。
6. 何为死锁?产生死锁的原因和必要条件是什么?此题答案为:答:(1)死锁是指多个进程因竞争资源而造成的一种僵持状态。
若无外力作用,这些进程都将永远处于阻塞状态,不能再运行下去。
(2)产生死锁的原因有:资源不足、进程推进次序不当。
(3)产生死锁的必要条件有:互斥条件、请求和保持条件、环路等待条件。
计算机应用基础知识大全计算机应用基础知识是指计算机科学与技术领域的基本概念和原理。
它是计算机专业的起点,为计算机相关技术的学习奠定了基础。
本文将全面介绍计算机应用基础知识的各个方面,包括计算机硬件、操作系统、数据结构、数据库、网络等。
一、计算机硬件计算机硬件是计算机系统的核心组成部分,主要包括中央处理器(CPU)、内存、硬盘、显卡、主板等。
CPU是计算机的大脑,负责执行指令和处理数据;内存用于存储临时数据和程序;硬盘用于长期存储数据和文件;显卡用于显示图像;主板是各硬件设备的连接中枢,负责传递数据和信号。
了解计算机硬件的基本原理和功能,有助于我们更好地理解计算机的工作原理。
二、操作系统操作系统是计算机系统的核心软件,它负责管理计算机的硬件资源和提供用户与计算机之间的接口。
常见的操作系统包括Windows、Mac OS、Linux等。
操作系统提供了文件管理、进程管理、内存管理、设备管理等功能。
我们需要了解操作系统的基本概念和功能,掌握操作系统的使用和管理技巧。
三、数据结构数据结构是计算机存储、组织和管理数据的方式,是算法和程序设计的基础。
常见的数据结构包括数组、链表、栈、队列、树、图等。
不同的数据结构适用于不同的场景,我们需要了解各种数据结构的特点、操作和应用,以便在解决实际问题时选择合适的数据结构。
四、数据库数据库是用于存储和管理大量结构化数据的软件系统。
常见的数据库管理系统包括MySQL、Oracle、SQL Server等。
了解数据库的基本概念和原理,掌握SQL语言的基本操作,能够设计和管理数据库,是计算机应用领域的基本要求。
五、网络网络是计算机之间进行数据交换和通信的系统。
它由计算机、通信设备和通信线路组成。
了解网络的基本原理和协议,掌握网络的配置和管理技术,对于构建和维护计算机网络至关重要。
常见的网络技术包括局域网、广域网、互联网等。
六、软件开发软件开发是指利用计算机编程语言和开发工具,设计、实现和测试软件系统的过程。
计算机应用基础知识大全计算机应用基础知识大全1:操作系统1.1 什么是操作系统1.2 操作系统的分类1.3 操作系统的功能1.4 操作系统的组成部分1.5 常见的操作系统有哪些2:网络与通信2.1 计算机网络的基本概念与分类2.2 网络拓扑结构2.3 网络传输协议2.4 网络安全与加密2.5 无线网络技术3:数据库3.1 数据库的基本概念3.2 数据库的组成与结构3.3 数据库的查询与操作3.4 数据库的安全性与备份3.5 常见的数据库管理系统4:编程与算法4.1 编程语言的分类与选择4.2 基本的数据结构与算法4.3 常见的程序设计范式4.4 常用的开发工具与环境4.5 软件开发生命周期5:网页设计与开发5.1 基础知识5.2 CSS样式与布局5.3 JavaScript脚本编程5.4 响应式网页设计5.5 常见的Web开发框架6:数据安全与隐私保护6.1 数据安全的基本概念与原则6.2 加密算法与密钥管理6.3 防火墙与网络安全设备6.4 数据备份与恢复6.5 个人信息保护与隐私法律7:计算机硬件7.1 CPU与内存7.2 存储设备与磁盘管理7.3 输入与输出设备7.4 主板与总线7.5 多媒体与图形处理8:软件工程8.1 软件工程的基本概念与过程8.2 需求分析与规格说明8.3 软件设计与模型8.4 软件测试与验证8.5 软件项目管理与质量保证附件:本文档不涉及附件。
法律名词及注释:1:版权:指对某一个创作成果(作品)有权利,包括复制权、发行权、表演权、展览权、放映权和广播权等。
2:隐私保护:指保护个人信息不被未经授权的获取、使用、传播或公开。
3:数据备份:指将数据复制到另外一个位置或媒体上,以防止原始数据丢失或损坏。
4:防火墙:指一种网络安全设备,用来监控与控制网络流量,阻止未经授权的访问和攻击。
5:软件工程:指以系统化的方法和过程开发、维护和管理软件。
电脑系统安全基础知识大全电脑系统,又称电脑操作系统,是用于管理和控制计算机系统中的硬件及软件资源的系统软件,也是计算机系统的内核与基石。
下面就让小编带你去看看电脑系统安全基础知识大全吧,希望能帮助到大家!系统安全及应用简介作为一种开放源代码的操作系统,Linu__服务器以其安全.高效和稳定的显著优势而得以广泛应用。
本章主要从账号安全控制、系统引导和登录控制的角度,学习Linu__系统安全优化的点点滴滴;还将学习基于Linu__环境的弱口令检测、网络扫描等安全工具的构建和使用,帮助管理员查找安全隐患,及时采取有针对性的防护措施。
本章重点su、sudo的使用为GRUB引导菜单设置密码NMAP端口扫描器理论讲解用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。
在Linu__系统中,提供了多种机制来确保用户账号的正当、安全使用。
一,基本安全措施1.系统账号清理在Linu__系统中.除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而生成的其他大量账号。
除了超级用户root之外,其他大量账号只是用来维护系统运作,启动或保持服务进程,一般是不允许登录的,因此也称为非登录用户账号。
常见的非登录用户账号包括bin,daemon.adm、lp、mail等。
为了确保系统安全,这些用户账号的登录Shell 通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动,如下所示:各种非登录用户账号中,还有相当一部分是很少用到的,如games。
这些用户账号可以视为冗余账号,直接删除即可。
除此之外,还有一些随应用程序安装的用户账号,若卸载程序以后未能自动删除,则需要管理员手动进行清理。
对于Linu__服务器中长期不用的用户账号,若无法确定是否应该删除,可以暂时将其锁定。
例如,若要锁定、解锁名为bob的用户账号,可以执行以下操作(ermod命令都可用来锁定、解锁账号)。
1、计算机工作原理:1)什么是计算机计算机(Computer)是一种能接收和存储信息,并按照存储在其内部的程序(这些程序是人们意志的体现)对输入的信息进行加工、处理,然后把处理结果输出的高度自动化的电子设备。
2)计算机工作原理——冯·诺依曼原理(又称为存储程序原理)(1)组成计算机的物理设备(硬件)包括运算器、控制器、存储器、输入设备和输出设备五部分;(2)所有程序和数据都以二进制形式存储在存储器中;(3)计算机系统在程序控制下自动运行。
2、计算机的发展:1)计算机的发展:计算机从诞生发展到今天,已经经历了四个阶段,现正向第五代过渡。
见下表。
计算机发展的四个阶段2)微型计算机的发展:上世纪70年代初,美国Intel公司等采用先进的微电子技术将运算器和控制器集成到一块芯片中,称之为微处理器(MPU)。
其发展大约经历了六个阶段,如下表。
微机的六个发展阶段3)我国计算机的发展情况我国的计算机事业始于20世纪50年代。
1952年我国的第一个电子计算机科研小组在中科院数学所内成立。
1960年,我国第一台自行研制的通用电子计算机107机问世。
1964年,我国研制了大型通用电子计算机119机,用于我国第一颗氢弹研制工作的计算任务。
20世纪70年代以后,我国生产的计算机进入了集成电路计算机时期。
1974年,我国设计的DJS-130机通过了鉴定并投入批量生产。
进入20世纪80年代,我国又研制成功了巨型机。
1982年,我国独立研制成功了银河I型巨型计算机,运算速度为每秒1亿次。
1997年6月研制成功的银河Ⅲ型巨型计算机,运算速度为每秒130亿次。
这些机器的出现,标志着我国的计算机技术水平踏上了一个新的台阶。
1999年,银河四代巨型机研制成功。
2000年,我国自行研制成功高性能计算机“神威I”,其主要技术指标和性能达到国际先进水平。
我国成为继美国、日本之后世界上第三个具备研制高性能计算机能力的国家。
2005年4月18日,完全由我国科学界自行研发、拥有自主知识产权的中国首款六十四位高性能通用CPU芯片CPU———“龙芯二号”芯片正式发布。
计算机操作系统基础知识大全操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;操作系统本质上是运行在计算机上的软件程序 ;操作系统为用户提供一个与系统交互的操作界面。
下面就让小编带你去看看计算机操作系统基础知识吧,希望能帮助到大家!操作系统基础 - LFS和SSDLog-Structured File System设计思路LFS的设计思路来自于以下几点观察:内存变得越来越大,能够缓存越来越多的东西,因此写入性能渐渐地主宰了文件系统的性能磁盘的随机I/O和顺序I/O的性能相差巨大,如果能把大部分I/O 都转换成顺序I/O,将能极大地提高性能现有的文件系统在许多常见的工作负载下表现都不如意:它们的元数据和数据块是分开的,文件系统写入一个数据块要多次寻道和旋转,虽然FFS通过块组缓解了这个问题,但是依然避免不了大量短距离的寻道和旋转。
文件系统感知不到RAID,难以避免RAID-4/RAID-5的small write问题,即一个小块的数据写入会导致4次物理I/O。
因此,LFS尝试优化磁盘写入性能,尽可能地使用连续I/O,对于磁盘的读取性能则寄希望于内存能缓存更多内容。
这个出发点导致了它的数据结构不同与常见的文件系统。
连续写入LFS所尝试的第一个优化就是在写入数据块的时候,同时在后面写入数据块的inode,比如下图在磁盘地址A0写入一个数据块之后再把它的inode写到后面:然后对于大量小块的I/O,这样是不行的,因此LFS采用了写缓存技术,先在内存中缓存一定的大小写请求,直到达到一个足够大的值(LFS中称为segment),然后再一次性写入磁盘中。
因此LFS的一次I/O通常会包含多个数据块和inode:那么,多大的segment是合适的呢,这跟磁盘性能有关系,假如说我们希望磁盘95%的时间都在写入,只有5%的时间再寻道,对于一个写入速度为100MiB/s的磁盘来说,这个segment约为9MiB。
这里忽略了计算公式,有兴趣请参考43 Log-structured File System (LFS)。
inode读者们肯定能注意到,数据块和inode混在一起之后,LFS要怎么找到这些inode?我们可以用一个map结构来存储inode,其key 是文件的inode number,value是inode再磁盘上的地址,称之为inode map(或imap)。
考虑到LFS的设计,imap不应该存储在磁盘的某个特定位置,这会引起来回寻道的问题,因此LFS在一个写I/O的最后把最新的imap也一起写进来了。
下一个问题是,LFS怎么知道最新的imap在什么地方?它必须得把最新imap的地址写在磁盘上一个固定的地方,这就是checkpoint region(CR)。
出于写入性能的考虑,CR一般30秒左右才更新一次,因此对性能的影响可以忽略。
目录前面的讨论仅涉及了文件,其实目录也是类似的,假如在某个目录/dir下面创建了一个叫foo的文件:LFS首先写入foo的内容和inode然后写入目录D的内容,即inode number和磁盘地址的映射关系,如下图中的(foo,K),以及这个目录新的inode最后写入写的imap文件读取LFS挂载后,会先读入CR,再根据CR的内容把imap缓存到内存中,之后这两个数据结构的更新就按照上面的描述进行更新,imap 在每次写I/O后追加到尾部,CR则定期写入。
从LFS读取一个文件如/dir/foo时,首先从imap缓存中找到根目录/的inode地址(比如根据约定的inode number 2),读取其内容找到dir目录对应的inode number,再根据inode number从imap中找到dir对应的inode number,如此类推直到读入foo的inode,这之后的过程就跟普通uni__文件系统没太大区别了,inode里面有direct pointer, indirect pointer... LFS没有对读取做什么优化,而是寄希望于越来越大的内存能够缓存更多的inode和数据块。
垃圾回收LFS写入新的数据块时,总是寻找一片连续的空闲磁盘空间,然后写入整个segment,因此磁盘中其实充满了过时的数据。
比如下面的i节点号为K的文件一开始保存在磁盘地址A0,当这个文件的内容更新的时候,LFS在磁盘地址A4写入了新的数据块和inode,此时A0和A1的数据就是过时的:另一个例子,假设用户往文件中追加了一个块(A4),这种情况下过时的数据只有老的inode(A1):在ZFS,btrfs等吸收了LFS设计思路的文件系统中,允许用户保留这些老版本的文件作为snapshot,并把这个feature作为了一个买点,这种方法就是著名的copy on write。
而在LFS中,只保留最新版本的文件。
不论如何,这些文件系统最终都需要回收这些不再使用的、过时的数据。
一个简单的实现是扫描这些数据,发现过时的数据就标记为空闲,但是这样会造成大量的磁盘碎片。
在LFS的实现中,定期启动一个cleaner线程,读出几个segment的数据,其中过时的数据会被直接丢弃,剩余的块则会合并到新的segment中写入磁盘。
这个方式保证了磁盘的数据大致是连续的,方便在写入时找到大片的空闲空间。
Solid State Drive这里的Solid state disk(简称SSD)特指基于NAND Flash的存储设备,SSD不一定需要基于Flash,但是目前NAND Flash是SSD事实的标准,在深入SSD之前我们先了解Flash的特性。
Flash芯片组成跟磁盘相比,它没有任何机械组件。
Flash芯片最底层的存储单元叫做cell,一个cell可以存储一个或者多个bit:只存储一个bit的cell叫做single-levle cell(SLC)存储两个bit的call叫做multi-level cell(MLC)存储三个bit的call叫做triple-level cell(TLC)……总体来说SLC的性能最好成本最高,每个cell的存储的bit数量越多性能就越差,成本也越低。
多个cell组成一个page,这是flash存取数据的最小单元,它的大小通常是几KiB,比如4KiB多个page组成一个block,它的大小一般是128KiB或256KiB多个block组成一个bank或者叫(plane),一个flash芯片一般会包含若干个bank下图是一个缩小了规模的Flash芯片Flash芯片的基本操作Flash芯片的物理特性比较特殊,它最基本的底层操作有三种.读取(read)一个page:flash芯片可以读取任意一个page,只要给出page号即可。
不像磁盘,ssd是一种随机存取设备,它没有机械部件,存取任意一个位置的速度都是一样的,读操作通常只要10微秒(10^-5)左右。
擦除(erase)一个block:flash的物理特性要求在写入一个page 之前,先擦除改page所在的整个block,整个个操作很慢,一般需要几毫秒(10^-3)。
这个操作会把整个block里面每一个比特都设置成1,因此在擦除前需要复制出里面有价值的数据。
block擦除完成之后就能够进行编码(或者说写入)。
编码(Program)一个page:在擦除一个block之后,flask可以把里面的一些比特从1改成0,因此把想要的内容写入page中。
编码操作通常需要100微秒左右(10^-4)。
总的来说,读取的速度远快于编码的速度,而编码的速度又快于擦除的速度。
Flash磨损由于没有机械部件,flash的可靠性比磁盘要高很多,不会出现类似磁头划碰的问题,但是flash也有它的弱点,即磨损(wear out):每次擦除一个block或编码一个page时,都会造成一些轻微的损耗,这些损耗积累下来后最终会导致无法区分0和1,这时候这个block就变得不可用了。
一般一个基于MLC的芯片生命周期大约是10,000P/E(Program/Erase),也就是说每个block在失效前可以反复擦除和写入10,000次,而基于SLC的芯片生命周期大概是100,000P/E。
从Flash芯片到SSD前面我们描述了Flash芯片的组成,而一块SSD中会包含多个Flash芯片,它们连接到一个Flash控制器上,Flash控制器对外提供了一个磁盘设备的接口,更有趣的是Flash控制器还连着一小块内存。
这片内存可以用来作为I/O的缓存,同时还保存了物理块到Flash 芯片的page的映射关系。
为什么SSD中需要这样一个映射关系?假设我们采用一种最简单的映射关系,把物理块0映射到第0个Flash芯片上第0个page,把物理块1映射到第0个Flash芯片上第个page……这种简单的映射有两个问题,主要出现在更新的场景:一是性能上的,我们直到page在写入前需要先擦除,这种原地更新导致了三次I/O操作:读出整个block,并在内存中更新对应的内容擦除整个block,而flash擦除的速度很慢,跟磁盘基本是一个量级的重新写入block第二个问题是,经常更新的磁盘区域(比如swap和/tmp分区)会严重磨损,成为SSD寿命的短板Flash Translation Layer因此,Flash控制器最核心的功能就是,在主机发起I/O请求时,动态地完成物理块到SSD内部page的转换,这就是Flash Translation Layer(FTL),它的目标有几个:并行地利用多个Flash芯片减少写放大使得Flash的磨损尽可能的平均太阳底下无新事,第一个问题可以借鉴RAID,后两者可以从LFS 中得到启发。
大多数FTL的实现都类似于log-structured file system,当主机往SSD写入内容的时候,先在SSD的内存中缓存一定的大小,然后找到一片空闲的区域一次性的写入;同时SSD的内存和Flash中维护一个物理块和SSD内部page的映射表,即mapping table。
假设主机进行了这一系列的操作:往物理块100写入内容a1往物理块101写入内容a2往物理块2000写入内容b1往物理块2001写入内容b2这一系列的操作会由FTL合并写入到一片临近的区域中,如下图所示,图上Table部分即mapping table。
垃圾回收假设主机接下来需要修改物理块100和101的内容,分别改成了c1和c2,FTL不会原地修改,而是直接写入到后续的空闲page中,同时在mapping table中修改物理块100和101对应的page为4和5:此时page 0和1中的数据是过时的,如果需要回收这两个page,FTL必须先把同一个block中有效的数据(page2和3)读取出来,写入到后续的空闲空间中,这个时候整个block0都是过时的数据,FTL才能擦除这个block。