Linux操作系统基础知识

224 阅读2分钟

内核态 用户态

内核态

操作系统内核运行的模式, 控制计算机的硬件资源, 为上层应用提供运行环境

用户态

用户应用程序运行的状态, 需要依托于内核态运行. 用户态权限受限, 避免误操作导致系统奔溃

系统调用

操作系统为用户态提供的能够访问到内核态的资源的接口, 通过系统调用, 可以将进程由用户态切换到内核态

用户态切换到内核态的方法

  1. 系统调用

  2. 异常

    用户态进程出现异常后, 会切换到处理该异常的内核程序中

  3. 硬件设备中断

    硬件设备完成请求后, 会向CPU发送中断信号, CPU会暂停当前的线程, 转而执行中断信号对应的中断处理程序

Linux文件系统

Linux和Unix系统中, 一切资源都是文件

硬盘

硬盘的最小读取单位是块(block), 常见大小4KB

硬盘的最小存储单位是扇区(sector), 每个512B=0.5B

每次读取一个块, 通常包含8个扇区

文件的元数据metadata(uid, gid, 创建时间, 最近访问/更改时间, 权限,大小, 文件类型等), 存在Inode中, 每个Inode有编号, 用来区分不同的文件.

文件类型

普通文件
目录文件

存储了目录下的文件即指向它们的指针

链接文件
  1. 硬链接文件

    与源文件有相同Inode, 即为同一个文件. 把Inode相同的所有文件都删除才算该Inode的文件被删除

  2. 软链接(符号链接)

    保存源文件的链接. 是一个不同Inode文件

设备文件

字符设备文件

按字节/字符访问数据, 顺序存取数据的设备, 通常不支持随机存取, 如键盘,串口等

块设备文件

可随机存取数据的设备, 可以访问块设备上任意一块位置, 不支持字符方式寻址???. 如硬盘,软盘,光盘等

管道文件

用于进程间通信的文件, 使用mkfifo可以创建

Socket套接字文件

用于网络通信的文件, 可能本机之间或不同机器