操作系统

操作系统环境变量原理

刘启春

环境变量一般指的是操作系统中一些可以变的参数,在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等。在学 Java 时,安装 JDK 后总要配置环境变量,目的是告诉操作系统我们输入命令后到底要从哪里寻找命令,因为操作系统默认只会在当前目录搜索。

由环境变量我想到了项目启动的配置,例如 Spring 中的 xml、properties、yml 类型的文件,或者使用在启动时通过配置中心(e.g. nacos、zookeeper 作配置存储的中间件),这些在项目启动后的配置都不能变更,这样导致的是修改配置必须重启项目。

Linux|磁盘挂载卸载

刘启春

磁盘挂载

以下是简单在一个目录挂载一个磁盘。

# 找打挂在磁盘
ls -l /dev/sd*

# 对新挂在的磁盘sdb进行格式化(磁盘使用前必须经过格式化)
mkfs.xfs /dev/sdb

# 查看可挂载的磁盘
blkid

/dev/sda1: UUID="308c9c6c-857f-4f06-add9-f9447eb4ff50" TYPE="xfs"
/dev/sda2: UUID="92c11117-e904-4242-8f4b-54e00fda30ad" TYPE="swap"
/dev/sda3: UUID="72c4a65c-6f6c-4983-8383-2a94419561bb" TYPE="xfs"
/dev/sdb: UUID="cdc8e7be-f7b1-423f-bacd-aa2b5a4b5013" TYPE="xfs"

# 在fstab中添加新磁盘,此处挂载到/data目录下
vim /etc/fstab

# fstab添加的内容,UUID是blkid输出中挂载磁盘的,/data是挂载目录
UUID=cdc8e7be-f7b1-423f-bacd-aa2b5a4b5013    /data      xfs  default   0  0

# 挂载fstab中所有的磁盘
mount -a

# 查看挂载
df -h

操作系统|存储管理、文件系统、输入和输出系统

刘启春

1、说一说程序的编译过程

以 C 语言为例:

预处理阶段->编译阶段->汇编阶段->链接阶段

  1. 预处理阶段:读取 c 源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。如对 #include 及宏定义 #define 替换成其真正的内容
  2. 编译阶段:把预处理后的文件(.i 结尾)的文件编译为汇编文件
  3. 汇编阶段:把汇编语言翻译为二进制机器指令(这个过程中把指令变成了可重定位程序)
  4. 链接阶段:把调用的库和函数合并到程序中

2、程序的链接方式

链接方式:

  • 装入静态链接方式
  • 装入时链接方式
  • 运行时动态链接方式

操作系统|进程、线程、死锁

刘启春

1、操作系统是什么?操作系统具有什么特征?

操作系统是操作硬件的一组软件集合。

操作系统位于硬件之上的第一层,它屏蔽硬件操作的复杂性并想高层提供抽象服务。它的作用是管理计算机资源(处理机、存储设备、IO 设备),使它们高效运转,这些管理体现在处理机调度、内外管理、文件管理、IO 管理、网络管理。同时操作系统也提供一个让用户与系统交互的操作界面。

操作系统的特征

  • 共享性

    • 多进程程并发势必争夺处理机资源,处理机成功共享资源
    • 计算机中的一个资源能被多个进程使用,使用时需要同步保证每次只有一个进程访问
  • 并发性

    • 操作系统中存在多个进程、多进程之间是并发执行的,并发是指在一段时间内有多个线程执行,从微观角度来看他们是交替执行的
  • 虚拟性

    • 是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。运用:时分复用、空分复用
    • 计算机使用 SPOOLing 技术实现设备虚拟性,如虚拟内存,虚拟设备
  • 异步性

    • 进程的执行是异步的,每个进程以不可推测的速度向前推进

为什么需要学习Linux

刘启春

在编程界的大神中无一不会 Linux,面对一个黑窗口,只依靠键盘完成那些很秀的操作,旁边如果有编程小白,那估计要目瞪口呆了。作为一个开发者,或者说一个合格的后端开发人员,熟练使用 linux 和编写基本的 shell 是必须的,后端经常在开发后需要部署和调试 web 服务,静态的如 Nginx、Apache, 动态的如 Tomcat、PHP 等,以及 web 服务的依赖数据库、缓存服务等等,这些都需要在 linux 上操作,可以说如果不会 linux 操作的后端开发进一步发展是很难的。

Lixun|Linux 三剑客教程

刘启春

无论是日常操作还是写 shell, 三剑客用的不比 if、for 用的少。也许你只用过 find 仅查找文件、目录, 其实它还可以对查找的结果进行拷贝和删除等操作; 当我们看着黑窗口中满屏找我们想要信息时 grep 是最好的助手, 除了高亮显示我们需要的信息,grep 还可使用正则匹配,包括统计个数;sed awk功能也很强大,sed擅长以行为单位修改文件(这些通常是配置文件),awk 通常用来统计,对以某个分割符分割的文件可以按列操作。