计算机基础及初识linux

计算机组成

硬件部分

计算机主要由五大部件组成,他们分别是CPU、内存、外部存储器,输入设备、输出设备以及硬盘

CPU

其中主要包含有运算器、控制器、寄存器和缓存(运算器负责数值运算,控制器服务逻辑运算,寄存器和缓存都用来存放临时数据),相当于人类的大脑
关于CPU的架构之类的,我也不太清楚,等弄清楚了再来补充,

内存

这里的内存,就是人们常说的运行内存,它和硬盘是两个概念,切记不要将内存和硬盘混为一谈,虽然他们用的单位是相同的!(笔者就碰到过好多内存和硬盘容量傻傻分不清楚的人)
内存是唯一可以直接和CPU通信的硬件,CPU加工数据都需要经过内存
内存主要负责装载程序,将硬盘中静态的程序文件装载为动态的进程
大致相当于人类大脑的短期记忆

外部存储器

用来存放数据
最常见的外部存储及有机械硬盘,固态硬盘以及usb
根据硬盘的接口,也分很多类别:目前主要有着IDE、SCSI、SATA、SAS、USB和光纤通道五种类型,接下来我们简单介绍一下他们各自的特点:

  • IDE
    integrated drive electronic,传输速度大概在133MB/s价格低廉、兼容性强、性价比高、数据传输速度慢、不支持热插拔接口如图所185e893b8e0d6dd0ed0d38a743475534.png
  • SCSI
    small computer system interface,传输速度大概在6gbps
    传输速率高,读写性能好,支持热插拔,可连接多个设备,但是价格相对来说比较贵
    接口如图所示:
    cd2d91655ff720d5d334771a48948e38.png
  • SATA
    serial advanced technology attachment,传输速度大概在 使用Serial ATA口的硬盘又叫串口硬盘,是未来pc(personal computer个人计算机你)硬盘的趋势
    提高了数据传输的可靠性,能对传输指令(不仅仅是数据)进行检测,如果发现错误,还能自动矫正,结构简单,支持热插拔
    在这里插入图片描述
  • SAS
    serial attached SCSI:传输速度大概在6gbps左右,其可向下兼容SATA,传输速率比SATA要快很多
    002cb199dac4cbc5f727390729f40f08.png
  • USB
    这个就没啥好介绍的了,日常生活中经常用到
  • 光纤通道
    Fibre Channel
    最初不是为了硬盘设计的接口,是专门为网络系统设计的,但是UI这存储系统对速度的需求,才逐渐应用到计算机硬盘系统中,
    其特性有:支持热插拔,告诉带宽,远程连接,连接设备数量大等
    47655405b16e7965d7ef6f14c22c7669.png

最后上个机械硬盘的机构图,了解一下
87c404c7431fed72da3d6f39a72e0fce.png
往后讲分区和文件系统的时候会用到!先记着
如图所示,机械硬盘,一般是由多个盘片叠加组成的,所谓磁道,就是将一个盘片上划分成n多个直径不同的圆环,每个圆环就是一个磁道
而扇区,是指一个磁道中的一段位置,一般来说,每个扇区都是512个字节、
柱面,所有盘片中的同一个编号的磁道组成一个柱面!分区时基于柱面来划分的。

输入设备和输出设备

这个没啥好说的,输入设备最常见的就是我们的键盘鼠标了,输出设备呢,就是屏幕,打印机之类的

软件部分(操作系统的发展及内核功能)

ok,计算机硬件的组成,大致了解后,就该说说软件了,想要一个电脑运行起来,光靠硬件是不行的,还需要我们常用的操作系统和实现各功能的应用程序
什么是操作系统(operating system)?

  • 广义上讲
    操作系统由一个内核和一些列提供特定功能的引用程序组成,没有这些特定功能的应用程序,内核将计算机启动起来,其实啥都干不了!
  • 狭义上来讲
    操作系统就是一个通用的应用程序(也称之为内核),它主要负责实现*驱动硬件,进程管理,安全功能,网络功能,内存管理和文件系统管理*,并且将底层硬件的复杂逻辑封装起来向上提供较为简单的接口供程序员调用(将底层硬件比喻成汽车的各零件,操作系统就是将各零件组合成汽车,程序员便只需要知道,如何操作汽车即可)
    计算机诞生初期,是没有操作系统一说的,性能也很简洁单一,计算机在某一时刻只能干一件事,最开始,人们使用批处理系统,将事先使用二进制数编好的程序,用打孔纸和磁带存储起来,传输给计算机,计算机完成一个任务后,再继续下一个任务,由于当时的io能力太低,这样的效率很低下,CPU的性能浪费的太多
    因此,后来便衍生出多任务系,它使CPU能够分时段运行不同的任务,例如,前五秒执行任务1,中五秒执行任务2,后五秒执行任务3,而后再回到任务1…………依次类推,到这里,就会出现一个问题,怎样防止cpu在不同任务之间切换而不出错呢?为了解决这个问题,Bell,MIT,GE三个实验室就开始合作研发这么一个监控程序,这就是现代操作系统的开端;操作系统,或者更加精确的说,内核就是这么一个监控程序

操作系统的发展

  • unix
    前面所说的Bell,MIT,GE三个组织合作研发监控程序,虽然最终研发出来了,但是那都是很久以后的事情了,期间,GE和Bell先后退出该项目,Bell实验室退出该项目后,有个叫Ken Thompson的家伙,据说是为了玩一款之前在项目中玩过的游戏,自己一个人写出来一个小系统用于玩游戏,这个系统名叫 unics,这就是著名的unix系统的雏形,而后大概是通过是现实很多成员的努力下,1969年前后,unix系统被开发出来,1972年前后,unix系统在Bell实验室广为流行,1973年-1974年,Ken和Dennis俩人将unix使用c语言重新编写,在同年,第一次将unix公之于众,
    unix是运行在硬件之上的一个通用监控程序,它能为每一个程序虚拟出一个完美的运行环境
  • linux(一个类unix系统或者说内核)
    介绍linux发展之前,有必要先简单说一下GUN计划,该计划由
    Richard Stallman于1983年宣布,其目的是编写一套自由免费的并且能和unix兼容的系统,以及编写开发用于该系统上的工具程序,该计划还发布了一种版权许可协议,名为GPL(GNU Public Lcense)该计划规定,所有引用了遵循该协定的程序的代码的程序,都必须同样遵循该协定!
    ok 接下来说linux:1991年8月份,Linus Torvalds宣布成立linux项目,遵循GPL,linux的出现,恰逢风口,弥补了GNU组织开发内核进度缓慢的缺陷,linus提供的linux内核结合GUN组织的研究成果以及开发的应用程序,著名的GNU/Linux诞生,该系统,时至今日,依旧应用广泛!
    如今市面上的安卓智能手机,都是跑的linux内核

初识linux系统

linux发行版

补充一下前面所说的内容,GUN计划 所提供工具程序,包括linux内核,全部都是源码!所谓源码,就是使用某种编程语言编写的程序代码,而计算机只能识别二进制格式的代码,那么问题就来了,给你一个计算机,再给你一堆源码,你怎么装到电脑上去? 绝大部分普通人,计算机都启动不起来,那怎么办? 对,没错,手动将源代码编译成二进制机器码!嘿嘿,这个工作,可不是个简单的事,虽然很难,但是呢,也还是需要人去做,所以,就出现了许多组织,按照各自不同的理解,选择不同版本的内核,不同的程序工具,将其编译成二进制码,组合打包起来,提供给用户安装! 这就是linux的发行版,由于各个组织对源代码的理解不甚相同,所以便有了很多不同的发行版,如上所述,他们之间的区别在于,使用的内核版本不同,自带的应用程序不同,各管理程序不同,以及侧重点不同,列入有的侧重于图形界面华丽好看,有的侧重于系统运行稳定,等等等等!
接下来罗列出一些现如今常见的linux发行版

  • Debian
    基于Debian的二次发行版Ubuntu
    基于Ubuntu的二次发行版Mint
  • Slackware
    基于Slackware的S.u.S.E
    基于S.u.S.E的openSUSE
    其实Slackware也是由MCC Interim发行版衍生出来的
  • RedHat
    CentOS
  • ArchLinux
  • Gentoo
    等等等等
    ded22d5aff79b8ddf94225be4729c508.png

Linux的哲学思想

  • 一切皆文件
    顾名思义,linux系统将所有底层硬件都抽象成为文件,保存于/etc/目录下,可直接调用之,/etc目录下有两个有意思的文件 /dev/null 和/dev/zero, 第一个是个数据黑洞,所有数据往里边送,都会被无情的吞噬掉,渣渣都不剩,而/dev/zero这个设备文件,我们称之为吐零机,顾名思义,他能够无限制的给我们提供数据,而数据内容就是0!
  • 由众多单一的程序组成,每个程序只完成一个功能,并且将其做好
    绝对不模仿qq,微信什么的,又能聊天,又能刷朋友圈,又能看图片,又能发视频什么什么的,查看文件就只查看文件,专一高效,当然,我举这个例子可能有点不合适,诶,大概明白意思就行了吧!
  • 尽量不与用户交互
    这个怎么理解呢? 三个字“自动化”没错,为了让用户省心,不多bb
    记住,linux中,没有消息就是最好的消息
  • 所有配置信息使用文本文件保存
    嗯,这一条,多用就能体会到了,所有应用程序,服务之类的配置信息,都是以文本文件格式保存的,大多时候,使用命令行修改的配置信息,只会在当前shell生效,如果想永久生效,那么需要修改配置文件后重启,或者reload配置文件,这是我目前最直观的感受!

linux目录结构及命名规范

FHS 文件层次系统结构标准 Filesystem Hierarchy standard
FHS官方文档
由于linux系统的发行版众多,为了方便用户使用,以及程序的开发,
linux系统的目录结构必须遵循FHS这一标准,该标准规定了,作为根目录,必须具备的目录,以及特定类型的文件需要放置在哪些目录中!

  • /bin:用于存放普通用户能使用的二进制可执行程序
  • /sbin:用于存放管理员账户能使用的二进制可执行程序
  • /boot:系统启动时所需要用到的文件
  • /etc:系统的配置文件
  • /home:系统中用户家目录存放位置
  • /lib:32位系统的库文件
  • /lib64:64位系统的库文件
  • /media:用于挂载光盘的挂载点
  • /mnt:用于临时挂载各种文件系统挂载点
  • /tmp:专门存放各种应用程序运行过程中所产生的临时文件,所有用户对该目录都具有可读可写可执行权限
  • /proc:基于内存的虚拟文件系统,用于为内核及进程存储相关信息,他们多为参数
  • /sys:提供了一种比/proc更为理想的访问内核数据的途径,主要作用在于为管理linux内核提供一种统一的模型的接口
  • /srv:当前主机为服务提供的数据存放处
  • /opt:第三方应用程序的安装位置(可选目录)
  • /var:存放经常需要变动的数据文件,比如日志什么的
  • cache:程序缓存数据
  • lib:Variable state information
  • local:Variable data for /usr/local
  • lock:Lock files
  • log:日志文件存放目录
  • opt:Variable data for /opt
  • run:Data relevant to running processes
  • spool:Application spool data
  • tmp:系统重启前保存的临时文件,用于排错
  • /usr:这是一个层级目录,其下又是一个层级结构,里边包含有
  • bin
  • sbin
  • lib
  • lib64
  • include:c程序头文件
  • share:命令手册页和自带文档等文件存放处
  • local:又是一个层级目录
  • X11R6:x-window程序安装的位置
  • src:程序源码的存放位置
  • local:系统管理员安装本地应用程序或者第三方应用程序的目录

开源协议

开源:表示开放软件的源代码,允许别人免费复制,学习,修改,使用,但是根据遵循的开源协议,会有不同的要求。
国际公认的开源许可证多达80多种
这里,我们只列举出几种常见的:
根据使用条件的不同,我们将开源许可证分为两大类,一类是宽松式的(permissive),一类是Copyleft(这个词是Copyright的反义词,复制权的反义词,意思就是允许别人复制的意思)

  • 宽松式(permissive)
  1. BSD(二条款版):别人写的软件源代码,你拿来,想干嘛干嘛,卖钱都成,只要你保留原始的许可证声明,让别人知道,该程序的作者是谁
  2. BSD(三条款版):和上一条一样,但是额外加一条,如果你要出售该软件,不允许使用作者名字进行宣传
  3. MIT:和BSD(二条款版)基本没区别,爱干嘛干嘛
    4:Apache 2:该协议规定,你拿来的源代码,如果有修改过得地方,分发给别人使用,必须声明告知用户,该程序有被修改过
  • Copyleft:该类型的协议就严格多了
  1. Affero GPL(AGPL):该协议规定,你写的程序,如果包含了遵循该协议的代码,那么你的整个项目也都必须遵循该协议,全部开源,否则就涉及侵权了,而且,及时你在云服务上使用,不分发给用户,也必须开源
  2. GPL:和上一条一样,但是在云服务上使用,不提供给用户,那么可以不用开源
  3. LGPL:如果你的项目调用了遵循该许可证的库,可以不用开源
  4. Mozilla(MPL):该协议规定,你的项目中包含了遵循该协议的代码,只要该代码在单独的文件中,那么新增的其他文件可以不用开源

上一张图便于理解
7debb0726ea7a4cfad016dc7ded887a9.jpeg

好了,文章就到这了,北京时间2029/3/20-02:19
学习愉快! 理解有限,欢迎留言指正错误之处!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值