狂feng
Java后端
·2025-04-16
复习第八天 进程的调度算法你知道吗? 先来先服务:优点:公平,缺点:长作业影响后面的短作业运行 短作业优先:优点:可以得到最小等待事件 缺点:长作业可能饥饿 优先级调度:优点:根据任务轻重来执行 缺点:优先级低的可能饥饿 时间片轮转算法:优点:客户端的响应性比较好 缺点:时间片不好确定 最高响应比优先:优点:解决短作业优先中的长作业饥饿问题 缺点:需要实时计算响应比 多级反馈队列调度算法:优点:适合多种场景 缺点:实现复杂 进程之间的通信方式有哪些? 管道:本质是一个文件,单方向通信,先进先出,不限制传输的数据格式 匿名管道:用于父子进程间的通信 有名管道:只要有进程使用管道就不会被销毁 消息队列:多个进程可以往一个消息队列中写入和读取数据 共享内存:多个进程往一片共享的内存区域中写入和读取数据,需要实现同步 信号量:可以用于实现同步和互斥操作,初始值1互斥,0同步 信号:当有事件发生的时候通知线程 套接字:用于不同网络之间的进程间的通信 线程和进程有什么区别? 线程:CPU调度的基本单位,多个线程共享进程的内存区域,但也有自己独立的栈和寄存器,线程创建和切换速度相对较快,但需要注意线程安全问题 进程:资源分配机基本单位,每个进程有自己独立的内存区域,进程创建和切换开销大,通信复杂 MySQL 中如果发生死锁应该如何解决? 1、死锁检测机制,回滚占有资源少的事务 2、等待时间过长也会自动回滚 3、手动kill 有以下几个方式可以减少死锁的发生? 1、减少长事务 2、降低事务的隔离级别为读已提交 3、开启死锁检测 4、合理创建索引,避免锁住过多的范围 5、合理安排锁的申请顺序,先获取大的锁 为了保证binlog 和 undo log 的一致性 MySQL 事务的二阶段提交是什么? 事务提交的时,先写redo log并设置为prepara状态 再写binlog 最后再将redolog设置为comiit状态 什么时binlog redolog? binlog:二进制日志,记录的是实际操作过程中的sql语句 redolog:重做日志,记录的是具体物理页的修改,系统崩溃的时候如果发现物理页和redolog记录的不一样,则需要重新修改保持一致。 为什么需要二阶段提交? 如果没有二阶段提交,无论是先提交redo log 还是binlog 如果提交一个成功后崩溃了,那会导致数据不一致的问题 虽然可以通过补写的方式完成,但还是不如二阶段提交 MySQL 中有哪些锁类型? 行锁: 表锁: 读锁: 写锁: 间隙锁:锁住记录前后的一片间隙 临建锁:锁住记录和记录前后的间隙
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP