计算机硬件
计算机由五大基本单元组成
- 控制器:指挥和协调计算机各部件
- 运算器:算术和逻辑运算处理
- 存储单元:内存和外存
- 输入单元:Input
- 输出单元:Output
操作系统
操作系统是计算机最大的软件,用于管控计算机系统中的硬件和软件,在用户与硬件系统之间传递信息
问题:程序启动需要操作系统,操作系统也是程序,怎么启动它呢,是如何实现开机启动操作系统的?
答案:通过BIOS或UEFI
BIOS和UEFI是一段固定在主板的程序,计算机启动时就会默认运行这段程序,然后通过这段程序运行主板引导项。UEFI可以理解为BIOS的优化版本。
ps:主板上有一颗纽扣电池,有了它的持续供电才得以保存这块主板的BIOS信息,如果拔掉这颗电池或是电池完全没有电了,就会导致信息将不能保存(正好有一次家里的台式机出现了启动问题,就是换了这颗纽扣电池解决的)
Linux系统概览
Linux的版本
- 内核版本
- 发行版本
发行版本=Linux内核版本+常用软件 主流的Linux发行版本
查看Linux版本的方法
- 方法1、2
- 方法3
Linux的应用领域
- 服务器
- 嵌入式和智能设备
- 个人办公桌面
- 学术研究和软件研发
Linux系统结构
组成部分
- 内核:是Linux操作系统的核心
- shell:提供了用户与内核进行交互操作的一种接口
- 文件系统:文件存放在磁盘等存储设备上的组织方法
- 应用程序:程序集
体系结构
- 用户空间
- 内核空间
内核是硬件与软件的中间层
内核是一个资源管理程序
内核提供有面向系统的命令
进程管理
- 进程是正在执行的一个程序或命令
- 进程拥有自己的地址空间,占用一定的系统资源
- 一个CPU同时只能运行一个进程
- 一个进程由它的进程ID(PID)和它父进程的进程ID(PPID)唯一识别
由父进程拉起子进程,子进程以父进程为模板创建的,linux的进程结构是一个树型结构,使管理进程便利
查询进程信息的方法
93824是进程的pid,后面显示的是进程的启动路径
通过PID可以查看进程的具体信息,这张图中top -p 93824下面一行的S表示状态,NI是进程调度优先级,第二行的S指休眠状态
进程调度
进程调度解决了当cpu数少于程序数时同时运行多个程序的问题,是操作系统按一定的策略选择进程占用cpu运行的过程,实际上是cpu将其运行时间做了切分。
进程状态
进程调度原则
- 一个CPU同时只能运行一个进程
- 每个进程执行时间几乎相同
- 采用轮询方式调度,当轮询完成则回到第一个进程反复
轮询:操作系统在管理进程时候,会创建一些调度队列,每个进程都会放到一个队列中,当cpu开始进程调度时,会从队列的第一个取到队列的最后一个,相当于所有的进程调用完成。又会回到第一个开始下一轮的操作,好处是保证了所有进程都可以被执行到。 - 进程执行消耗的时间同进程量呈正比
进程的的系统调用
- 内核空间:系统内核运行的空间
应用程序运行在内核空间,处于内核态 - 用户空间:应用程序运行的空间
应用程序运行在用户空间,处于用户态一个用户程序会频繁地在用户态和内核态切换,使得程序能读取到一些硬件平台的资源或调用内核态的资源
文件系统
Linux中一切皆文件
Linux的文件结构呈现树状结构
- /bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 - /boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 - /dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 - /opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 - /root:
该目录为系统管理员,也称作超级权限者的用户主目录。 - /sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。 - /home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。 - /usr:
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
虚拟文件系统
Linux通过虚拟文件系统实现用户对不同种文件统一调用
- 对应用层提供一个标准的文件操作接口
- 对文件系统提供一个标准的文件接入入口
Linux在中间层进行了抽象,用了虚拟文件系统VFS,使得操作统一,接口调用统一
查看文件类型的方法
文件的基本操作
文件的读取流程
先去用户缓冲区中寻找,看用户缓冲区以前是否有命中,如果有的话,会在用户缓冲去读文件,然后返回,如果没有命中的话,就要发起系统IO调用,进程从用户态切换到内核态,内核进程会在内核缓冲区中读取以前是否有命中过对应的内容是否有缓存,如果有的话,会在内容缓冲区通过cpu将这些数据拷贝到用户缓冲区,如果没有命中的话,会通过DMA(直接存储访问)向磁盘发起读取请求,然后DMA会把磁盘相关文件拷贝到内核缓冲区,cpu在把数据从内核缓冲区拷贝到用户缓冲区,通过cpu将数据拷贝到Scoket缓冲区,再通过DMA进过网卡返回给用户
Linux权限
Linux采用用户权限+文件权限模式
用户权限
- 用户账号
普通用户账户:在系统中进行普通作业
超级用户账户:在系统中对普通用户和整个系统进行管理 - 组账户
标准组:可以容纳多个用户
私有组:只有用户自己
文件权限
- 每个用户对于文件都有不同权限,包括读(R)、写(W)、执行(X)
- 文件权限关于用户有三个概念:
所有者:文件的所有者
所在组:文件的所有者所在的组
其他人:除文件所有者及所在组外的其他人
查看用户信息
用户权限操作
Linux的软件包管理
软件包
软件包管理工具
以apt为例,常用命令
以Debian为例,配置软件源
nginx的安装和配置