---
# System prepended metadata

title: Introduction
tags: [Linux]

---

---
tags: Linux
---

# Introduction

**操作系统的作用**：有效管理资源的分配
> 若无操作系统，则资源无法有效分配，最终导致资源竞争

**操作系统的地位**：操作系统向下封装硬件（管理硬件）、向上提供操作接口（提供系统调用函数）

**系统编程**：在某个系统上编程
**系统调用**：调用操作系统提供的特殊接口（进程、线程）

Linux操作系统的诞生、发展、成长过程依赖五个重要支柱：**Unix操作系统**、**Minix操作系统**、**GNU计划**、**POSIX标准**、**互联网**
> GNU计划：开发了众多软件（如gcc, emacs），为Linux提供生态
> POSIX标准：一套用于Unix的接口标准，提高代码的可移植性

> **内核版本**：内核是系统的心脏，是运行程序、管理硬件的核心程序
> **发行版本**：将内核、源代码、相关的应用程序组成一个完整的操作系统

# 文件系统

Windows有分盘符（C盘、D盘），但是Linux只有分目录（根目录、家目录）
目录：路径的集合
路径的注意事项
> Linux：以「/」分割路径
> Windows：以「\」分割路径

任何文件夹都会有「.」、「..」这两个文件夹（需用ls -a才可显示出来，可用cd .来验证「.」为文件夹）
> 「.」：代表当前目录
> 「..」：代表上级目录

FHS：规定了Linux根目录各文件夹的名称及作用，统一了Linux界命名混乱的标准
> **/**：根目录
> **/bin、/usr/bin**：bin目录，放工具
>> ![](https://i.imgur.com/SYHqCqE.png)
>
>**/home**：home目录，放用户，用户本身的目录叫做家目录
>**/lib**：放库函数、库文件（静态库、动态库）
>**/usr/include**：放头文件

Linux一切皆文件，把所有东西都抽象为文件
> 普通文件（以-开头）：文档、视频
>> ![](https://i.imgur.com/OZ4yhsH.png)
>
> 目录文件（以d开头）：文件夹
>> ![](https://i.imgur.com/e27Caqx.png)
>
> 设备文件：把所有硬件抽象成文件
>> 字符设备文件（以c开头）
>> ![](https://i.imgur.com/fpkDo9z.png)
>> 块设备文件（以b开头）
>> ![](https://i.imgur.com/2oz92yp.png)
>
> 链接文件（以l开头）：快捷方式
>> ![](https://i.imgur.com/pYokK30.png)
>
> 管道文件：这类文件多用于进程间的通信

文件权限
三个为一组，分别为文件所有者、用户组、其他用户
> ![](https://i.imgur.com/eaWQM5x.png)
>
>![](https://i.imgur.com/dLstg9r.png)
>
> -：没权限
> r：可读
> w：可写
> x：可执行
> 
> 文件夹权限
> 没有x：无法进入文件夹
> 没有r：无法读取文件夹里有啥东西
> 没有w: 无法新增或删除文件

> Linux在创建一个用户时，会默认创建一个与用户同名的用户组
> 每个组有自己的id
> 一个用户可以进入多个用户组
> **用户组信息文件：/etc/group**
> **用户信息文件：/ect/passwd**
> 
> ![](https://i.imgur.com/YbbvHwT.png)
> 用户组的组号为0
> ![](https://i.imgur.com/VFYL8SL.png)
> 用户(jimmyuniverse)的所属组号是1000，不是0，所以不属于用户组root，对stdio.h来说是其他用户

在Linux，以「.」为开头的文件是隐藏文件

**字符界面、图形界面 切换**
```c=
// 在大多数Linux下
Ctrl + Alt + F2：切换到字符界面（F3, F4, F5, F6也行）
Ctrl + Alt + F1：切换到图形界面（有的是F7）

// 在Redhat下
命令 init 3：切换到字符界面
命令 init 5：切换到图形界面
```

Linux的可执行程序通常是没有后缀的

Windows的64位兼容32位
Linux的64位不兼容32位

Linux的编码默认采用UTF-8(Unicode的一种)