Linux(二)—— Unix&Linux 的基本概念

计算机 = 主机(host)+ 终端(terminal)

主机 = 内核 + 实用工具

  • 内核(kernel)

    • 当计算机启动时,计算机要经历一系列动作,这些动作构成了引导过程。引导过程的最后一个动作是启动一个非常复杂的程序,该程序就被称为内核(Kernel)
    • 内核的作用是控制计算机,提供基础服务,是操作系统的核心,主要分为单内核和微内核两种
      • 单内核(monolithic kernel):自身可以完成所有事情,大多数早期 Unix 使用单内核设计,现在流行的单内核为 Linux kernel
      • 微内核(micro kernel):只能完成最基本的任务,例如 Minix、macOS
  • 实用工具
    • 编辑器、编译器等等等
    • Shell:命令行解释器,包括了用来组合命令的流程控制结构。除了在交互式提示符下输入命令外,用户还可以编写脚本。大多数shell都有一套共同的语法(基于Bourne shell)。

终端 = 输入设备 + 输出设备

最初,终端(terminal)和控制台(Console)都不是个人电脑的概念,而是多人共用的小型、中型、大型计算机上的概念。在计算机早期时代,个人无法承担高昂的费用,多个人通过终端同时使用一台主机,而控制台是管理员管理系统时使用的机柜,一般会直接附着在主机旁边。

字符终端

字符终端 (Character Terminal) 也叫文本终端 (Text Terminal),是只能接收和显示文本信息的终端。

早期人们使用价格低廉的电传打字机(Teletypewriter,tty)作为字符终端,所有输入结果都在纸带上打孔,最早型号为 Teletype ASR33(Automatic Send-Receive),后来由于电传打字机的使用过于普遍,以至于 tty 和终端成为同义词,终端(terminal) = tty = 命令的输入输出环境

字符终端也分为 哑终端 (Dumb Terminal) 和所谓的 智能终端 (Intelligent Terminal),因为后者可以理解转义序列、定位光标和显示位置,比较聪明,而哑终端不行。

DEC 公司在 1978 年制造的VT100 终端,VT100 不仅是史上最流行的字符终端,更是成为了字符终端事实上的标准。

终端仿真器(Terminal Emulator)

模拟:Simulate,按照实现来实现,原理相同,行为相同
仿真:Emulate,保持外部行为,但内部原理已经改变

如今的终端,指的是使用软件都是对终端设备进行仿真,与主机进行交互的终端仿真器,在面对命令行 (CLI) 程序时,终端仿真器会「假装」成一个传统终端设备;而对于现代的图形接口,终端仿真器会「假装」成一个 GUI 程序。

一个终端模拟器的标准工作流程是这样的:

  • 捕获你的键盘输入;
  • 将输入发送给命令行程序(程序会认为这是从一个真正的终端设备输入的);
  • 拿到命令行程序的输出结果(STDOUT 以及 STDERR);
  • 调用图形接口(比如 X11),将输出结果渲染至显示器。

现代系统中, Linux 默认提供了 6 个虚拟控制台(virtual consoles)和一个图形界面来让用户登录,Unix 则提供了 8 个,它们是由操作系统内核直接提供的,而那些那些运行在图形界面上的终端模拟器则被叫做终端窗口 (Terminal Window)。

无论是字符终端还是图形终端的仿真,都对应着 Linux 上的 /dev/tty 设备,Unix&Linux 的多用户登陆就是通过不同的 /dev/tty 设备完成的,而设备的属性等信息都保存在其中。

CLI(Command Line Interface)类仿真设备有 VT100、VT220、Xterm等,使用infocmp | less 可以看到自己当前所仿真的终端设备型号。

而 infocmp 命令显示内容则基于 ncurses (free version of curses),存储着不同型号设备的配置信息,用于命令的执行

命令行界面 (CLI)、终端 (Terminal)、Shell、TTY,傻傻分不清楚?

Linux

The name “Linux” refers to any Unix system that uses the Linux kernel。

GNU/Linux 下的图形用户界面 GNOME 和 KDE,有时也被叫做「虚拟 shell」或「图形 shell」。

Linux 学习路径

暂缺

Linux 目录结构

FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。

Linux 目录结构
暂缺

Linux 目录类型
暂缺

Linux(二)—— Unix&Linux 的基本概念的更多相关文章

  1. Linux(二) - Unix&Linux 基本概念

    主机 = 内核 + 实用工具 内核(kernel) 当计算机启动时,计算机要经历一系列动作,这些动作构成了引导过程.引导过程的最后一个动作是启动一个非常复杂的程序,该程序就被称为内核(Kernel) ...

  2. Linux(一) - Unix&Linux 历史

    Unix Unix 的诞生 Unix的历史可以追溯到20世纪60年代中期,当时麻省理工学院,AT&T,贝尔实验室和通用电气公司联合开发了一种名为Multics的操作系统,Multics 中存在 ...

  3. Linux vs Unix - Linux与Unix到底有什么不同?

    来自:Linux迷链接:https://www.linuxmi.com/linux-vs-unix.html Linux和Unix这两个术语可以互换地用来指同一操作系统.这在很大程度上是由于他们惊人的 ...

  4. 【Linux】unix/Linux常用命令英文全称

    英文全称解释更容易理解 知其然,更要知其所以然 man: Manual 意思是手册,可以用这个命令查询其他命令的用法. pwd:Print working directory 显示当前工作路径. su ...

  5. linux入门--Linux和UNIX的关系及区别

    UNIX 与 Linux 之间的关系是一个很有意思的话题.在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞 ...

  6. 1.3 Linux和UNIX的关系及区别(详解版)

    UNIX 与 Linux 之间的关系是一个很有意思的话题.在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞 ...

  7. 故事 --- Linux和UNIX之间的那些爱恨与情仇

    Linux和UNIX具体有哪些关系及区别? UNIX 与 Linux 之间的关系是一个很有意思的话题.在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 ...

  8. 【Linux】 Linux编程规范&Linux 编程环境搭建

    一.通过Samba映射网络驱动器 菜单栏-计算机-映射网络驱动器 English 菜单栏-Home -Easy access-Map as drive 编辑代码使用 Windows 编译 运行程序在 ...

  9. 《Unix/Linux日志分析与流量监控》书稿完成

    <Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...

随机推荐

  1. 二级联动,三级联动,初学者,纯javascript,不含jQuery

    二级联动: html代码: <body> <select id="province" onchange="getCity(this.options.se ...

  2. 安卓开发笔记(二十一):Android Studio如何创建assets目录

    方法如下: 因为在用WebView控件查看安卓内置网页的时候,必须创建这个资源文件夹,将网页放置在这个目录之下,默认是没有assets这个目录的,这样才可以实现网页代码html.css.javascr ...

  3. 解决小米手机USB安装apk时AS报错:INSTALL_FAILED_USER_RESTRICTED

    今天,直接用AS在小米手机上运行安装的时候总是报错:INSTALL_FAILED_USER_RESTRICTED,于是乎,通过以下方式解决: 在开发者选项将USB安装打开,然后,哈,解决了.记录一下.

  4. WeihanLi.Redis自定义序列化及压缩方式

    WeihanLi.Redis自定义序列化及压缩方式 Intro WeihanLi.Redis 是基于 StackExchange.Redis 的扩展,提供了一些常用的业务组件和对泛型的更好支持,默认使 ...

  5. .NET下的使用ActiveMQ

    项目结构 ActiveMQRecive下Program.cs using Apache.NMS; using Apache.NMS.ActiveMQ; using Apache.NMS.Util; u ...

  6. cglib根据数据动态生成对象

    最近有个任务:根据查询SQL直接导出报表 实现关键是,怎么根据sql查询的数据动态生成对象列表,想到Cglib动态代理实现 废话少说,上代码: 定义动态生成Java Bean类: import jav ...

  7. 漏洞经验分享丨Java审计之XXE(上)

    最近在审计公司的某个项目时(Java方面),发现了几个有意思的Blind XXE漏洞,我觉得有必要分享给大家,尤其是Java审计新手,了解这些内容可以让你少走一些弯路. Java总体常出现的审计漏洞如 ...

  8. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十九║Vue基础: 样式动态绑定+生命周期

    回顾 哈喽大家好,前后端分离系列文章又开始了,今天周一,还是感谢大家花时间来观看我写的博客,周末呢,没有写文章,但是也没有闲着,主要是研究了下遗留问题,看过之前文章的应该知道,之前的在AOP使用Red ...

  9. Linux - 通过LVM对磁盘进行动态扩容

    目录 1 LVM是什么 1.1 概念解释 1.2 为什么用LVM 1.2.1 不使用LVM时的扩容思路 1.2.2 使用LVM时的扩容思路 1.3 名词解释 2 普通的挂载磁盘方法 2.1 创建分区的 ...

  10. libevent和libcurl实现http和https服务器 cJSON使用

    前言 libevent和libcurl都是功能强大的开源库:libevent主要实现服务器,包含了select.epoll等高并发的实现:libcurl实现了curl命令的API封装,主要作为客户端. ...