Linux基础
学习Linux的价值:
1.Linux是现代化应用程序交付的首选平台,无论是部署在裸机、虚拟化还是容器化环境
2.公司内部服务(TCE、FaaS、SCM)统一使用Debian Linux系统
3.熟悉Linux基础指令,熟练运维前端常用服务(Nginx,Node.js )
3.加深对操作系统概念和实现的理解,夯实基础知识
一.计算机硬件
二.操作系统
问题:程序启动必须有操作系统来执行,那操作系统本身也是一个程序,那是如何在开机时被执行的呢?
在开机时,计算机会首先进行硬件初始化和自检,然后加载操作系统到内存中,并执行其中的引导程序(boot loader)。
引导程序负责在文件系统中找到操作系统内核,将其加载到内存中,并执行内核的初始化程序。引导程序通常放置在硬盘的引导扇区(boot sector)中,它具有固定的位置和大小,并包含一些必要的信息,如文件系统类型、操作系统位置等。
在加载内核前,广义上的操作系统已经开始系统初始化,包括启动硬件、构建内核环境等。加载内核后,内核会进一步初始化系统,并执行特定的程序和服务,如用户登录、应用程序启动等。
总之,操作系统是在计算机启动时通过引导程序的加载和执行而被启动的,所以操作系统的启动是由硬件和引导程序共同完成的。
三.Linux系统概览
四.Linux系统结构
问题:系统中运行的程序远远大于CPU的核数,那Linux系统是如何实现同时运行这么多程序的?
在 Linux 操作系统中,可以同时运行多个程序或进程。这是因为 Linux 操作系统使用了许多内核级别的机制来实现进程的管理和调度,如进程调度、进程间通信、虚拟内存等。
具体来说,Linux 操作系统在内核中维护了一个进程表,记录了系统中所有进程的相关信息(如 PID、进程状态、进程资源使用情况等)。系统通过进程调度器(scheduler)来轮流调度不同的进程,并给它们分配 CPU 时间片,以使它们可以交替运行。
另外,在 Linux 操作系统中,进程之间可以通过 Inter-Process Communication(IPC,即进程间通信)的机制来进行消息传递和数据共享。这种机制包括管道(Pipe)、共享内存(Shared Memory)、消息队列(Message Queue)、信号量(Semaphore)等,使得不同的进程可以在系统中实现数据的共享和协同工作。
此外,Linux 操作系统还采用了虚拟内存机制,允许每个进程在运行时使用自己的虚拟地址空间,以此实现对系统内存资源的优化使用。
总之,Linux 操作系统通过各种机制,如进程管理、进程调度、IPC、虚拟内存等,实现了对多个进程的高效管理和调度。这使得一个 Linux 系统可以同时运行许多程序,充分发挥了硬件资源的使用效率。
问题:Linux有这么多不同的文件系统,如何实现对用户提供统一调用接口的?
在 Linux 操作系统中,不同的文件系统有着不同的实现和特性,例如 ext4、NTFS、FAT、XFS 等。尽管它们的底层实现差异很大,但 Linux 仍然能够对外提供统一的调用接口,让用户使用相同的方式来进行文件操作。
这是因为在 Linux 中,文件系统的调用接口是通过标准的 Virtual File System(VFS,即虚拟文件系统)提供的。VFS 子系统定义了一组通用的文件系统操作,包括文件打开、读写、创建、删除等,并提供了一些通用的数据结构,如文件描述符、索引节点(inode)等,这使得用户可以使用相同的方式来进行文件操作。
当用户调用文件系统的 API 时,VFS 会将这些操作转发到对应的文件系统实现中进行处理。因此,用户不需要了解文件系统的底层实现,就可以使用相同的方式来操作和管理文件。这也使得 Linux 操作系统具有了很强的灵活性和可扩展性。
此外,Linux 操作系统支持通过文件系统接口的扩展,以便支持不同的文件系统特性。例如,可以通过 FUSE(Filesystem in Userspace)机制在用户空间实现自定义的文件系统,也可以通过加载额外的内核模块来支持特定的文件系统类型。
总之,Linux 通过 VFS 子系统提供了一个统一的文件系统调用接口,使得用户可以使用相同的方式进行文件操作,同时也为多种文件系统的灵活管理提供了支持。