随笔分类 - 操作系统
摘要:创建进程 为新进程分配一个唯一的进程标识符(pid)。 为新进程分配资源,如内存空间、文件描述符、信号处理函数等。 初始化新进程的进程控制块(PCB),包括设置初始状态、优先级、程序计数器等。 将新进程插入就绪队列,等待调度。 进程切换 时间片用完:当一个进程执行了一定时间后,如果还没有结束或阻塞,
阅读全文
摘要:基本作用 加快CPU与主内存之间的数据交换。 区别 缓存类型 L1 L2 L3 位置 最靠近CPU核心 次之 再次之 容量 一般几十KB~几百KB 几百KB~几MB 几MB~几十MB 速度 几个时钟周期 十几个 几十个 类型 分为指令缓存和数据缓存; 缓存统一,同时保存指令和数据 缓存统一
阅读全文
摘要:过程 用户进程通过库函数或者直接使用汇编指令(如svc)发起系统调用请求,将系统调用号和参数保存在寄存器中。 处理器切换到内核模式,根据中断向量表跳转到系统调用总入口程序,保存用户进程的现场信息。 系统调用总入口程序根据系统调用号查找对应的服务例程,执行服务例程的功能。 服务例程执行完毕后,恢复用户
阅读全文
摘要:原理及其区别 Linux Virtual Server是通过ipvs内核模块和ipvsadm用户空间命令行工具来实现负载均衡的它支持三种工作模式: NAT模式:LVS调度器将请求转发给后端服务器,同时修改请求的目标地址为后端服务器的地址,后端服务器将响应返回给LVS调度器,再由LVS调度器修改响应的
阅读全文
摘要:首先给出基本框架 #include <iostream> #include <thread> using namespace std; int main(){ int n = 100; int i = 0; //创建两个线程 thread newThread1([&n, &i](){ while(i
阅读全文
摘要:什么是零拷贝 零拷贝描述的是在计算机操作系统中,CPU不执行将数据从一个内存区域,拷贝到另一个内存区域的任务。 通过网络传输文件时,零拷贝通常可以节省CPU周期和内存带宽。 零拷贝的好处 节省了CPU周期,空出的周期可以完成其它任务。 减少内存区域间的数据拷贝,节省内存带宽。 减少用户态和内核态之间
阅读全文
摘要:一个线程从属于一个进程;一个进程可以包含多个线程。 一个线程挂掉,对应的进程挂掉,多线程也挂掉;一个进程挂掉,不影响其它进程,多进程稳定。 进程系统开销显著大于线程开销;线程需要的系统资源更少。 多进程在执行时拥有各自独立的内存单元;多线程共享进程的内存,例如.text,.data,.bss和扩展段
阅读全文
摘要:C++多线程 C++11引入了线程类thread,头文件为 #include <thread> 创建多线程的方法: std::thread threadName(functionName, parameter1, paramater2, …); 传递参数可以传左值,右值,引用(使用std::ref)
阅读全文
摘要:物理内存管理 物理内存有四个层次,分别为: 寄存器:速度最快,存储空间少,价格贵 高速缓存:次之 主存:再次之 磁盘:速度最慢,存储空间最多,价格便宜 操作系统通过内存管理器对物理内存进行管理,主要工作是记录哪些内存是正在使用的,在进程需要时分配内存以及在进程完成时回收内存。 地址生成过程 内部碎片
阅读全文
摘要:阻塞I/O至I/O多路复用 阻塞I/O指进程发起调用后会被挂起(阻塞),直到收到数据再返回。如果调用一直不返回,进程就一直被挂起。因此,使用阻塞I/O需要利用多线程来处理多个文件描述符。 引入非阻塞I/O的原因为:多线程切换有一定的开销。非阻塞I/O不会被挂起,调用时立即返回成功或错误,因此,可以在
阅读全文
摘要:I/O阶段 典型的一次I/O分为两个阶段:数据就绪和数据读写 数据就绪:根据系统I/O操作的就绪状态 阻塞 非阻塞 区别在于:进程发起系统调用后,是会被挂起直到收到数据后再返回,还是立即返回成功或错误。 数据读写:根据应用程序和内核的交互方式 同步 异步 区别在于:将数据从内核复制到用户空间时,用户
阅读全文
摘要:进程的状态 进程的基本状态 就绪:进程已获得除处理机以外的所需资源,等待分配处理机资源 执行:进程正在占用处理机资源执行 阻塞:进程等待某种条件,在条件满足之前无法执行。例如发起I/O系统调用,等待I/O中断发生 挂起 挂起指将暂不执行的进程换出到外存,节省内存空间。 与阻塞相比都是进程暂停执行的状
阅读全文
摘要:一.进程 进程是资源分配的基本单位。 进程控制块(PCB)描述进程的基本信息和运行状态,例如创建进程与销毁进程都是指对PCB的操作。 二.线程 线程是独立调度的基本单位。 一个进程中可以有多个线程,共享进程资源。 浏览器是一个进程,里面有很多线程,例如HTTP请求线程,事件响应线程,渲染线程等等。而
阅读全文