操作系统
操作系统的启动流程一般有两种方式,如下图所示,目前一般主流的为下面的方式。
- BIOS:基本输入输出系统(Basic Input/Output System),在通电启动阶段执行硬件初始化,并为操作系统提供运行时服务。是固化在主板ROM芯片中的程序。它可以从CMOS中读写系统设置的关键信息。比如:主板的设置、键盘、鼠标、外部接口、频率、电源、磁盘驱动器等方面进行参数控制和调整。
- CMOS:互补式金属氧化物半导体,是一种集成电路的设计工艺。在很多情况下提到CMOS实际上指的是电脑系统中的BIOS单元。CMOS芯片中保存着BIOS程序的设定值。
- UEFI:统一可扩展固件接口(Unified Extensible Firmware Interface)是一种个人电脑系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS的替代方案。
- Bootloader:引导程序。初始化硬件设备、创建存储器空间的映射,以便为操作系统内核准备好正确的软硬件环境。
对于UEFI系统,UEFI固件会加载引导程序的.efi文件,再由引导程序加载操作系统。 简单的来说,UEFI是BIOS的优化版本。BIOS会有BIOS自检,影响了启动速度。BIOS会和MBR配合,限制了2.2T容量以上磁盘的启动。
Linux
Linux系统的应用领域有很多,如:
- IT服务器(操作系统、虚拟化、云计算)
- 嵌入式和智能设备
- 个人办公桌面
- 学术研究和软件研发
Linux的基本组成
Linux系统一般有四个部分组成:
- 内核。软件和硬件的中间层,主要负责了系统的内存管理、进程管理、设备驱动程序、虚拟文件系统和网络堆栈等。
- shell
- 文件系统
- 应用程序
其中内核、shell、文件系统构成了基本的操作系统。用户和内核通过系统调用接口(SCI)完成交互。程序可以从用户态进入内核态,获得和硬件通信的权限,结束之后程序可以返回用户态。
Linux系统结构
进程管理
Linux采用进程树来管理进程,pid0进程作为进程树的根节点初始化。pid0有两个子节点pid1和pid2。pid1用于生成用户进程,pid2用于生成内核进程。 Linux进程的系统调用在OS课上介绍过,这里暂略。
文件系统
Linux中的核心观点是:一切皆文件。也就是说,普通文件、目录、设备、套接字(socket,是计算机之间进行通信的一种约定或一种方式)都可以被视作为文件。文件系统是操作系统中负责持久管理数据的子系统,负责把用户的文件存到磁盘硬件中,持久化的保存文件。 Linux的文件系统也是采用了树状的目录结构。 Linux的文
虚拟文件系统(VFS)
虚拟文件系统对应用层提供了一个标准的文件操作接口(read,write,chmod等),对文件系统提供一个标准的文件接入接口。VFS使得用户可以用一套统一的方法来阅读存储再不同介质上的不同类型的文件,简化了应用层的操作。
用户权限
文件权限的三个概念:
- 所有者:文件的所有者
- 所在组:文件所有者所在的组
- 其他人:除文件所有者及所在组外的其他人 每个用户对于不同文件都有不同的权限,包括读、写、执行等。
软件包管理
通常指一个应用程序,可以是一个GUI应用程序、命令行工具或软件库。 软件包中有底层工具和上层工具。前者主要用来处理安装和删除软件包等任务,后者用于数据的搜索和依赖解析。不同的操作系统有不同的软件包管理系统。