1计算机硬件基本单元
- 控制器(controller):对指令进行解释
- 运算器(ALU):计算逻辑单元
- 存储器(memory):当前或者即将执行的数据或程序
- I/O设备
2操作系统
2.1定义
-
管理和控制计算机系统中的硬件和软件资源,用于在用户与系统硬件之间传递信息
-
操作系统提供了两部分能力
-
管理计算机资源
- 处理器管理
- 存储器管理
- 设备管理
- 文件管理
-
提供接口(用户与计算机交互的能力)
- 命令接口
- 图形用户接口
- 程序接口
-
2.2操作系统启动流程
-
bios和uefi,都是固化在主板上的、随着通电开始后自行运行的程序,以该程序为首,按照一系列流程去启动操作系统
-
uefi可以算是bios的优化
3Linux系统概览
3.1Unix操作系统
3.1.1Unix是什么
- 是一个分时系统
- 1970年问世
- 影响深远
3.1.2Unix操作系统历史
-
1969年开发
- 使用汇编语言
-
1970年投入使用
-
汤普森为其开发了B语言
-
之后Dennis Ritchie开发了C语言
-
然后他们用C语言重新写了Unix程序
3.1.3类Unix系统
-
定义:是指继承UNIX的设计风格演变出来的系统
- 与Unix有许多相似之处
- 遵守POSIX标准规范
-
BSD
- 伯克利版本
3.1.4Unix哲学
-
根据开发经验总结出来一些想法和方法
-
kiss原则
-
Everything is a file
3.2Linux系统
3.2.1Linux操作系统
-
Unix Minix和Linux
- 由于Unix开始闭源,Minix被开发出来,不包含任何Unix的源码
- 现在Minix面向嵌入式
-
Linux操作系统
- bash:默认的shell
- gcc
-
发行版
3.2.2自由软件
-
自由软件运动
- 软件受知识产权相关的法律保护copyright
- 在Unix不再提供源码,理查德推进自由软件gnc
- 1989采用GPL
-
自由的含义
-
理查德的自由是什么呢:自由关乎权利,而不是价格
-
四项自由(用户的自由权利)
- 自由度0:自由运行软件(最基本的权利)
- 自由度1:自由学习和修改软件源代码
- 自由度2:自由再发布软件拷贝
- 自由度3:自由发布修改后的软件版本
-
-
GNU项目
- 目的是为了开发一个类似Unix的操作系统
- 理查德开发了Emacs编辑器和gcc编译器
- Gnu's not unix
- 目前包含大量工具,但是缺乏一个内核
-
GPL许可证
-
Copyleft
-
使用或者修改程序后,也必须基于GPL公开程序
-
不能附加限制条件
-
-
3.2.3开源软件
-
什么是开源
- 开源运动(open-source movement)
- Netscape
-
开源目标
-
是开发高质量软件
- 高品质:经过充分测试,测试人员也是用户
- 低风险:闭源代码无人维护,知道问题也无法处理
- 低成本:自愿参加
- 高透明:源码公开
-
-
代码托管(版本控制,仓库)
-
版本控制工具
- 集中式svn
- 分布式git
-
代码托管平台
-
github,gitlab,gitee
-
3.3linux版本
-
内核版本(核心)
-
发行版本
-
linux内核+常用软件=linux发行版本
-
3.4查看内核版本号
-
Uname方法
- 使用
uname命令和附加命令选项
- 使用
-
proc目录
/proc下的version文件
-
不同版本的内核软件
-
$ cat /etc/redhat-release(centos) -
$ cat /etc/issue(Ubuntu)
-
3.5linux系统应用领域
-
IT服务器(操作系统、虚拟化和云计算)
-
嵌入式和智能设备
-
个人办公软件
-
学术研究与软件研发
4linux系统结构
4.1linux基本组成
-
内核
-
Shell
- 命令解释器
-
文件系统
- 管理持久数据
-
应用程序
4.2linux体系结构
-
用户空间
- 应用程序
- GNU C Library
-
内核空间
- 系统调用
- 内核
- 平台架构相关的代码
-
独立性和权限划分
内核是硬件与软件之间的中间层
内核是一个资源管理程序
内核提供一组面向系统的命令
4.3进程管理
-
进程的特点
- 是一个正在执行的一个程序或命令
- 进程有自己的地址空间,占用一定的系统资源
- 一个cpu核同一时间只能运行一个进程
- 进程由它的进程id(pid)和它父进程id(ppid)唯一识别
-
查看进程信息
# 查看启动的Nginx进程
ps -ef | grep nginx
# 查看某个进程
top -p 93824
# 关闭指定进程
kill 93824
# 全部进程动态实时视图
top
4.4进程调度
-
定义:进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程
-
原则
- 一个CPU核同一时间只能运行一个进程
- 每个进程有近乎相等的执行时间
- 对于逻辑CPU而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
- 进程执行消耗时间和进程量成正比
-
进程的系统调用
-
用户态->内核态->用户态
-
4.5文件系统
-
核心思想:一切皆文件,包括设备
-
目录结构:树状
-
虚拟文件系统(VFS)
- 对应用层提供一个标准的文件操作接口
- 对文件系统提供一个标准的文件接入接口
-
查看文件系统类型
# df 命令报告文件系统磁盘空间利用率
df -T
# mount命令是挂载文件系统,不带任何参数运行时,打印包含文件系统类型在内的磁盘分区的信息
mount
-
一些基本操作
-
ls mkdir mv rm touch cp -
注意
-
touch命令本身并不是为了创建空文件而产生的
-
-
4.6用户权限
-
用户账户
-
用户账户
- 普通用户账户:在系统中进行普通作业
- 超级用户账户:在系统中对普通用户和整个系统进行管理
-
组账户
- 标准组:可以容纳多个用户
- 私有组:只有用户自己
-
-
查看用户信息
# 查看当前登录用户信息
w
# 查看当前用户所属的组
groups
# 查看用户的uid信息
id xxxx
4.7文件权限
-
基本概念
- 所有者:文件所有者
- 所在组:文件的所有者所在组
- 其他人:除文件所有者及所在组外的其他人
-
drwxrwxrwx 例如链接文件为777
cd / && mkdir demo && ls -ld demo
sudo useradd ceshi # 创建用户,赋予可写操作
sudo passwd ceshi # 设置用户密码
su ceshi
cd demo
touch index.js
sudo chown -R ceshi:ceshi ./demo # demo文件夹权限给ceshi用户
su ceshi
cd demo
touch index.js
4.8软件包
-
软件包管理
-
底层:用来处理安装和删除软件包文件等任务:DPKG,RPM
- rpm:redhat
- dpkg:debian
-
上层:搜索任务和依赖解析任务:APT,YUM,DNF
-
| 操作系统 | 格式 | 软件包管理系统 | 前端工具 |
|---|---|---|---|
| Debian | .deb | dpkg | apt,apt-get |
| Ubuntu | .deb | dpkg | apt,apt-get |
| centos | .rpm | rpm | yum |
| Fedora | .rpm | rpm | dnf |
| openSUSE | .rpm | rpm | zypper |
-
debian配置软件源
- 配置文件:/etc/apt/sources.list
deb 镜像地址 buster main contrib non-free