前端基础 | 青训营笔记

104 阅读6分钟

本文是青训营前端训练营笔记的第一篇。

计算机网络

linux基础

思维导图

image (2).png

计算机五大基本单元

控制器、运算器、存储器单元、输入与输出

操作系统启动

image.png 实际上是一种固化在主板上的程序

1.BIOS

传统

2.UEFI

主流、优化

CHATGPT如是说:

BIOS(Basic Input/Output System)和UEFI(Unified Extensible Firmware Interface)是计算机启动时的两种不同的固件系统。

BIOS是一种早期的固件系统,它是由IBM在1980年代开发的。它是计算机启动过程中最早加载的程序,它负责初始化硬件设备、检测启动设备、加载操作系统引导程序等。但是,由于BIOS具有诸多限制,例如仅支持2.2TB以下硬盘、启动速度较慢等,所以后来逐渐被UEFI所取代。

UEFI是一种新型的固件系统,它是由Intel在2005年推出的。相比BIOS,UEFI具有许多优点,如支持2.2TB以上硬盘、启动速度更快、更加安全等。UEFI还支持图形化界面、网络启动等高级特性,同时也可以更加灵活地配置计算机启动项,使得系统启动更加可靠和高效。

linux内核

image.png

linux内核+常用软件=linux发行版本linux内核+常用软件 = linux 发行版本

linux基本组成

内核

内核主要分为几个模块,关系如图:

image.png 所有模块都依赖进程调度,因为他们都需要依赖进程调度程序来挂起(暂停)或重新运行他们的进程 image.png

image.png

进程与调度

查看进程信息ps -ef | grep nginx

这个命令的意义是在Linux/Unix操作系统中查找所有运行着的名字包含nginx的进程。

具体来说,这个命令分为两个部分,使用了管道符|将它们连接起来:

  1. ps -ef:这个部分运行ps命令,用于列出当前所有正在运行的进程信息。-ef选项表示显示所有进程的详细信息,包括进程的PID(进程ID)、PPID(父进程ID)、CPU占用率、内存占用量、进程状态等。
  2. grep nginx:这个部分运行grep命令,在ps -ef的输出结果中查找包含nginx字符串的行。grep命令会输出所有匹配的行,这些行包含了正在运行的所有名字中包含nginx的进程的信息。

综合起来,ps -ef | grep nginx命令的作用就是列出所有正在运行的名字包含nginx的进程信息。这个命令在管理和监控nginx服务器时非常有用,可以快速地查找nginx进程,并查看进程的详细信息。

此外还有top命令,根据pid查看某个进程

kill 关闭某个进程

进程调度

static void __sched schedule(void)
{
    struct task_struct *prev, *next; // 定义指向当前进程和下一个进程的指针
    int cpu; // 定义 CPU 的编号

    prev = current; // 将当前进程赋值给 prev
    cpu = smp_processor_id(); // 获取当前 CPU 的编号
    next = pick_next_task(cpu); // 调用 pick_next_task() 函数获取下一个进程

    /* 切换到下一个进程 */
    if (likely(prev != next)) { // 如果当前进程和下一个进程不同
        prepare_task_switch(prev, next); // 准备切换到下一个进程
        __switch_to(prev, next); // 切换到下一个进程
        finish_task_switch(prev); // 完成进程切换
    }
}

在 Linux 内核中,task[0] 进程是一个非常特殊的进程,它不允许被杀死。因为 task[0] 进程是唯一一个能够在 CPU 空闲时执行的进程,如果它被杀死了,那么系统就没有可用的进程来处理 CPU 的空闲时间了,这可能会导致系统性能下降。

因此,Linux 内核设计了一些保护措施,以确保 task[0] 进程不会被杀死。例如,在进程调度函数 schedule() 中,会特别对 task[0] 进程进行判断,如果下一个要执行的进程是 task[0],则会跳过该进程,直接选择下一个可执行进程。

需要注意的是,task[0] 进程的确非常特殊,如果不了解它的特殊作用和限制,可能会导致系统出现问题。因此,在编写系统代码时,需要特别小心,避免错误地处理 task[0] 进程。

原则:

一个核同一时间运行一个进程

文件系统

Linux根目录下的文件夹是整个Linux文件系统的基础,它们各自有不同的意义和用途。下面是一些常见的文件夹和它们的意义:

  • /bin:存放二进制可执行文件,包括常用的命令和系统工具。
  • /boot:存放启动系统时使用的文件,如Linux内核文件和启动管理器(boot loader)。
  • /dev:存放设备文件,包括所有硬件设备和外部设备。
  • /etc:存放系统的配置文件,包括用户账户信息、网络配置、软件包管理等。
  • /home:存放用户的主目录(home directory),每个用户都有一个对应的子目录。
  • /lib:存放共享库文件(shared libraries),这些库文件是许多程序所需要的运行时库文件。
  • /media:自动挂载的设备的挂载点,如USB驱动器、CD-ROM、DVD等。
  • /mnt:手动挂载的设备的挂载点,如文件共享服务器、网络文件系统(NFS)等。
  • /opt:存放可选的应用程序和第三方软件包。
  • /proc:虚拟文件系统,存放运行时内存和进程信息,以及系统和硬件信息。
  • /root:超级用户(root)的主目录。
  • /run:存放运行时文件,如系统启动时的PID文件、socket文件等。
  • /sbin:存放系统管理员使用的命令和系统工具。
  • /sys:虚拟文件系统,提供了访问内核数据结构的接口。
  • /tmp:存放临时文件,所有用户都可以访问。
  • /usr:存放用户程序和文件,如系统程序、库文件、用户文档等。
  • /var:存放变量数据,如日志文件、邮件、数据库等。
虚拟文件系统(VFS)

为应用层提供一个操作的接口 ; 为文件系统提供一个接入的接口

image.png

文件的读取

image.png

文件权限

● 用户账户:

普通用户账户:在系统中进行普通作业

超级用户账户:在系统中对普通用户和整个系统进行管理

● 用户组

标准组:可以容纳多个用户

私有组:只有用户自己

命令

使用 ls -l命令后,得到形如 -rw-r--r--的输出

其中,第一个字符表示文件类型,- 表示普通文件,d 表示目录,l 表示符号链接等等。后面 9 个字符分成三组,每组 3 个字符,分别表示文件所有者、文件所属组和其他用户的权限。每组权限字符由 rwx- 组成,分别表示读、写、执行权限和无权限。 image.png

查看用户信息

image.png 用户权限操作

sudo chmod o+w ./demo

sudo命令提升为root用户,其中,o 表示其他用户,+w 表示增加写权限。 image.png

应用程序

软件包管理

image.png

linux常用命令

image.png