趣谈Linux操作系统
刘超
网易杭州研究院云计算技术部首席架构师
立即订阅
19367 人已学习
课程目录
已完结 72 讲
0/4登录后,你可以任选4讲全文学习。
入门准备篇 (3讲)
开篇词 | 为什么要学习Linux操作系统?
免费
01 | 入学测验:你究竟对Linux操作系统了解多少?
02 | 学习路径:爬过这六个陡坡,你就能对Linux了如指掌
核心原理篇:第一部分 Linux操作系统综述 (3讲)
03 | 你可以把Linux内核当成一家软件外包公司的老板
04 | 快速上手几个Linux命令:每家公司都有自己的黑话
05 | 学会几个系统调用:咱们公司能接哪些类型的项目?
核心原理篇:第二部分 系统初始化 (4讲)
06 | x86架构:有了开放的架构,才能打造开放的营商环境
07 | 从BIOS到bootloader:创业伊始,有活儿老板自己上
08 | 内核初始化:生意做大了就得成立公司
09 | 系统调用:公司成立好了就要开始接项目
核心原理篇:第三部分 进程管理 (10讲)
10 | 进程:公司接这么多项目,如何管?
11 | 线程:如何让复杂的项目并行执行?
12 | 进程数据结构(上):项目多了就需要项目管理系统
13 | 进程数据结构(中):项目多了就需要项目管理系统
14 | 进程数据结构(下):项目多了就需要项目管理系统
15 | 调度(上):如何制定项目管理流程?
16 | 调度(中):主动调度是如何发生的?
17 | 调度(下):抢占式调度是如何发生的?
18 | 进程的创建:如何发起一个新项目?
19 | 线程的创建:如何执行一个新子项目?
核心原理篇:第四部分 内存管理 (7讲)
20 | 内存管理(上):为客户保密,规划进程内存空间布局
21 | 内存管理(下):为客户保密,项目组独享会议室封闭开发
22 | 进程空间管理:项目组还可以自行布置会议室
23 | 物理内存管理(上):会议室管理员如何分配会议室?
24 | 物理内存管理(下):会议室管理员如何分配会议室?
25 | 用户态内存映射:如何找到正确的会议室?
26 | 内核态内存映射:如何找到正确的会议室?
核心原理篇:第五部分 文件系统 (4讲)
27 | 文件系统:项目成果要归档,我们就需要档案库
28 | 硬盘文件系统:如何最合理地组织档案库的文档?
29 | 虚拟文件系统:文件多了就需要档案管理系统
30 | 文件缓存:常用文档应该放在触手可得的地方
核心原理篇:第六部分 输入输出系统 (5讲)
31 | 输入与输出:如何建立售前售后生态体系?
32 | 字符设备(上):如何建立直销模式?
33 | 字符设备(下):如何建立直销模式?
34 | 块设备(上):如何建立代理商销售模式?
35 | 块设备(下):如何建立代理商销售模式?
核心原理篇:第七部分 进程间通信 (7讲)
36 | 进程间通信:遇到大项目需要项目组之间的合作才行
37 | 信号(上):项目组A完成了,如何及时通知项目组B?
38 | 信号(下):项目组A完成了,如何及时通知项目组B?
39 | 管道:项目组A完成了,如何交接给项目组B?
40 | IPC(上):不同项目组之间抢资源,如何协调?
41 | IPC(中):不同项目组之间抢资源,如何协调?
42 | IPC(下):不同项目组之间抢资源,如何协调?
核心原理篇:第八部分 网络系统 (7讲)
43 预习 | Socket通信之网络协议基本原理
43 | Socket通信:遇上特大项目,要学会和其他公司合作
44 | Socket内核数据结构:如何成立特大项目合作部?
45 | 发送网络包(上):如何表达我们想让合作伙伴做什么?
46 | 发送网络包(下):如何表达我们想让合作伙伴做什么?
47 | 接收网络包(上):如何搞明白合作伙伴让我们做什么?
48 | 接收网络包(下):如何搞明白合作伙伴让我们做什么?
核心原理篇:第九部分 虚拟化 (7讲)
49 | 虚拟机:如何成立子公司,让公司变集团?
50 | 计算虚拟化之CPU(上):如何复用集团的人力资源?
51 | 计算虚拟化之CPU(下):如何复用集团的人力资源?
52 | 计算虚拟化之内存:如何建立独立的办公室?
53 | 存储虚拟化(上):如何建立自己保管的单独档案库?
54 | 存储虚拟化(下):如何建立自己保管的单独档案库?
55 | 网络虚拟化:如何成立独立的合作部?
核心原理篇:第十部分 容器化 (4讲)
56 | 容器:大公司为保持创新,鼓励内部创业
57 | Namespace技术:内部创业公司应该独立运营
58 | CGroup技术:内部创业公司应该独立核算成本
59 | 数据中心操作系统:上市敲钟
实战串讲篇 (9讲)
60 | 搭建操作系统实验环境(上):授人以鱼不如授人以渔
61 | 搭建操作系统实验环境(下):授人以鱼不如授人以渔
62 | 知识串讲:用一个创业故事串起操作系统原理(一)
63 | 知识串讲:用一个创业故事串起操作系统原理(二)
64 | 知识串讲:用一个创业故事串起操作系统原理(三)
65 | 知识串讲:用一个创业故事串起操作系统原理(四)
66 | 知识串讲:用一个创业故事串起操作系统原理(五)
67 | 期末测试:这些操作系统问题,你真的掌握了吗?
结束语 | 永远别轻视任何技术,也永远别轻视自己
免费
专栏加餐 (2讲)
学习攻略(一):学好操作系统,需要掌握哪些前置知识?
“趣谈Linux操作系统”食用指南
免费
趣谈Linux操作系统
登录|注册

27 | 文件系统:项目成果要归档,我们就需要档案库

刘超 2019-05-29
咱们花了这么长的时间,规划了会议室管理系统,这样多个项目执行的时候,隔离性可以得到保证。但是,会议室里面保存的资料还是暂时的,一旦项目结束,会议室会被回收,会议室里面的资料就丢失了。有一些资料我们希望项目结束也能继续保存,这就需要一个和项目运行生命周期无关的地方,可以永久保存,并且空间也要比会议室大得多。

文件系统的功能规划

要知道,这些资料才是咱们公司的财富,是执行多个项目积累下来的,是公司竞争力的保证,需要有一个地方归档。这就需要我们有一个存放资料的档案库,在操作系统中就是文件系统。那我们应该如何组织规划文件系统这个档案库呢?
对于运行的进程来说,内存就像一个纸箱子,仅仅是一个暂存数据的地方,而且空间有限。如果我们想要进程结束之后,数据依然能够保存下来,就不能只保存在内存里,而是应该保存在外部存储中。就像图书馆这种地方,不仅空间大,而且能够永久保存。
我们最常用的外部存储就是硬盘,数据是以文件的形式保存在硬盘上的。为了管理这些文件,我们在规划文件系统的时候,需要考虑到以下几点。
第一点,文件系统要有严格的组织形式,使得文件能够以块为单位进行存储。这就像图书馆里,我们会设置一排排书架,然后再把书架分成一个个小格子,有的项目存放的资料非常多,一个格子放不下,就需要多个格子来存放。我们把这个区域称为存放原始资料的仓库区。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《趣谈Linux操作系统》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(13)

  • 权奥
    fdisk有个坑是最大只能分2T,对于超过2T的分区需求可以使用parted
    2019-05-30
    7
  • why
    - 文件系统的功能
        - 以块为单位的存储组织形式
        - 要有索引, 方便查找
        - 热点文件应该有缓存
        - 可以以文件夹形式组织, 方便管理
        - 在内存中维护数据结构, 保存哪些文件被哪些进程打开/使用
    - 文件系统相关命令行
        - 格式化, 组织成一定格式的文件系统; Windows→NTFS, Linux→ext3/ext4
            - fdisk -l 查看分区
            - mkfs.ext3/mkfs.ext4 /dev/... 进行格式化
        - 可建立多个分区, 再分别以不同文件系统进行格式化
            - fdisk /dev/... 打开交互式程序
                - p 打印分区
                - n 新建分区: p primary 建立主分区; e extended 建立扩展分区; 设置大小; w 执行分区修改
            - 再执行 mkfs.ext* 进行格式化
        - 挂载分区到某个目录, 才能正常访问
            - mount /dev/... /目录
            - umount /目录
        - 查看文件类型 ls -l
            - 第一个标识符: - 普通文件; d 文件夹; c 字符设备文件; b 块设备文件; s socket 文件; l 符号链接(软连接)
    - 文件系统相关系统调用
        - open 打开一个文件, 返回文件描述符 fd; 参数 O_CREAT 不存在就创建, O_RDWR 以读写方式打开, O_TRUNC 文件长度截断为 0; 返回成功写入字节数
        - write 写数据, 参数 fd, 数据位置, 写入字节数; 返回成功写入字节数
        - lseek 重新定位读写位置, 参数 fd, 位置, SEEK_SET
        - read 读数据, 参数 fd, 存放位置, 读取字节数; 返回成功读取字节数
        - close 关闭文件
        - stat/lstat 通过文件名获取文件信息; fstat 通过 fd 获取文件信息
        - opendir 打开一个目录, 生成一个目录流 DIR
        - readdir 读取目录流的一个条目, 自动指向下一个条目
        - closedir 关闭目录流
    2019-05-29
    6
  • zengjian
    终于有一讲看得轻松一点了,哈哈
    2019-05-29
    5
  • 烈日融雪
    本期内容理解度很高,是我看这栏目以来最轻松的一期,😄

    作者回复: 接下来就复杂啦,做好准备

    2019-05-30
    4
  • 活的潇洒
    决心从头把计算机所有的基础课程全部补上,夯实基础,一定要坚持到最后
    day27笔记:https://www.cnblogs.com/luoahong/p/10943864.html
    2019-05-29
    1
  • Mr.差不多
    您好,老师想问一下,通过程序获得文件夹下面所有文件,以什么作为排序的准则返回呢?还是随机的?

    作者回复: 可以看一下文件夹的结构

    2019-05-29
    1
  • Sharry
    在 Android NDK 源码中多处能够看虚拟文件系统这样的名词, 期待后面的课程

    作者回复: 是的,也是基于Linux

    2019-05-29
    1
  • 陈志恒
    1.文件描述符,就是用来区分一个进程打开的多个文件的。(文件描述符只在当前进程有效)
    2. Linux 内核要在自己的内存里面维护一套数据结构,来保存哪些文件被哪些进程打开和使用
    3.讲解了格式化、分区、挂载、卸载的命令
    2019-11-25
  • williamcai
    老师,文件缓存设置有讲究吗
    2019-09-30
  • 莫名
    操作目录的相关函数并不是系统调用,而是库函数。

    作者回复: 赞,opendir这些的确是库函数

    2019-07-19
  • fei
    例如,上面这个命令就是将这个文件系统挂在到“/ 根目录 / 用户 A 目录 / 目录 1”这个目录下面。一旦挂在过去,“/ 根目录 / 用户 A 目录 / 目录 1”这个目录下面原来的文件 1 和文件 2 就都看不到了,换成了 vdc1 这个硬盘里面的文件系统的根目录。
    请问老师,那么文件1文件2现在放在哪里呢?之前挂载的分区会自动解除挂载吗?谢谢老师

    作者回复: 还是在文件系统上,就是看不到了

    2019-06-30
  • 木 易
    老师,文件系统这块,以及存储的话,比如文件存储、对象存储,现在文档办公的web应用比较多,我们注册账号,随时随地都可以文档编辑,协作办公,而且具有高可用和可靠性,不担心数据丢失,这里用到的存储技术,是什么类型的呢,比如底层的存储类似ceph、swift这种技术可以谈一谈吗

    作者回复: 这是一个大话题,要另一个专栏阐述了

    2019-06-20
  • jkhcw
    Linux文件索引采用的是哪种数据结构?红黑树还是B+树

    作者回复: 我这里指的是Inode

    2019-05-30
收起评论
13
返回
顶部