• Unix&Linux大学教程 读书笔记【1-3章】


    Bash:Bourne-again shell,所有linux系统中的默认shell。程序名称:bash

    Shell:通过充当命令处理器以及解释命令的脚本,提供Unix基本界面的程序。

    操作系统:运行计算机的总控制程序,主要功能是高效利用硬件——充当硬件基本接口,为使用计算机的用户及正在只需的程序提供界面。

    操作系统最重要的功能:

    控制计算机并在计算机启动或者重新启动时初始化计算机。

    支持与计算机交互所使用的界面。

    为需要使用计算机资源(如磁盘空间、文件位置、处理时间、内存等)的程序提供接口。

    管理计算机内存。

    维护并管理文件系统。

    调度工作。

    提供账户和安全服务。

    所有Unix操作系统都有两个重要特征:多任务和多用户。多任务指Unix系统可以同时运行不止一个软件,多用户指Unix可以同时支持不止一个用户。(微软Windows是一个多任务、单用户的操作系统。)

    内核:引导过程的最后一个动作启动的一个非常复杂的程序。作用是控制计算机,充当计算机的核心。

    内核所提供的基本服务:

    内存管理(虚拟内存管理,包括分页)

    进程管理(进程创建、终止、调度)

    进程间通信(本地、网络)

    输入/输出(通过设备驱动程序)

    文件管理

    安全和访问控制

    网络访问(如TCP/IP)

    Linux与其它Unix系统的最主要区别:Linux使用了一个不同的特殊内核。

    内核基本可分为两大类型:单内核(monolithic kernel)和微内核(microkernel)。

    单内核:由一个非常庞大的程序构成,该程序自身可以完成所有事情。

    优点:速度快,高效。

    缺点:规模大,使用不便,难以设计和维护。

    微内核:一个非常小的程序,只能执行最基本的任务。为了执行其它功能,需要调用其它程序(服务器)。

    优点:采用了模块化设计,易于程序员理解,针对新系统修改微内核较快。相比单内核更易于定制。

    缺点:必须调用服务器来完成大部分工作,效率低。

    特殊目的的设备(如机器人、移动电话等)不需要单内核的全部功能,适合用一个微内核和相应合适的服务器。

    大多数Unix系统使用某种类型的单内核。OS X系统使用的是微内核。

    内核之外的其它内容包含在Unix包中,包含大量的辅助程序。

    其中最重要的是为用户提供计算机界面的程序——shell和GUI。

    shell:提供基于文本的界面程序。

    GUI(graphical user interface):使用窗口、鼠标指针、图标等图形用户界面。

    其它程序称为:Unix实用工具。所有Unix系统都提供数百个这样的程序,是操作系统的一部分。Unix实用工具在每个Unix系统上的工作都相当一致。

    非正式意义上通常用“实用工具”来包含shell,故Unix定义为

    Unix=Unix内核+Unix实用工具

    GPL(general public liscense):软件上应用GPL协议时,允许任何人发行该软件、查看源代码、修改该软件并发行修改后的软件。关键:要求任何重新发行软件(包括修改后版本)的人都不能剥夺软件的使用自有或添加自己的限制。

    现代Linux发行版都提供一个完整的产品:内核、实用工具、编程工具及至少一个GUI。(有数百个发行版)

    Linux有两层含义:

    1. 一个内核,无数在Linux项目中工作的程序员的一个产品。
    2. 任何基于Linux内核的操作系统的名称。

    BSD世界有3个主要的发行版(FreeBSD、NetBSD和OpenBSD)。

    Microsoft Windows下运行Unix:使用Cygwin。

    OS X:Macintosh计算机操作系统,基于Mach微内核,FreeBSD实用工具和Aqual专有GUI。

    双重引导系统(或多重):重新启动以从计算机上的一个操作系统切换到另一个操作系统的设置。

    引导加载程序:每次启动或重启计算机时用以接管计算机,展示一列可用的操作系统,用户选择后将控制转到想一个的内核,由内核启动操作系统的其余部分。

    常见Linux引导加载程序:GRUB(Grand Unified Bootloader)和LILO(Linux Loader)。

    设置双重引导系统需要使用分区管理器对硬盘分区,每个操作系统必须使用自己的分区。

    运行Linux的两种方式:

    1. 安装在硬盘上
    2. 从Live CD开始启动。

    Live CD:一个可引导的CD-ROM,包含运行一个完整操作系统所需的所有内容:内核、实用工具等,从Live CD引导时可以跳过硬盘,不需要进行硬盘分区和安装。

    完全硬盘安装和Live CD的区别:

    完全安装要求对硬盘进行永久修改,优势在于操作系统永久位于硬盘上,方便而且允许对系统进行定制,以及永久存储文件。

    Live CD承诺较弱,除非为Live CD数据保留特殊的磁盘分区,否则无法永久修改或保存Unix数据文件。从Live CD运行Unix会稍微降低计算机的性能,从CD引导比从硬盘引导慢,LiveCD还必须占用一些内存来创建一个RAM磁盘(用于模拟真实磁盘的一部分内存)来存放通常位于硬盘上的文件。

    折衷方案:将Unix系统安装在可移动存储设备(如USB)中充当微型硬盘。(可能需要修改计算机的BIOS设置,使之在硬盘之前引导,Live CD同理)。

    Unix:一种多用户、多任务处理的操作系统,由一个类Unix内核、许多类Unix实用工具以及一个类Unix shell构成。

    Linux:任何使用Linux内核的Unix的名称。

    第三章

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

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

    Unix的概念:终端/主机模式,能够将界面与系统的其他部分分离。处理单元(主机)只有一个,而界面单元(终端)有多个,从而实现多用户系统。

    终端服务器(terminal server):充当交换机的设备,用于将任意的终端连接到任意的主机。

    Unix系统总是区分普通终端和控制台(console),控制台是计算机本身的一部分,是一个用于管理系统的特殊终端。

    无头系统(headless system):不需要人类直接输入,没有连接终端,独自运行的Unix主机计算机。如:大多数的Web服务器和电子邮件服务器。

    自动运行不需要终端的主机类型:服务器、路由器。

    (需要控制时系统管理员通过网络连接到主机,完成工作后断开连接,让主机继续独自运行。)

    回显(echo):终端向主机发送用户动作信号,主机发送回相应的显示信号。【主机进行】

    滞后(lag):移动鼠标或按键时,屏幕没有立刻更新。

    选择主机进行回显的原因:

    1. 终端与主机物理分离时,主机进行回显时能确认终端与主机之间的连接正常。
    2. Unix的设计目的是要与许多不同终端一起工作,操作系统本身以统一的方式处理案件才有意义。

    Unix已不再使用单独的硬件终端,目前常用计算机来仿真终端。

    Unix的两种终端类型:字符终端和图形终端。

    Unix的GUI都基于X Window系统,基本支持由X终端(一种图形终端)提供。

    连接一台远程主机并仿真一个字符终端:ssh命令(secure shell)

    仿真X Window图形终端:ssh-X命令。

    ----------------------------------------------------------------一些奇怪的知识的分割线------------------------------------------------------------------------------

    启动GNU版本的Emacs(如Linux中的Emacs),输入<Ctrl-H><Ctrl-P>显示完整的GNU宣言。

    Hurd 是 HIRD of Unix-Replacing Daemons 的缩写,而 HIRD是“HURD of Interfaces Representing Depth”的缩写。即Hurd是一个间接地递归首字母缩写词。(我也不知道有什么用)。

    Andrew Taenbaum设计的Minix是微内核。

    Linus设计的Linux是单内核。

    ----------------------------------------------------------------一些奇怪的批注的分割线------------------------------------------------------------------------------

    您的母亲为何如此任性

    查尔斯:是的我的母亲为何如此任性

    哇塞最左推导

    “全世界的程序员联合起来!”

    It’ true.

  • 相关阅读:
    同事跳槽京东后,分享给我一份JAVA核心开发手册(架构筑基+开源框架+分布式架构+微服务架构+性能调优)
    只有2年经验的Java程序员,面试25K的阿里巴巴后端岗,已拿offer
    985硕士粉秋招拿下快手44万offer,面试资料学习经验分享
    年薪50万的程序员到底有多累、多辛苦?句句扎心。
    蚂蚁金服首发887页Java面试宝典!还原真实面试情景+面试题
    P8首谈做Java,在一线大厂做到金字塔顶端的人平时都如何学习?
    poj 2153 Rank List(查找,Map)
    算法导论 6-2 d叉堆
    算法导论 6.5.9 堆实现K路归并问题
    poj 2051 Argus(优先队列)
  • 原文地址:https://www.cnblogs.com/RDaneelOlivaw/p/6629545.html
Copyright © 2020-2023  润新知