Skip to content

Commit

Permalink
[refractor]Linux
Browse files Browse the repository at this point in the history
  • Loading branch information
Snailclimb committed Aug 7, 2020
1 parent 00a20ca commit 2d8a7e6
Show file tree
Hide file tree
Showing 8 changed files with 40 additions and 30 deletions.
13 changes: 5 additions & 8 deletions docs/operating-system/basis.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,12 @@

🙋 **** :我通过以下四点向您介绍一下什么是操作系统吧!

1. **操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;**
2. **操作系统本质上是运行在计算机上的软件程序 ;**
3. **操作系统为用户提供一个与系统交互的操作界面 ;**
4. **操作系统分内核与外壳(我们可以把外壳理解成围绕着内核的应用程序,而内核就是能操作硬件的程序)。**
1. **操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石。**
2. **操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。** 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。
3. **操作系统存在屏蔽了硬件层的复杂性。** 操作系统就像是硬件使用的负责人,统筹着各种相关事项。
4. **操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理**。 内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性。

> 关于内核多插一嘴:内核负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。是连接应用程序和硬件的桥梁。
> 内核就是操作系统背后黑盒的核心。
![操作系统分内核与外壳](images/操作系统内核和外核.png)
![Kernel_Layout](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/Kernel_Layout.png)

### 1.2 系统调用

Expand Down
Binary file added docs/operating-system/images/linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/operating-system/images/macos.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/operating-system/images/unix.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/operating-system/images/windows.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
57 changes: 35 additions & 22 deletions docs/operating-system/linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,26 @@

今天这篇文章中简单介绍一下一个 Java 程序员必知的 Linux 的一些概念以及常见命令。

如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!
*如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!笔芯!*

## 从认识操作系统开始

![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/image-20200807161118901.png)

正式开始 Linux 之前,简单花一点点篇幅科普一下操作系统相关的内容。

### 操作系统简介

我通过以下四点介绍什么是操作系统:

1. **操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石**
2. **操作系统本质上是一个运行在计算机上的软件程序 **
3. **操作系统为用户提供一个与系统交互的操作界面 ;**
4. **操作系统分内核与外壳(我们可以把外壳理解成围绕着内核的应用程序,而内核就是能操作硬件的程序)。**
1. **操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机的基石**
2. **操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源。** 举例:运行在你电脑上的所有应用程序都通过操作系统来调用系统内存以及磁盘等等硬件。
3. **操作系统存在屏蔽了硬件层的复杂性。** 操作系统就像是硬件使用的负责人,统筹着各种相关事项。
4. **操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理**

> 内核(Kernel)在后文中会提到。
![操作系统分Linux与外壳](images/操作系统内核和外核.png)
![Kernel_Layout](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/Kernel_Layout.png)

### 操作系统简单分类

Expand All @@ -29,13 +31,15 @@

*玩玩电脑游戏还是必须要有 Windows 的,所以我现在是一台Windows用于玩游戏,一台Mac 用于平时日常开发和学习使用。*

![windows](images/windows.png)

#### Unix

最早的多用户、多任务操作系统 。后面崛起的 Linux 在很多方面都参考了 Unix。

目前这款操作系统已经逐渐逐渐退出操作系统的舞台。

![Unix](images/操作系统简单分类.png)
![unix](images/unix.png)

#### Linux

Expand All @@ -45,12 +49,14 @@
>
> **很多人更倾向使用 “GNU/Linux” 一词来表达人们通常所说的 “Linux”。**
![Linux](images/Linux-Logo.png)
![linux](images/linux.png)

#### Mac OS

苹果自家的操作系统,编程体验和 Linux相当,但是界面、软件生态以及用户体验各方面都要比 Linux 操作系统更好。

![macos](images/macos.png)

### 操作系统的内核(Kernel)

我们先来看看维基百科对于内核的解释,我觉得总结的非常好!
Expand All @@ -61,16 +67,18 @@
简单概括两点:

1. 操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。
2. 操作系统的内核是连接应用程序和硬件的桥梁,决定着操作系统的性能和稳定性。
1. **操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。**
2. **操作系统的内核是连接应用程序和硬件的桥梁,决定着操作系统的性能和稳定性。**

### 中央处理器(CPU,Central Processing Unit)

简单概括三点:
关于 CPU 简单概括三点:

1. **CPU 是一台计算机的运算核心(Core)+控制核心( Control Unit),可以称得上是计算机的大脑。**
2. **CPU 主要包括两个部分:控制器+运算器。**
3. **CPU的根本任务就是执行指令,对计算机来说最终都是一串由“0”和“1”组成的序列。**

1. CPU 是一台计算机的运算核心(Core)+控制核心( Control Unit),可以称得上是计算机的大脑。
2. CPU 主要包括两个部分,即控制器、运算器。
3. CPU的根本任务就是执行指令,对计算机来说最终都是一串由“0”和“1”组成的序列。
### CPU vs Kernel(内核)

很多人容易无法区分操作系统的内核(Kernel)和中央处理器(CPU),你可以简单从下面两点来区别:

Expand All @@ -79,7 +87,7 @@

下图清晰说明了应用程序、内核、CPU这三者的关系。

<img src="https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/1200px-Kernel_Layout.svg.png" alt="Kernel (operating system) - Wikipedia" style="zoom:50%;" />
![Kernel_Layout](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/Kernel_Layout.png)

### 系统调用

Expand Down Expand Up @@ -112,10 +120,10 @@

### Linux简介

我们上面已经介绍到了Linux,我们这里只强调三点
我们上面已经简单了Linux,这里只强调三点
- **类Unix系统** : Linux是一种自由、开放源码的类似Unix的操作系统
- **Linux 本质是指 Linux 内核** : 严格来讲,Linux这个词本身只表示Linux内核,单独的 Linux 内核并不能成为一个可以正常工作的操作系统。所以,就有了各种Linux发行版。
- **Linux之父** : 一个编程领域的传奇式人物,真大佬!我辈崇拜敬仰之楷模。他是 **Linux内核** 的最早作者,随后发起了这个开源项目,担任Linux内核的首要架构师与项目协调者。他还发起了Git这个开源项目,并为主要的开发者。
- **Linux之父** : 一个编程领域的传奇式人物,真大佬!我辈崇拜敬仰之楷模。他是 **Linux内核** 的最早作者,随后发起了这个开源项目,担任Linux内核的首要架构师。他还发起了Git这个开源项目,并为主要的开发者。

![Linux](images/Linux之父.png)

Expand Down Expand Up @@ -151,13 +159,18 @@ Linux 的发行版本可以大体分为两类:

其实这是UNIX哲学的一个体现,在UNIX系统中,把一切资源都看作是文件,Linux 的文件系统也是借鉴UNIX文件系统而来。

### inode
**inode是linux/unix文件系统和硬盘存储的基础。那么,inode是什么?有什么作用呢?**
### inode 介绍
**inode是linux/unix文件系统的基础。那么,inode是什么?有什么作用呢?**

硬盘的最小存储单位是扇区(Sector),块(block)由多个扇区组成。文件数据存储在块中。块的最常见的大小是4kb,约为8个连续的扇区组成(每个扇区存储512字节)。一个文件可能会占用多个block,但是一个块只能存放一个文件。

虽然,我们将文件存储在了块(block)中,但是我们还需要一个空间来存储文件的 **元信息metadata** :如某个文件被分成几块、每一块在的地址、文件拥有者,创建时间,权限,大小等。这种 **存储文件元信息的区域就叫inode**,译为索引节点:**i(index)+node**。 每个文件都有一个inode,存储文件的元信息。

可以使用 `stat` 命令可以查看文件的inode信息。每个inode都有一个号码,Linux/Unix 操作系统不使用文件名来区分文件,而是使用inode号码区分不同的文件。

文件存储在硬盘上,硬盘的最小存储单位是扇区(Sector),每个扇区存储512字节(0.5kb)。操作系统读取硬盘的数据时,不会一个扇区一个扇区的读取,这样做效率较低,而是一次读取多个扇区,即一次读取一个块(block)。块由多个扇区组成,是文件读取的最小单位,块的最常见的大小是4kb,约为8个连续的扇区组成。文件数据存储在块中, 但还需要一个空间来存储文件的 **元信息metadata**,如文件拥有者,创建时间,权限,大小等。这种 **存储文件元信息的区域就叫inode**,译为索引节点。 每个文件都有一个inode,存储文件的元信息。
使用 `stat` 命令可以查看文件的inode信息。每个inode都有一个号码,Linux/Unix 操作系统不使用文件名来区分文件,而是使用inode号码区分不同的文件。
简单来说:inode就是用来维护某个文件被分成几块、每一块在的地址、文件拥有者,创建时间,权限,大小等信息。

**总结:**
简单总结一下:

- **inode** :记录文件的属性信息,可以使用stat命令查看inode信息。
- **block** :实际文件的内容,如果一个文件大于一个块时候,那么将占用多个block,但是一个块只能存放一个文件。(因为数据是由inode指向的,如果有两个文件的数据存放在同一个块中,就会乱套了)
Expand Down

0 comments on commit 2d8a7e6

Please sign in to comment.