实习日记之Linux不难(10)

前几天一直在研究Linux内核,今天师傅给交接讲一些CF卡,Linux分层,驱动等方面的知识,听的一头雾水,觉得自己的知识完全不成体系,全是悬在半空中,所以今天决定恶补一下基础知识

Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统

 内核主要架构:负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

软硬盘是什么?硬盘用来存储数据,软盘用来搬运数据

套接字是啥?套接字上联应用进程,下联网络协议栈

内存管理:

Linux采用虚拟内存的管理方式,将内存划分为容易管理的内存页(大部分体系结构为4KB)Linux提供了对4KB的抽象,例如slab分配器。

进程管理:

进程实际是某特定应用程序的一个运行实体。在 Linux 系统中,能够同时运行多个进程,Linux 通过在短的时间间隔内轮流运行这些进程而实现“多任务”。这一短的时间间隔称为“时间片”,让进程轮流运行的方法称为“进程调度” ,完成调度的程序称为调度程序。

进程调度控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。

多任务机制,每个进程有自己独立的地址空间

1.3 文件系统

虚拟文件系统VFS在用户和文件系统之间提供了一个交换层,它为文件系统提供了一个通用的接口抽象

SCI有什么作用:内核通过 SCI 提供了一个应用程序编程接口(API)来创建一个新进程(fork、exec 或 Portable Operating System Interface [POSⅨ] 函数),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)

 

在 VFS 上面,是对诸如 open、close、read 和 write 之类的函数的一个通用 API 抽象。在 VFS 下面是文件系统抽象,它定义了上层函数的实现方式。它们是给定文件系统(超过 50 个)的插件。文件系统的源代码可以在 ./linux/fs 中找到。

文件系统层之下是缓冲区缓存,它为文件系统层提供了一个通用函数集(与具体文件系统无关)。这个缓存层通过将数据保留一段时间(或者随即预先读取数据以便在需要是就可用)优化了对物理设备的访问。缓冲区缓存之下是设备驱动程序,它实现了特定物理设备的接口。

1.4 设备驱动程序

设备驱动程序实际控制操作系统和硬件设备之间的交互。

1.5 网络接口(NET)

网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。

2. Linux Shell

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。常见的BASH就是一种shell

3.Linux文件系统

3.1 文件类型

Linux下面的文件类型主要有:

1) 普通文件:C语言元代码、SHELL脚本、二进制的可执行文件等。分为纯文本和二进制。

2) 目录文件:目录,存储文件的唯一地方。

3) 链接文件:指向同一个文件或目录的的文件。

4) 设备文件:与系统外设相关的,通常在/dev下面。分为块设备和字符设备。

5)管道(FIFO)文件: 提供进程之间通信的一种方式

6)套接字(socket) 文件: 该文件类型与网络通信有关

可以通过ls –l, file, stat几个命令来查看文件的类型等相关信息。

文件系统的特性:

磁盘分区后还需要进行格式化,然后系统才能使用这个分区,格式化主要目的是使操作系统能使用文件系统格式。

对于 一个磁盘分区来说,在被指定为相应的文件系统后,整个分区被分为 1024,2048 和 4096 字节大小的块。根据块使用的不同,可分为:

超级块(Superblock): 这是整个文件系统的第一块空间。包括整个文件系统的基本信息,如块大小,inode/block的总量、使用量、剩余量,指向空间 inode 和数据块的指针等相关信息。

inode块(文件索引节点) : 文件系统索引,记录文件的属性。它是文件系统的最基本单元,是文件系统连接任何子目录、任何文件的桥梁。每个子目录和文件只有唯一的一个 inode 块。它包含了文件系统中文件的基本属性(文件的长度、创建及修改时间、权限、所属关系)、存放数据的位置等相关信息. 在 Linux 下可以通过 “ls -li” 命令查看文件的 inode 信息。硬连接和源文件具有相同的 inode 。

数据块(Block) :实际记录文件的内容,若文件太大时,会占用多个block。为了提高目录访问效率,Linux还提供了表达路径与inode对应关系的dentry结构。它描述了路径信息并连接到节点inode,它包括各种目录信息,还指向了inode和超级块。

就像一本书有封面、目录和正文一样。在文件系统中,超级块就相当于封面,从封面可以得知这本书的基本信息; inode 块相当于目录,从目录可以得知各章节内容的位置;而数据块则相当于书的正文,记录着具体内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值