Linux基础

Posted Shemesz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础相关的知识,希望对你有一定的参考价值。

  Linux学了快一年,快要参加秋招了,也要重新准备一下Linux所学的知识了,对自己所学的Linux知识整理出一个框架体系,也正好借此机会好好重新复习以下Linux!

1.操作系统

首先什么是操作系统呢?

在学Linux操作系统前,我们应当了解明白什么是操作系统?

计算机是由硬件和软件两部分组成,操作系统(Operating System, OS)就属于软件的一部分,他是硬件基础上的第一层软件,是硬件和其他软件沟通的桥梁。

操作系统会控制其他程序的运行,管理资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序,同时还提供一些最基本的服务:
1)文件系统

  • 提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机内部硬盘里,在目录的分层结构中组织文件。文件系统为操作系统提供了组织管理数据的方式

2)设备驱动程序

  • 提供链接计算机的每个硬件设别的接口,设备驱动器使程序能够写入设备,而不需要了解执行每个硬件的细节。简单来说,就是你去麦当劳点餐,你点完等它出餐开吃就好了,而不需要了解后厨怎么给你煎、炸、卤、煮做出来的这顿饭。

3)用户接口

  • 操作系统为用户提供一种运行程序访问文件系统的方法。如在Window系统下的图形界面,可以理解为一种用户与操作系统交互的方式;如智能手机的androidios系统也是一种操作系统的交互方式。我们所学的Linux下,也提供了一系列的命令来与操作系统进行交互。

4)系统服务程序

  • 当计算机启动的时候,会有很多的自启服务,执行安装文件系统、启动网络服务、运行预定等操作。

简单来说,我们使用计算机,就是由一层层抽象出来的系统产生不同分工的交互,一层层进行控制,就像整个社会的模型每个部门级别不同,做事也要一层层下派,一层层上报一样,而操作系统就是这个规则的制定者。


2.Linux操作系统

Linux简介

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux特点

Linux和Unix都是功能强大的操作系统,都是应用广泛的服务器操作系统,有很多相似之处,甚至有一部分人错误地认为Unix和Linux操作系统是一样的,然而,事实并非如此,以下是两者的区别。

开源性
Linux是一款开源操作系统,不需要付费,即可使用;Unix是一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用。

跨平台性
Linux操作系统具有良好的跨平台性能,可运行在多种硬件平台上;Unix操作系统跨平台性能较弱,大多需与硬件配套使用。

可视化界面
Linux除了进行命令行操作,还有窗体管理系统;Unix只是命令行下的系统。

硬件环境
Linux操作系统对硬件的要求较低,安装方法更易掌握;Unix对硬件要求比较苛刻,按照难度较大。

用户群体
Linux的用户群体很广泛,个人和企业均可使用;Unix的用户群体比较窄,多是安全性要求高的大型企业使用,如银行、电信部门等,或者Unix硬件厂商使用,如Sun等。
相比于Unix操作系统,Linux操作系统更受广大计算机爱好者的喜爱,主要原因是Linux操作系统具有Unix操作系统的全部功能,并且能够在普通PC计算机上实现全部的Unix特性,开源免费的特性,更容易普及使用!

Linux系统调用与库函数


可以从上图看到,Linux的层级划分,应用想要调用内核总共有三种方式:
1)系统调用

系统调用我们可以理解为操作兄台那个为用户提供的一系列操作的接口(API),这些接口提供了对硬件设备功能的操作,举个例子,我们最熟悉的hello world程序会在屏幕上打印出信息,程序中调用了printf()函数,而库函数printf()是将需要输出的信息打印到屏幕上,屏幕是硬件设施,对所有的硬件设施操作都需要驱动程序,而驱动程序是由操作系统内核实现的,这也就意味着我们的printf()函数最终要调用到Linux内核相关函数来操作屏幕这个设备,而这些函数就是兄台能够调用,事实上,printf()库函数实现里最终会调用系统调用write();

2)库函数

库函数可以理解为系统调用的一层封装。系统调用作为内核提供给用户程序的接口,他的执行效率是比较高效而精简的,但是我们有时候要多获取的信息要进行更为复杂的处理,或者更加人性化的处理,这就需要将这些处理过程封装成一个函数在提供给程序员,这就是库函数。

3)shell

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质

Linux内核


通过一张趣味的图片来介绍我们的Linux内核,可能看起来很普通,但是搞懂上面的一切的时候可能已经头发也寥寥无几了哈哈哈啊!
Linux内核主要模块分为以下几部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信、以及系统初始化(引导)、系统调用等,主要划分为5个子系统:

Process Scheduler 称为进程调度管理,负责管理CPU的资源,以便让每个进程尽量公平的方式访问CPU.

Memory Manager,内存管理。负责内存资源的管理,以便让各个进程安全的共享内存资源。并且内存管理会提供虚拟内存的管理机制,该机制可以让进程使用多余系统可用的内存,不用的内存会通过文件系统保存在外部非非易事储器中,需要的时候再取回到内存当中。

VFS(Virtual File System),虚拟文件系统。Linux内核将不同功能的外部设备,例如Disk设备(硬盘、磁盘、NAND Flash、Nor Flash等)、输入输出设备、显示设备等等,抽象为可以通过统一的文件操作接口(open、close、read、write等)来访问。

Network,网络子系统。负责管理系统的网络设备,并实现多种多样的网络标准。

IPC(Inter-Process Communication),进程间通信。IPC不管理任何的硬件,它主要负责Linux系统中进程之间的通信。

Linux系统启动过程

Linux系统启动的时候,我们会看到很多的加载信息,其实并不复杂,总体分为以下几步

  • 1)主机加电自检,加载 BIOS 硬件信息。
  • 2)读取 MBR 的引导文件(GRUB、LILO)。
  • 3)引导 Linux 内核。
  • 4)运行第一个进程 init (进程号永远为 1 )。
  • 5)进入相应的运行级别。
  • 6)运行终端,输入用户名和密码。

以上是关于Linux基础的主要内容,如果未能解决你的问题,请参考以下文章

1-群体遗传的基础介绍

根据基础班所学知识制作网页

今日所学

2019年11月27日 Linux所学知识 总结

2D拾荒者开发所学U3D的基础知识4

做马戏团demo所学相关u3d基础知识2