统计Nginx前十ip
线程进程的区别体现在几个方面
1.因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地 址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,系统开销比较大,而线程不 一样,线程拥有独立的堆栈空间,但是共享数据段,它们彼此之间使用相同的地址空间,共享 大部分数据,切换速度也比进程快,效率高,但是正由于进程之间独立的特点,使得进程安全 性比较高,也因为进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产 生影响,而线程只是一个进程中的不同执行路径。一个线程死掉就等于整个进程死掉。 2.体现在通信机制上面,正因为进程之间互不干扰,相互独立,进程的通信机制相对很复杂, 譬如管道,信号,消息队列,共享内存,套接字等通信机制,而线程由于共享数据段所以通信 机制很方便。。 3.属于同一个进程的所有线程共享该进程的所有资源,包括文件᧿述符。而不同过的进程相互 独立。 4.线程必定也只能属于一个进程,而进程可以拥有多个线程而且至少拥有一个线程;
linux 程序启动过程
当你在 shell 中敲入一个命令要执行时,内核会帮我们创建一个新的进程,它在往这个新进程 的进程空间里面加载进可执行程序的代码段和数据段后,也会加载进动态连接器(在 Linux 里面 通常就是 /lib/ld-linux.so 符号链接所指向的那个程序,它本省就是一个动态库)的代码段和数 据。在这之后,内核将控制传递给动态链接库里面的代码。动态连接器接下来负责加载该命令 应用程序所需要使用的各种动态库。加载完毕,动态连接器才将控制传递给应用程序的 main 函 数。如此,你的应用程序才得以运行。(过程链接表(PLT), Global Offset Table(GOT))
你直到怎么观察Linux的IO性能吗?
ifstat 间隔 次数
iostat 间隔 次数
vmstat 间隔 次数
df -h 总体磁盘
io性能
pidstat -d
先用 iostat 发现磁盘 I/O 性能瓶颈;再借助 pidstat ,定位出导致瓶颈的进程;随后分析进程的 I/O 行为;最后,结合应用程序的原理,分析这些 I/O 的来源。
你了解Linux的CPU工作原理吗
CPU是三级缓存结构, 一个CPU有两个逻辑线程, 一个逻辑线程有专享的L1级缓存, L2级缓存是CPU专用的, L3缓存是所有的CPU共享的
uptime命令会显示CPU的1分钟, 5分钟, 15分钟平均负载, 即平均活跃进程
CPU的使用率: 就是除了空闲时间外的其他时间占总 CPU 时间的百分比
dstat: 综合性能观察工具
进程组和会话区别:
pidstat, 观察CPU使用率
perf top,类似于 top,它能够实时显示占用 CPU 时钟最多的函数或者指令
对于Linux的内存, 你有什么想说的
说说Linux虚拟内存机制
Linux的IO多路复用机制
说一说epoll原理
按下ctrl+c发生了什么
产生硬件中断信号
CPU从用户态切换到内核态, 处理中断
中断驱动程序将ctrl+c解释成一个SIGINT信号,记在该进程的PCB(进程管理块, 包块进程名字 id 优先级和状态信息等)中, 也就是发送一个SIGINT信号给进程
当某个时刻要从内核返回到该进程的用户空间代码继续执行之前,首先处理PCB中记录的信号,发现有一个SIGINT信号待处理,而这个信号的默认处理动作是终止进程,所以直接终止进程而不再返回它的用户空间代码执行