操作系统与Linux面试题

2024-09-07 05:28

本文主要是介绍操作系统与Linux面试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 什么是操作系统的内核(Kernel)

  1. 操作系统的内核是操作系统的核心部分,负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。
  2. 操作系统的内核是连接应用程序和硬件的桥梁,决定着操作系统的性能和稳定性。

2. CPU和内核的区别

  1. 操作系统的内核属于操作系统层面,而CPU属于硬件。
  2. CPU主要提供运算,处理指令的能力,内核主要负责系统管理,比如内存管理。他屏蔽了对硬件的操作。

3. 什么是系统调用

在运行的用户程序中,凡是和系统态级别的资源相关的操作(如文件管理、进程控制、内存管理等),都必须通过系统调用的方式向操作系统提出服务请求,并由操作系统代为完成。
这些系统调用按功能分为如下几类:

  1. 设备管理
  2. 文件管理
  3. 进程控制
  4. 进程通信
  5. 内存管理

4. 进程间通信方式有哪些

  1. 管道/匿名管道(Pipes) : 用于具有亲缘关系的父子进程间或者兄弟进程间通信。
  2. 有名管道(Names Pipes):匿名管道由于没有名字,只能用于亲缘关系的进程间通信,为了克服这个缺点,提出了有名管道。有名管道严格遵循先进先出。有名管道以磁盘文件的方式存在,可以实现本机任意两个进程通信。
  3. 信号(Signal): 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
  4. 消息队列:消息队列是消息的链表,具有特定的格式,存放在内存中并由消息队列标识符标识。管道和消息队列的通信数据都是先进先出的原则,与管道不同的是消息队列存放在内核中,只有在内核重启或者显示的删除一个消息队列时,消息队列才会被真正删除。消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,比FIFO更有优势。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  5. 信号量:信号量是一个计数器,用于多进程对共享数据的访问,信号量的意图在与进程间同步,这种通信方式主要用于解决和同步相关的问题并避免竞争条件。
  6. 共享内存:多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新。
  7. 套接字:此方法主要用于在客户端和服务器之间通过网络进行通信。套接字是支持TCP/IP网络通信的基本操作单元。可以看作是不同主机之间的进程进行双向通信的端点。

5. 进程间同步的方式以及优缺点

  1. 临界区:通过对多线程的串行化来访问公共资源或者一段代码。
    优点:保证某一时刻只有一个线程能访问数据的简便方法。
    缺点:虽然临界区同步速度很快,但却只能用来同步本进程内的线程,而不可用来同步多个进程中的线程。
  2. 互斥量:互斥量和临界区类似,互斥对象只有一个,只有拥有互斥对象的线程才能访问资源。
    优点:使用互斥不仅仅能够在同一应用程序不同线程中实现资源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享。
    缺点:互斥量可以跨越进程使用,所以创建互斥量需要的资源更多。
  3. 信号量:为控制一个具有有限数量用户资源而设计。允许多个线程在同一时刻访问同一资源。当信号量的最大资源数=1时就是互斥量了。
  4. 事件:用来通知线程有一些事件已发生,从而启动后继任务的开始。

6. 僵尸进程、孤儿进程是什么

  1. 僵尸进程:通常来说,使用fork()系统调用从一个父进程创建出一个子进程,子进程退出,是需要父进程调用wait()或者是waitpid()函数来收回子进程的资源,如果父进程没有调用,子进程的信息就会一直在内存中,而不会被回收,变成僵尸进程
  2. 孤儿进程:就是父进程先退出了,他的子进程会被init进程接管(init进程是内核启动时,创建出来的进程,是一个以root身份运行的普通用户进程,是永远不会停止的),由他来收集子进程的状态。

7. 说一下常见的内存管理机制

块式管理:远古时代的计算机操作系统的内存管理方式,将内存分为几个固定大小的块。每个块中只包含一个进程,如果程序需要内存的话,操作系统就会分配给他一块。
页式管理:把主存分为大小相等且固定的一页一页的形式,页较小,相对于块式管理的划分力度更大,提高了内存利用率,减少了内存碎片。页式管理通过页表对应逻辑地址和物理地址。
段式管理:段式管理把主存分为一段段的,每一段的空间又要比页的空间小很多。

8. 什么是块表和多级页表

在分页内存管理中,很重要的两点:

  • 虚拟地址到物理地址的转换要快。
  • 解决虚拟地址空间大、页表也会很大的问题。

快表
为了解决虚拟地址到物理地址的转换速度,操作系统在页表方案基础上加入了快表来加速虚拟地址到物理地址的转换。可以把快表理解为一种特殊的高速缓冲存储器,其中的内容是页表的一部分或者全部内容。作为页表的cache,他的作用和页表类似,但是提高了访问速率。
多级页表
引入多级页表主要目的是为了避免把页表全部一直放在内存中占用过多空间,特别是那些根本就不需要的页表。

9. 为什么linux体系结构要分为用户空间和内核空间

  1. 现代CPU实现了不同的工作模式,不同模式下CPU可以执行的指令和访问的寄存器不同。
  2. Linux从CPU角度出发,为了保护内核安全,把系统分为两部分。

用户空间和内核空间是程序执行的两种不同的状态,我们可以通过两种方式完成用户空间到内核空间的转换。

  • 系统调用
  • 硬件中断。

10. inode是什么?有什么作用?

inode是linux/unix文件系统的基础。
硬盘的最小存储单位是扇区,块由多个扇区组成。文件数据存储在块中。块的常见大小是4kb,约为8个连续的扇区组成(每个扇区的)。一个文件可能会占用多个block,但是一个块只能放一个文件。
虽然将文件存储在了block中,但是还需要一个空间来存储文件的元信息;如某个文件分为几块、每一块在的地址、文件拥有者、创建时间、权限等。这种存储文件元信息的区域就叫inode
可以使用istat命令查看文件的inode信息,Linux/Unix操作系统不使用文件名来区分文件,而是使用inode号码区分不同的文件。
总结:

  • inode:记录文件的属性信息,可以使用istat命令查看inode信息。
  • block:实际文件的内容,如果一个文件大于一个块,那么将占用多个block。

11. 什么是硬链接和软链接

  • 硬链接:Linux下的文件是通过索引节点(inode)识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针。系统不为他重新分配inode,每添加一个硬链接,文件的链接数加1.
    不足:(1). 不可以在不同文件系统的文件间建立链接;(2).只有超级用户才可以为目录创建硬链接

  • 软链接:软链接克服了硬链接的限制,任何用户可以创建指向目录的符号链接。

实际场景下,基本是使用软链接。总结区别如下:

  1. 硬链接不可以跨分区,软链接可以跨分区。
  2. 硬链接指向一个inode节点,而软链接创建一个新的inode节点。

12. Linux中有哪些文件类型

  1. 普通文件:存储信息和数据。
  2. 目录文件
  3. 符号链接文件:保留了指向文件的地址而不是文件本身。
  4. 字符设备:用来访问字符设备比如硬盘。
  5. 设备文件:用来访问块设备。
  6. 管道文件:一种特殊类型的文件,用于进程间通信。
  7. 套接字:用于进程间的网络通信。

13. Linux的权限命令

在Linux中,权限一般分为读、写、执行。分为三组,分别对应文件的属主(owner)、属组(group)、和其他用户(other)。
Linux中的权限分为以下几种

  • r:代表权限是可读,用数字4表示
  • w: 代表权限是可写,用数字2表示
  • x: 代表权限可执行,用1表示

14. Linux如何进行用户管理以及用户组管理

  • useradd 选项 用户名. 添加用户账号
  • userdel 选项 用户名。删除用户账号
  • usermod 选项 用户名 修改账号
  • passwd 用户名。更改或创建用户密码
  • passwd -S 用户名 显示用户账号密码信息
  • passwd -d 用户名 删除用户密码
  • groupadd 选项 用户组:增加一个新的用户组
  • groupdel 用户组。删除一个用户组
  • groupmod 选项 用户组 修改用户组的属性

这篇关于操作系统与Linux面试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144177

相关文章

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在