
操作系统
文章平均质量分 90
skier~
Java 偏执狂
展开
-
内存页面置换算法
前面我们说过了进程的调度算法,今天我们继续来盘内存页面的置换算法,给你整的明明白白的????????????。内存页面置换算法主要有下面这么几种:最佳页面置换算法(OPT)先进先出置换算法(FIFO)最近最久未使用的置换算法(LRU)时钟页面置换算法(Lock)最不常用置换算法(LFU)最佳页面置换算法(OPT)最佳页面置换算法基本思路是,置换在「未来」最长时间不访问的页面。所以,该算法实现需要计算内存中每个逻辑页面的「下一次」访问时间,然后比较,选择未来最长时间不访问的页面。我们举原创 2021-12-13 21:39:09 · 2487 阅读 · 0 评论 -
操作系统死锁
一、死锁的概念1、死锁的定义如果一组进程中的每个进程都在等待仅由该组进程中的其他进程才能引发的事件发生,那么该组进程是死锁的2、死锁产生的必要条件产生死锁必须同时满足一下四个条件,只要其中任一条件不成立,死锁就不会发生互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁(如哲学家的筷子、打印机设备)。像内存、扬声器这样可以同时让多个进程使用的资源是不会导致死锁的(因为进程不用阻塞等待这种资源)不剥夺条件:进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放。请求和保持条件:进程原创 2021-12-12 12:20:09 · 374 阅读 · 0 评论 -
进程间通信
前置知识说到进程通信,我们首先得知道怎么是线程通信吧,那什么是线程通信呢?顾名思义,进程通信( InterProcess Communication,IPC)就是指进程之间的信息交换。我们知道进程是分配系统资源的单位,包括内存地址空间(什么!你竟然不知道,等我????????????),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。但是进程之间的信息交换又是必须实现的。我们发现操作系统的内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。下面我原创 2021-12-12 12:19:37 · 124 阅读 · 0 评论 -
进程调度算法
前言进程调度算法也称 CPU 调度算法,当 CPU 空闲时,操作系统就从就绪队列中按照一定的算法选择某个就绪状态的进程,并给其分配 CPU。通常以下几种情况会发生进程的调度:当进程从运行状态转到等待状态;当进程从运行状态转到就绪状态;当进程从等待状态转到就绪状态;当进程从运行状态转到终止状态;其中 1 和 4 称为非抢占式调度,2 和 3 称为抢占式调度。非抢占式调度就是当进程正在运行时,它就会一直运行,直到该进程完成或发生某个事件而被阻塞时,才会把 CPU 让给其他进程;抢占式调度就是进程原创 2021-12-11 08:48:01 · 5659 阅读 · 0 评论 -
进程基础扫盲
进程的概念试想一下这样的场景:我们编写好的代码是怎么运行起来的呢?我们编写好的代码只是一个存储在硬盘的静态文件,通过编译后就会生成二进制可执行文件,当我们运行这个可执行文件后,它会被装载到内存中,接着 CPU 会执行程序中的每一条指令,那么这个运行中的程序,就被称为「进程」。那进程的定义就是:进程是程序在某个数据集合上的运行过程,也是操作系统进行资源分配和调度的基本单位。简单来说,进程是程序的一次执行过程,它和程序的区别如下:程序是静态的,它作为系统中的一种资源是永远存在的进程是动态的,它是动态原创 2021-12-11 08:47:25 · 337 阅读 · 0 评论 -
图解 Reactor 和 Proactor
ReactorReactor 和 Proactor 是两个高性能网络模式。Reactor 模式也叫 Dispatcher 模式,即 I/O 多路复用监听事件,收到事件后,根据事件类型分配(Dispatch)给某个进程/线程。Reactor 模式主要由 Reactor 和处理资源池这两个核心部分组成,它两负责的事情如下:Reactor 负责监听和分发事件,事件类型包含连接事件、读写事件;处理资源池负责处理事件,如 read->业务逻辑->sendReactor 模式是灵活多变的,可原创 2021-11-25 07:27:26 · 206 阅读 · 0 评论 -
吊打面试官之一文详解 IO 优化
DMA技术在没有 DMA 技术之前,I/O过程是这样的:CPU 发出对应的指令给磁盘控制器,饭后返回。磁盘控制器收到指令后,于是就开始准备数据,会把数据放入到磁盘控制器的内部缓冲区中,然后产生一个中断。CPU 收到中断信号后,停下手头的工作,接着把磁盘控制器的缓冲区的数据一次一个字节地读进自己的寄存器,然后再把寄存器里的数据写入到内存,而在数据传输的期间 CPU 是无法执行其他任务的。可以看到整个数据传输的过程,都需要 CPU 亲自参与搬运数据的过程,而且这个过程,CPU 是不能做其他事情的原创 2021-11-25 07:26:28 · 219 阅读 · 0 评论 -
吊打面试官之详解 select、poll、epoll
select、poll我们熟悉的 select/poll/epoll 是内核提供给用户态的多路复用系统调用,进程可以通过一个系统调用函数从内核中获取多个事件。select/poll/epoll 是如何获取网络事件的呢?在获取事件时,先把所有连接(文件描述符)传给内核,再由内核返回产生了事件的连接,然后在用户态中再处理这些连接对应的请求即可。select 实现多路复用的方式是,将已连接的 Socket 都放到一个文件描述符集合,然后调用 select 函数将文件描述符集合拷贝到内核里,让内核来检查是否有原创 2021-11-24 07:26:42 · 140 阅读 · 0 评论