第四周作业

1. 使用while read line和/etc/passwd,计算用户id总和。

在这里插入图片描述在这里插入图片描述

2. 总结索引数组和关联数组,字符串处理,高级变量使用及示例。

索引数组示例

在这里插入图片描述
关联数组
声明
在这里插入图片描述
引用
在这里插入图片描述

3. 解析进程和线程的区别?

进程是操作系统分配资源的最小单位 线程是程序执行的CPU调度的最小单位 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进
程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见; 调度和切换:线程上下文切换比进程上下文切换要快得多。

4. 解析进程的结构。

内核负责管理维护所有进程,内核在内核空间维护了一个称为进程表的数据结构,数据结构记录了所有进程,每个进程在数据结构中都称为进程表项,进程表中除了记录所有进程的PID,还使用一个字段记录所有进程的指针,指向每个进程的进程控制块(PCB),是上下文切换的关键,保存在每个进程的内核栈中。

5. 解析磁盘中的代码如何在计算机上运行的?

首选通过给计算机下发指令,计算机去读取磁盘中的程序代码,并将程序代码保存在运行内存运行在内存中的代码会向CPU发起指令执行请求,CPU在空闲的时候马上执行指令,如果CPU比较忙,则该指令需排队等待,依次进行指令处理,CPU执行指令,并根据指令的输出反馈相关结果。

6. 总结OOM原理,及处理方法。

1,限制java进程的max heap,并且降低java程序的worker数量,从而降低内存使用
2,给系统增加swap空间
处理方法:
需要编写高效的代码
合理地管理内存空间
进行内存泄漏的检测和修复

7. 结合进程管理命令,说明进程各种状态。

进程的基本状态 创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写 控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调 度运行,把此时进程所处状态称为创建状态
就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行 执行状态:进程处于就绪状态被调度后,进程进入执行状态
阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受 到阻塞。在满足请求时进入就绪状态等待系统调用
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

进程更多的状态: 运行态:running 就绪态:ready 睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable
停止态:stopped,暂停于内存,但不会被调度,除非手动启动
僵死态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死 态的子进程

8. 说明IPC通信和RPC通信实现的方式。

RPC remote procedure call
MQ 消息队列,生产者和消费者,如:Kafka,RabbitMQ,ActiveMQ
同一主机:
pipe 管道,单向传输
socket 套接字文件,双工通信
Memory-maped file 文件映射,将文件中的一段数据映射到物理内存,多个进程共享这片内存
shm shared memory 共享内存
signal 信号
Lock 对资源上锁,如果资源已被某进程锁住,则其它进程想修改甚至读取这些资源,都将被阻 塞,直到锁被打开
semaphore 信号量,一种计数器
不同主机:socket=IP和端口号

9. 通过mkfifo, cat, 来解释秒杀的并发问题,如何通过队列解决的?最好结合图形。说明消息队列的作用?

在Linux中,mkfifo命令可以创建FIFO(命名管道),通过FIFO可以实现进程间通信。而cat命令则可以读取FIFO中的数据。

假设有一个秒杀场景,多个用户同时发起秒杀请求,如果直接处理请求,可能会导致并发问题。这时可以通过FIFO来解决。

具体做法是,先创建一个FIFO,多个用户的请求都写入FIFO中,然后由另外一个进程(例如Web服务器)读取FIFO中的请求,进行处理。这样就可以避免多个请求同时被处理的问题。

消息队列也是基于此(解耦,异步,削峰),对于突发的请求,直接发送给服务器,不一定能全部处理过来,可以先丢到一个队列里,服务器进行读取,逐步处理。

10. 总结Linux,前台和后台作业的区别,并说明如何在前台和后台中进行状态转换。

前台和后台作业的区别
前台作业:通过终端启动,且启动后一直占据终端
后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)

11. 总结内核设计流派及特点。

微内核设计流派:将操作系统的核心功能放置在内核空间之外,只在必要时通过消息传递与内核进行通信。典型的微内核设计流派有Mach、L4等。Linux曾经也有过微内核设计的尝试,但是最终还是采用了单内核设计。
单内核设计流派:将操作系统的核心功能全部放置在内核空间中,并且以模块化的方式进行组织。典型的单内核设计流派有Unix、Linux等。
Linux内核采用的是单内核设计流派,其特点如下: 单内核设计,所有操作系统的核心功能都在内核空间中实现,提高了操作系统的运行效率。
模块化设计,可以根据需要动态加载或卸载模块,减少内核体积,提高了系统的可扩展性和灵活性。
多任务设计,支持多任务并发运行,提高了系统的并发能力。
按需调度,根据进程的优先级和调度策略,动态地分配CPU资源,提高了系统的响应能力和效率。
支持虚拟内存,将物理内存和磁盘空间组合起来管理,提高了系统的内存利用率和可靠性。
支持文件系统,将文件和目录组织起来,提供了方便的文件访问接口。 支持网络协议栈,提供了丰富的网络通信功能,支持多种网络协议。
总之,Linux内核采用了单内核设计,并且以模块化、多任务、按需调度、支持虚拟内存、文件系统和网络协议栈等特点,使其成为一款高效、可扩展、灵活的操作系统内核。

12. 总结rocky 启动流程,grub工作流程

**

rocky启动流程**

  1. UEFi或BIOS初始化,运行POST开机自检
  2. 选择启动设备
  3. 引导装载程序, centos7是grub2,加载装载程序的配置文件: /etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg
  4. 加载initramfs驱动模块(可以实现根文件系统的挂载)
  5. 加载虚拟根中的内核
  6. 虚拟根的内核初始化,Centos7使用systemd代替init,第一个进程
  7. 执行initrd.target所有单元,包括挂载/etc/fstab
  8. 从initramfs根文件系统切换到磁盘根目录
  9. systemd执行默认target配置,配置文件/etc/systemd/system/default.target
  10. systemd执行sysinit.target初始化系统及basic.target准备操作系统
  11. systemd启动multi-user.target下的本机与服务器服务
  12. systemd执行multi-user.target下的/etc/rc.d/rc.local
  13. Systemd执行multi-user.target下的getty.target及登录服务
  14. systemd执行graphical需要的服务

grub工作流程
1.BIOS自检完成后,会把控制权转交给位于磁盘第一个扇区的MBR程序。
2.MBR程序会读取安装在操作系统根分区的GRUB引导程序。
3.GRUB引导程序会显示菜单,让用户选择要启动的操作系统或内核。
4.用户选择后,GRUB引导程序会加载相应的内核,并把参数传递给内核。
5.内核启动后,会启动init进程

14. 总结systemd服务配置文件

service unit: 文件扩展名为.service, 用于定义系统服务
Socket unit: .socket,定义进程间通信用的socket文件,也可在系统启动时,延迟启动服务,实现 按需启动
Target unit:文件扩展名为.target,用于模拟实现运行级别
Device unit: .device, 用于定义内核识别的设备
Mount unit:mount, 定义文件系统挂载点
Snapshot unit: .snapshot, 管理系统快照
Swap unit: .swap,用于标识swap设备
Automount unit: .automount,文件系统的自动挂载点
Path unit:path,用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激 活服务,如:spool 目录
** unit的配置文件**
/usr/lib/systemd/system #每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/lib/systemd/system #ubutun的对应目录,兼容于CentOS7,8和Ubuntu
/run/systemd/system #系统执行过程中所产生的服务脚本,比上面目录优先运行 /etc/systemd/system#管理员建立的执行脚本,类似于/etc/rcN.d/Sxx的功能,比上面目 录优先运行

15. 总结system启动流程

systemd执行默认target配置,配置文件/etc/systemd/system/default.target
systemd执行sysinit.target初始化系统及basic.target准备操作系统
systemd启动multi-user.target下的本机与服务器服务
systemd执行multi-user.target下的/etc/rc.d/rc.local
Systemd执行multi-user.target下的getty.target及登录服务 systemd执行graphical需要的服务

16. 总结awk工作原理,awk命令,选项,示例。

awk工作原理
第一步:执行BEGIN{action;… }语句块中的语句
第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ action;… }语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。
第三步:当读至输入流末尾时,执行END{action;…}语句块BEGIN语句块在awk开始从输入流中读取行之前被执行,这是一个可选的语句块,比如变量初始化、打印输出表格的表头等语句通常可以写在BEGIN语句块中END语句块在awk从输入流中读取完所有的行之后即被执行,比如打印所有行的分析结果这类信息汇总都是在END语句块中完成,它也是一个可选语句块pattern语句块中的通用命令是最重要的部分,也是可选的。如果没有提供pattern语句块,则默认执行{ print},即打印每一个读取到的行,awk读取的每一行都会执行该语句块
awk命令
取出分区利用效率
在这里插入图片描述
在这里插入图片描述

17. 总结awk的数组,函数。

> 数组总结

利用数组,实现 k/v 功能 可使用任意字符串;
字符串要使用双引号括起来
如果某数组元素事先不存在,在引用时,awk会自动创建此元素,并将其值初始化为“空串” 若要判断数组中是否存在某元素,要使用“index inarray”格式进行遍历
函数总结
声明函数:使用function关键字声明一个函数 调用函数:使用函数名和参数列表来调用函数 返回值:函数可以使用return语句返回一个值
局部变量:函数中的变量是局部变量,只在函数内部可见 调试函数:可以使用print语句在函数内部打印调试信息

18. 总结ca管理相关的工具,根据使用场景总结示例。

OpenSSL是一个开源的加密工具库,也是一个命令行工具集,支持SSL和TLS协议,可以用于生成和管理证书和密钥等操作。

申请证书并颁发证书:

1、为需要使用证书的主机生成生成私钥

[root@rocky8 ~]# (umask 066;openssl genrsa -out /data/test.key 2048)

2、为需要使用证书的主机生成证书申请文件

[root@rocky8 ~]# openssl req -new -key /data/test.key -out
/data/test.csr

3、在CA签署证书并将证书颁发给请求者

[root@rocky8 ~]# openssl ca -in /data/test.csr -out
/etc/pki/CA/certs/test.crt -days 100

19. 总结对称加密和非对称加密算法和用openssl签发证书步骤

对称加密:加密和解密使用同一个密钥
特性:
加密、解密使用同一个密钥,效率高
将原始数据分割成固定大小的块,逐个进行加密
缺陷:
密钥过多
密钥分发
数据来源无法确认
常见对称加密算法:
DES:Data Encryption Standard,56bits
3DES:
AES:Advanced (128, 192, 256bits)
Blowfish,Twofish
IDEA,RC6,CAST5
非对称加密:密钥是成对出现
公钥:public key,公开给所有人,主要给别人加密使用
私钥:secret key,private key 自己留存,必须保证其私密性,用于自已加密签名
特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
数据加密:适合加密较小数据,比如: 加密对称密钥
数字签名:主要在于让接收方确认发送方身份
缺点:
密钥长,算法复杂
加密解密效率低下
常见算法:
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变
的,可实现加密和数字签名
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准)
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学,比RSA加密算法使用更小的密钥,
提供相当的或更高等级的安全

openssl签发证书步骤

生成密钥对。首先,生成RSA密钥对。
生成证书请求
创建一个root CA。
签发证书。使用CA的私钥签发证书请求,生成证书。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值