操作系统常见面试题及答案

2023-11-19

操作系统:从系统观点看,是计算机系统的一个系统软件,管理和控制计算机系统中的资源;从用户观点看,操作系统是用户与计算机之间的接口;从软件观点看,操作系统是程序和数据结构的集合。

1. 什么是进程(process)和线程(thread)?有何区别?

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位,可申请和拥有系统资源。从一定意义上讲,进程是一个应用程序在处理机上的一次执行过程。而线程是进程的一部分,进程包含多个线程在运行。

它不只是程序的代码,还包括当前的活动,通过程序计数器和处理寄存器的内容来表示。

进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。一个线程可创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。

进程与应用程序的区别在于应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中,而进程则是处于动态条件下由操作系统维护的系统资源管理实体

在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位

总结:

进程:①定义②资源

线程:①独立最小②资源(互斥锁与信号量)③关系(线程与线程、线程与进程)

2. windows下的内存是如何管理的?

Windows提供了3种方法来进行内存管理:

虚拟内存,最适合用来管理大型对象或者结构数组;

内存映射文件,最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行多个进程之间共享数据;

内存堆栈,最适合用来管理大量的小对象。

Windows操作内存可以分为两个层面:物理内存和虚拟内存。

物理内存由系统管理,不允许应用程序直接访问,应用程序可见的只有一个2G的地址空间,而内存分配是通过堆进行的,对于每个进程都有自己的默认堆,当一个堆创建后,就通过虚拟内存操作保留了相应大小的地址块(不占有实际的内存,系统消耗很小)

虚拟内存是进程运行时所有内存空间的总和,并且可能有一部分不在物理内存中,它只是内存管理的一种抽象,而物理内存就是我们平时所了解的内存条。

(虚拟内存地址还涉及到了页帧、偏移量等,后续在介绍)

补充:

操作系统中堆和栈的区别   参考:http://blog.csdn.net/speedme/article/details/22943191/

①.内存分配方面

堆:一般由程序员分配释放;栈:由编译器自动分配释放,存放函数的参数值、局部变量的值等。

②.申请方式方面

堆:需程序员自己申请,malloc;栈:由系统自动分配,int a。

③.系统响应方面

堆:操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲链表中删除,并将该结点的空间分配给程序。

栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。

④.大小限制方面

堆:不连续,向高地址扩展。因为用用链表存储空闲区地址,所以不连续。

栈:连续,向低地址扩展。即:栈顶的地址和栈的最大容量是系统预先规定好的。


3.Windows消息调度机制是消息队列。

4.实时操作系统与分时操作系统

实时操作系统:在特定时间内完成特定任务实时性与可靠性

分时系统:在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。

5.中断和轮询的特点

轮询:定时对各种设备轮流询问一遍有无处理要求,有要求的,加以处理。

中断:CPU在正常运行程序的过程中,由于预先安排或发生了各种内部或外部事件,使CPU中断正在运行的程序,而转到为响应的服务程序去处理。

中断提高了计算机系统CPU的效率,即CPU和外围设备的一些操作是并行地进行的,例如:主程序只是在设备A,B,C数据准备就绪时,才去处理A,B,C,进行数据交换,在速度较慢的外围设备准备自己的数据时,CPU照常执行自己的主程序。

中断具体过程:响应中断,保存现场,CPU屏蔽中断,执行中断程序,恢复现场,CPU响应中断。

6.什么是临界区?如何解决冲突?

临界区:每个进程中访问临界资源的那段程序。任何时候,处于临界区的资源不可多于一个。排队等待,进入临界区的进程要在有限时间内退出,以便其他进程能进入自己的临界区。

7.分段和分页

页是信息的物理单位,分页是为实现离散分配方式,以削减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。

段是信息的逻辑单位,它含有一组其意义相对完整的信息,分段是为了更好的满足用户的需要。

总结:单位、目的

8.进程通信有哪些方式?

管道通信、消息通信、内存共享、信号、信号量、套接字

管道(pipe):允许无亲缘关系进程间的通信。

信号量(semophore):是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程不同线程之间的同步手段。

信号:用于通知接收进程某个事件已经发生。

共享内存:映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。

套接字:可用于不同及其间的进程通信。

9.七层模型与四层模型

OSI七层模型

网络层:资料传送的目的地寻址,再选择出传送资料的最佳路线;
链路层:负责网络上资料封包如何传送的方式;
物理层:在设备与传输媒介之间建立及终止连接。

TCP/IP四层模型

10.CPU在上电后,进入操作系统的main()之前必须做什么?

说法一:加电后,会触发CPU的reset信号,导致CPU复位,然后CPU会跳到执行指令。主要是做CPU初始化,确定CPU的工作模式,mmu初始化。建立页表段表,初始化中孤单控制器和中断向量表,初始化输入和输出,初始化nandflash,把OS的TEXT区加载到sdram,然后跳转到sdram的main()。
说法二:过程如下:bios自举(硬件检查):检查硬件等读取MBR(master boot record,主引导记录)转到MBR执行它的代码,它会检测活动分区把活动分区的引导扇区的引导代码装入内存运行引导代码引导代码装入该分区的操作系统也就是进入main()执行一系列的初始化,然后最终启动登录界面实现启动过程。
过程:reset(CPU复位)--->bios上电自检(硬件检查)--->读取MBR--->main()

11.存储过程是什么?有什么用?有什么优点?

存储过程(Stored Procedure)是一组为了完成特定功能的 SQL语句集,经编译后 存储在数据库中。用户通过指定存储过程的名字并给出参数来执行它。在 创建时即在服务器上进行编译
存储过程的优点:
(1) 提高数据库执行速度。存储过程只在创造时进行编译,以后每次执行存储过程都 不需再重新编译,而一般SQL语句每执行一次就编译一次。
(2) 封装复杂操作。当对数据库进行复杂操作时(如对多个表进行update,insert,query,delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用;
(3) 存储过程可以重复使用,减少数据库开发人员的工作量;
(4) 安全性高,可设定只有某此用户才具有对指定存储过程的使用权。
存储过程的缺点:
(1)如果 更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐了。
(2) 应用程序的可移植性差。由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。

12.你知道操作系统的内容分为几块吗?什么叫做虚拟内存?

操作系统的主要组成部分:进程管理、存储管理、文件管理和设备管理。
虚拟内存是一些系统页文件,存放在磁盘上,每个系统页文件大小为4K。

13.进程有哪几种状态?

基本状态有3种,即ready(就绪),running(运行),wait(等待或阻塞)。
就绪:进程获得除处理机外的所有资源。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。

14.分页式管理

用户程序的地址空间被划分成若干固定大小的区域,称为页,相应地,内存空间分成若干个物理块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。

15.PV操作和信号量

信号量的数据结构为一个值和一个指针,指针指向等待该信号量的 下一个进程。信号量的值与相应资源的使用情况有关。 当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。
P操作为请求资源;V操作为释放资源

16.什么是死锁?其条件是什么?怎么避免死锁?

死锁:在两个或多个 并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它们现在保持着的资源,否则就不能向前推进。

死锁产生的原因主要是:(1)系统资源不足;(2)进程运行推进的顺序不合适;(3)资源分配不当。

产生死锁的必要条件

   (1)互斥(mutual exclusion),一个资源每次只能被一个进程使用;

   (2)占有且等待(hold and wait),一个进程因请求资源而阻塞时,对已获得的资源保持不放;

   (3)不可抢占(no preemption),进程已获得的资源,在未使用完之前,不能强行剥夺;

   (4)环形等待(circular wait),若干进程之间形成一种首尾相接的循环等待资源关系。

这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

17.逻辑地址与物理地址

用户程序中的地址称为 逻辑地址,逻辑地址的集合称为 地址空间;内存中的地址称为 物理地址,物理地址的集合称为 存储空间
例:若计算机CPU的有效长度为32位,内存为32M,则该计算机的存储空间为32MB,作业的地址空间为2的32次方B。

补充:

①交换机是一种基于MAC地址识别,能完成封装转发数据包功能的网络设备。


参考:

http://blog.csdn.net/tiemaxiaosu/article/details/51941723

http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统常见面试题及答案 的相关文章

  • mv:重命名和移动文件、文件夹

    在Linux中 mv命令可以用于重命名和移动文件 也可以用于重命名和移动文件夹 注意 如果目标目录已经存在同名的文件或文件夹 mv命令将覆盖目标文件或合并目标文件夹 请注意 在使用mv命令时要小心 确保提供正确的文件名和路径 以免误操作造成
  • 这样的程序员年薪可以达到多少呢?

    转载于 https www cnblogs com Rainbow890722 p 10456640 html
  • 美媒体称谷歌卫星技术可实时定位全球军舰

    5月17日 美国 AOL防务 网站刊登文章 称谷歌公司将推出一款新软件 可让用户对任何一艘海上船只进行实时追踪定位并了解水深数据 包括美海军军舰 做了美军做不到的事 据悉 谷歌公司耗资数百万美元发展能够精确定位船只方位并搜集水深数据的卫星技

随机推荐

  • Redis 跳跃表

    跳跃表 跳跃表基础知识 跳跃表 网易公开课 gt 跳跃表 总结 效率堪比各种平衡树结构 如红黑树 B树 B 树 实现起来简单 仅用到链表的知识 基于概率论 有个随机过程 但表现不错
  • 神经网络优化(损失函数:自定义损失函数、交叉熵、softmax())

    参考 神经网络优化 损失函数 自定义损失函数 交叉熵 softmax 云 社区 腾讯云 1 前向传播 搭建网络结构 反向传播 训练网络参数 2 激活函数 提高了模型的表达里 使模型更具有表达力 3 神经网络的层数 通常用神经网络的层数和神经
  • 区块链应用技术学习(一)

    众所周知 区块链技术的特性就在于其去中心化与不可篡改性 由于这俩点的特性的存在 使得区块链技术的发展颇有看头 于是小编我也踏上了区块链学习的过程 文章目录 前言 一 区块链是什么 二 区块链作用 1 企业 2 个人 总结 前言 在学习区块链
  • Android资源管理中的SharedLibrary和Dynamic Reference-------之资源共享库(一)

    一 引言 共享库的概念 相信大家都有所了解 它有有许多优点 可以设想 在一个系统上要跑100个应用 并且它们都使用到了同一个库 如果这个库做成静态库 那么每个应用中都要打包一次这个库 100个应用就是100次 这无疑是重复的 我们可不可以在
  • FIFO读写控制

    如果在两个模块之间传输数据 两个模块之间的处理速率不同 会导致采集数据的遗漏或错误 在他们之间加一个数据缓存器 所有数据先经过缓存器缓存 再输入数据接送模块 创建两个模块 一个 作为发送模块 一个作为接受模块 发送模块检测到 fifo为空开
  • Python3,2行代码,多种方法,直接把网页内容转换成PDF文档和图片。

    网页转换成PDF 1 引言 2 代码实战 2 1 模块介绍 2 1 1 pdfkit 2 2 安装 2 3 代码实例 2 3 1 URL 对应网页转 PDF 2 3 2 HTML 文件转 PDF 2 3 3 字符串转 PDF 2 4 拓展
  • C++中protected访问权限问题

    今天发现有这样两句话 1 基类的保护成员对于派生类的成员是可访问的 2 派生类的成员只能通过派生类对象访问基类的保护成员 派生类对一个基类对象中的受保护成员没有访问权限 这两句话看的太头晕了 其实作者应该是想表达 只有在派生类中才可以通过派
  • Spring-boot+Dubbo(直连模式)

    Spring boot Dubbo 直连模式 Demo 这里应该有很多人会问 直连模式 什么鬼啊 一般情况下我们进行微服务开发时 都是通过zookeeper等注册中心来实现服务的提供和引用的 那直连模式没啥用啊 其实不然 直连模式大有用处
  • 基于51单片机汽车胎压温度监测报警系统(程序+仿真+原理图+元件清单)

    功能介绍 采用51单片机作为主控单片机 通过采集传感器的胎压和DS18b20的温度 显示到LCD1602上面 并且可以通过按键设置温度和压力的阈值 超过此值蜂鸣器进行报警 可以及时的提醒驾驶员胎压或者温度异常 程序采用keil编写 并且有中
  • 【翻译】容器解决方案加入了绿色软件基金会

    8月 Container Solution加入了绿色软件基金会 主要由微软设立 因为坦率地说他们有大笔资金 以帮助促进和支持我们迫切需要的气候意识的软件开发方法 Container Solution的技术伦理学家Anne Currie将是我
  • ViewPager实现导航页

    我们在首次安装app时 往往会发现会有导航页 导航页一般用于介绍功能和引导使用 那我们其实可以用ViewPager实现 ViewPager用于实现多页面的滑动切换效果 使用时需要引入 android support v4 包 好了 我们现在
  • 打开方式中选择默认方式无反映_Win7系统无法选择打开方式的解决方法

    习惯用win7系统的用户在使用过程中一定会遇到这个问题 有的时候想要打开PDF文件 如果不安装其他软件 单用默认的打开方式是打不开的 安装了软件之后 仍然找不到自己想要用的打开方式 今天小编以打开PDF为例 跟大家分享win7系统无法选择打
  • vscode前端常用插件 最新版

    1 不需要安装的插件 序号 名称 作用 settings json配置 1 Auto Rename Tag 自动关闭标签 editor linkedEditing true 2 Auto Close Tag 标签自动闭合 html auto
  • mysql 时间_MySQL中日期和时间类型

    1 日期类型 MySql中关于日期的类型有Date Datetime Timestamp三种类型 日期赋值时 允许 不严格 语法 任何标点符都可以用做日期部分或时间部分之间的间割符 例如 98 12 31 11 30 45 98 12 31
  • 宝塔 Error: BT-Task service startup failed. 问题原因以及解决方法

    因为我个人电脑用的是py3 所以自带py2的宝塔就自以为是升级了 还替换掉了宝塔的py2 因为py2和py3包和语法有部分不一样 所以不能用 导致重启服务器后失效 解决方法就是替换回来 先看看现在的Python版本 python v 如果是
  • Excel脱拽或者下拉公式时, 保持公式里单元格数字不变

    绝对引用 可以选中B1 用F4快捷键自己就给加绝对引用符号了 然后回车 复制或者拖拽 转载于 https www cnblogs com baxianhua p 9995530 html
  • SSL与TLS工作原理

    链接 https zhuanlan zhihu com p 36981565 为了保证网络通信的安全性 需要对网络上传递的数据进行加密 现在主流的加密方法就是SSL Secure Socket Layer TLS Transport Lay
  • 第5讲:VUE3工程中实现页面加载中效果和页面切换动画效果。

    VUE3工程发布后的运行过程为先加载html面 再通过html页中的js加载单页面js来渲染页面并显示 根据这个加载过程 实现页面加载中的原理是预先在html中显示加载中 再单页面数据加载完成在mounted时隐藏加载中 即实现想要的效果
  • 轻量级分割网络总结

    目录 ddrnet STDC Seg 重新思考BiSeNet ExtremeC3Net DFANet NfS SegNet 好像未开源 人像分割
  • 操作系统常见面试题及答案

    操作系统 从系统观点看 是计算机系统的一个系统软件 管理和控制计算机系统中的资源 从用户观点看 操作系统是用户与计算机之间的接口 从软件观点看 操作系统是程序和数据结构的集合 1 什么是进程 process 和线程 thread 有何区别