系统命令 Linux怎么看进程号/进程占用的 CPU? ps 和 top 命令都能查看进程号和进程占用的的 CPU。 TOP命令:进程按照CPU使用率的降序排列,最占用CPU的进程会显示在列表的顶部。 Linux怎么看进程中的线程? 先通过 ps 命令找到进程的 pid 号之后,通过 ps -T -p...
Linux五种IO模型 阻塞I/O**: 这是最常见的I/O模型。在此模式中,当应用程序执行I/O操作时,如果数据还没有准备好,应用程序就会被阻塞(挂起),直到数据准备好为止。这期间,应用程序不能做其他事情。 非阻塞I/O**:在此模式中,如果I/O操作的数据还没有准备好,操作会立即返回一个错误,而不是阻塞应用程序。应用程序可以继续执行其他操作,也可以反复尝试该I/O操作。 I/O多路复用**:也常称为事件驱动I/O。在此模式...
读取一个文件的时候,操作系统会发生什么? 读取磁盘文件的时候,CPU 不会负责从磁盘读取数据的过程,而是将磁盘数据搬运到内存的工作全部交给 DMA (直接内存访问)控制器,CPU 不再参与任何与数据搬运相关的事情,这样 CPU 就可以去处理别的工作,不会阻塞住。 具体的过程是这样的: 用户进程调用 read 方法,向操作系统发出 I/O 请求,然后进程进入阻塞状态; 操作系统收到请求后,进一步将 I/O 请求发送 DMA,然后 CPU 会执行其他任务; DMA 进一步将 I/O 请求发送给磁盘,磁盘收到 DMA 的 I/O 请求,把数据从磁盘读取到磁盘控制器的缓冲...
为什么操作系统会有虚拟内存? 虚拟内存可以使得进程对运行内存超过物理内存大小,因为程序运行符合局部性原理,CPU 访问内存会有很明显的重复访问的倾向性,对于那些没有被经常使用到的内存,我们可以把它换出到物理内存之外,比如硬盘上的 swap 区域。 由于每个进程都有自己的页表,所以每个进程的虚拟内存空间就是相互独立的。进程也没有办法访问其他进程的页表,所以这些页表是私有的,这就解决了多进程之间地址冲突的问题。 页表里的页表项中除了物理地址之外,还有一些标记属性的比特,比如控制一个页的读写权限,标记该页是否存在等。在内存访问方面,操作系统提供了更好的安全性。(如写时复制的权限...
进程与线程 为什么创建进程比创建线程慢? Linux 中创建一个进程自然会创建一个线程,也就是主线程。创建进程需要为进程划分出一块完整的内存空间,包含代码区、堆区、栈区、数据区等内存资源 创建线程则简单得多,只需要确定 PC 指针和寄存器的值,并且给线程分配一个栈用于执行程序,同一个进程的多个线程间可以复用进程的虚拟内存空间,减少了创建虚拟内存的开销。 因此,创建进程比创建线程慢,而且进程的内存开销更大。 为什么进程的切换比线程开销大? 进程间的切换的时候,除了需要切换 CPU 上下文,还需要切换页表,切换了页表会影响TLB的命中率,那么虚拟地址转换为物理...
存储结构 为什么计算机要给储存结构分级? 不同级别的储存结构具有不同的访问速度,CPU 访问 CPU Cache 的延时只需要几个时钟周期,访问物理内存的延时则是几百个,速度相差 100 倍,访问磁盘延时就更高了,已经到毫秒级别了(百万时钟周期),但是访问速度越快的存储器,造价成本会高很多,容量也比较小。 通过分级储存结构,可以将数据按照不同的访问速度、容量和成本要求进行管理,CPU Cache用于存储近期频繁访问的数据,内存用于存储当前执行的程序和数据,而硬盘则用于存储大量数据和长期存储。(一个时钟周期小于10纳秒) CPU cache L1 L2 L3 读取数据的时...
Spring概述 什么是Spring Spring是一个生态,可以构建Java应用所需的一切基础设施,通常Spring是指Spring Framework Spring是一个轻量级、非入侵式的控制反转(IoC)和面向切面(AOP)的开源容器框架 容器:包含并管理应用对象的生命周期 Spring框架的好处 轻量:Spring是轻量的,基本的版本大约2MB 控制反转:Spring通过控制反转实现了松散耦合,集中管理对象,方便维护 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。 ...
Socket 网络编程对应 TCP 三次握手的环节 服务端和客户端初始化 socket,得到文件描述符; 服务端首先会通过 bind函数给 socket 绑定端口和IP地址,然后调用 listen函数,进行监听,然后调用 accpet 函数等待客户端建立连接。 当客户端调用 connect 函数的时候,内核会随机生成初始化序号,放到 TCP 报文头部的序号字段中,同时把 SYN 标志设置为 1,这样就表示 SYN 报...
DNS劫持是什么? 当我们访问网站的时候,实际上是会先进行域名解析得到网站服务器的IP地址,然后才进行后续的访问。DNS劫持利用了这个过程中的漏洞,攻击者在DNS服务器上算改DNS解析结果,将域名解析到攻击者控制的恶意服务器上,这时候我们访问的域名就被重定向到恶意网站上。 解决办法:手动更换公共DNS服务器,绕过被劫特的DNS服务器。 DNS污染是什么? DNS污染就是得到了一个虚假的结果,攻击者监听DNS查询,一旦发现查询的域名与自己是匹配的,就把自己伪装成目标域名服务器,然后返回虚假的结果给用户,这样用户域名解析的结果就是错误的,无法和正确的目标服务器IP进行通信。...
ping的工作原理说一下 ping是通过ICMP协议来实现的,ping的时候,会发送类型为回送请求的ICMP报文,对方接收到之后,就会回复类型为回送响应的ICMP报文。 交换机和路由器有什么区别 交换机工作在MAC层,称为二层网络设备,主要处理数据帧的转发和交换,交换机会根据MAC地址来转发数据包,实现局域网内设备之间的通信。 路由器工作在IP层,称为三层网络设备,主要负责IP数据包的转发和路由选择,路由器会根据IP地址来转发数据包,实现不同网络之间的通信。 IP地址和MAC地址有什么区别 IP地址用于在网络中唯一标识和定位设备,它是在网络层使用...