3. 解析进程和线程的区别?
进程的描述:
进程是一个具有独立功能的程序,是在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位。当一个程序运行的时候,并不会立即执行,而是需要经过一系列的步骤,才能执行,这个执行步骤被称作为进程,进程是一个正在执行的程序的示例。每一个进程拥有自己的内存空间,与其他进程独立,不进行内存共享。举个例子:一个明星,需要去拍戏赚钱,自己只能去拍一部戏处理一部戏的问题,但是其他的事情就没办法处理了,这个时候就需要一个经纪人来去为明星当代理,接替明星处理接戏,薪酬的问题。这就是程序与进程之间的关系
进程的特性:
动态性:进程是程序的一次执行过程,每一个进程是临时的,有生命周期,有是动态产生,动态消亡的过程。
并发性:人进程都可以同以其他的进程一起并发执行。
独立性:进程是系统进行资源分配和调度的一个独立单位
结构性:进程有程序,数据和进程控制三部分组成。
线程的表述:
早先没有线程这个概念,但是因着计算机对CPU的要求越来越高,进程之间的切换开销较大,已经无法满足应用程序的正常要求了,所以发明了线程,线程是进程的子集,也被称为轻量级进程。线程主要用于调高程序应用的处理能力。
线程的特性:
一个进程可以有多个线程,这些线程由调度器独立管理,同一个进程内的所有线程都有关联,线程有一些公共信息,如数据段,代码段,可以被同级线程共享,它们拥有自己的寄存器,堆栈和计数器。
4. 解析进程的结构。
创建:进程正在创建,还不能运行。操作系统在创建进程时要进行的工作包括分配和建立进程控制块表项、建立资源表格并分配资源、加载程序并建立地址空间;
就绪:时间片已用完,此线程被强制暂停,等待下一个属于他的时间片到来;
运行:此线程正在执行,正在占用时间片;
阻塞:也叫等待状态,等待某一事件(如IO或另一个线程)执行完;
退出:进程已结束,所以也称结束状态,释放操作系统分配的资源。
7. 结合进程管理命令,说明进程各种状态。
常见的进程状态包括以下几种:
运行态(Running):正在运行的进程,占用CPU资源。
中断睡眠态(Interruptible sleep):进程正在等待某个事件发生,如等待IO操作完成。此时进程可以被中断,例如按下Ctrl+C。
不可中断睡眠态(Uninterruptible sleep):进程正在等待某个事件发生,但此时进程无法被中断,如等待磁盘IO完成。通常只有在等待硬件资源时才会进入这种状态。
僵尸态(Zombie):进程已经结束,但是其父进程还没有处理它的退出状态。
停止态(Stopped):进程被暂停,无法继续执行。可以通过kill命令发送SIGCONT信号来唤醒进程。
可以通过以下进程管理命令来查看进程状态:
ps命令:显示当前进程的信息,包括进程ID、父进程ID、进程状态等。
top命令:实时显示进程状态及CPU、内存等系统信息。
kill命令:向某个进程发送信号,可以用来终止进程或者唤醒进程。
strace命令:跟踪进程的系统调用和信号传递等信息。
lsof命令:列出当前系统打开的文件及进程信息。
11. 总结内核设计流派及特点。
宏内核(monolithic kernel):又称单内核和强内核,unix,Linux吧所有系统服务都放在内核里,所有功能集成于同一个程序,分层实现不同功能。其实Linux在单内核实现了模块化,也就相当于吸收了微内核的优点
微内核(micro kernel):windows,Solaris,HarmonyOS。简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护,每种功能使用一个单独子系统实现,将内核功能移到用户空间,性能差。
15. 总结system启动流程
1.UEFI或BIOS初始化,运行POST开机自检
2.选择启动设备
3.引导装载程序,centos7是grub2,加载装载程序的配置文件
4.a. /etc/grub.d/
5.b. /etc/default/grub
6.c. /boot/grub2/grub.cfg
7.加载initramfs驱动模块,即通过/boot下的简化版linux加载操作系统根所需文件系统的驱动
8.加载内核选项
9.内核初始化,centos7使用systemd代替init
10.执行initrd.target所有单元,包括挂载/etc/fstab
11.从initramfs根文件系统切换至磁盘根目录
12.systemd指定默认target配置,配置文件/etc/systemd/system/default.target
13.systemd执行sysinit.target初始化系统及basic.target准备操作系统
14.systemd启动muti-user.target下的本机与服务器服务
15.systemd执行muti-user.target下的/etc/rc.d/rc.local
16.systemd执行muti-user.target下的getty.target及登录服务
17.systemd执行graphical需要的服务
16. 总结awk工作原理,awk命令,选项,示例。
awk是一种文本处理工具,工作原理为逐行读取文本文件并对每一行进行处理。awk会将每一行根据指定的分隔符进行分割,然后对每个字段进行处理,可以进行匹配、替换、计算等操作。awk还支持自定义函数和变量,可以进行更加复杂的文本处理操作。
命令的基本语法为:awk 'pattern {action}' file
其中,pattern表示匹配模式,可以是正则表达式或字符串;action表示对匹配到的文本进行的操作,可以是打印、计算等操作;file表示要处理的文件。
常用命令:
F: 指定分隔符
FS:列分隔符。指定每行文本的字段分隔符,默认为空格或制表位,与“ -F ”作用相同
OFS:输出分隔符。指定输出字段间的分隔符。
RS:行分隔符。awk从文件读取资料时,将根据RS的定义把资料切割为多条记录,
awk一次仅读取一条记录,以进行处理,预设值为 \n (换行符)
NF:当前处理行的字段个数
NR:当前处理行的行号
FNR:awk当前读取的记录数,其变量值小于等于NR
(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。
NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件
$0:当前处理行的整行内容
$n:当前处理行的第 n 个字段(第 n 列)
FILENAME:被处理的文件名
示例:
df中每一列根据$1 $2为列来去打印
[root@localhost ~]# df | awk '{print $1}'
Filesystem
devtmpfs
tmpfs
tmpfs
tmpfs
/dev/mapper/rl_bogon-root
/dev/mapper/rl_bogon-home
/dev/sda1
tmpfs
指定分隔符
[root@localhost ~]# df | awk '{print $5}' | awk -F"%" '{print $1}'
Use
0
0
1
0
5
1
22
0
[root@localhost ~]# awk -F: '{print $1,$3}' /etc/passwd
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 65534
dbus 81
显示文件的最后一列
[root@localhost ~]# awk -F: '{print $NF}' /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
仅处理能够模式匹配到的行,以root开头的第一行
[root@localhost ~]# awk -F: '/^root/{print $1}' /etc/passwd
root
直接打印出开头带有/dev/sd的列
[root@localhost ~]# df | awk '/^\/dev\/sd/'
/dev/sda1 1038336 222796 815540 22% /boot
//打印一定范围的行
[root@localhost ~]# awk '/^a/,/^b/' /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin