【面经】操作系统/Linux

1、计算机的五大单元
  • 电脑的五大单元包括:输入单元、输出单元、控制单元、算数逻辑单元、存储单元五大部分。其中CPU占有控制、算术逻辑单元,存储单元又包含内存与辅助内存;
2、什么是操作系统

操作系统:负责管理协调我们计算机硬件与软件资源工作的一种系统软件计算机安装操作系统,主要就是为了帮助我们屏蔽硬件层的复杂性,给上层的应用软件或用户提供易用的服务。

  • 操作系统=操作系统内核+一堆应用。
  • 操作系统内核:也是代码程序,代码的作用就是(进程管理,内存管理,文件管理,驱动管理等等)。
  •  一堆应用:依附在操作系统用内核上完成某些功能,例如:QQ,微信,飞书等等

3、进程和线程是什么,有什么区别

举个简单例子,我们电脑打开QQ、打开Word,其实就是开了不同的几个进程;而我用 QQ 时,可以一边发消息、一边视频聊天,这就是在进程下开了多个线程处理任务。

区别:

①调度方面:进程可以理解是资源分配的基本单位,而线程则是(CPU调度)任务调度和执行的基本单位。"

内存方面:进程拥有独立的地址空间与资源,同个进程下的线程共享进程的地址空间与资源。

开销方面:线程间切换开销小,进程间切换开销大。线程切换不需要更换页表,而进程切换需要。页表切换就会导致缓存失效,性能就会变低。线程共享进程资源,拥有独立的栈与程序计数器。进程切换要切换上下文环境,创建的时候需要分配系统资源,销毁时要释放系统资源。

其他区别:比如通信、切换、健壮性等方面。一个进程崩溃,不会对其他进程产生影响;一个线程崩溃,会让同一进程内的其他线程也死掉

4、进程是由什么组成的?

进程总的说来包括程序段、数据段、PCB三部分

  1. 程序段就是程序的代码
  2. 数据段就是程序运行时产生的数据(比如全局变量、局部变量等)。
  3. PCB 中包含操作系统对其进行管理的各种信息(如进程标识符 PID,进程当前状态,进程优先级)。process ctrl block(进程控制块)。

5、进程状态有哪些?

就绪/运行/阻塞

  • 就绪:进程已经具备运行条件,但是CPU还没有分配过来;理解为进程已经将运行前的准备工作全部做好了,就等着操作系统调用,占用CPU了,只要操作系统一调用就会变成运行状态。
  • 运行:进程占用CPU,并在CPU上运行;理解为进程正在使用cpu来执行自己的代码
  • 阻塞:进程因等待某件事发生而暂时不能运行;例如:等待IO输入(例如一个函数中写了scanf那么在它就需要用户给他输入参数才能继续往下走),调用某些阻塞接口。
6、虚拟内存

虚拟地址空间是操作系统为了防止不同进程同一时刻在物理内存中运行而对物理内存的争夺和践踏而引入的。虚拟地址空间是操作系统为一个进程描述的虚拟的、连续的、完整的、线性的地址空间,在linux下是一个mm_struct结构体。好处是保证每个进程在各自虚拟地址空间运行,互相不能干扰对方,采用虚拟地址空间,通过页表映射,可以实现进程中的数据在物理内存上的离散式存储,减少了内存碎片,提高了内存的利用率。

虚拟内存使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),使得进程逻辑上有很大的连续内存地址空间

实际上一部分对应物理内存上的块,还有一部分没加载进内存的对应在外部磁盘,在需要时进行数据交换。这样就可以让程序拥有超过系统物理内存大小可用内存空间

7、操作系统内存管理

它有很多的管理方式,比如块式管理、页式管理、段式、段页式管理。"

简单来说,块式就是讲内存分成一个个块,每个块包含一个进程。同理,段式就是将内存分多个段,按段存储......。

8、页面置换算法

先进先出页面置换算法最近最久未使用页面置换算法时钟(CLOCK)置换算法等等

9、页表是什么?

可以理解成一个映射,存储页面与页框对于关系,通过页表对应逻辑地址与物理地址。

10、上下文环境是什么?

cpu在拿数据的时候并不是直接从内存中拿数据。而是从身边的寄存器中拿数据,这时因为cpu对寄存器的读取速度最快。上下文信息是保存的当前程序在运行时寄存器当中的内容,因为寄存器不是进程所拥有的,当他被切换出去时,运行其他进程时当前寄存器当中的内容有可能就改变了。而上下文信息保存当前寄存器当中的内容之后可以在下次运行时快速的找到上一次运行结束时寄存器当中保存的内容。

11、进程间通信方式

操作系统根据不同的场景提供了不同的方式,管道,共享内存,消息队列和信号量。

  • 管道是内核中的一块缓冲区,分为匿名管道和命名管道。匿名管道只能用于具有亲缘关系的进程间;而命名管道可用于同一主机上任意进程间通信。
  • 共享内存的本质是一块物理内存,多个进程将同一块物理内存映射到自己的虚拟地址空间中,再通过页表映射到物理地址达到进程间通信,它是最快的进程间通信方式,相较其他通信方式少了两步数据拷贝操作。
  • 消息队列是内核中的一个优先级队列,多个进程通过访问同一个队列,在队列当中添加或者获取节点来实现进程间通信。
  • 信号量的本质是内核中的一个计数器,主要实现进程间的同步与互斥,对资源进行计数,有两种操作,分别是在访问资源之前进行的p操作,还有产生资源之后的v操作。
12、僵尸进程和孤儿进程

僵尸进程:子进程先于父进程退出,但是父进程没有进行进程等待,导致无法获取子进程的退出状态信息,使操作系统无法释放子进程的资源,这时候的子进程就是僵尸进程
孤儿进程:父进程先于子进程退出,则子进程称为孤儿进程,此时孤儿进程的父进程成为了1号进程,并且这个孤儿进程运行在后台,并不占据前台终端
如何处理僵尸进程:kill -9命令。子进程退出时向父进程发送SIGCHLD信号,父进程处理SIGCHLD信号,在信号处理函数中调用wait进行处理僵尸进程

Linux常见的指令
  • 路径类(pwd、cd、ls)
  • 文件类(创建:mkdir文件夹touch文件、移动mv、复制cp、修改名字mv、删除rm、打开/编辑gedit/vi、查看cat)
  • 通讯类(ping ip、ipconfig、hostname -I)
  • 权限(chmod XXX)其中111(7)对应rwx。当前用户,用户组,其他用户。
  • 查看(进程ps)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/818737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt QStyle详解

1.简介 QStyle类是 Qt 框架中用于控制应用程序界面元素外观的一个抽象基类。这个类提供了一种方式来定制窗口部件(widgets)的绘制和行为,可以通过改变主题或风格来更改应用程序的外观,而无需修改窗口部件本身的代码。 Qt包含一组…

python爬虫------- Selenium下篇(二十三天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

CAN帧中的ACK位

1:先看官方文档对ACK的解释 All nodes that have received the matching CRC sequence (and, in FD Frames the matching stuff count) shall send an ACK within the ACK slot by overwriting the recessive bit of the transmitter by a dominant bit (they send…

求圆、圆球和圆柱的面积和体积(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> //定义π常量的值&#xff1b; # define π 3.141526int main() {//初始化变量值&#xff1b;float r, h, S1, S2, P1, V1, V2;int judge 0;//提示用户&#x…

Python基于flask的豆瓣电影分析可视化系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

mid_360建图和定位

录制数据 roslaunch livox_ros_driver2 msg_MID360.launch使用fast-lio 建图 https://github.com/hku-mars/FAST_LIO.git 建图效果 使用python做显示 https://gitee.com/linjiey11/mid360/blob/master/show_pcd.py 使用 point_lio建图 https://github.com/hku-mars/Point…

【数据结构】【C++】AVL树的模拟实现(插入、判断、旋转)

文章目录 1 概念2 实现2.1 AVL树结点的定义2.2 AVL树的插入2.2.1 AVL树的插入规则2.2.2 旋转2.2.2.1 左单旋2.2.2.2 右单旋2.2.2.3 左右双旋2.2.2.4 右左双旋 2.2.3 总结 3 平衡判断4 删除5 源码 1 概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二…

找不到api-ms-win-crt-runtime-l1-1-0.dll文件5种解决方法

在日常使用计算机的过程中&#xff0c;我们时常会遭遇各类意想不到的问题&#xff0c;其中之一就是“api-ms-win-crt-runtime-l1-1-0.dll丢失”。这个错误通常发生在Windows操作系统中&#xff0c;它表示一个动态链接库文件丢失或损坏。这个问题可能会导致某些应用程序无法正常…

1Panel官方出品丨MaxKB:基于LLM大模型的知识库问答系统

1Panel&#xff08;github.com/1Panel-dev/1Panel&#xff09;是一款现代化、开源的Linux服务器运维管理面板&#xff0c;它致力于通过开源的方式&#xff0c;帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用&#xff0c;1Panel特别开通应用商店&am…

TensorFlow 1.x的学习

.为什么还有很多人都选择使用TensorFlow 1.x 兼容性问题: TensorFlow 1.x在一些旧项目中已经得到了广泛应用&#xff0c;这些项目可能依赖于1.x版本的特定API或行为。升级到2.x可能需要大量的代码修改和测试工作&#xff0c;对于一些已经稳定运行的项目&#xff0c;维护者可能…

实现iOS App代码混淆

简介 在开发iOS应用程序时&#xff0c;保护代码安全是至关重要的。代码混淆是一种常用的技术&#xff0c;可以增加逆向工程的难度&#xff0c;防止他人对代码的篡改和盗用。本文将介绍如何实现iOS App代码混淆的步骤和操作方法。 整体流程 下面是实现iOS App代码混淆的整体流…

创维:在博鳌论坛 叩响世界之门

出走半生&#xff0c;归来仍是少年。 2024年4月8日&#xff0c;一个离开海南近半个世纪的“少年”回到琼海博鳌&#xff0c;“下一站&#xff0c;1000亿&#xff01;”&#xff0c;他的承诺掷地有声。“1000亿”&#xff0c;意指创维集团在2025年前冲击千亿营收&#xff0c;这…

【JavaWeb】Day45.Mybatis——入门程序

什么是MyBatis? MyBatis是一款优秀的持久层框架&#xff0c;用于简化JDBC的开发。 &#xff08;持久层&#xff1a;指的是就是数据访问层(dao)&#xff0c;是用来操作数据库的。&#xff09; &#xff08;框架&#xff1a;是一个半成品软件&#xff0c;是一套可重用的、通用…

【企业动态】瑞芯微高级业务总监来访东胜物联,共探新能源汽车市场合作

近日&#xff0c;瑞芯微高级业务总监阙金珍一行来访东胜物联参观交流&#xff0c;并就深化合作进行讨论。 东胜物联与瑞芯微建有长期稳固的合作关系&#xff0c;基于RK3588、RK3399、RK3568等处理器&#xff0c;推出了多款嵌入式核心硬件产品&#xff0c;包括核心板、网关等&a…

工业物联网网关

在数字化浪潮席卷全球的今天&#xff0c;工业物联网&#xff08;IIoT&#xff09;作为连接物理世界与数字世界的桥梁&#xff0c;正在逐渐改变传统工业的面貌。而作为IIoT的核心枢纽&#xff0c;工业物联网网关发挥着至关重要的作用。今天&#xff0c;我们就来深入了解一下工业…

使用webpack5+TypeScript+npm发布组件库

一、前言 作为一只前端攻城狮&#xff0c;没有一个属于自己的组件库&#xff0c;那岂不是狮子没有了牙齿&#xff0c;士兵没有了武器&#xff0c;姑娘没有了大宝SOD蜜&#xff0c;你没有了我.... 言归正传&#xff0c;下面将给大家介绍如何通过webpack5编译一个TS组件发布到NPM…

【c 语言】声明了一个指针,会给指针分配内存吗?

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

租用境外服务器,越南服务器的优势有哪些

自从中国加入世界贸易组织之后&#xff0c;国内经济增加速度非常快&#xff0c;同时越来越多的人选择去东南亚国家发展&#xff0c;因为当地的中国人很多&#xff0c;所以中国企业在当地面临着更小的文化差异。东南亚地区也是最新的经济体&#xff0c;互联网正处于蓬勃发展的阶…

docker服务无法启动

背景&#xff1a;断电重启经常会导致磁盘io错误&#xff0c;甚至出现磁盘坏块 这时可以使用xfs_repair来修复磁盘&#xff0c;但是修复过程可能会导致部分数据丢失 xfs_repair -f -L /dev/sdc问题一&#xff1a; Apr 15 19:27:15 Centos7.6 systemd[1]: Unit docker.service e…

【十一】MyBatis Plus 原理分析

MyBatis Plus 原理分析 摘要 Java EE开发中必不可少ORM框架&#xff0c;目前行业里最流行的orm框架非Mybatis莫属了&#xff0c;而Mybatis框架本身没有提供api实现&#xff0c;所以市面上推出了Mybatis plus系列框架&#xff0c;plus版是mybatis增强工具&#xff0c;用于简化My…