![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 89
平平无奇的羊
现役最强摆烂大学生,CSGO最强白给选手,编程业余种子选手!
bytedance字节实习ing
平常分享自己的所见所闻!想看小白晋升大佬,关注我没错
展开
-
操作系统面经-进程/线程切换究竟需要多少开销?
如果进程始终都在一个CPU上调度还好一些,如果跨CPU的话,之前热起来的TLB、L1、L2、L3因为运行的进程已经变了,所以以局部性原理cache起来的代码、数据也都没有用了,导致新进程穿透到内存的IO会变多。进程是操作系统的伟大发明之一,对应用程序屏蔽了CPU调度、内存管理等硬件细节,而抽象出一个进程的概念,让应用程序专心于实现自己的业务逻辑既可,而且在有限的CPU上可以“同时”进行许多个任务。在进程A切换到进程B的过程中,先保存A进程的上下文,以便于等A恢复运行的时候,能够知道A进程的下一条指令是啥。原创 2024-03-25 23:54:25 · 1254 阅读 · 0 评论 -
操作系统面经-多线程同步的四种方式
生产者消费者问题:每次生产一个商品,发一个信号,告诉消费者“我生产商品了,快来消费”,消费者拿到生产者的条件变量后每次消费两个商品,然后发出信号“我消费了商品,你可以生产了”--_--(发的这个信号是一个条件变量,通过发送这个信号可以唤醒阻塞的线程,收到信号后,不满足需求也会继续阻塞)要在读模式下锁定读写锁,需要调用pthread_rwlock_rdlock,要在写模式下锁定读写锁,需要调用pthread_rwlock_wrlock。当读写锁是读模式锁住的,就可以说是以共享模式锁住的。原创 2024-03-25 23:52:57 · 968 阅读 · 0 评论 -
操作系统面经-进程间通信的方式
顾名思义,进程通信( InterProcess Communication,IPC)就是指进程之间的信息交换。实际上,进程的同步与互斥本质上也是一种进程通信(这也就是待会我们会在进程通信机制中看见信号量和 PV 操作的原因了),只不过它传输的仅仅是信号量,通过修改信号量,使得进程之间建立联系,相互协调和协同工作,但是它缺乏传递数据的能力。虽然存在某些情况,进程之间交换的信息量很少,比如仅仅交换某个状态信息,这样进程的同步与互斥机制完全可以胜任这项工作。但是大多数情况下,进程之间需要交换大批数据。原创 2024-03-24 23:59:03 · 981 阅读 · 0 评论 -
操作系统面经-孤儿进程和僵尸进程
父进程先结束【爹先挂了】,被init养父(进程号为1)收养并被重新设置为其子进程子进程终止,但父进程没有使用wait或waitpid收集其资源【爹不管】在后台运行,不与任何终端关联的进程【后台天使】孤儿进程父进程先结束,守护进程不依赖父进程僵尸进程已终止但留存PCB,守护进程是持续运行守护进程脱离终端后台运行,其他两种与终端无关。原创 2024-03-24 23:54:29 · 951 阅读 · 0 评论 -
操作系统面经-协程是什么
等等,问题来了,因为每个线程至少会占用4M的内存空间,10000个线程会消耗39G的内存,而服务器的内存配置只有区区8G,这时候你有2种选择,一是选择增加服务器,二是选择提高代码效率。第2天用户增加到了100人,你选择增加100个线程去查询数据库,等到第三天,你们加大了优惠力度,这时候有1000人同时在线付款,你按照之前的方法,继续采用1000个线程去查询数据库,并且隐隐觉察到有什么不对。因此在协程中不能调用导致线程阻塞的操作。,而且协程的切换在用户态完成,切换的代价比线程从用户态到内核态的代价小很多。原创 2024-03-24 23:51:07 · 882 阅读 · 0 评论 -
操作系统面经-什么是系统调用
处于用户态的进程有诸多限制(如不能进行 I/O 操作),所以有些功能必须由内核代劳完成。说白了,系统调用其实就是函数调用,只不过调用的是内核态的函数。控制寄存器的第 16 位是写保护位,若设置为零,则允许超级权限往内核中写入数据。是一份内核符号表,包含了内核中的变量名和函数名地址,在每次编译内核时,自动生成。当应用程序需要调用一个系统调用时,首先需要将要调用的系统调用号(也就是系统调用所在。了解了系统调用的原理后,要拦截系统调用就很简单了。是内核提供给应用程序使用的功能函数,由于应用程序一般运行在。原创 2024-03-23 18:10:41 · 1470 阅读 · 0 评论 -
操作系统面经-用户态和内核态
内核态相比用户态拥有更高的特权级别,因此能够执行更底层、更敏感的操作。不过,由于进入内核态需要付出较高的开销(需要进行一系列的上下文切换和权限检查),应该尽量减少进入内核态的次数,以提高系统的性能和稳定性。在系统的处理上,中断和异常类似,都是通过中断向量表来找到相应的处理程序进行处理。区别在于,中断来自处理器外部,不是由任何一条专门的指令造成,而异常是执行当前指令的结果。因此,同时具有用户态和内核态主要是为了保证计算机系统的安全性、稳定性和性能。用户态切换到内核态的 3 种方式。原创 2024-03-23 18:07:09 · 430 阅读 · 0 评论 -
操作系统面经-常见的操作系统有哪些?
目前最流行的个人桌面操作系统 ,不做多的介绍,大家都清楚。界面简单易操作,软件生态非常好。玩玩电脑游戏还是必须要有 Windows 的,所以我现在是一台 Windows 用于玩游戏,一台 Mac 用于平时日常开发和学习使用。windows最早的多用户、多任务操作系统。后面崛起的 Linux 在很多方面都参考了 Unix。目前这款操作系统已经逐渐逐渐退出操作系统的舞台。unixLinux 存在着许多不同的发行版本,但它们都使用了。原创 2024-03-23 17:52:35 · 316 阅读 · 0 评论 -
操作系统面经-操作系统主要有哪些功能?
②资源管理,即对网络中的共享资源(软件和硬件)实施有效的管理,协调诸用户对共享资源的使用,保证数据的安全性和一致性。但允许作业在运行过程中继续申请新的附加内存空间,以适应程序和数据的动态增长,也允许作业在内存中“移动”。③应用互操作,即在一个由若干个不同网络互连所构成的互联网络中,必须提供应用互操作功能,以实现信息的互通性和信息的互用性。②绝不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共享的其它用户程序中去执行。③允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。原创 2024-03-22 18:21:41 · 632 阅读 · 0 评论 -
操作系统面经-什么是操作系统?
这样的界面可能是命令行式的,也可能是图形化的,但是不管怎么说,这个shell需要给用户提供一种可能,使得用户可以通过shell执行所有该操作系统所提供的功能。从照片中我们可以看到一名工程师正在手动调整一个旋钮,像这样的旋钮,在他的身前有几百个,在照片中没有拍到的地方,可能还有几千几万个,更不要说还有那么多密密麻麻的线路和插口。所以,最后总结一下,操作系统的所有功能大致可以分为两部分,一部分是管理其下层的硬件资源,一部分是向其上层的用户提供操作接口,即。的专业知识,因为相关的工作已经交由操作系统来做了。原创 2024-03-22 18:20:06 · 1267 阅读 · 0 评论 -
操作系统面经-进程与线程的概念
管道可用于具有亲缘关系的父子进程间的通信,命名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。socket也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同主机之间的进程通信。信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。这种方式需要依靠某种同步操作,如互斥锁和信号量等。每个线程完成不同的任务,但是。进程是对运行时程序的封装,是。每个线程都独自占用一个。线程是进程的子任务,原创 2024-03-21 23:52:39 · 451 阅读 · 0 评论 -
操作系统面经-程序和进程的区别
线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID 、程序计数器、寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。值得注意的是,进程映像是静态的,进程则是动态的。引入进程实体的概念后,我们可以把传统操作系统中的进程定义为: “进程是进程实体的运行过程是系统进行资源分配和调度的一个独立单位。原创 2024-03-21 23:50:13 · 809 阅读 · 0 评论 -
操作系统篇——虚拟内存到底是个啥?
关于虚拟内存内部的结构可以参考进程虚拟地址空间的区域划分每个进程创建加载的时候,会被分配一个大小为4G的连续的虚拟地址空间,虚拟的意思就是,其实这个地址空间时不存在的,仅仅是每个进程“认为”自己拥有4G的内存,而实际上,它用了多少空间,操作系统就在磁盘上划出多少空间给它,等到进程真正运行的时候,需要某些数据并且数据不在物理内存中,才会触发缺页异常,进行数据拷贝。原创 2024-03-05 22:29:00 · 1128 阅读 · 0 评论