![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 53
操作系统知识点与面试题
HappySundlut
大连理工大学机械工程专业,爱好Web开发,正在学Java!
展开
-
操作系统常见的五种IO模型
操作系统常见的五种IO模型如下:阻塞式IO模型非阻塞式IO模型IO多路复用模型信号驱动IO模型异步IO模型下面是详细介绍。阻塞IO所谓阻塞IO就是当应用B发起读取数据申请时,在内核数据没有准备好之前,应用B会一直处于等待数据状态,直到内核把数据准备好了交给应用B才结束。术语描述:在应用调用recvfrom读取数据时,其系统调用直到数据包到达且被复制到应用缓冲区中或者发送错误时才返回,在此期间一直会等待,进程从调用到返回这段时间内都是被阻塞的称为阻塞IO;非阻塞IO所谓非阻塞IO就是原创 2021-09-08 23:56:17 · 938 阅读 · 0 评论 -
select、poll 和 epoll 之间的区别
(1)select:时间复杂度 O(n)select 仅仅知道有 I/O 事件发生,但并不知道是哪几个流,所以只能无差别轮询所有流,找出能读出数据或者写入数据的流,并对其进行操作。所以 select 具有 O(n) 的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll:时间复杂度 O(n)poll 本质上和 select 没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个 fd 对应的设备状态, 但是它没有最大连接数的限制,原因是它是基于链表来存储的。(3)epoll:时原创 2021-09-08 23:51:52 · 412 阅读 · 0 评论 -
虚拟内存及其实现方式
这篇文章来探讨什么是虚拟内存,以及虚拟内存的实现方式有哪些。为什么要使用虚拟内存?对于传统的内存存储管理方式的特征有如下两个:1)一次性作业必须一次性全部装入内存后,方能开始运行。这会导致两种情况发生:当作业很大,不能全部被装入内存时,将使该作业无法运行;当大量作业要求运行时,由于内存不足以容纳所有作业,只能使少数作业先运行,导致多道程序度的下降。2)驻留性作业被装入内存后,就一直驻留在内存中,其任何部分都不会被换出,直至作业运行结束。运行中的进程,会因等待I/O而被阻塞,可能处于长期等原创 2021-09-08 23:50:16 · 2962 阅读 · 0 评论 -
页面替换算法有哪些?
地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。1.最佳置换算法(OPT)(理想置换算法)从主存中移出永远不再需要的页面;如无这样的页面存在,则选择最长时间不需要访问的页面。于所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。最佳置换算法可以用来评价其他算法转载 2021-09-07 10:17:26 · 1834 阅读 · 0 评论 -
什么是交换空间?
操作系统把物理内存(physical RAM)分成一块一块的小内存,每一块内存被称为页(page)。当内存资源不足时,Linux把某些页的内容转移至硬盘上的一块空间上,以释放内存空间。硬盘上的那块空间叫做交换空间(swap space),而这一过程被称为交换(swapping)。物理内存和交换空间的总容量就是虚拟内存的可用容量。用途:物理内存不足时一些不常用的页可以被交换出去,腾给系统。程序启动时很多内存页被用来初始化,之后便不再需要,可以交换出去。...原创 2021-09-07 10:03:21 · 2927 阅读 · 0 评论 -
分页与分段的区别
分页把内存空间划分为大小相等且固定的块,作为主存的基本单位。因为程序数据存储在不同的页面中,而页面又离散的分布在内存中,因此需要一个页表来记录映射关系,以实现从页号到物理块号的映射。访问分页系统中内存数据需要两次的内存访问 (一次是从内存中访问页表,从中找到指定的物理块号,加上页内偏移得到实际物理地址;第二次就是根据第一次得到的物理地址访问内存取出数据)。分段分页是为了提高内存利用率,而分段是为了满足程序员在编写代码的时候的一些逻辑需求(比如数据共享,数据保护,动态链接等)。分段内存管理当中,地原创 2021-09-07 10:02:37 · 3385 阅读 · 0 评论 -
进程有哪些状态?
进程一共有5种状态,分别是创建、就绪、运行(执行)、终止、阻塞。运行状态就是进程正在CPU上运行。在单处理机环境下,每一时刻最多只有一个进程处于运行状态。就绪状态就是说进程已处于准备运行的状态,即进程获得了除CPU之外的一切所需资源,一旦得到CPU即可运行。阻塞状态就是进程正在等待某一事件而暂停运行,比如等待某资源为可用或等待I/O完成。即使CPU空闲,该进程也不能运行。运行态→阻塞态:往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。阻塞态→就绪态:则是等待的条件已满足,只需分原创 2021-09-07 09:41:47 · 6690 阅读 · 0 评论 -
进程调度策略有哪几种?
进程调度策略主要包括:先来先服务短作业优先最短剩余时间优先时间片轮转优先级调度先来先服务非抢占式的调度算法,按照请求的顺序进行调度。有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。另外,对I/O密集型进程也不利,因为这种进程每次进行I/O操作之后又得重新排队。短作业优先抢占式的调度算法,按估计运行时间最短的顺序进行调度。长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,原创 2021-09-07 09:34:08 · 1148 阅读 · 0 评论 -
什么是死锁?死锁产生的条件?如何处理死锁问题?
什么是死锁在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗的讲就是两个或多个进程无限期的阻塞、相互等待的一种状态。死锁产生的四个必要条件(有一个条件不成立,则不会产生死锁)互斥条件:一个资源一次只能被一个进程使用请求与保持条件:一个进程因请求资源而阻塞时,对已获得资源保持不放不剥夺条件:进程获得的资源,在未完全使用完之前,不能强行剥夺循环等待条件:若干进程之间形成一种头尾相接的环形原创 2021-09-07 08:55:15 · 957 阅读 · 0 评论 -
什么是临界区,如何解决冲突?
什么是临界区,如何解决冲突?每个进程中访问临界资源的那段程序称为临界区,一次仅允许一个进程使用的资源称为临界资源。解决冲突的办法:如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入,如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待;进入临界区的进程要在有限时间内退出。如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。...原创 2021-09-07 08:50:55 · 1185 阅读 · 0 评论 -
线程的分类?内核级线程与用户级线程
从线程的运行空间来说,分为用户级线程(user-level thread, ULT)和内核级线程(kernel-level, KLT)内核级线程:这类线程依赖于内核,又称为内核支持的线程或轻量级进程。无论是在用户程序中的线程还是系统进程中的线程,它们的创建、撤销和切换都由内核实现。比如英特尔i5-8250U是4核8线程,这里的线程就是内核级线程用户级线程:它仅存在于用户级中,这种线程是不依赖于操作系统核心的。应用进程利用线程库来完成其创建和管理,速度比较快,操作系统内核无法感知用户级线程的存在。..原创 2021-09-07 08:49:34 · 486 阅读 · 0 评论 -
进程/线程同步的方式有哪些?
进程/线程同步的方式主要有临界区、互斥量、信号量、事件四种方式临界区通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。互斥量为协调共同对一个共享资源的单独访问而设计的。互斥量跟临界区很相似,比临界区复杂,互斥对象只有一个,只有拥有互斥对象的线程才具有访问资源的权限。优点:原创 2021-09-07 08:46:40 · 337 阅读 · 0 评论 -
进程之间的通信方式有哪些?
进程之间的通信方式进程之间的通信方式主要有如下几种:管道、命名管道、信号、信号量、消息队列、共享内存、套接字socket管道管道这种通讯方式有两种限制,一是半双工的通信,数据只能单向流动,二是只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。管道可以分为两类:匿名管道和命名管道。匿名管道是单向的,只能在有亲缘关系的进程间通信;命名管道以磁盘文件的方式存在,可以实现本机任意两个进程通信。信号信号是一种比较复杂的通信方式,信号可以在任何时候发给某一进程,而无需知道该进程的状态。原创 2021-09-07 00:03:13 · 1663 阅读 · 0 评论