Linux基本知识整理(一)

趁着这几日找工作,把一些知识简单的整理一下,形成逻辑,内化吸收,真正做到随手可写,随时可用,真正的成为骨子里的东西而不是会“用”,而不会“写”!细想一下,还真的是命令虽然简单,但有时真的让你立即去执行的时候,还是会出现卡顿的。纯个人观点,如果有一些不恰当地方或者明显错误的地方希望大家指正,有些东西当然借鉴的,若有涉及到版权问题,请及时与本人联系,我将立即删除。

对Linux有一定了解的人想必都应该知道,尽管通常我们将Linux内核和GNU工具链的结合体称为Linux,但是一些Linux纯粹主义者将其称为GNU/Linux系统来表彰GNU组织为此所做的贡献。当然,我自己也是比较倾向于后者GNU/Linux。因为这个名字完全而准确的指出了Linux的组成:Linux内核+GNU工具组件。也有人说还有图形化桌面环境和应用软件,也不否认,但我仍坚持认为,前两者是最核心的,它们应经提供了良好的人机交互体验,所以这里简单Linux内核和GNU工具组件。

Linux系统的核心是内核。内核控制着计算机系统上的所有硬件和软件:必要时分配硬件,有需要时执行软件。 内核负责以下四项主要功能:

  • 系统内存管理
  • 软件程序管理
  • 硬件设备管理
  • 文件系统管理
  1. 系统内存管理

    操作系统内核个基本功能之一是内存管理。内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存(即并不实际存在的内存)。

    你可以通过/proc/meminfo文件来观察Linux系统上虚拟内存的当前状态。

    MemTotal:行表明这个Linux服务器有500M的内存(虚拟机),该文件表明大约有9M的空闲空间剩余(MemFree)。也是醉了,凑合说明问题就行了,输出表明这个系统上大约有2GB的交换空间(SwapTotal)。

  2. 软件程序管理

    Linux操作系统称运行的程序为进程。进程可以在前台运行,将输出显示在屏幕上;也可以在后台运行,隐藏到幕后。内核控制着Linux系统如何管理运行在系统上的所有进程。

    内核创建了第一个进程(init进程)来启动系统上所有其他进程。当内核启动时,他会将init进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一块专有区域来存储改进程用到的数据和代码。

    一些Linux系统发行版是由一个表来管理在系统开机时要自动启动的进程。在Linux系统上,这个表通常位于专门文件/etc/inittab中。

  3. 硬件设备管理

    内核的另一职责就是管理硬件设备。任何需要和Linux系统之间通信的设备,都需要在内核中加入其驱动程序的代码(driver code)。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核同设备之间交换数据。在Linux内核中有两种方法用来插入设备驱动代码:

    a、编译进内核的设备驱动代码

    b、可插入内核的设备驱动模块

    Linux系统将硬件设备当成特殊的文件,称为设备文件。设备文件有三种不同的分类:

  • 字符型设备文件
  • 块设备文件
  • 网络设备文件

Linux为系统上的每个设备文件都创建一种特殊的文件,称为“节点”。与设备的所有通信都是通过设备节点完成的。每个节点都有一个唯一的数值对,供Linux内核标识他。数值对包括一个主设备号和一个个次设备号。类似的设备被划分到同样的主设备号下。次设备号用来标识同一主设备号下的某个特殊设备。

文件系统管理Linux支持多种文件系统,任何供Linux服务器访问的硬盘都必须格式化成文件系统的一种。Linux内核采用虚拟文件系统(VFS)作为和每个文件系统交互的接口。这位Linux内核同任何类型文件系统通信提供了一个标准接口,当每个文件系统被挂载和使用时,VFS将信息都缓存在内存中。

GNU工具链

  1. 核心GNU工具链

GNU coreutils软件包有3部分组成:

  • 用于处理文本的工具
  • 用于操作文本的工具
  • 用于管理进程的工具

这三组主要工具中的每一组都包含一些对Linux系统管理员和程序员至关重要的工具。

2.  shell

简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。

我接触的linux发布版本(Redhat/CentOS)系统默认安装的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增强版本。Bourn Shell 是最早行起来的一个shell,创始人叫Steven Bourne,为了纪念他所以叫做Bourn Shell,检称sh。

时间: 2024-08-05 15:19:25

Linux基本知识整理(一)的相关文章

Linux动态库相关知识整理

动态库和静态库在C/C++开发中很常见,相比静态库直接被编译到可执行程序, 动态库运行时加载使得可执行程序的体积更小,更新动态库可以不用重新编译可执 行程序等诸多好处.作者是一个Linux后台开发,这些知识经常用到,所以 整理了一下这方面的知识.静态库相对简单,本文只关心Linux平台下的动态库. 创建动态库 这里我把一个短小却很有用的哈希函数编译成动态库做为示例,ELFhash用于对字符串做哈希,返回一个无符号整数. //elfhash.h #include <stdio.h> unsign

Kali Linux渗透基础知识整理(二)漏洞扫描

Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网络上传输的数据量. TCP协议 TCP是因特网中的传输层协议,使用三次握手协议建立连接.当主动方发出SYN连接请求后,等待对方回答SYN+ACK ,并最终对对方的 SYN 执行 ACK 确认.这种建立连接的方法可以防止产生错误的连接,TCP使用的流量控制协议是可变大小的滑动窗口协议. 连接建立 TC

Linux进程管理知识整理

Linux进程管理知识整理 1.进程有哪些状态?什么是进程的可中断等待状态?进程退出后为什么要等待调度器删除其task_struct结构?进程的退出状态有哪些? TASK_RUNNING(可运行状态) TASK_INTERRUPTIBLE(可中断等待状态) TASK_UNINTERRUPTIBLE(不可中断等待状态) TASK_STOPPED(进程被其它进程设置为暂停状态) TASK_TRACED(进程被调试器设置为暂停状态) TASK_DEAD(退出状态) 进程由于所需资源得不到满足,从而进入

Linux 动态库相关知识整理

动态库和静态库在C/C++开发中很常见,相比静态库直接被编译到可执行程序,动态库运行时加载使得可执行程序的体积更小,更新动态库可以不用重新编译可执行程序等诸多好处.作者是一个Linux后台开发,这些知识经常用到,所以整理了一下这方面的知识.静态库相对简单,本文只关心Linux平台下的动态库. 创建动态库 这里我把一个短小却很有用的哈希函数编译成动态库做为示例,ELFhash用于对字符串做哈希,返回一个无符号整数. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //elf

Linux Basics 知识框架整理

本博文目录索引 [TOC] 第01章 在VMware Fusion虚拟机中安装CentOS实验环境 1.1 实验:手动安装CentOS 1.2 reset.sh 脚本 本章总结 第02章 Bash Shell特性 2.1 命令提示符 2.2 实验:定制命令提示符格式 2.3 执行命令 2.4 命令别名 2.5 tab键补全 2.6 命令行历史 2.7 Bash快捷键 本章小结 第03章 获取Linux帮助 3.1 whatis 3.2 help(内部命令) 3.3 帮助选项 3.4 man手册(

WIFI基本知识整理

WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总结和整理,便于后续的学习.因为无线网络中涉及术语很多,并且许多协议都是用英文描述,所以有些地方翻译出来会有歧义,这种情况就直接英文来描述了. 主要内容: 一.基本概述 二.实践基础 三.一些原理 四.补充 五.其它 一.基本概述 ============================ 1.有线和无线网络 目前有线网络中最著名的是以太网(Ethenet),但是无线网络WLAN是一个很有前景的发展领域,虽然可能不会

linux基础知识的总结

例如以下内容是我对linux基础知识的总结,由于本人在初期学习linux的时候走了不少的弯路,对于基础的掌握耗费了不少的时间,所以为了后来者对linux的基础部分有个清晰的了解,特对基础知识进行了总结,由于水平有限.难免有疏忽或者不准确的地方.希望大家可以直接指出来,我会及时改正.一切为了知识的传播.^_^ ? *********************************************************************************************

计算机硬件知识整理

计算机硬件知识整理 一.编程语言的作用 编程语言,就是让计算机为解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程.为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路通过计算机能够理解的形式告诉计算机,这种人和计算机之间交流的过程就是编程. 目前的主要编程语言有,Java, C, C++, Python, PHP, Pearl等. 二. 编程语言的作用及与操作系统和硬件的关系 操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件的计

嵌入式Linux基础知识0(什么是真正的实时操作系统--硬实时 软实时)

需求说明:IPC项目需要Linux系统,知识储备 来自:http://blog.csdn.net/zhourui1982/article/details/5282361 阅读精华整理: 1.根据实际应用,可以选择采用硬实时操作系统或软实时操作系统,硬实时当然比软实时好,但是,如果你的公司正在准备开发一款商用软件,那请你注意了,业界公认比较好的VxWorks(WindRiver开发),会花光你本来就很少的银子,而软实时的操作系统,如某些实时Linux,一般是开源免费的,我们公司本来的产品就是基于V